fix: address review findings for defense compositor

- S1: Remove global html/body overflow:hidden; scope to .presentation-route
- S2+P1: Add CSS selectors for data-stage-theme, data-chat-theme, data-chat-mode
- S3: Add distinct visual treatments per SceneView type (positioning, boundary, lifecycle, architecture, authoring, evaluation)
- S4+P2: Move discussion index to reducer state; Escape closes all overlays; remove miswired button
- P3: Add 8 missing Q&A discussion branches across lifecycle, authoring, architecture, evaluation, workflow-demo
- P4: Force replay now restores replay evidence
- P5: Add scene progress display and scene reset to presenter controls
- P6: Fix default dock mode to use composition.chatMode
- P7: Wrap decodeURIComponent in try-catch for malformed hashes
This commit is contained in:
lda
2026-07-04 17:31:52 +07:00 Verified
parent d80a4650eb
commit 43c7105575
11 changed files with 523 additions and 31 deletions
@@ -23,6 +23,11 @@ describe("storyboard navigation", () => {
expect(locationFromHash("#discuss/nope")).toEqual(defaultMainLocation);
});
it("falls back for malformed percent-encoded hashes", () => {
expect(locationFromHash("#scene/%ZZ/%ZZ")).toEqual(defaultMainLocation);
expect(locationFromHash("#discuss/%ZZ")).toEqual(defaultMainLocation);
});
it("advances within a scene before advancing to the next scene", () => {
expect(nextMainLocation({ kind: "main", sceneId: "thesis", beatId: "title" })).toEqual({
kind: "main",