diff --git a/.github/instructions/DONE.md b/.github/instructions/DONE.md index adf974d..193919b 100644 --- a/.github/instructions/DONE.md +++ b/.github/instructions/DONE.md @@ -2,6 +2,13 @@ > Completed tasks from [TODO](./TODO.md). Product, feature, and release history lives in [CHANGELOG](./CHANGELOG.md); this file keeps only engineering and ops notes not captured there. +## Manifest run-scoped rewrite — candidate (a) (2026-09-03) + +- Playout now publishes the live R2 manifest with run-scoped media URIs. `rewriteManifestToRun` in `backend/playout/src/playlist.go` prefixes each bare relative URI (`seg-*.m4s` / `init.mp4`, plus `#EXT-X-MAP:URI`) with `r-{runID}/` before `publishManifest`'s atomic `.tmp` → `CopyObject` commit; skipped in slate mode. Added a stubbable `copyObject` hook for tests (consistent with `putObject`/`listObjects`/`deleteObjects`). +- Tests: `playlist_rewrite_test.go` — `TestRewriteManifestToRun`, `TestRewriteManifestToRun_AlreadyPrefixedUnchanged`, `TestRewriteManifestToRun_HandlesTSAndComments`, `TestRewriteManifestToRun_EmptyRunID`, `TestIsMediaURI`, `TestPublishManifest_RewritesToRunScopedURIs`, `TestPublishManifest_SlateNotRewritten`. +- Docs updated: `STREAMING.md`, `operations/cloudflare-workers-setup.md`, `architecture/README.md` (incl. Level-2 diagram showing the R2-bound `linearvoid-media` Worker and run-scoped layout). +- **Still pending (in TODO): live Validation** — deploy the updated playout to the test lab and confirm manifest/segment URIs resolve via `media.linearvoid.tv`. + ## Test infrastructure & refactors (2026-08-07) - Chat service `main.go` split into 8 packages (config, auth, db, handlers, ws, media, ratelimit, metrics); `db.RedisClient` + `db.PubSub` interfaces added for mocking. @@ -37,3 +44,35 @@ - Test in Firefox: live playback, rebuffer/recovery, chat sync; record quirks in `docs/STREAMING.md` - Rebuild + run playout; confirm `playlist.m3u8` lists ~12 segments at 2s each - Manual: verify viewer latency and cache-hit behavior after the change + +## Chat sidebar (2026-08-17) + +- [x] remove search bar from chat sidebar (not needed for single-room) +- [x] remove "user" toggle button from chat sidebar (hide for now, add back when user interface is stable) +- [x] make login/registration form a modal and only toggle it when user is not logged in and clicks "Login" or "Register" +- [x] when user is logged in, do not show login/registration form +- [x] make sure each message is only rendered once in the chat log (no duplicates on reconnect or initial load) + +### Plan + +Files: `frontend/index.html`, `frontend/src/main.ts`, `frontend/src/style.css`. + +1. **Remove search bar** (single-room) + - `index.html`: delete the `
` block. + - `main.ts`: remove `searchDM()` and the `dm-search-btn` listener; drop the `#dm-search-row` show/hide logic in `switchRoom()` (the `searchRow.hidden = !isDM` lines). Keep `currentDMTarget` only if the "New DM" flow stays. + +2. **Remove "Users" toggle button** + - `index.html`: delete the `