fix(homepage): pin UltraSeedbox to one tab, dedupe Uptime Kuma, size columns to members

UltraSeedbox had no layout: entry, and Homepage renders an untabbed group on
every tab — eight full-width bookmark bars repeated four times. Pinned to Main
with a row layout.

Uptime Kuma rendered twice: a manual services.yaml block under Monitoring plus
homepage.group=Apps on the container. Dropped the manual block, moved the
label to Monitoring, added homepage.siteMonitor. Adopted the previously
unmanaged uptimekuma stack into stacks/ so the label is version-controlled.

Column counts declared more columns than groups had members, leaving the last
row of several groups mostly empty. Columns now track member counts.

Also records an UNRESOLVED regression: since the container was recreated the
client render has lost its tab bar, wallpaper and i18n. Ruled out the config
changes (committed pre-cleanup config reproduces it) and v2.0.0 (v1.13.2
reproduces it). Server HTML still carries the tab markup, so the loss is
client-side. Details in the stack README.
This commit is contained in:
vh
2026-08-18 19:12:02 -07:00
parent 084ad924f0
commit 9d92c4bd21
5 changed files with 214 additions and 18 deletions
+60
View File
@@ -62,6 +62,66 @@ rather than when the group is wrong.
another box gives false FAILs — ICMP is filtered across some site links. All
34 entries were verified reachable *from the dashboard host* on 2026-08-17.
## 2026-08-18 cleanup
Three fixes, all in this stack's config except where noted:
- **UltraSeedbox appeared on all four tabs.** The bookmark group had no entry
in `settings.yaml`'s `layout:` block at all, and Homepage's documented
behaviour is that *"if a group has no tab specified (and tabs are set on
other groups), services and bookmarks will be shown on all tabs."* It now
carries `tab: Main` plus `style: row` / `columns: 4`, which also turns eight
full-width bars into a compact grid. **Any group added without a `tab:` will
do this again** — the rule is now written at the top of the layout block.
- **Uptime Kuma rendered twice.** It was listed manually under Monitoring in
`services.yaml` *and* labelled `homepage.group=Apps` on its container. The
manual block is gone; the container's label now says `Monitoring` and
carries `homepage.siteMonitor`. The container was adopted into this repo at
`stacks/uptimekuma/` in the same commit — it had been running unmanaged.
- **Column counts were fiction.** Several groups declared more columns than
they had members, so the last row of each was mostly dead space (Notes: 1
card in a 4-wide row). Columns now track member counts; see the rule in
`settings.yaml`. Check with `GET /api/services`, which prints live per-group
counts.
## ⚠ UNRESOLVED — the tab bar disappeared on container recreate
**Status: open. The dashboard is degraded but usable.** Since the homepage
container was recreated on 2026-08-18, the client render has lost its tab bar,
its wallpaper, and its i18n. Groups render as side-by-side columns instead of
rows, and the search box shows the raw key `search.search`. Every service,
status pill and widget still works — it is a link board without tabs, not a
dead page.
**What it is not** — both obvious suspects were tested and cleared:
- **Not the config changes above.** Restoring `settings.yaml` *and*
`services.yaml` to their committed pre-cleanup versions reproduces the
breakage exactly. So does the pre-adoption backup config in
`/opt/docker-bu/conf/homepage/`.
- **Not the v2.0.0 release.** A throwaway container on `v1.13.2` (the last
v1, 2026-06-09) against the same config shows identical symptoms. The image
never changed anyway: the working container and the broken one both report
`v2.0.0` / rev `17456f2`, and only one homepage image exists on the host.
**What is known.** The *server-rendered* HTML still contains the tab markup,
the wallhaven background URL and `useEqualHeights` — so `settings.yaml` is
being read and delivered correctly. The loss happens client-side, with **no
page error, no failed chunk and no non-200** beyond two unrelated Uptime Kuma
widget 403s. `GET /api/validate` returns `[]`. A fresh container never
renders tabs here regardless of image version, config version, `PUID`/`PGID`,
or whether Docker discovery is mounted at all.
**The one thing that did work** was the container that had been up ~12 hours,
and it cannot be reproduced from image + config. The remaining hypothesis is
that its writable layer held state a fresh container does not rebuild — i.e.
something was changed inside the running container by hand at some point and
was never written back to `/opt/docker/conf/homepage`. If that is right, the
fix is to find out what, because the next recreate would have lost it anyway.
Before/after evidence: `~/booth-data/homepage-cleanup/` on nh3-dev →
`http://10.100.10.50:8090/b/homepage-cleanup/` (24h TTL).
## Open question
`ESH-FileBot` (`10.0.50.70`) is still described as "role TBC" — it responds to