Public: anyone can read this; the crew can change it.

Settings › Confirms, what the forge's agent waits for your yes on, speaks the home page's language #9986

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

`/settings/confirms` no longer uses a card. The waiting asks are now rows in a `.list` under one `settings-block` with an h2, "Waiting for your yes".

shipped production is serving it deploy 3d07d6f

opened this

/settings/confirms no longer uses a card. The waiting asks are now rows in a .list under one settings-block with an h2, "Waiting for your yes".

Changed in src/web/pages/confirms.ts:

  • Rows: each row is still one sentence with its Yes button, a form POST to /settings/confirms/:id. The POST handler and its same-origin check are untouched.
  • Fold: the arguments fold now uses a plain confirm-args div instead of the card-body class, which would have counted as a card.
  • Empty queue: it says "Nothing waiting: when the agent asks before acting, it shows here." in one muted line, where the old boxed empty() card was.
  • Once-shown result: the answer after a yes on an invite link, claim link or credential is also a settings-block (h2 "Done: <tool>"), because card() there would have left a card inside <main>.

Tests: test/confirms-language.test.ts is new. It checks the empty queue, a real held ask (the block, the .list, the Yes form action, no class="card) and that another person's page doesn't list it. Against the old page, both page tests fail. With the change, they pass alongside test/conversation-confirm.test.ts (26 pass). bun x tsc --noEmit, scripts/gate.ts and scripts/design-lint.ts are clean. I did not run the whole suite; the forge's check does that on push.

The 404 check: the issue asks for a non-admin's 404 "as today", but /settings/confirms has never been admin-only; every signed-in person sees their own queue. I tested the 404 on /settings/accounts for a non-admin instead. I did not change who can see the confirms page.

Not done: no new component CSS and no entry in docs/design/areas/, because no new component class was added beyond the confirm-args hook.

To try it: sign in, have the agent ask for something that needs a yes (for example archiving a repo), and open /settings/confirms.

🤖 Generated with Claude Code

Closes #9951

commented

/settings/confirms no longer uses a card. The waiting asks are now rows in a .list under one settings-block with an h2, "Waiting for your yes".

Changed in src/web/pages/confirms.ts:

  • Rows: each row is still one sentence with its Yes button, a form POST to /settings/confirms/:id. The POST handler and its same-origin check are untouched.
  • Fold: the arguments fold now uses a plain confirm-args div instead of the card-body class, which would have counted as a card.
  • Empty queue: it says "Nothing waiting: when the agent asks before acting, it shows here." in one muted line, where the old boxed empty() card was.
  • Once-shown result: the answer after a yes on an invite link, claim link or credential is also a settings-block (h2 "Done: <tool>"), because card() there would have left a card inside <main>.

Tests: test/confirms-language.test.ts is new. It checks the empty queue, a real held ask (the block, the .list, the Yes form action, no class="card) and that another person's page doesn't list it. Against the old page, both page tests fail. With the change, they pass alongside test/conversation-confirm.test.ts (26 pass). bun x tsc --noEmit, scripts/gate.ts and scripts/design-lint.ts are clean. I did not run the whole suite; the forge's check does that on push.

The 404 check: the issue asks for a non-admin's 404 "as today", but /settings/confirms has never been admin-only; every signed-in person sees their own queue. I tested the 404 on /settings/accounts for a non-admin instead. I did not change who can see the confirms page.

Not done: no new component CSS and no entry in docs/design/areas/, because no new component class was added beyond the confirm-args hook.

To try it: sign in, have the agent ask for something that needs a yes (for example archiving a repo), and open /settings/confirms.

🤖 Generated with Claude Code

commented

The check failed because none of my commit messages had a "Try:" line. I added an empty commit whose message has one: open /settings/confirms on the preview signed in. A waiting ask shows as a row with its Yes button, and an empty queue shows as one line.

bun scripts/gate.ts now passes locally. I pushed, so the forge will rerun its check. The code is unchanged since the last push, so the earlier test and type-check results still stand.

Approved

Rows in one settings-block with an h2, one-line empty state, same-origin Yes form kept, once-shown result also restyled. No card left in main. Next: (1) give .confirm-args a rule or reuse an existing fold-body class and note it in docs/design/areas/ so the new hook is not an orphan; (2) the 404 test hits /settings/accounts, not this page, so it guards nothing about confirms: replace it with a signed-out check for /settings/confirms (sign-in redirect) or drop it. No TUI change needed: the page's behaviour is unchanged.

commented

Left #9951 open: 1 unticked item remain (test/confirms-language.test.ts holds all of the above, plus a non-admin's 404 as today.).

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs