Changelog
0.1.0 (2026-10-20)
Bug Fixes
- Restore landscape card for landscape types (TAN-1913)
- Dismiss splash screen on client mount (TAN-1911)
- Point image CSP/remotePatterns at njpw proxy
- Allow njpwworld.com VOD in media/connect CSP
- Align registration with middleware v3 confirm contract (TAN-158)
- Point ci/doc/storybook helm charts at the njpw ingress class and issuer
- Align entitlement test fixtures (TAN-228)
- Use approved browser globals (TAN-228)
- Source pairing copy from Control (TAN-152)
- Source settings copy from Control (TAN-220)
- Render header sign-up as a compact button, not an oversized nav tab
- Relax login password validation to non-empty (TAN-176)
- Mount app router in stories that render ConfigProvider (TAN-2001)
- Force sign-out on unresolvable 401 (TAN-144)
- Register the device on successful account registration (TAN-144)
- Stop overwriting the stable device-id cookie with the server-assigned one (TAN-144)
- Align movie/episode OVP mapping to native
- Fall back to top-level metadata when decorators array is empty
- Recompute hero live/countdown state on tick + clear countdown interval
- Episode duration from contents[] fallback + remove orphaned mapBadge
- Guard episode decorators.metadata against non-array (crash broke season load)
- Show episodes tab uses episodesTabText (Episodes), not the keyless matchesTabText
- Rebuild detail hero to the split layout (content-left / artwork-right) per Figma
- Auto-select first season without waiting for bookmark data (guests never selected)
- Episode grid — 2-column horizontal cards (thumbnail-left) per Figma
- Abort search on unmount + guard loadMore while loading
- Read search base URL from NEXT_PUBLIC_SEARCH_BASE_URL
- Send a single assetType/genreSlug (endpoint rejects comma-separated)
- Keep server-only OTEL SDK out of the browser bundle (TAN-1874)
- Don't swallow Next dynamic bailout in getServerLocale (unblocks prod build) (TAN-1874)
- TAN-229: Correct Evergent checkout country and returnURL contract
- Updated claude and copilot instructions
- Home page UI, duplicate key (TAN-2051)
- Hero carousel click fix (TAN-2051)
- Wire the detail nav-bar share button to the share dialog
- Make share dialog dismissable via close button
- Derive broadcast-time zone labels so they follow DST (TAN-1874)
- Request 16:9 hero image on mobile so it isn't cropped to a sliver
- Treat empty visibilityAccess {} as visible, not hidden
- Auto-select single profile + send post-auth to home
- Device 'Registered' label fills for either {{date}} or {{value}} placeholder
- Align show details CTA text and match card title/date with design (TAN-2064)
- Align show details CTA icons, action row, and venue dropdown with design (TAN-2064)
- Details page title alignment fix (TAN-2064)
- Lint fixes (TAN-802)
- Wire player restart button to seek to start (TAN-2094)
- Live content playback fix (TAN-93)
- Offset detail hero below the fixed page navigation (TAN-2095)
- Read title/body from FCM data map in service worker (TAN-1866)
- Hosted checkout signature field name and subscription base URL (TAN-229)
- plan: Use non-parsed fence so lint:md passes
- Resolve subscription crash and duplicate account settings UI (TAN-2105)
- Reset menu overlays on route change (TAN-2105)
- Show active subscription without a matched plan (TAN-2105)
- Fall back to subscription sku for plan title (TAN-2105)
- Align password rules across reset, update, and registration (TAN-2105)
- Address account-settings code review findings (TAN-2105)
- Use font-weight tokens and responsive title sizing (TAN-2105)
- Update hosted checkout tests for MW signature field rename (TAN-229)
- Hide SVOD badge display on tiles (TAN-2131)
- Replace accedo placeholder logo with njpw logo (TAN-2131)
- Replace accedo placeholder logo with njpw logo (TAN-2131)
- Swiper pagination button added for more visibility (TAN-2131)
- Rail title capped at 2 lines (TAN-2131)
- Align nav search overlay to design with placeholder and full-width bar (TAN-1139)
- Restyle search field and recent list to design, add inline empty/error states (TAN-1139)
- Search bar padding fix (TAN-2134)
- Remove close icon from applied filter chips (TAN-2134)
- Restyle search filter selected state and panel spacing (TAN-2134)
- Update footer to show only Help, Privacy Policy, Terms of Use links (TAN-591)
- Improve footer link filtering to handle title variations (TAN-591)
- Revert footer link filtering, add avatar parity for tablet/mobile header (TAN-591)
- Open Help / Help & FAQ links in a new tab to help.njpwworld.com (TAN-591)
- Remove unused getPageData call in MylistPage body (TAN-591)
- Correct missing-translation fallback and stop removing rows on unfavorite (TAN-591)
- Render page-local back/title nav inline instead of fixed (TAN-591)
- Align tab and row spacing with Figma design (TAN-591)
- Make favorites list responsive on desktop per Figma (TAN-591)
- Hide back arrow next to Favorites title on desktop (TAN-591)
- Reduce top offset so Favorites heading aligns with design (TAN-591)
- Remove double top-offset causing extra 98px gap (TAN-591)
- Zero out top padding so heading sits flush under nav (TAN-591)
- Hide site footer on /mylist for mobile and tablet (TAN-591)
- Clamp long row titles to 2 lines (TAN-591)
- Remove favorite button and add row spacing on Recently Watched (TAN-591)
- Match Recently Watched tile UI to Favorites, hide desktop back arrow (TAN-591)
- Menu now correctly covers Favorites/Recently Watched when opened (TAN-591)
- Reset pagination on profile/locale change, refactor translations (TAN-591)
- Update test to verify profile switch uses correct new profile (TAN-591)
- Apply prettier formatting to resolve eslint errors (TAN-2113)
- Restore reopen-menu-on-back behavior lost during lint cleanup (TAN-591)
- Reorder detail page tabs and add labels to more info fields (TAN-2113)
- Remove key labels from More Info detail fields (TAN-2113)
- Resolve validation errors from eslint and stylelint (TAN-2113)
- Update UK spelling to US spelling in FCM service worker (TAN-2113)
- Hide footer on mylist/recently-watched and remove nav link merge (TAN-591)
- Invalidate favorites cache when item is unfavorited (TAN-591)
- Highlight the correct field for change-email error states (TAN-2152)
- Align Choose Your Plan cards, tabs and interval labels with design (TAN-228)
- Show device limit icon and plan value (TAN-2172)
- Place push alerts below home menu (TAN-794)
- Navigate to details/player page from favorites and recently watched tiles (TAN-591)
- Route recently watched episodes to their parent show page (TAN-591)
- Allow episode content type in detail CTAs (TAN-591)
- Route episodes to their own details page again (TAN-591)
- Prevent HeroPreviewPlayer player recreation and stuck loading (TAN-591)
- Resolve and thread server locale in the episode route (TAN-591)
- Route episode grid tiles to their details page, not straight to the player (TAN-591)
- Shrink hero title to 36px when paired with an eyebrow, per Figma (TAN-591)
- Expand the in-hero preview player to fill the whole hero (TAN-591)
- Add autoplay + loading indicator to HeroPreviewPlayer (TAN-591)
- Resolve playback session unload permission policy violation and cookie deserialization (TAN-591)
- Improve cookie deserialization and device ID resilience (TAN-591)
- Ensure playback starts after manifest load (TAN-591)
- Add comprehensive lifecycle logging to HeroPreviewPlayer (TAN-591)
- CRITICAL - resolve player ref null after Fast Refresh unmount (TAN-591)
- Fallback to provided URL when playback service request is aborted (TAN-591)
- Resolve ESLint errors and Jest mock collisions (TAN-591)
- Position progress bar on top of player in compact mode (TAN-591)
- Add object-fit cover to video and move progress bar to bottom (TAN-591)
- Use camelCase for SVG attributes in RestartIcon (TAN-591)
- Hide binge watch overlay in embedded compact mode (TAN-591)
- Suppress navigation on playback end in embedded mode (TAN-591)
- Show hero image with play button when embedded playback ends (TAN-591)
- Expand the in-hero preview player to fill the whole hero (TAN-591)
- Revert to two-column hero layout (content left, artwork right) (TAN-591)
- Remove padding-top from heroDetailContainer (TAN-591)
- Make CTA buttons layout responsive (TAN-591)
- Stack hero layout vertically on tablet and mobile (TAN-591)
- Correct HeroPreviewPlayer resume-on-load bug and its test mock leak (TAN-591)
- Don't misdetect Safari from UA-spoofed Chrome device emulation (TAN-591)
- Navigate to details page instead of browser back on player exit (TAN-591)
- Make player UI fill the window viewport (TAN-591)
- Align primary CTA button to baseline for proper left alignment (TAN-591)
- Add margin-right spacing to artwork panel per Figma design (TAN-591)
- Make artwork panel margin responsive across breakpoints (TAN-591)
- Optimize metadata layout for 720p resolution (TAN-591)
- Change heroContent to percentage-based flex sizing (TAN-591)
- Make hero layout responsive for 720p viewports (TAN-591)
- Make artwork panel dominant by adjusting flex ratios (TAN-591)
- Ensure metadata visibility in hero details (TAN-591)
- Display episode metadata when play is activated (TAN-591)
- Ensure metadata is visible in hero details (TAN-591)
- Prevent hero title/CTA from being hidden under fixed page nav (TAN-591)
- Push hero content down an additional 15px (TAN-591)
- Add playerConfig check before rendering player (TAN-591)
- Add null checks for startTime with 0 default (TAN-591)
- Sync episode and show details pages with consistent spacing (TAN-591)
- Sync DOM structure between show and episode details pages (TAN-591)
- Correct broken CSS-module class selector for hero offset (TAN-591)
- Stop applying show-only nav-clearance offset to all heroes (TAN-591)
- Replace static heroContent max-width with resolution tier (TAN-591)
- Shrink heroContent min-width floor so artwork isn't squeezed (TAN-591)
- Apply exact Figma dimensions at wide viewports (TAN-591)
- Revert fixed 1441px breakpoint, restore fluid artwork sizing (TAN-591)
- Use flex-basis 0 so hero split ignores content differences (TAN-591)
- Show CTA label going blank when resuming playback (TAN-591)
- Fullscreen player back button leaves stale frame on navigation (TAN-591)
- Lint issues (TAN-591)
- Don't auto-navigate to next episode purely on video end (TAN-591)
- Embedded binge-watch fullscreen continuity, clickability, and dismiss (TAN-591)
- Show related items carousel in episode detail bottom section (TAN-591)
- Restore episode/season browsing tab on episode detail page (TAN-591)
- Unify hero title size and stabilize position across detail pages (TAN-591)
- Apply hero padding-top only to show detail pages, not movie/episode (TAN-591)
- Remove padding-top offset for episode pages only (TAN-591)
- Show 'Favorite Episodes' label on episode details (TAN-591)
- Autoplay next episode on binge-watch navigation (TAN-591)
- Bump playToken on autoplay to reload embedded player source (TAN-591)
- Remove the plans (TAN-2192)
- Copy pnpm-workspace.yaml into docker deps stage so frozen install resolves overrides (TAN-228)
- Correct TypeScript types in buildDetailBottomSectionProps (TAN-591)
- Guard isPrincipal with strict false check; fix locale keys (TAN-228)
- Convert Evergent day-based intervals to calendar units on parse (TAN-228)
- Allow 1-2 character CJK search queries (script-aware minimum) (TAN-424)
- ci: Authenticate the docs build to Artifactory so main deploys stop failing
- ci: Install docs standalone with --ignore-workspace (docusaurus not found)
- menu: Prettier formatting of filter conditions after removing subscription exclusion
- Disable Next.js Data Cache for plans fetch (TAN-237)
- Enable localization entries for episode key in CTA DTO (TAN-2195)
- Align localization keys with backend dictionary (TAN-2195)
- Recover embedded player after a fatal playback error (TAN-2195)
- OK button in the player error dialog now actually closes it (TAN-2195)
- ShakaPlayer.unload() never actually unloaded the source (TAN-2195)
- Center loading spinner on recently-watched page (TAN-2195)
- Center loading spinner on my-list page (TAN-2195)
- Dedupe recoverable error popups, clear spinner on unload (TAN-2195)
- Account for menu height when centering loading spinner (TAN-2195)
- Dedupe error/resize listeners accumulating across retries (TAN-2195)
- Reuse one dialogId so Try Again can't leave a ghost popup (TAN-2195)
- Cancel/X fully stop player activity; add debug logging (TAN-2195)
- RetryCounter effect kept re-running after the first retry (TAN-2195)
- Show loading spinner when retry begins in embedded player (TAN-2195)
- Add missing setReady to dependency arrays (TAN-2195)
- web: Cache CMS layouts good-only with a 2-min TTL (no more frozen/sticky config)
- Replace multiple schedule timezones with local time (TAN-2164)
- Remove footer logo (TAN-2164)
- Enable login password visibility toggle (TAN-2164)
- Localize registration birthday picker and add year selection (TAN-2164)
- Match password requirement indicators to Android (TAN-2164)
- Use translated password validation hint across forms (TAN-2164)
- Underline registration terms and privacy links (TAN-2164)
- Update tests based on CI error and update metadata (TAN-2164)
- Required docker file changes (TAN-2164)
- Jest test scripts and config to address persistent pipeline error (TAN-2164)
- Show name/email hierarchy and link to account in nav dropdown (TAN-2153)
- Stop cancelling avatar preload on unmount (TAN-2153)
- Allow GA4 domains in CSP and disable dev GA measurement id (TAN-2153)
- Remove debug console.log from FCM handlers (TAN-794)
- Polish manage plan cancel and PPV checkout actions (TAN-2153)
- Stop payment callback screens overflowing off-screen (TAN-2153)
- Stop a gateway success status echo from showing as an error message (TAN-2153)
- Rebalance payment error screen icon size and spacing (TAN-2153)
- Merge PPV entries into the subscriptions list with plan name, description, and price (TAN-2153)
- Disable GA id, fix notification scroll, log FCM token (TAN-2153)
- Show real renewal, end date, and purchase source for PPV rows (TAN-2153)
- Navigate back in history instead of a reconstructed details URL from the player (TAN-2274)
- Correct rail and grid card fallback image scaling and dim overlay (TAN-2274)
- Restore pointer cursor on links (TAN-2274)
- Wire up Go Live button and remove non-functional Cancel button (TAN-2273)
- See all top padding fix (TAN-2266)
- Add local Twitter icon for footer social media links (TAN-2316)
- Use TwitterIcon from assemble library, keep only TikTok as local (TAN-2316)
- Render TikTok icon as inline SVG component instead of img (TAN-2316)
- Resize TikTok icon glyph to match other footer social icons (TAN-2316)
- Patch @accedo/web-ui-footer to fix crash on Japanese locale (TAN-2316)
- Keep navigation menu visible on page not found (TAN-2272)
- Stop page navigation overlaying the menu on not found (TAN-2272)
- Standardize search result thumbnail sizes across breakpoints (TAN-2328)
- Pin sticky header to viewport top on scroll (TAN-2328)
- Keep search toolbar visible when sort returns no results (TAN-2328)
- Show search results when sorting by oldest (TAN-2328)
- Limit carousel tiles to see-all threshold (TAN-2320)
- Validate password confirmation before registration form is complete (TAN-2164)
- Align drop downs next to Schedule text as per #10 (TAN-2164)
- Show nickname instead of email in menu as per item #22 (TAN-2164)
- Hide subscribed banner CTA, fix signup meta title key (TAN-2366)
- Hide purchase banner while subscription status is loading (TAN-2366)
- Stop description overflow and title/CTA push-down in hero detail (TAN-2366)
- Match favourites page layout and favourite CTA styling to design (TAN-2366)
- Scale hero artwork panel proportionally at wide viewports (TAN-2372)
- Use eye-slash icon for hide-password toggle (TAN-2372)
- Replace Accedo branding with NJPW branding and fix missing/broken page metadata (TAN-2372)
- Keep sticky menu in document flow to stop scroll-jump on short pages (TAN-2372)
- Use correct expand icon and switch player fullscreen icon by state (TAN-2372)
- Add border to inactive hero banner pagination dots (TAN-2372)
- Trim search query and allow filter-only search with empty query (TAN-2165)
- Use page_search_input_hint key for search placeholder text (TAN-2165)
- Drop by from search sort trigger label for platform consistency (TAN-2165)
- Show total result count in the search results label (TAN-2165)
- Avoid double colon when sort label already has one from CMS (TAN-2165)
- Render search result cards with the shared rail card component (TAN-2165)
- Fill search results grid edge to edge instead of leaving dead space (TAN-2165)
- Make mobile filter panel a full-screen overlay, Year before Match Type (TAN-2165)
- Reduce vertical padding on hero purchase CTA (TAN-2373)
- Remove rail title-to-thumbnail vertical spacing (TAN-2373)
- Tighten rail card thumbnail-to-metadata spacing (TAN-2373)
- Allow *.njpwworld.com in CSP img-src so images load on preview
- Handle 409 DEVICE_REGISTRATION_IN_PROGRESS during device registration (TAN-2085)
- Give the session cookie a lifetime and stop the proxy dropping it (TAN-2309)
- Don't sign out a healthy session on a merely-stale token; strip debug logging (TAN-2309)
- Close two gaps the medium-effort code review found (TAN-2309)
- Removed unused comments
- Keep the global 401 sign-out from erasing the delete confirmation (TAN-2408)
- Release the 401 suppression on every refused deletion (TAN-2408)
- Persist device-id to localStorage as cookie-clear resilience (TAN-2085)
- Fix device-id double-serialization and logout re-registration (TAN-2389)
- Allow unicode characters in profile name validation (TAN-2395)
- Restore tick mark and Clear All on search filter dropdowns (TAN-2416)
- Use the real CMS keys and send locale on facets (TAN-2416)
- Translate match type values via page_search_event_type_ keys (TAN-2416)
- Use a single caret icon on the filter dropdowns (TAN-2416)
- Keep Sort By on its own icon, only Match Type/Year get the caret (TAN-2416)
- Even out filter toolbar and Clear All spacing (TAN-2416)
- Center mobile rail nav arrows on the thumbnail, not the card (TAN-2416)
- Tighten Match Type/Year caret gap on the filter dropdowns (TAN-2416)
- Simplify account menu dropdown and update info avatar (TAN-2395)
- Remove extra cookie consent footer toggle (TAN-2436)
- Update E2E tests (TAN-2436)
- Recover gracefully from a failed profiles/ fetch instead of locking out the app (TAN-2439)
- Pass bearer token in plans call for logged-in users (TAN-2474)
- Point assetlinks.json at the NJPW World Android apps (TAN-2092)
- Serve the AASA from /.well-known/ with the NJPW app IDs (TAN-2092)
- Dev and staging team id updated (TAN-2092)
- Event details hero no longer clipped by nav or long titles (TAN-2375)
- Hide next-video button during live playback (TAN-2335)
- Enable GoLive for live eventstream and fix live seekbar time display (TAN-2333)
- Split favorites into episode matches and show series tabs (TAN-2375)
- Show favorite action only on show and episode details (TAN-2375)
- Keep favorites tabs visible while a tab loads (TAN-2375)
- Compute live and live-now badges like the native apps (TAN-2375)
- Show one prioritized badge on thumbnails and all badges on details (TAN-2375)
- Show live-now text on highlight cards only while the event is live (TAN-2375)
- Open event details instead of the player for eventstream cards (TAN-2375)
- Support eventstream assets on the event details page (TAN-2375)
- Keep embedded live player controls in sync when autoplaying with sound (TAN-2375)
- Unmute the player when raising volume from muted (TAN-2375)
- Label the eventstream play action Watch Live like android (TAN-2375)
- Clear stale search results when typing drops below the minimum length (TAN-2375)
- Swap event details tab order to More Info first, dedupe detail CSS (TAN-2375)
- Search placeholder (TAN-2375)
- Resolve SonarCloud findings on PR #118 (TAN-2375)
- Keep the nav bar pinned and mounted across pages with a content-area loader (TAN-2476)
- Stop subscribers re-buying plans or owned PPVs (TAN-2476)
- Show a hero loader while a trailer or show episode loads for playback (TAN-2476)
- ci: Bake NEXT_PUBLIC_SEARCH_BASE_URL into the web image
- Show fallback poster on schedule cards with missing or broken images (TAN-567)
- Show shared fallback image on hero, favorites, cast and schedule assets (TAN-567)
- Span favorites loader across list columns so the spinner renders whole (TAN-567)
- Route new users to subscription page after registration (TAN-2491)
- Show loading state during login submit and logout confirmation (TAN-2333)
- Match hero image ratio to artwork panel to stop title crop (TAN-2333)
- Stop auto-starting playback and fix stale live-controls latch for live events (TAN-2333)
- Stop forcing live-event playback into channel-only controls (TAN-2333)
- Reorder badge priority so ppv outranks live, matching android/iOS (TAN-2375)
- Only cap a rail's displayed items when CMS enables See All (TAN-2333)
- Derive live event time labels and scrubber from the seekable window (TAN-2333)
- Handle unbounded live seekable ranges and play started events as live (TAN-2333)
- Gate live-event controls on the stream being live and show a labelled Go Live button (TAN-2333)
- Hide the Watch Live CTA for eventstreams that are not currently live (TAN-2333)
- Pick the DRM stream the browser supports instead of the first one listed (TAN-2333)
- Give movie and episode detail pages all their streams so the player can play them (TAN-2333)
- Keep live seeks inside a real seekable range across DVR gaps (TAN-2333)
- Keep live rewind and fast-forward inside the DVR window after Go Live (TAN-2333)
- Keep a live event playing live after its scheduled end instead of reloading (TAN-2333)
- Show the live dot icon only on the Live Now badge (TAN-2333)
- Require incidents prop and remove stale banner call site (TAN-2457)
- Validate FCM deep links, gate banner to home page, harden edge cases (TAN-2457)
- Persist dismissed service alerts, rank CMS severities and show banner on home only (TAN-2457)
- Claim /episode/* in the AASA so episode links open the app (TAN-2092)
- Tighten banner spacing and font weights (TAN-2571)
- Center empty favorites text and hide load more when list is empty (TAN-2575)
- Show full episode hero title without line clamp (TAN-2522)
- Ignore stale bookmark responses after asset change (TAN-2522)
- Vertically center snackbar icon with title (TAN-2519)
- Use compact hero title for event assets and stop clipping descenders (TAN-2519)
- Render a single navbar on page not found under withMenu (TAN-2519)
- Simplify page not found with centered content and home button (TAN-2519)
- Disable OTP input and verify when the code expires (TAN-2502)
- Request 16:9 hero image on the details page so it isn't cropped (TAN-2508)
- Add settings gear to the compact details-page player (TAN-2507)
- Show event countdown timer and disable Play until it ends (TAN-2519)
- Restore compact settings panel, countdown label and OTP and timer edge cases (TAN-2519)
- Localize event countdown labels (TAN-2519)
Features
- Splash screen (TAN-1911)
- Resolve review comments (TAN-1911)
- TAN - 1913 update home page UI
- Update (TAN-1913)
- Splash label font fix and typography updates (TAN-1913)
- Player ui components
- Wire player title/description to asset metadata (TAN-1913)
- Add Evergent OTP register methods to idp provider (TAN-158)
- Add registration zod schemas and password rule (TAN-158)
- Add useRegistration OTP wizard hook (TAN-158)
- Add registration email step (TAN-158)
- Add registration verify-code step (TAN-158)
- Persist registration account details (TAN-158)
- Complete responsive registration wizard (TAN-158)
- Add web password reset flow (TAN-176)
- Integrate Evergent hosted checkout (TAN-228)
- Add shared resolveErrorMessage util with errorCode helpers (TAN-138)
- Expose localization errors map via useErrorMessage hook (TAN-138)
- Resolve login errors via Control errors map (TAN-138)
- Route registration error copy through resolveErrorMessage (TAN-138)
- Map forgot and reset password errors by middleware errorCode (TAN-138)
- Add IdpService.claimPairingCode for pairing approval (TAN-138)
- Add pairing dictionary keys and gate the connect route (TAN-138)
- Add /connect TV pairing approval page (TAN-138)
- Settings shortcut dropdown from header user icon (TAN-220)
- Add /connect device-pairing page (TAN-152)
- Localize the /connect page via CMS dictionary keys (TAN-152)
- Show the logo header on /connect (TAN-152)
- Connect page flows below logo header (css) (TAN-152)
- Device-management implementation (TAN-196)
- Consistent locale switching across surfaces (TAN-2001)
- TAN-196: Redesign Device Management to match Figma
- TAN-196: Add login-gate limit popup and fix device-id consistency bugs
- OTP verify-on-entry, editable input, countdown with MW-driven TTL (TAN-160)
- Support free/svod/ppv/live_now badges and render multiple
- Add Reminder/Download/Share/Trailer detail CTAs
- Detail hero — multiple badges, live-now overlay, event countdown; drop score
- Event detail — match-card More Info + Related tabs, wire Share CTA, localize labels
- Show detail — Matches (season dropdown + ordinal/air-date episode cards) | Related | More Info tabs
- Movie detail Related|More Info tabs + finalize More Info content (drop dead producer block)
- Search service interface + types
- Web search provider (unified /search + facets)
- Recent-search 10 stored / 3 shown
- Search state hook (debounce/min-1/pagination/filters)
- Forward locale to search in useSearchState
- Web search results grid + wire page to state hook
- Web search filters + sort
- Wire search header entry point to /search
- Localize search filter/sort labels
- Replace New Relic with OpenTelemetry/OTLP (SigNoz) (TAN-1874)
- Add OpenTelemetry video/player QoE analytics (TAN-1874)
- OTEL global browser error capture + lint fixes (TAN-1874)
- Restore home-page UI from demo-fixes (TAN-1874)
- Custom social share dialog on detail pages
- Hide Favourite on live-type events (Reminder replaces it)
- Add web Schedule page (events listing) (TAN-1874)
- Add match-type and year search filters as dropdowns
- Align favorite CTA with design (heart icon, always visible, login redirect) (TAN-2064)
- FCM push token registration — web (TAN-802)
- Add player playlist overlay linked to control-bar button (TAN-2094)
- Persist subtitle and audio track selection (TAN-93)
- Restore saved or default tracks on playback start (TAN-93)
- Label audio tracks with localized language names (TAN-93)
- Add unified player settings panel component (TAN-93)
- Surface subtitles and audio in the settings panel (TAN-93)
- Show asset description in the detail hero (TAN-2095)
- Hide rail headings on detail-page related rails (TAN-2095)
- Unify the More Info tab across detail pages (TAN-2095)
- analytics: GA4 web integration (User Analytics) [TAN-960]
- Menu display in sync with figma design (TAN-2105)
- Add Privacy Policy and Terms of Use pages (TAN-2105)
- Add Recently Watched page backed by play history API (TAN-2105)
- Wire up email-change OTP verification with real timer (TAN-2105)
- Surface asset metadata in more info tab as value list
- Add FCM foreground handler and push notification banner (TAN-806)
- Add clear button to search input and filter/sort icons (TAN-2134)
- Replace search sort toggle with a dropdown menu (TAN-2134)
- Move search filters into a slide-out panel with toolbar chips (TAN-2134)
- Submit-only search for japanese locale and allow unicode queries (TAN-424)
- Make search page size configurable, default 24 (TAN-1139)
- Show published date on search result cards (TAN-1139)
- Scope recent searches per user and clear on logout (TAN-1139)
- Open search page from nav icon and remove inline search overlay (TAN-1139)
- Submit-only search with min length 3 and no page refresh (TAN-424)
- Render search result cards as a consistent landscape grid (TAN-1139)
- Show skeleton placeholder grid while search results load (TAN-1139)
- Preserve search query and scroll position on return from detail (TAN-1139)
- Limit search filters to match type and year (TAN-2134)
- Complete the update email flow with the standalone OTP endpoints (TAN-2152)
- Merge top-nav menu items into footer on tablet/mobile (TAN-591)
- Add favorite content-type category mapping (TAN-591)
- Return pagination metadata from getFavorites (TAN-591)
- Fetch all favorite types, split into events/matches, paginate (TAN-591)
- Add responsive styles for favorites tabbed list (TAN-591)
- Add Events/Matches tabbed favorites list UI (TAN-591)
- Replace MyList rails with Events/Matches favorites view (TAN-591)
- Back arrow on /mylist reopens the mobile/tablet menu (TAN-591)
- Reuse favorites row template for Recently Watched (TAN-591)
- Show close (X) instead of Menu on Favorites/Recently Watched (TAN-591)
- Add PPV/TVOD plan tab to Choose Your Plan page (TAN-228)
- Add notification mock state (TAN-794)
- Add notifications mock page (TAN-794)
- Expose notification menu item (TAN-794)
- Persist local FCM notifications (TAN-794)
- Add optional eyebrow line to HeroDetail title (TAN-591)
- Add artworkOverlay slot to HeroDetail (TAN-591)
- Pass episode show title as hero eyebrow (TAN-591)
- Add onPlayOverride to CTAButtons (TAN-591)
- Seed DetailBottomSection Episodes tab from a parent show/season (TAN-591)
- Add HeroPreviewPlayer for in-hero episode playback (TAN-591)
- Add EpisodeDetails client feature (TAN-591)
- Add /episode/{id} route (TAN-591)
- Embed full PlayerComponent in episode details hero instead of separate preview player (TAN-591)
- Implement Figma full-bleed hero layout with overlaid content (TAN-591)
- Apply Figma hero design specifications (typography and dimensions) (TAN-591)
- Reduce play button size and auto-adjust to content (TAN-591)
- Align CTA button left and remove progress bar from hero (TAN-591)
- Update CTA buttons layout to Figma spec (TAN-591)
- Add align-self baseline to CTA buttons (TAN-591)
- Add align-self baseline to primary CTA button (TAN-591)
- Set explicit widths for metadata and video columns (TAN-591)
- Make hero layout responsive across breakpoints (TAN-591)
- Implement in-hero player for show details page (TAN-591)
- Add episode details support and player improvements (TAN-591)
- Render episode details hero title at 36px with 4-line clamp (TAN-591)
- Enable binge-watch overlay for the embedded player (TAN-591)
- Add playToken counter to usePlayOverride (TAN-591)
- Force-reload current source on a later playToken/asset change (TAN-591)
- Keep EmbeddedHeroPlayer mounted across plays instead of unmounting (TAN-591)
- Forward playToken from ShowDetails/EpisodeDetails to the embedded player (TAN-591)
- Extract useHeroPlayer hook from ShowDetails/EpisodeDetails wiring (TAN-591)
- Unify movie and show detail pages to reuse embedded player (TAN-591)
- Merge episode details into unified detail page (TAN-591)
- Compact player UI improvements (TAN-591)
- Add PPV purchases to Manage Plan and Account Subscription pages (TAN-228)
- menu: Show Subscription + Notifications on web, guarded by login redirect
- Prevent repeated error popups by unloading source on playback error (TAN-2195)
- Show accurate multi-plan subscription details on account page (TAN-2153)
- Replace purchase history accordion with dedicated year view (TAN-2153)
- Align manage plan page UI with figma design (TAN-2153)
- Add PPV purchase flow from manage plan page (TAN-2153)
- Add payment callback failure message and order reference helpers (TAN-2153)
- Let PaymentError show the gateway's failure message (TAN-2153)
- Add Manage Subscription button to payment success screen (TAN-2153)
- Wire payment callback screens to gateway message and order reference (TAN-2153)
- Pass idempotencyKey through verifyContext for Redis eviction recovery (TAN-228)
- Add TikTok SVG icon for footer social media links (TAN-2316)
- Add playback speed selector to player settings menu (TAN-2366)
- Show live badge over hero banner image per design (TAN-2372)
- Clean up push token on logout without device deregistration (TAN-2388)
- Add cancel button to reset password form (TAN-2255)
- Extend the session window on each return, with session diagnostics (TAN-2309)
- Add cookie consent and shared privacy preferences (TAN-2164)
- Add deleteAccount to the idp provider (TAN-2408)
- Gate account deletion on having no active subscription (TAN-2408)
- Replace search Filter menu with left aligned dropdowns (TAN-2416)
- Cast to the Chromecast receiver from the web player (TAN-2450)
- Let the embedded player autoplay with sound and live controls (TAN-2375)
- Auto-play live events inline on the event details page (TAN-2375)
- Play event details CTAs in the inline player (TAN-2375)
- Make useSearchState's minimum query length configurable (TAN-2375)
- Progressive search input wired to CMS-configured minimum length (TAN-2375)
- Send the viewer's country to the middleware on OVP calls (TAN-235)
- Render the full top nav bar consistently across nested and detail pages (TAN-2476)
- Match the subscription page to the Choose Your Plan design (TAN-2476)
- Show the nav bar on payment and drop the signup step label (TAN-2476)
- player: Play a live event's resolved playbackAssetId
- schedule: Show and sort the schedule by event start date
- rails: Render SEARCH/events-sourced dynamic rails on the home page
- Drive social sharing visibility from CMS config (TAN-567)
- Add red border and badge border styling for live event hero artwork (TAN-2333)
- Add forceLiveNow dev override for previewing live-now UI (TAN-2333)
- Expose seekable-range end from both player wrappers (TAN-2333)
- Add live-edge latch and Go Live wiring to player controls (TAN-2333)
- Add service-incident selection model (TAN-2457)
- Fetch active service incidents from CMS (TAN-2457)
- Render single active service incident in home banner (TAN-2457)
- Mount service-incident banner between navbar and hero (TAN-2457)
- Show live FCM push as a confirmation dialog (TAN-2457)
- Show service-alert pushes as home banner and align push dialog and banner to Figma (TAN-2457)
- Add play button overlay to episode details hero (TAN-2522)
Other
- Migrate npm auth to shared Nexus restore-npmrc step
- Fix TLS
- TLS fix
- Update values.yaml
- Remove temporary debug logging (TAN-591)
- Web prod: HPA min3/max10 (prod only; dev/staging keep single replica)
Performance
- Render search shell immediately and stream CMS rails behind a loader (TAN-1139)
- Skip favorite lookup on detail pages that cannot be favorited (TAN-2375)
- Limit the Continue Watching rail request to 20 items (TAN-2333)
Refactoring
- login: Integrate password reset functionality
- Remove legacy direct register endpoint (TAN-160)
- Drop hardcoded fake score from show/season parsers
- Gate detail CTAs via passed-in flags (client-safe), not process.env
- Simplify the carousel server-fetcher error path (TAN-2095)
- Extract useFavoriteToggle from CTAButtons (TAN-591)
- Collapse redundant isShow flag into usesSeasonTitleLabel (TAN-591)
- Remove continueWatching wrapper class (TAN-591)
- Extract shared embedded-player hooks from ShowDetails/EpisodeDetails (TAN-591)
- Removed plans (TAN-591)
- Reduce cognitive complexity in ShowDetails and ctadto (TAN-591)
- Replace Schedule's native selects with the shared FilterDropdown menu (TAN-2417)
- Remove update password option from account settings (TAN-2375)
- Remove unused Order and web-inert Download CTAs (TAN-2476)
- Rename PlayerInfo's Go Live gate to showGoLive (TAN-2333)
Reverts
- Remove changePassword 401 exclusion from fetcher (TAN-2130)
- Revert "[TAN-591] feat: show close (X) instead of Menu on Favorites/Recently Watched"
This reverts commit 7d62a90387abb18081d4cec9ebe632eaac8f844b.
- Revert "[TAN-591] chore: update page title from 'My List' to 'Favorites'"
This reverts commit 42e2662c9824901f8f3a238ca7d1a85012680a9f.
- Revert "[TAN-591] chore: update menu label from 'My List' to 'Favorites'"
This reverts commit 5a787c532c4b53fb8f20cef58baf88f1afa28110.