practice polish: no phantom wake, Practice header tag, honest meta

- needsContinuation: a persisted problem-pose ack (terminate:true ended
  the turn deliberately) owes no continuation — reloads after a pose no
  longer wake a phantom turn; error results stay owed like any
  interrupted tool.
- Chat header: practice sessions swap the phase chip for a quiet
  Practice tag (no probe→teach arc applies) and hide the coverage ring
  (practice never extracts — an ever-filling ring would lie).
- ChatSummary gains pendingProblem (activeProblemOf at projection); the
  sidebar meta says 'Problem waiting' for a practice row with a posed
  problem. Kind threads through Chat/[id] page.
- Home picker chip gains Clear (picks were otherwise irremovable).
This commit is contained in:
amosblomqvist
2026-10-04 22:06:22 +03:00
parent e76e42f764
commit 9362baf36e
9 changed files with 101 additions and 7 deletions
+6
View File
@@ -27,6 +27,7 @@ function item(overrides: Partial<ChatListItem>): ChatListItem {
messageCount: 4,
phase: "probe",
pendingQuestion: false,
pendingProblem: false,
busy: false,
...overrides,
};
@@ -135,4 +136,9 @@ describe("SessionRow practice badge (practice sessions, 2026-10-04)", () => {
const html = render(item({ busy: true }));
assert.match(html, /Teacher is working…/);
});
it("a practice row with a posed problem says the problem is waiting", () => {
const html = render(item({ kind: "practice", pendingProblem: true }));
assert.match(html, /Problem waiting ·/);
});
});