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

Settings › Cloud speaks the home page's language #9803

Merged opened this

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

Merged

`/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

opened this

/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.ts now has three <section class="settings-block">s, each with an <h2>: Cloud accounts, Add an account and Every read. Accounts and reads are row()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/audit still uses card(), as the issue asked.
  • Test: test/cloud-page-shape.test.ts renders the page as an admin. It checks the three headings, the empty-state sentence and the add form, and that no .card or card-body appears. I didn't run it against main. It would fail there, since main still renders .card and has no "Add an account" heading.
  • Existing tests: The test/cloud*.test.ts, test/confirm-cloud-remove.test.ts and test/settings-cloud*.test.ts files pass unchanged, timing and etag budgets included.
  • Docs: docs/design/areas/settings.md records the shape. No new component class.

To try it, sign in as an admin and open /settings/cloud.

Closes #9793

commented

/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.ts now has three <section class="settings-block">s, each with an <h2>: Cloud accounts, Add an account and Every read. Accounts and reads are row()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/audit still uses card(), as the issue asked.
  • Test: test/cloud-page-shape.test.ts renders the page as an admin. It checks the three headings, the empty-state sentence and the add form, and that no .card or card-body appears. I didn't run it against main. It would fail there, since main still renders .card and has no "Add an account" heading.
  • Existing tests: The test/cloud*.test.ts, test/confirm-cloud-remove.test.ts and test/settings-cloud*.test.ts files pass unchanged, timing and etag budgets included.
  • Docs: docs/design/areas/settings.md records the shape. No new component class.

To try it, sign in as an admin and open /settings/cloud.

commented

/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/audit still uses card(), as the issue asked.
  • Test: test/cloud-page-shape.test.ts renders the page as an admin and checks the three headings, the empty-state sentence, the add form, and that no .card or card-body appears. I didn't run it against main. It should fail there, since main still renders .card and has no "Add an account" heading.

To try it, open /settings/cloud as an admin on the preview.

🤖 Generated with Claude Code

Changes requested — before the latest push

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.

commented

/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: yes gets 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 mt class from the links paragraph.

The existing tests pass unchanged. I didn't add one for the new copy.

🤖 Generated with Claude Code

commented

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

Approved — before the latest push

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.

commented

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.ts and bun x tsc --noEmit printed nothing, and test/cloud-page-shape.test.ts passes. 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.
Approved

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.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs