- UI wording: "Watch party" = classic video, "Listen party" = classic
audio, "Lounge party" = static party (tab, page, create buttons,
toasts/confirms, server error messages); code names are unchanged
- home: "Parties en cours" with a Watch party / Listen party badge on
each card
- music launch buttons say "Lancer une listen party"; a failed tile
launch now restores its own label instead of always "watch party"
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- new "Parties permanentes" tab (/static, sidebar + mobile sheet),
highlighted on a party's own page too; the home page no longer lists
static parties, and its live "Watch parties en cours" list leaves
their sessions out
- StaticPartyStore now writes data/static-parties/<id>.json - one file
per party, debounced per party, so a write only touches the party that
changed and a corrupt file only costs that party (moved aside to
.corrupt, the rest still load); leftover .tmp files are cleaned up;
deleting a party removes its file and cancels any pending save
- the first release's single static-parties.json is migrated once on
load, then kept as .migrated
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>