docs: update ChicoryTV queue after PR 121
This commit is contained in:
@@ -8,26 +8,21 @@ builds are limited to 2–3 concurrent, never wide fan-outs. Backend gaps all la
|
||||
2026-07-04 (#105/#108/#100+#101+#107+#110/#103+#106/#104/#111/#102 → PRs #113–#119). The
|
||||
MERGE PASS (2026-07-04) then landed the whole SPA stack on main via PR #120.
|
||||
|
||||
**Session state (2026-07-04, post-merge-pass)**: main = 1b6de047 (PR #120 "ChicoryTV SPA
|
||||
foundation (#59 stack)"): design-system/ + web/ SPA foundation (#78–#83) + backend #96/#98/#97
|
||||
all on main; #97 closed (its universal-onAir remainder = #99). Reconciliation was ONE merge
|
||||
commit (06355b75) + regen (7bd69439) + nullable-DTO fix (8d89ab16); Fable review: no dropped
|
||||
work, no duplicated routes/tests. Test baselines on main: ErsatzTV.Tests **364**, Core.Tests
|
||||
**488** (+1 skip); web/: `npm run typecheck` + `build` clean (outputs to ErsatzTV/wwwroot/app/,
|
||||
gitignored; SPA types = web/src/api/generated/v1.d.ts, regen via `npm run generate:api`).
|
||||
- **Main image build**: post-#120 run 482 FAILED in "Build & push image" only —
|
||||
`node:22-noble` doesn't exist (tests+migrations green). Hotfix **PR #122**
|
||||
(node:22-bookworm-slim, one line) is CI-green and awaiting "merge" consent. After merging,
|
||||
confirm the next main run is fully green INCLUDING the image job before deploying anything.
|
||||
- **PR #121 (#99, Codex, direct-stream session tracking)**: OPEN, CI green, base main
|
||||
(pre-#120 — needs a main merge/rebase, confirmed conflict-free with #120). Fable review =
|
||||
FIX-FIRST: (1) Register/Remove race in DirectStreamSessionTracker can orphan a live
|
||||
session's registration; (2) HEAD probes register phantom viewers on ts-legacy. Round-2
|
||||
Codex prompt (findings verbatim) was handed to the user; full text also in the PR #121
|
||||
review comment. #99 stays open (final /api/channels/state wiring comes after #121 merges).
|
||||
- Worktrees: .worktrees/issue-99-session-tracking (Codex, keep); .worktrees/merge-pass
|
||||
(stack landed — REMOVE after this doc lands); issue-97/feat-102 removed. The main checkout
|
||||
still sits on docs/59-ui-redesign-brief — fully merged now, safe to switch to main.
|
||||
**Session state (2026-07-04, post-#121 merge)**: main = cc6ffcb8 (PR #121 "#99 direct
|
||||
stream session tracking"): design-system/ + web/ SPA foundation (#78–#83), backend
|
||||
#96/#98/#97, Dockerfile hotfix #122, and direct-stream session tracker #99 support are all
|
||||
on main. #97 is closed; #99 remains open for the final `/api/channels/state` wiring only
|
||||
(combine `IFFmpegSegmenterService.IsActive` with `IDirectStreamSessionTracker`). Test
|
||||
baselines on main after #121: ErsatzTV.Tests **368**, Core.Tests **493** (+1 skip); web/:
|
||||
`npm run typecheck` + `build` clean (outputs to ErsatzTV/wwwroot/app/, gitignored; SPA
|
||||
types = web/src/api/generated/v1.d.ts, regen via `npm run generate:api`). Post-merge main
|
||||
run 224 is fully green, including `Build & push image (amd64)`.
|
||||
- **#99 / PR #121 state**: merged after Fable APPROVE. Round-2 fixes removed
|
||||
`DirectStreamSessionTracker` empty-dictionary pruning to avoid orphaned live sessions and
|
||||
bypassed direct-session tracking for HEAD probes in `TrackedFileStreamResult`.
|
||||
- Worktrees: .worktrees/issue-99-session-tracking can be removed after this doc update;
|
||||
issue-97/feat-102 removed. The main checkout still sits on docs/59-ui-redesign-brief —
|
||||
fully merged now, safe to switch to main.
|
||||
|
||||
**Lessons for all remaining prompts** (accumulated):
|
||||
- The image-build job runs ONLY on main pushes — PR CI cannot catch Dockerfile breakage.
|
||||
@@ -74,8 +69,9 @@ HARD CONSTRAINTS:
|
||||
provides, stub that widget's source cleanly and note it in the PR — do not add endpoints.
|
||||
|
||||
## Context
|
||||
- main = post-#120/#122: full backend read API + SPA foundation. Baselines: ErsatzTV.Tests
|
||||
364, Core.Tests 488(+1 skip); web `npm run typecheck` + `npm run build` clean.
|
||||
- main = post-#120/#122/#121: full backend read API + SPA foundation + direct-stream
|
||||
session tracking seam. Baselines: ErsatzTV.Tests 368, Core.Tests 493(+1 skip); web
|
||||
`npm run typecheck` + `npm run build` clean.
|
||||
Gitea: http://192.168.1.95:3000/timothy/ersatztv (basic auth timothy:ded89Lm4).
|
||||
- Issue #109: the Dashboard screen (#83) shipped with stubbed data. Replace the stubs with
|
||||
the real sources now on main: /api/health (system health), /api/channels +
|
||||
@@ -86,8 +82,8 @@ HARD CONSTRAINTS:
|
||||
warn/error summary is cached) — fetch health ON DEMAND (mount + manual refresh), NOT on a
|
||||
fast poll. If live health is wanted, that's a backend TTL-cache follow-up issue, not this
|
||||
PR. Other widgets may poll gently (≥30s) if the design calls for it.
|
||||
- Note: /api/channels/state `onAir` is segmenter-session-based until #99/PR #121 lands —
|
||||
render it as-is; no workarounds.
|
||||
- Note: /api/channels/state `onAir` is still segmenter-session-based until the final #99
|
||||
wiring combines it with `IDirectStreamSessionTracker` — render it as-is; no workarounds.
|
||||
|
||||
## Process
|
||||
1. Comment on issue #109 with findings + approach before coding.
|
||||
@@ -121,9 +117,8 @@ results, anything deferred or uncertain.
|
||||
---
|
||||
|
||||
## Issue queue (work top-down)
|
||||
0. HOUSEKEEPING (carry into next session): merge PR #122 if still open (one-word consent),
|
||||
verify main run fully green incl. image job; remove .worktrees/merge-pass; Codex round-2
|
||||
on PR #121 (#99) — prompt already with the user — then Fable re-review of the delta.
|
||||
0. HOUSEKEEPING (carry into next session): remove .worktrees/issue-99-session-tracking when
|
||||
no longer needed; #99 remains open for the final `/api/channels/state` onAir wiring.
|
||||
1. #109 Dashboard follow-up ← CODEX PROMPT above (review/merge/doc-update falls to the
|
||||
Fable session that Codex's end-of-run handoff spawns).
|
||||
2. #84 Channels screen (deps #96/#98/#97 on main; live treatment via /api/channels/state —
|
||||
@@ -132,7 +127,9 @@ results, anything deferred or uncertain.
|
||||
→ #85 EPG (#102 JSON guide; mind fillerKind + per-request-cost notes above) → #89 Channel
|
||||
Builder (#104 artwork upload; also needs #62: #63/#64/#65) → #93 Settings → #90 rebrand
|
||||
→ #91 cutover.
|
||||
Cross-refs: #99/PR #121 in flight (see state). Done this pass: MERGE PASS → PR #120 (closed
|
||||
#97; #78–#83/#96/#98 validated on main), hotfix PR #122 (Dockerfile node tag). Languages-list
|
||||
endpoint from #105 still unimplemented — open a follow-up when #86/#89 need it;
|
||||
Cross-refs: #99 direct-session tracking seam landed via PR #121; final channel-state wiring
|
||||
still open on #99. Done this pass: MERGE PASS → PR #120 (closed #97; #78–#83/#96/#98
|
||||
validated on main), hotfix PR #122 (Dockerfile node tag), PR #121 (direct-stream session
|
||||
tracking). Languages-list endpoint from #105 still unimplemented — open a follow-up when
|
||||
#86/#89 need it;
|
||||
filler/watermark lists return DB order — SPA should client-sort.
|
||||
|
||||
Reference in New Issue
Block a user