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

Settings › Hooks speaks the home page's language #9829

Merged opened this

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

Merged

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

opened this

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.ts now 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.md has a paragraph for the page. No new component class.
  • Test: the new test/hooks-rows.test.ts covers 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 --noEmit and bun scripts/design-lint.ts are clean.
  • Not run: bun scripts/gate.ts printed 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.

Closes #9762

commented

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.ts now 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.md has a paragraph for the page. No new component class.
  • Test: the new test/hooks-rows.test.ts covers 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 --noEmit and bun scripts/design-lint.ts are clean.
  • Not run: bun scripts/gate.ts printed 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.
commented

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.md has a paragraph for the page. It adds no new component class.
  • Tests: the new test/hooks-rows.test.ts has 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 --noEmit and bun scripts/design-lint.ts were 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.

Approved

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).

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs