Public: anyone can read this; the crew can change it.
Settings › Cloud speaks the home page's language #9803
Check · Review · Land · Live done — Landed and live in production.
`/settings/cloud` now reads like the home page: headings over rows, no cards. I didn't run `scripts/gate.ts` or the full suite. The cloud tests, `bun x tsc --noEmit` and `bun scripts/design-lint.ts` pass.
shipped production is serving it deploy 3d07d6f
/settings/cloud now reads like the home page: headings over rows, no cards. I didn't run scripts/gate.ts or the full suite. The cloud tests, bun x tsc --noEmit and bun scripts/design-lint.ts pass.
- Page:
src/web/pages/cloud.tsnow has three<section class="settings-block">s, each with an<h2>: Cloud accounts, Add an account and Every read. Accounts and reads arerow()s in a.list. With no accounts, one plain sentence says how to add one: "No cloud account is sealed yet. Add one below: pick a provider, name it, paste its credential." - Split of the old card: The old accounts card held both the list and the add form. I split the form into its own "Add an account" block, which is how the page comes to have three blocks. The forms, actions, hidden fields and routes are unchanged.
- Left alone:
/settings/cloud/auditstill usescard(), as the issue asked. - Test:
test/cloud-page-shape.test.tsrenders the page as an admin. It checks the three headings, the empty-state sentence and the add form, and that no.cardorcard-bodyappears. I didn't run it against main. It would fail there, since main still renders.cardand has no "Add an account" heading. - Existing tests: The
test/cloud*.test.ts,test/confirm-cloud-remove.test.tsandtest/settings-cloud*.test.tsfiles pass unchanged, timing and etag budgets included. - Docs:
docs/design/areas/settings.mdrecords the shape. No new component class.
To try it, sign in as an admin and open /settings/cloud.
/settings/cloud now reads like the home page: three headed blocks (Cloud accounts, Add an account, Every read) with rows in a .list and no cards. The page itself is unchanged from the first push. The preview failed because the repo's gate wants a Try: line in a commit message when a page changes. I added an empty commit with Try: open /settings/cloud as an admin on the preview.
I reran bun scripts/gate.ts, bun x tsc --noEmit and test/cloud-page-shape.test.ts. All three pass, and so does bun scripts/design-lint.ts. I pushed, but I haven't checked whether the preview came up. I did not rerun the wider test/cloud*.test.ts, test/confirm-cloud-remove.test.ts or test/settings-cl… suites after the first push.
What changed on the page:
- Split: the old accounts card held both the list and the add form. The form now sits in its own "Add an account" block. Forms, actions, hidden fields and routes are unchanged.
- Empty state: with no accounts, one sentence says how to add one: "No cloud account is sealed yet. Add one below: pick a provider, name it, paste its credential."
- Left alone:
/settings/cloud/auditstill usescard(), as the issue asked. - Test:
test/cloud-page-shape.test.tsrenders the page as an admin and checks the three headings, the empty-state sentence, the add form, and that no.cardorcard-bodyappears. I didn't run it against main. It should fail there, since main still renders.cardand has no "Add an account" heading.
To try it, open /settings/cloud as an admin on the preview.
🤖 Generated with Claude Code
The shape is right: three headed settings-blocks, accounts as row()s in a .list, forms and routes unchanged, no new class, a test that fails on main, and the area doc updated. I could not view the preview signed in (it answers 303 to sign-in without an admin session), so I judged the markup from the diff. One thing blocks it.
Fix first: principle 1 and 8. The page still opens with a five-sentence paragraph under 'Cloud accounts', and a second paragraph under the form lists each provider's credential shape. Home-page language is one confident sentence per block. Cut the intro to one plain sentence, for example 'Paste a credential once; the forge checks it read-only, seals it, and never shows it again.' Move the write-switch warning to the account row or the 'Add an account' form as a single line, and put the per-provider shapes in each option's hint or the credential placeholder rather than a trailing paragraph. Say 'cannot make a key less powerful' in plain words, or drop it.
Smaller: the footer paragraph still carries the legacy mt class; with settings-blocks supplying the rhythm, drop it. Box 2: the author says the wider cloud suites were not rerun after the first push; run test/cloud*.test.ts and confirm-cloud-remove before pushing again.
/settings/cloud now has one sentence per block, and I pushed it. The gate, tsc, design-lint and the cloud suites pass. The suites were test/cloud*.test.ts, test/confirm-cloud-remove.test.ts and test/settings-cl*.test.ts: 52 tests, 0 failures. I haven't checked the preview.
- Intro: the five-sentence paragraph under "Cloud accounts" is now your suggested line: "Paste a credential once; the forge checks it read-only, seals it, and never shows it again."
- Provider shapes: each shape now sits in its provider's
<option>text, and the trailing paragraph is gone. - Write switch: it is one line under the "Add an account" form: "A run that declares
writes: yesgets no credential until you allow writes on its account." I put it there because the per-account row has no room for a sentence. I dropped the "cannot make a key less powerful" clause and the scope advice rather than rephrase them. - Footer: I removed the legacy
mtclass from the links paragraph.
The existing tests pass unchanged. I didn't add one for the new copy.
🤖 Generated with Claude Code
I merged main into the branch and pushed it. The only conflict was in docs/design/areas/settings.md: main added a Settings › Trusted paragraph where this pull adds its Settings › Cloud one. I kept both paragraphs.
Before pushing, bun scripts/gate.ts and bun x tsc --noEmit came back clean. test/cloud*.test.ts and test/confirm-cloud-remove.test.ts also pass (44 tests, 0 failures). I didn't run the wider settings tests after the merge, and I haven't checked the preview.
The page and its test are unchanged from the last push. To try it, open /settings/cloud as an admin on the preview.
🤖 Generated with Claude Code
Earlier asks are met: the intro is one sentence, the provider shapes sit in the option text, and the stray mt class is gone. The preview answers 200. The page is three settings-block sections with h2s, and accounts and reads are rows in a list. The empty state is one plain sentence. No new component class, forms and routes are unchanged, and the new test fails on main. I could not diff against my last head because the clone lacks that commit, so I read the full change. Next: (1) Non-blocking: the writes-yes sentence is now a form footnote, so consider a per-account hint. (2) Non-blocking: give the shape test an account fixture so the row path is asserted too.
I merged main into this branch and pushed it. The only conflict was in docs/design/areas/settings.md. I kept both paragraphs: the Settings › Cloud one from this pull and the Settings › Telemetry one that came in from main.
- Checks:
bun scripts/gate.tsandbun x tsc --noEmitprinted nothing, andtest/cloud-page-shape.test.tspasses. I didn't read the lint output closely: the design lint's last printed line was "design: no colour, size or component added outside the system…". I didn't run the whole suite; the forge runs the full check on this push. - Left out: no code changed beyond the merge.
Clean restyle: three headed settings-block sections, accounts and reads as row()s in a .list, one plain empty-state sentence, forms/routes/actions unchanged, no new class, area doc updated, new test would fail on main. Non-blocking: add an account fixture to the shape test so the row path is asserted; consider a per-account hint for the writes-yes rule.
/settings/cloudnow reads like the home page: headings over rows, no cards. I didn't runscripts/gate.tsor the full suite. The cloud tests,bun x tsc --noEmitandbun scripts/design-lint.tspass.src/web/pages/cloud.tsnow has three<section class="settings-block">s, each with an<h2>: Cloud accounts, Add an account and Every read. Accounts and reads arerow()s in a.list. With no accounts, one plain sentence says how to add one: "No cloud account is sealed yet. Add one below: pick a provider, name it, paste its credential."/settings/cloud/auditstill usescard(), as the issue asked.test/cloud-page-shape.test.tsrenders the page as an admin. It checks the three headings, the empty-state sentence and the add form, and that no.cardorcard-bodyappears. I didn't run it against main. It would fail there, since main still renders.cardand has no "Add an account" heading.test/cloud*.test.ts,test/confirm-cloud-remove.test.tsandtest/settings-cloud*.test.tsfiles pass unchanged, timing and etag budgets included.docs/design/areas/settings.mdrecords the shape. No new component class.To try it, sign in as an admin and open
/settings/cloud.Closes #9793