feat(panel): an answered ask's card heads its reply with no head of its own
What this does
The developer found the head on an answered Inbox ask's card redundant ("Pick one · ✓ Chose 7 days", "Steps · ↶ Couldn't do it 1/3", "Your answer · ✓ Answered"), since the card's controls already show the answer. This PR removes it. It is the answered-card counterpart of #4194, which drops the same heads from the open draft reply.
-
Version-5 thread: the card at the head of the answering member's reply draws only its read-only, filled-in controls. Every kind still shows its outcome without the head:
- pick-one: the picked option stays checked.
- yes/no: the pressed button stays pressed, with its ✓ or ↶ glyph in its tone.
- to-do: the steps stay ticked as sent, and Mark done or Couldn't do it stays pressed with its glyph.
- form: each field holds its value.
The hairline that separated the head from the controls goes with it.
-
Answer with words only: this kind has no controls, so it now draws no card, and the reply is just its words. Without the head, though, nothing would show which reply answered the ask, for example when several members reply on the thread. Agreed with the orchestrator: the agent's message now ends with a small "✓ Answered" pill (
AnsweredMarker,data-inbox-settled) where it asked. It has no card around it and is the same size as the "Waiting on you" marker in #4194. -
Older single-item layout (before v5): no change was needed. Its answered controls never had a head row.
askHeadWords and sentStamp still have other callers, so no code became dead. The CSS for .inbox-ask-standing[data-tone], which only the removed head used, is dropped.
Screenshots (light, desktop profile)
These are rendered from the inbox test harness's fixtures with the bundled panel stylesheet.
| Ask | Before | After |
|---|---|---|
| Pick one | ![]() | ![]() |
| Yes/no (Request changes) | ![]() | ![]() |
| To-do (Couldn't do it, 1 of 3 ticked) | ![]() | ![]() |
| Form (partly filled) | ![]() | ![]() |
| Words only, a second reply after it | ![]() | ![]() |
Tests
desktop-inbox.test.ts:- The answered-card assertions now check that the card has no
.inbox-ask-headand still reads its outcome from its controls: the checked pick, the pressed button and its tone, the ticked steps. - The words-only test now covers a thread with a second member reply after the answer. It checks that no card stands, the answering reply is just its words, and the agent's message alone carries the "Answered" marker.
- Without the change, 17 tests fail.
- The answered-card assertions now check that the card has no
pnpm check:affected: lint, knip and tests pass. Two exceptions:app-menu.test.tsneeds the Electron binary, which a Linux bootstrap skips.- The panel typecheck was OOM-killed inside the run. I reran it alone, and it passes.
Out of scope: the open draft reply (#4194) and the rest of the Inbox. Since #4194 also edits AskBox and the .inbox-ask CSS, whichever PR lands second will need a small rebase.
Made with Luke









