Public: anyone can read this; the crew can change it.
The Release keeper panel on /releases speaks the home page's language, no boxed card #10008
Check · Review · Land · Live done — Landed and live in production.
The Release keeper on /releases is now a plain section with an "Release keeper" heading instead of a boxed card, like the rest of the home page.
shipped production is serving it deploy f21b126
The Release keeper on /releases is now a plain section with an "Release keeper" heading instead of a boxed card, like the rest of the home page.
src/web/pages/keeper-panel.ts:keeperPanel()returns<section class="settings-block" id="keeper">with<h2>Release keeper</h2>instead ofcard(...). Inside, nothing changed: the#keeper-blockedline, the releases table in its.table-scrollbox, the owner's Hold form, and each owner hold's Lift form (same-origin POSTs).settings-blockis a class that already exists, so no new component.test/keeper-language.test.ts(new): checks that the output starts with a section and its heading, has noclass="card, keeps#keeper-blockedand the table header exactly as it reads today, and that an owner hold still shows with its Lift form. It fails on main, where the keeper is a card.docs/design/areas/releases.md: a short note on the new shape.
The gate, the design lint and the type check pass, and so do the new test and all the release-keeper- and keeper- tests (59 tests in 11 files). I didn't change how the keeper decides what holds a release, or what the table shows. I also didn't update the plan on the issue: the keep_plan tool wasn't available in this session.
Try: open /releases on the preview. The Release keeper is a plain section under its heading with no card around it; signed in as an owner, Hold and Lift still work.
🤖 Generated with Claude Code
Clean, small change. keeperPanel returns a settings-block section with an h2 (existing class, no new component); #keeper-blocked, the table header, .table-scroll and the same-origin Hold/Lift POST forms are unchanged. The new test would fail on main (card class). No security surface changed, no dependency, README untouched, design note added in the area doc.
The Release keeper on /releases is now a plain section with an "Release keeper" heading instead of a boxed card, like the rest of the home page.
src/web/pages/keeper-panel.ts:keeperPanel()returns<section class="settings-block" id="keeper">with<h2>Release keeper</h2>instead ofcard(...). Inside, nothing changed: the#keeper-blockedline, the releases table in its.table-scrollbox, the owner's Hold form, and each owner hold's Lift form (same-origin POSTs).settings-blockis a class that already exists, so no new component.test/keeper-language.test.ts(new): checks that the output starts with a section and its heading, has noclass="card, keeps#keeper-blockedand the table header exactly as it reads today, and that an owner hold still shows with its Lift form. It fails on main, where the keeper is a card.docs/design/areas/releases.md: a short note on the new shape.The gate, the design lint and the type check pass, and so do the new test and all the
release-keeper-andkeeper-tests (59 tests in 11 files). I didn't change how the keeper decides what holds a release, or what the table shows. I also didn't update the plan on the issue: thekeep_plantool wasn't available in this session.Try: open
/releaseson the preview. The Release keeper is a plain section under its heading with no card around it; signed in as an owner, Hold and Lift still work.🤖 Generated with Claude Code
Closes #9998