docs: complete presentation chat timeline bridge
This commit is contained in:
@@ -120,10 +120,11 @@ Implementation order:
|
||||
approval UI instead of raw `{ "type": "object" }` as the primary product
|
||||
proof. Implementation:
|
||||
[`schema approval surface`](historical/superpowers/plans/2026-07-09-schema-approval-surface.md).
|
||||
16. Next: bridge presentation chat to the prepared workflow timeline so chat
|
||||
can start the live/replay demo and submit/cancel the schema approval through
|
||||
the existing `useDemoTimeline` execution path. Active implementation plan:
|
||||
[`presentation chat timeline bridge`](superpowers/plans/2026-07-09-presentation-chat-timeline-bridge.md).
|
||||
16. Completed: presentation chat now drives the prepared workflow timeline.
|
||||
The chat run action, schema approval submit/cancel, graph, evidence, and
|
||||
live/replay execution all share `useDemoTimeline`; AI SDK remains a later
|
||||
driver for the same seam. Implementation:
|
||||
[`presentation chat timeline bridge`](historical/superpowers/plans/2026-07-09-presentation-chat-timeline-bridge.md).
|
||||
17. Future: implement Guided Run Beat Gates, presenter companion, Scene 10
|
||||
product graph, final scene visuals, evidence assets, and rehearsal timing.
|
||||
18. Add a static slide/appendix shell only after presentation mode is clear.
|
||||
|
||||
@@ -36,7 +36,7 @@ afterEach(() => {
|
||||
});
|
||||
|
||||
describe("PresentationRoute", () => {
|
||||
it("renders the presentation stage entry point", async () => {
|
||||
it("renders the presentation stage entry point", { timeout: 15000 }, async () => {
|
||||
const { PresentationRoute } = await import("./PresentationRoute.js");
|
||||
render(<PresentationRoute />);
|
||||
expect(screen.getByRole("main", { name: /lda.chat presentation/i })).toBeInTheDocument();
|
||||
@@ -172,4 +172,16 @@ describe("PresentationRoute", () => {
|
||||
expect(await screen.findByRole("heading", { name: /Interrupt, Resume, Evidence/i })).toBeInTheDocument();
|
||||
expect(screen.getByLabelText("demo workflow stage")).toHaveAttribute("data-demo-layout", "approval");
|
||||
});
|
||||
|
||||
it("chat run action advances the replay timeline when no live server is configured", async () => {
|
||||
setReplayMode();
|
||||
window.location.hash = "#scene/workflow-demo/operation";
|
||||
const user = userEvent.setup();
|
||||
const { PresentationRoute } = await import("./PresentationRoute.js");
|
||||
render(<PresentationRoute />);
|
||||
|
||||
const runButton = await screen.findByRole("button", { name: /run replay walkthrough/i });
|
||||
await user.click(runButton);
|
||||
expect(await screen.findByLabelText("workflow.runs.start operation")).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user