fix: hide presentation target status outside demo arc

This commit is contained in:
lda
2026-07-12 15:15:21 +07:00 Verified
parent 8926cb9aef
commit e5e44dd6bd
3 changed files with 36 additions and 1 deletions
@@ -41,4 +41,28 @@ describe("PresentationFooter", () => {
expect(within(footer).getByText("3 / 4")).toBeInTheDocument();
expect(within(footer).getByText(/workflow\.runs\.trace/)).toBeInTheDocument();
});
it("hides target status outside the demo arc", () => {
render(
<PresentationFooter
location={{
kind: "main",
sceneId: "conclusion",
beatId: "questions",
focusPath: [],
}}
evidence={[]}
targetStatus={{
kind: "replay",
label: "Replay evidence",
detail: "reviewed recording",
}}
showEvidenceReceipt={false}
inspectEvidence={vi.fn()}
/>,
);
const footer = screen.getByRole("contentinfo", { name: /presentation footer/i });
expect(within(footer).queryByLabelText("presentation evidence mode")).not.toBeInTheDocument();
});
});
@@ -3,6 +3,7 @@ import { SceneProgress } from "./SceneProgress.js";
import { EvidenceReceipt } from "./evidence/EvidenceReceipt.js";
import { PresentationTruthBadge } from "./PresentationTruthBadge.js";
import type { PresentationTargetHealth } from "./presentation-target-status.js";
import { isDemoChromeScene } from "./presentation-demo-chrome.js";
import type { MainLocation } from "./storyboard.js";
type PresentationFooterProps = {
@@ -22,7 +23,7 @@ export const PresentationFooter = ({
}: PresentationFooterProps) => (
<footer className="presentation-footer" aria-label="presentation footer">
<SceneProgress location={location} />
<PresentationTruthBadge status={targetStatus} />
{isDemoChromeScene(location.sceneId) && <PresentationTruthBadge status={targetStatus} />}
<EvidenceReceipt
records={evidence}
visible={showEvidenceReceipt}
@@ -367,6 +367,16 @@ describe("PresentationRoute", () => {
expect(mockedCallOperation).not.toHaveBeenCalledWith("workflow.health", expect.anything(), expect.anything());
});
it("hides target status on a non-demo route", async () => {
window.sessionStorage.setItem("lda.workflowConsole.target", "http://127.0.0.1:8765/rpc");
window.location.hash = "#scene/conclusion/questions";
const { PresentationRoute } = await import("./PresentationRoute.js");
render(<PresentationRoute />);
expect(await screen.findByRole("contentinfo", { name: /presentation footer/i })).toBeInTheDocument();
expect(screen.queryByLabelText("presentation evidence mode")).not.toBeInTheDocument();
});
it("opens Scene 10 approval from the canonical hash", async () => {
window.location.hash = "#scene/typed-human-boundary/approval";
const { PresentationRoute } = await import("./PresentationRoute.js");