Add OSS side login background video - #31681
Conversation
Add an optional login video to the sign-in carousel. `LoginClassBase` exposes a `getLoginVideo()` hook that returns `undefined` by default, so existing deployments are unaffected and keep the image carousel. When a subclass provides a video, `LoginCarousel` renders a muted, looping, `playsInline` `<video>` in place of the carousel, and `CarouselLayout` swaps the media column to the leading position. The video is styled with Tailwind utilities (`tw:absolute tw:inset-0 tw:object-cover`) so it fills the panel edge-to-edge and is clipped by the container's existing radius/overflow — no new LESS. Autoplay/loop are disabled under `prefers-reduced-motion`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
✅ Playwright Results — workflow succeededValidated commit ✅ 551 passed · ❌ 0 failed · 🟡 0 flaky · ⏭️ 0 skipped · 🧰 0 lifecycle flaky PerformanceBlocking targets: ✅ met · Optimization targets: 🟡 in progress Shard-job maxima below are not the full workflow wall time; the linked run includes build, fixture, planning, and reporting. 🕒 Full workflow signal wall (to summary) 53m 28s ⏱️ Max setup 3m 15s · max shard execution 18m 1s · max shard-job elapsed before upload 21m 42s · reporting 4s 🌐 214.93 requests/attempt · 2.83 app boots/UI scenario · 6.94% common-shard skew Optimization targets still in progress:
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
Binary video assets were not in .licenseheaderignore, so license-check-and-add tried to parse the MP4 binary as source code, hit byte sequences that produced an odd number of @@@ regex-identifier markers, and crashed with "Odd number of regex identifiers found. One must be missing its close."
|
|
Changes have been cherry-picked to the 2.0 branch. |
* feat(login): support a configurable full-screen login video Add an optional login video to the sign-in carousel. `LoginClassBase` exposes a `getLoginVideo()` hook that returns `undefined` by default, so existing deployments are unaffected and keep the image carousel. When a subclass provides a video, `LoginCarousel` renders a muted, looping, `playsInline` `<video>` in place of the carousel, and `CarouselLayout` swaps the media column to the leading position. The video is styled with Tailwind utilities (`tw:absolute tw:inset-0 tw:object-cover`) so it fills the panel edge-to-edge and is clipped by the container's existing radius/overflow — no new LESS. Autoplay/loop are disabled under `prefers-reduced-motion`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix lint checks * Add OSS side login background video * nit * fix lint checks * fix(checkstyle): exclude mp4 and webm binaries from license header check Binary video assets were not in .licenseheaderignore, so license-check-and-add tried to parse the MP4 binary as source code, hit byte sequences that produced an odd number of @@@ regex-identifier markers, and crashed with "Odd number of regex identifiers found. One must be missing its close." --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> (cherry picked from commit 64b095e)
|
Changes have been cherry-picked to the 1.13 branch. |
* feat(login): support a configurable full-screen login video Add an optional login video to the sign-in carousel. `LoginClassBase` exposes a `getLoginVideo()` hook that returns `undefined` by default, so existing deployments are unaffected and keep the image carousel. When a subclass provides a video, `LoginCarousel` renders a muted, looping, `playsInline` `<video>` in place of the carousel, and `CarouselLayout` swaps the media column to the leading position. The video is styled with Tailwind utilities (`tw:absolute tw:inset-0 tw:object-cover`) so it fills the panel edge-to-edge and is clipped by the container's existing radius/overflow — no new LESS. Autoplay/loop are disabled under `prefers-reduced-motion`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix lint checks * Add OSS side login background video * nit * fix lint checks * fix(checkstyle): exclude mp4 and webm binaries from license header check Binary video assets were not in .licenseheaderignore, so license-check-and-add tried to parse the MP4 binary as source code, hit byte sequences that produced an odd number of @@@ regex-identifier markers, and crashed with "Odd number of regex identifiers found. One must be missing its close." --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> (cherry picked from commit 64b095e)
Code Review ✅ Approved 1 resolved / 1 findingsReplaces the OSS login carousel with a bundled background video asset and updates Jest asset handling for MP4 files. No issues found. ✅ 1 resolved✅ Quality: Login video ignores prefers-reduced-motion
OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |



Describe your changes:
Screen.Recording.2026-08-18.at.3.34.17.PM.mov
Type of change:
High-level design:
N/A — small change.
Tests:
Use cases covered
Unit tests
Backend integration tests
Ingestion integration tests
Playwright (UI) tests
Manual testing performed
UI screen recording / screenshots:
Not applicable.
Checklist:
Fixes <issue-number>: <short explanation>Fixes #<issue-number>above.Summary by Gitar
LoginClassBaseto returnloginVideomp4filesThis will update automatically on new commits.
Greptile Summary
The PR replaces the OSS login-side image carousel with a bundled autoplaying background video and adds the required TypeScript, Jest, Maven-resource, and license-header handling.
LoginClassBase.LoginCarouselto render the configured video and updates its unit tests.Confidence Score: 4/5
The PR is not yet safe to merge because the login-side video can leave users with a blank, container-only panel when the media fails to load or play.
The previously reported fallback defect remains: the sole video element has no poster, alternate source, error recovery, or retained carousel content for media failures.
Files Needing Attention: openmetadata-ui/src/main/resources/ui/src/pages/LoginPage/LoginCarousel.tsx
Important Files Changed
Reviews (5): Last reviewed commit: "fix(checkstyle): exclude mp4 and webm bi..." | Re-trigger Greptile
Context used: