watchparty/client/src
Nicolas 5182def5c9
Some checks failed
Publier l'image Docker / test (pull_request) Failing after 4s
Publier l'image Docker / publish (pull_request) Has been skipped
Add static (persistent) watch parties
A watch party built from a whole series or video playlist that remembers
the group's progress and each member's, so someone coming back or joining
late sees the items they missed and can catch up (solo, as a catch-up
watch party, or by marking items watched).

- StaticPartyService + StaticPartyStore: first on-disk state (JSON file
  under DATA_DIR, atomic debounced writes, flushed on SIGTERM)
- each session is an ordinary Party linked via party.staticLink; group
  position is saved by the 20s sweep and resumed on the next session
- PartyService.completeCurrentItem centralizes "item done" (Emby Played +
  static progress); new host-only "itemEnded" socket event covers the
  last queued item, which was never marked Played before
- missed = group-completed minus watched in-app minus Emby Played
- /static/:id view, create buttons on series/playlist pages, home section
- Docker volume for /data, spec/static-watch-party.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 18:54:47 +02:00
..
api Add static (persistent) watch parties 2026-09-24 18:54:47 +02:00
musicBar Fix the music bar mobile now-playing screen not fitting landscape 2026-09-18 11:43:36 +02:00
public Make the app installable as a PWA 2026-09-16 14:07:28 +02:00
shell Add a mobile banner nudging an install of the PWA 2026-09-16 23:29:27 +02:00
styles Fix album track rows collapsing to 3 lines on mobile 2026-09-16 23:18:12 +02:00
views Add static (persistent) watch parties 2026-09-24 18:54:47 +02:00
alphaIndex.css Fix library tile buttons rendering above the sticky header while scrolling 2026-09-16 22:37:11 +02:00
alphaIndex.ts Fix the alphabet index bucketing by display name instead of Emby SortName 2026-09-16 21:36:37 +02:00
app.ts Add static (persistent) watch parties 2026-09-24 18:54:47 +02:00
cast.ts Cast a listen party too, and fix a slow/freezing catalog 2026-09-15 21:32:34 +02:00
deviceId.ts Device detection: confirm before disconnecting another device 2026-09-14 17:32:21 +02:00
global.d.ts Replace native <video controls> with custom transport controls 2026-09-15 11:30:50 +02:00
index.html Make the app installable as a PWA 2026-09-16 14:07:28 +02:00
loading.ts Add a spinner to every loading state 2026-09-14 23:30:25 +02:00
mediaSession.ts Link video/music playback to the OS own media controls (Windows SMTC, macOS Now Playing, ...) 2026-09-17 23:41:39 +02:00
pwaInstall.css Add a mobile banner nudging an install of the PWA 2026-09-16 23:29:27 +02:00
pwaInstall.ts Add a mobile banner nudging an install of the PWA 2026-09-16 23:29:27 +02:00
router.ts Rewrite server + client in TypeScript, service-oriented server architecture 2026-09-14 09:38:14 +02:00
tiles.css Replace every blocking alert() with a light toast, fix a mobile grid bug 2026-09-16 17:34:10 +02:00
tiles.ts Replace every blocking alert() with a light toast, fix a mobile grid bug 2026-09-16 17:34:10 +02:00
toast.css Replace every blocking alert() with a light toast, fix a mobile grid bug 2026-09-16 17:34:10 +02:00
toast.ts Replace every blocking alert() with a light toast, fix a mobile grid bug 2026-09-16 17:34:10 +02:00
types.ts Add static (persistent) watch parties 2026-09-24 18:54:47 +02:00