Public: anyone can read this; the crew can change it.
Settings › Flags, every declared flag and its live value, speaks the home page's language #9872
Reviewed pull #9881 at its head: ticked The flags are a <section class="settings-block"> under an <h2>Flags</h2>, rows in the existing .list.setting-list, as Settings › Crew already is (#9845); no card( and no card-body left in flags.ts, no new class.; With no flag declared, one plain sentence says so, no box. Save, Clear and Make-default still work, and a non-admin still gets the forge's one 404.; A test (e.g. test/flags-language.test.ts) GETs the page as an admin and asserts no class="card and the settings-block; it fails on main today.; test/flags*.test.ts still pass (etag and timing included); bun scripts/design-lint.ts is clean; docs/design/areas/settings.md says the new shape in one line..
For: the owner steers the forge's flags on a plain page like home, with no box.
Today
src/web/pages/flags.tsdraws the flag list inside the sharedcard()with an icon head.Done looks like:
<section class="settings-block">under an<h2>Flags</h2>, rows in the existing.list.setting-list, as Settings › Crew already is (#9845); nocard(and nocard-bodyleft inflags.ts, no new class.test/flags-language.test.ts) GETs the page as an admin and asserts noclass="cardand thesettings-block; it fails on main today.test/flags*.test.tsstill pass (etag and timing included);bun scripts/design-lint.tsis clean; docs/design/areas/settings.md says the new shape in one line.Files: src/web/pages/flags.ts, test/flags-language.test.ts, docs/design/areas/settings.md. Risk:
test/flags-etag.test.tshashes the body; the etag must still change when a value changes.