The three doors that are not open to the household yet (Calibre-Web, RomM, Seerr) no longer sit among the apps a family user can actually use. They render under their own Work in progress heading on the user page, placed below AI.
before
after
user page section order
Web Apps, Media Library Apps, AI
Web Apps, Media Library Apps, AI, Work in progress
Calibre-Web / RomM / Seerr
inside Media Library Apps, WIP badge
inside Work in progress, WIP badge
card copy
"…Work in progress: not open to family users yet."
"…Not open to family users yet — ask Frank."
The admin page is untouched: its WIP cards (Gluetun, mariadb, valkey, Postgres) are Infrastructure plumbing, not applications.
Files
shared/homepage/app.js — SECTION_ORDER.user gains the heading, last.
shared/homepage/services.json — the three section values, plus a one-line copy trim (the heading now says "Work in progress", the description repeats it not).
tests/homepage_config.bats, tests/homepage_pages.bats — the section contract gains the heading; the order test is re-pinned. It previously asserted AI is last, which is exactly what this change overturns, so the pin moved rather than being dropped.
serverAppConfigs-docs/Infrastructure/Homepage.md — the classification list, the SECTION_ORDER contract line, and the wip value list (the page documented only open/closed; down has been in BADGE_LABEL and in use by these three cards all along).
Checks
./tests/run.sh → ALL TESTS PASSED (841 assertions).
Rendered-page census in a real browser (static copy + stub status.json): section titles come out WEB APPS → MEDIA LIBRARY APPS → AI → WORK IN PROGRESS; the new section holds exactly Calibre-Web, RomM, Seerr; summary line UP 11 DOWN 0 WIP 3.
Admin page, same census: Media Library Apps, Observability, AI, Infrastructure, UP 20 DOWN 0 WIP 4 — unchanged.
Deploy note
shared/homepage/** is a planner path for the homepage service, so this is not docs-only: after merge it needs ./scripts/deploy.sh dankclaw --service homepage to reach /srv/homepage.
Also true before this PR and still true: Dankclaw's deploy checkout has no tests/e2e/.env.local and no node_modules, so the [3/3] gate that deploy.sh runs remotely cannot pass there — it fails with "tests/e2e/.env.local missing" while the service itself deploys fine. The gate has to be run from a dev-side checkout (tests/e2e/run.sh against the live fleet: 41 passed today). Provisioning those two things on the host, or moving the gate client-side, is a separate decision.
## What changed
The three doors that are not open to the household yet (Calibre-Web, RomM, Seerr) no longer sit among the apps a family user can actually use. They render under their own **Work in progress** heading on the user page, placed **below AI**.
| | before | after |
|---|---|---|
| user page section order | Web Apps, Media Library Apps, AI | Web Apps, Media Library Apps, AI, **Work in progress** |
| Calibre-Web / RomM / Seerr | inside *Media Library Apps*, WIP badge | inside *Work in progress*, WIP badge |
| card copy | "…Work in progress: not open to family users yet." | "…Not open to family users yet — ask Frank." |
The admin page is untouched: its WIP cards (Gluetun, mariadb, valkey, Postgres) are Infrastructure plumbing, not applications.
## Files
- `shared/homepage/app.js` — `SECTION_ORDER.user` gains the heading, last.
- `shared/homepage/services.json` — the three `section` values, plus a one-line copy trim (the heading now says "Work in progress", the description repeats it not).
- `tests/homepage_config.bats`, `tests/homepage_pages.bats` — the section contract gains the heading; the order test is re-pinned. It previously asserted **AI is last**, which is exactly what this change overturns, so the pin moved rather than being dropped.
- `serverAppConfigs-docs/Infrastructure/Homepage.md` — the classification list, the `SECTION_ORDER` contract line, and the `wip` value list (the page documented only `open`/`closed`; `down` has been in `BADGE_LABEL` and in use by these three cards all along).
## Checks
- `./tests/run.sh` → **ALL TESTS PASSED** (841 assertions).
- Rendered-page census in a real browser (static copy + stub `status.json`): section titles come out `WEB APPS → MEDIA LIBRARY APPS → AI → WORK IN PROGRESS`; the new section holds exactly Calibre-Web, RomM, Seerr; summary line `UP 11 DOWN 0 WIP 3`.
- Admin page, same census: `Media Library Apps, Observability, AI, Infrastructure`, `UP 20 DOWN 0 WIP 4` — unchanged.
## Deploy note
`shared/homepage/**` is a planner path for the `homepage` service, so this is **not** docs-only: after merge it needs `./scripts/deploy.sh dankclaw --service homepage` to reach `/srv/homepage`.
Also true before this PR and still true: Dankclaw's deploy checkout has no `tests/e2e/.env.local` and no `node_modules`, so the `[3/3]` gate that `deploy.sh` runs remotely cannot pass there — it fails with "tests/e2e/.env.local missing" while the service itself deploys fine. The gate has to be run from a dev-side checkout (`tests/e2e/run.sh` against the live fleet: 41 passed today). Provisioning those two things on the host, or moving the gate client-side, is a separate decision.
---
cwd: /home/blank/.omp/wt/wt-20261104-121037-6d1fc1f · session: 01a1a833-a2e6-76b6-8a67-d54ca993dcca
Calibre-Web, RomM and Seerr sat inside "Media Library Apps" carrying a WIP
badge and a "not open to family users yet" sentence each, so the household
grid mixed doors they can use with doors they cannot. They now render under
their own "Work in progress" heading, placed after AI on the user page, and
the copy drops the restated "Work in progress:" for the ask-Frank line the
section heading no longer needs to repeat.
- app.js: SECTION_ORDER.user gains "Work in progress" last.
- services.json: the three cards' section, plus one-line copy trim.
- homepage_config.bats / homepage_pages.bats: the section contract now
includes the new heading and pins the new order (the old test pinned AI
last, which this change deliberately overturns).
- Homepage.md: the classification list and the SECTION_ORDER/wip contract
lines catch up (the user order in the page was already stale, and "down"
was an undocumented wip value).
The admin page is untouched: its WIP cards (Gluetun, mariadb, valkey,
Postgres) are plumbing inside Infrastructure, not applications.
dank
merged commit e6a85176c4 into main2026-11-04 13:20:57 -08:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What changed
The three doors that are not open to the household yet (Calibre-Web, RomM, Seerr) no longer sit among the apps a family user can actually use. They render under their own Work in progress heading on the user page, placed below AI.
The admin page is untouched: its WIP cards (Gluetun, mariadb, valkey, Postgres) are Infrastructure plumbing, not applications.
Files
shared/homepage/app.js—SECTION_ORDER.usergains the heading, last.shared/homepage/services.json— the threesectionvalues, plus a one-line copy trim (the heading now says "Work in progress", the description repeats it not).tests/homepage_config.bats,tests/homepage_pages.bats— the section contract gains the heading; the order test is re-pinned. It previously asserted AI is last, which is exactly what this change overturns, so the pin moved rather than being dropped.serverAppConfigs-docs/Infrastructure/Homepage.md— the classification list, theSECTION_ORDERcontract line, and thewipvalue list (the page documented onlyopen/closed;downhas been inBADGE_LABELand in use by these three cards all along).Checks
./tests/run.sh→ ALL TESTS PASSED (841 assertions).status.json): section titles come outWEB APPS → MEDIA LIBRARY APPS → AI → WORK IN PROGRESS; the new section holds exactly Calibre-Web, RomM, Seerr; summary lineUP 11 DOWN 0 WIP 3.Media Library Apps, Observability, AI, Infrastructure,UP 20 DOWN 0 WIP 4— unchanged.Deploy note
shared/homepage/**is a planner path for thehomepageservice, so this is not docs-only: after merge it needs./scripts/deploy.sh dankclaw --service homepageto reach/srv/homepage.Also true before this PR and still true: Dankclaw's deploy checkout has no
tests/e2e/.env.localand nonode_modules, so the[3/3]gate thatdeploy.shruns remotely cannot pass there — it fails with "tests/e2e/.env.local missing" while the service itself deploys fine. The gate has to be run from a dev-side checkout (tests/e2e/run.shagainst the live fleet: 41 passed today). Provisioning those two things on the host, or moving the gate client-side, is a separate decision.cwd: /home/blank/.omp/wt/wt-20261104-121037-6d1fc1f · session: 01a1a833-a2e6-76b6-8a67-d54ca993dcca