Skip to content

Improve persistent playback, galaxy visuals, and library refresh - #2

Merged
pushpinderbal merged 1 commit into
mainfrom
feat/persistent-player-galaxy-library-refresh
Sep 30, 2026
Merged

pushpinderbal merged 1 commit into
mainfrom
feat/persistent-player-galaxy-library-refresh

Conversation

@pushpinderbal

Copy link
Copy Markdown
Owner

Summary

Keep playback running while viewers switch between Live TV, Movies, and Series, browse other titles, or scroll the library. The player stays pinned below the header and keeps the same video element and stream; opening Settings also preserves playback.

  • Reveal fullscreen controls on touch without pausing playback, make LIVE grey when more than 15 seconds behind and jump to the latest available seek point, and use lighter control icons.
  • Animate player closing, provide an icon-only stop control, improve title typography, and briefly animate play/pause feedback instead of displaying redundant playback state.
  • Add clickable playback breadcrumbs for library, category, title, and season. Preserve portal category IDs and resolve category names for searched titles, including season/episode navigation and browser history.
  • Replace the moving static galaxy background with a neutral canvas star field whose randomly located clusters slowly form and disperse. Respect reduced motion, stop animation in hidden tabs, and replace the infinity logo/favicon with a galaxy-and-play mark.
  • Compact episode listings into responsive columns, remove the redundant header status, and remove the search input's extra outline.

Successful manual and scheduled library refreshes now expire cached movie, series, and episode lists. Open lists reload while preserving season selection and playback; other lists fetch on their next request. Episode lists expire independently after EPISODE_CACHE_TTL (default 1h), while movie/series listings retain the CATALOG_REFRESH_INTERVAL default of 24h. TTL expiry is checked on demand rather than polling open episode lists every hour.

Persist the library refresh revision and fence shared requests/cache writes so older requests cannot overwrite refreshed lists or newer title records. Retain playback records for titles returned by older requests, preserve saved lists on failed refresh, and invalidate existing browse pages once to populate category IDs. Document the cache behavior and configuration, and include the local UI framework guidance in AGENTS.md.

Validation

  • go test ./...
  • go vet ./...
  • bun run build in web (existing bundle-size warning)
  • Full Playwright workflow suite using a fresh Vite server on port 5174: 49 passed, 1 optional screenshot test skipped.
  • FFmpeg-to-browser integration with Google Chrome: real HLS decoding, seeks, persistent playback across library tabs and library/guide refreshes, channel switching, and stream-slot release.
  • Integration coverage for cache expiry, persistence, failed refreshes, and concurrent requests finishing across a library refresh.

@pushpinderbal
pushpinderbal merged commit fc276dd into main Sep 30, 2026
1 check passed
@pushpinderbal
pushpinderbal deleted the feat/persistent-player-galaxy-library-refresh branch September 30, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant