Public: anyone can read this; the crew can change it.
The /audit page, who can do what across every app, speaks the home page's language #9866
Check · Review · Land · Live done — Landed and live in production.
`/audit` no longer draws any card. Each part of the page is now a plain `<section class="settings-block">` with its `<h2>` and badges on one line above its rows; the class already exists, so nothing new was added. The `section()` helper in `src/web/pages/audit.ts` is replaced by `part()`, and no `card(` call is left in the file.
shipped production is serving it deploy a5a2512
/audit no longer draws any card. Each part of the page is now a plain <section class="settings-block"> with its <h2> and badges on one line above its rows; the class already exists, so nothing new was added. The section() helper in src/web/pages/audit.ts is replaced by part(), and no card( call is left in the file.
- Headings: each app's heading is an
<h2>now (it was an<h3>), and so is "Unread". "What changed" is a section with an<h2>, and its three parts (pulls at the wall, contract changes, doors over time) keep<h3>s under it. - Summary: the counts sentence at the top ("2 apps with a contract, …") is a lead
<p>now, not an<h2>, so it doesn't sit at the same level as the app headings. - What stays the same: the policy table, the
/audit#owner-namelinks, the "Knock now" form and the CSV. Apps without a contract are still listed as rows under "Unread". - Layout: the card used to clear the default heading margins and the indent on the problem sentences. Without it, a
<h3>inside a section's heading line would pick up default margins, so the one existing rule insrc/web/style/components.tsthat zeroes heading margins in a.settings-blockheading line now coversh3too. The problem sentences use the existingprose-pageso they don't pick up an indent. Rows in a list now have the normal thin line between them, which the card used to remove. - Test:
test/audit.test.tsnow checks that there is noclass="cardand nodata-toneon the page, that each app is a section under its<h2>, and that an app without a contract is a row under "Unread". It fails on main today. The existing test that a stranger sees only public apps is unchanged and passes. - Docs: the
/auditparagraph indocs/design/areas/lists.mdnow describes the new shape.
To check: bun test test/audit.test.ts test/audit-timing.test.ts test/tui-audit.test.ts. I also ran the design, style, capacity, accounts, probe and og-tags tests, bun scripts/design-lint.ts, bun scripts/gate.ts and bun x tsc --noEmit; all pass. Because of the stylesheet edit, scripts/fast.ts named 1,320 test files, so I picked these by hand and left the full suite to the forge's check. I didn't call keep_plan because that tool isn't available in this session.
🤖 Generated with Claude Code
/audit no longer draws any card. Each part of the page is now a <section class="settings-block">, a class that already exists, with an <h2> and its badges on one line above its rows. The section() helper in src/web/pages/audit.ts is replaced by part(), and no card( call is left in the file.
- Headings: each app's heading is an
<h2>now (it was an<h3>), and so is "Unread". "What changed" is a section with an<h2>, and its three parts (pulls at the wall, contract changes, doors over time) keep<h3>s under it. - Summary: the counts sentence at the top ("2 apps with a contract, …") is a lead
<p>now, not an<h2>, so it doesn't sit at the same level as the app headings. - What stays the same: the policy table, the
/audit#owner-namelinks, the "Knock now" form and the CSV. Apps without a contract are still listed as rows under "Unread", and a stranger still sees only public apps. - Layout: without the card's styles, a heading inside a section's heading line would pick up the browser's default margins. The existing rule in
src/web/style/components.tsthat zeroes heading margins in a.settings-blockheading line now coversh3as well ash2. The problem sentences use the existingprose-pageso they keep the page's own edge. Rows in a list now have the normal thin line between them, which the card used to remove. - Test:
test/audit.test.tsnow checks that there is noclass="cardand nodata-toneon the page, that each app is a section under its<h2>, and that an app without a contract is a row under "Unread". It fails on main. - Docs: the
/auditparagraph indocs/design/areas/lists.mdnow describes the new shape.
The audit tests (test/audit.test.ts, test/audit-timing.test.ts, test/tui-audit.test.ts) pass. Earlier I also ran the design, style, capacity, accounts, probe and og-tags tests, bun scripts/design-lint.ts, bun scripts/gate.ts and bun x tsc --noEmit, and all were clean. Because of the stylesheet edit, scripts/fast.ts named 1,320 test files, so I picked these by hand and left the full suite to the forge's check.
Try: open /audit on the preview. Each app, Unread and What changed is a heading over its rows, with no boxed card.
🤖 Generated with Claude Code
Approved. /audit serves 200 on the preview with no card class. Each part is a settings-block section under an h2, apps without a contract are Unread rows, and the existing rule is reused with no new class. The summary is now a plain lead p, so the page has one heading level for apps. The doc line is updated and the test fails on main. Two things I would do next: (1) assert the unsound section and the What changed h2/h3 nesting in the test, since only the notes, Unread and tone checks are pinned; (2) check the 360px look of the .bar heads when a badge and a commit sit beside a long owner/name, because the bar wraps but I only read the CSS.
/auditno longer draws any card. Each part of the page is now a plain<section class="settings-block">with its<h2>and badges on one line above its rows; the class already exists, so nothing new was added. Thesection()helper insrc/web/pages/audit.tsis replaced bypart(), and nocard(call is left in the file.<h2>now (it was an<h3>), and so is "Unread". "What changed" is a section with an<h2>, and its three parts (pulls at the wall, contract changes, doors over time) keep<h3>s under it.<p>now, not an<h2>, so it doesn't sit at the same level as the app headings./audit#owner-namelinks, the "Knock now" form and the CSV. Apps without a contract are still listed as rows under "Unread".<h3>inside a section's heading line would pick up default margins, so the one existing rule insrc/web/style/components.tsthat zeroes heading margins in a.settings-blockheading line now coversh3too. The problem sentences use the existingprose-pageso they don't pick up an indent. Rows in a list now have the normal thin line between them, which the card used to remove.test/audit.test.tsnow checks that there is noclass="cardand nodata-toneon the page, that each app is a section under its<h2>, and that an app without a contract is a row under "Unread". It fails on main today. The existing test that a stranger sees only public apps is unchanged and passes./auditparagraph indocs/design/areas/lists.mdnow describes the new shape.To check:
bun test test/audit.test.ts test/audit-timing.test.ts test/tui-audit.test.ts. I also ran the design, style, capacity, accounts, probe and og-tags tests,bun scripts/design-lint.ts,bun scripts/gate.tsandbun x tsc --noEmit; all pass. Because of the stylesheet edit,scripts/fast.tsnamed 1,320 test files, so I picked these by hand and left the full suite to the forge's check. I didn't callkeep_planbecause that tool isn't available in this session.🤖 Generated with Claude Code
Closes #9863