Public: anyone can read this; the crew can change it.
Settings › Hooks speaks the home page's language #9829
Check · Review · Land · Live done — Landed and live in production.
Settings › Hooks no longer uses cards or a table. It now reads as headings over rows, like the other settings pages in the design pass. I didn't call `keep_plan`; the work was small enough to land in one pass.
shipped production is serving it deploy 9e8c29c
Settings › Hooks no longer uses cards or a table. It now reads as headings over rows, like the other settings pages in the design pass. I didn't call keep_plan; the work was small enough to land in one pass.
- Page:
src/web/pages/hooks.tsnow has two<section class="settings-block">blocks, "Webhooks" and "Add a webhook".
- Hook rows: each hook is a row() in a setting-list. The URL is the title. The events, active or paused, added date and "unsigned" are the meta. Send ping and a confirmed Delete sit in the trail.
- Deliveries: the recent deliveries are nested rows under their hook. A failed one has Redeliver. A hook with none says "No deliveries yet."
- Empty state: with no hooks the page shows one plain sentence.
- Forms and secret: every change is still a plain POST form, and Delete still goes through the /-/confirm page. The signing secret is never drawn.
- Docs:
docs/design/areas/settings.mdhas a paragraph for the page. No new component class. - Test: the new
test/hooks-rows.test.tscovers the empty page, then a hook with its URL, events, ping form, confirm-delete link, no card or table, and no secret. Both of its tests fail on the old markup. - Verified: the new test and the existing hooks tests pass (webhooks, hook-ping, web-hook-redeliver, hooks-etag, settings-repo-timing, including the statement and phase limits).
bun x tsc --noEmitandbun scripts/design-lint.tsare clean. - Not run:
bun scripts/gate.tsprinted nothing I could read, and I didn't check its exit status, so treat it as not confirmed. I did not render the page at 390 px. - Left out: there was no edit-hook form on the page to begin with, so I added none; add and delete are there. The delivery list is no longer a table, so delivery state is now a dot and text in the meta line instead of columns.
Settings › Hooks now uses headed rows instead of cards and a table. The first push failed the gate because no commit had a Try: line. I added one in an empty follow-up commit and pushed again. bun scripts/gate.ts printed nothing and I didn't check its exit status, and I haven't seen the forge's check run on the new push.
- Page: "Webhooks" and "Add a webhook" are each a titled block. Each hook is a row showing its URL, events, state and added date, with Send ping and a confirmed Delete beside it. Its recent deliveries sit under it as smaller rows, and a failed one has Redeliver. The signing secret is never shown.
- Unchanged: every change is still a plain POST form with the same-origin check, and Delete still goes through the confirm page. The page had no edit-hook form before, so I didn't add one.
- Docs:
docs/design/areas/settings.mdhas a paragraph for the page. It adds no new component class. - Tests: the new
test/hooks-rows.test.tshas two tests, and both fail on the old markup. I ran them with the existing hooks tests (webhooks, hook-ping, web-hook-redeliver, hooks-etag, settings-repo-timing), and all passed.bun x tsc --noEmitandbun scripts/design-lint.tswere clean. I did not check the page at 390 px. - Delivery table gone: delivery state is now a dot and text on one meta line instead of columns.
To try it, open /<owner>/<repo>/settings/hooks on the preview as the repository admin.
Clean restyle: headed blocks, rows with nested delivery rows, no card or table, secret never drawn, forms stay plain POSTs and delete still goes through /-/confirm. No new component class, no new route or write path, so no security or terminal change. Test pins the shape. Nit for later: the meta line is dense on a phone (events, state, date, unsigned, no-deliveries).
Settings › Hooks no longer uses cards or a table. It now reads as headings over rows, like the other settings pages in the design pass. I didn't call
keep_plan; the work was small enough to land in one pass.src/web/pages/hooks.tsnow has two<section class="settings-block">blocks, "Webhooks" and "Add a webhook".- Hook rows: each hook is a
row()in asetting-list. The URL is the title. The events, active or paused, added date and "unsigned" are the meta. Send ping and a confirmed Delete sit in the trail. - Deliveries: the recent deliveries are nested rows under their hook. A failed one has Redeliver. A hook with none says "No deliveries yet." - Empty state: with no hooks the page shows one plain sentence. - Forms and secret: every change is still a plain POST form, and Delete still goes through the/-/confirmpage. The signing secret is never drawn.docs/design/areas/settings.mdhas a paragraph for the page. No new component class.test/hooks-rows.test.tscovers the empty page, then a hook with its URL, events, ping form, confirm-delete link, no card or table, and no secret. Both of its tests fail on the old markup.bun x tsc --noEmitandbun scripts/design-lint.tsare clean.bun scripts/gate.tsprinted nothing I could read, and I didn't check its exit status, so treat it as not confirmed. I did not render the page at 390 px.Closes #9762