Public: anyone can read this; the crew can change it.
Settings › Cloud accounts, the sealed provider credentials, speaks the home page's language #9879
Check · Review · Land · Live done — Landed and live in production.
The vendor calls page at `/settings/cloud/audit` no longer uses the shared box. It is now a `<section class="settings-block">` under `<h2>Today's vendor calls</h2>`, with its rows in the existing `.list`. When there are no calls, one plain sentence says so: "No vendor call today. Rows are kept 90 days." This matches how Settings › Crew is already drawn (#9845).
shipped production is serving it deploy a5a2512
The vendor calls page at /settings/cloud/audit no longer uses the shared box. It is now a <section class="settings-block"> under <h2>Today's vendor calls</h2>, with its rows in the existing .list. When there are no calls, one plain sentence says so: "No vendor call today. Rows are kept 90 days." This matches how Settings › Crew is already drawn (#9845).
src/web/pages/cloud.ts:cloudAuditPagebuilds the block directly, and the unusedcardimport is gone. Nothing namedcard(orcard-bodyis left in the file, and no class was added. Rows, the admin check and data access are unchanged, so a non-admin still gets the forge's one 404 and no credential is ever shown.test/cloud-page-shape.test.ts: two tests added and none changed.
- One checks the audit page has the settings-block, the <h2> and the empty-list sentence, with no class="card and no card-body. It fails on main and passes on this branch.
- The other checks a signed-in non-admin gets a 404 that does not mention vendor calls.
docs/design/areas/settings.md: the Cloud entry used to say the audit page was "unchanged"; it now describes its shape in one line.
bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts are clean. All test/cloud*.test.ts files (etag and timing included) and test/settings-routes.test.ts pass: 46 tests, 0 failures. I couldn't find the keep_plan tool in this session, so the issue has no plan posted.
To try it, sign in as an admin and open /settings/cloud/audit on the preview. With no calls today you'll see the heading and the one sentence, with no box around them.
🤖 Generated with Claude Code
The vendor calls page at /settings/cloud/audit no longer uses the shared box. It is now a <section class="settings-block"> under <h2>Today's vendor calls</h2>, with its rows in the existing .list. When there are no calls, one plain sentence says so: "No vendor call today. Rows are kept 90 days." This matches how Settings › Crew is already drawn (#9845).
src/web/pages/cloud.ts:cloudAuditPagebuilds the block directly, and the unusedcardimport is gone. Nothing namedcard(orcard-bodyis left in the file, and no class was added. Rows, the admin check and data access are unchanged, so a non-admin still gets the forge's one 404 and no credential is ever shown.test/cloud-page-shape.test.ts: two tests added and none changed.
- One checks the audit page has the settings-block, the <h2> and the empty-list sentence, with no class="card and no card-body. It fails on main and passes on this branch.
- The other checks a signed-in non-admin gets a 404 that does not mention vendor calls.
docs/design/areas/settings.md: the Cloud entry used to say the audit page was "unchanged"; it now describes its shape in one line.- Follow-up commit: the first push failed the gate's "say how to try it on the preview" rule because no commit message had a
Try:line. An empty follow-up commit adds one. A force push is refused, so the first commit could not be amended.
The local gate had passed the first push only because it found no merge base and passes when it can't tell. Run with FORGE_CHECK_BASE=e8b5b76, it fails without the new commit and passes with it. bun x tsc --noEmit and bun scripts/design-lint.ts are clean, and all test/cloud*.test.ts files (etag and timing included) pass: 43 tests, 0 failures.
To try it, sign in as an admin and open /settings/cloud/audit on the preview. With no calls today you'll see the heading and the one sentence, with no box around them.
🤖 Generated with Claude Code
The audit page is now a settings-block under an h2 with rows in the existing .list, no card, no new class, and the empty sentence is plain. The admin gate is unchanged and a test pins the non-admin 404. The preview answers 303 to sign-in without a session, as expected, and I could not view it as an admin. Two things I would do next: (1) add a test with at least one audit row, so the .list branch is pinned and not only the empty sentence; (2) check that the audit page and Settings > Cloud carry the same h2 rhythm at 360px.
The vendor calls page at
/settings/cloud/auditno longer uses the shared box. It is now a<section class="settings-block">under<h2>Today's vendor calls</h2>, with its rows in the existing.list. When there are no calls, one plain sentence says so: "No vendor call today. Rows are kept 90 days." This matches how Settings › Crew is already drawn (#9845).src/web/pages/cloud.ts:cloudAuditPagebuilds the block directly, and the unusedcardimport is gone. Nothing namedcard(orcard-bodyis left in the file, and no class was added. Rows, the admin check and data access are unchanged, so a non-admin still gets the forge's one 404 and no credential is ever shown.test/cloud-page-shape.test.ts: two tests added and none changed.- One checks the audit page has the
settings-block, the<h2>and the empty-list sentence, with noclass="cardand nocard-body. It fails on main and passes on this branch. - The other checks a signed-in non-admin gets a 404 that does not mention vendor calls.docs/design/areas/settings.md: the Cloud entry used to say the audit page was "unchanged"; it now describes its shape in one line.bun scripts/gate.ts,bun x tsc --noEmitandbun scripts/design-lint.tsare clean. Alltest/cloud*.test.tsfiles (etag and timing included) andtest/settings-routes.test.tspass: 46 tests, 0 failures. I couldn't find thekeep_plantool in this session, so the issue has no plan posted.To try it, sign in as an admin and open
/settings/cloud/auditon the preview. With no calls today you'll see the heading and the one sentence, with no box around them.🤖 Generated with Claude Code
Closes #9878