Patch notes — editable homepage + status-page polish (2026-06-15, session 2)
Follow-on to the morning’s CMS Phase 1 (patch-notes-2026-06-15.md). This session
made the homepage content editable from the admin, added the watermark “ghost” to
the blog + status pages, and aligned the status page width. All on main.
1 — The homepage is editable from /admin/theme ✅
The homepage’s content (the 7 suite components, the hero stats, the “Why Ethica” text
and its four points) was hardcoded in the Hugo template. It’s now DB-backed and
edited in the admin, shown via the same /api/sidebar hydration the hero text and
products already use — so edits are instant (no rebuild) with no visual change.
- New tables
home_stats,home_components,home_points, plus settings for the “The suite” / “Why Ethica” headings and the Why-Ethica body — all seeded with the current homepage content, so the page is unchanged until you edit it. /admin/themegains editors (built from the existing generic list/settings fragments): Hero stats, Suite components (01–07: tag, name, description, repo URL, reorder/enable), the “Why Ethica” text, and its four points. Saves are admin-only; a new/admin/hometextendpoint stores the heading/body settings./api/sidebarreturns ahomeblock;sidebar-hydrate.jsreplaces the hero stat chips, the component grid, the suite + Why headings, the Why body, and the points from it.index.htmlgained the hook classes (js-hero-facts/js-components/js-why-*/js-why-points).- The “under construction” notice is the existing hero Note — edit it under Notes (no new editor needed).
2 — Watermark “ghost” on the blog + status pages ✅
- The live blog index and posts now render the faint Σ-E backdrop (a reusable
.cms-sigma), which the Hugo blog never had. - The
/statuspage gets the same ghost backdrop.
3 — Status page width aligned to the standard page ✅
The status masthead was capped at 920px while every other page uses
--layout-page-max (1140px), so it read narrower/misaligned. The header now uses
the standard page width (matching all other pages); the status content stays a
thinner readable column (920 → 820px).
Deployment status
All on main, deploying via the standard CI build → compose pull. The homepage
change is content-identical out of the box (the DB is seeded with the current copy),
so the merge carried no visible change until something is edited.
Verification
py_compile clean · Docker smoke 98 / 0 (incl. the /api/sidebar home payload,
the homepage hydration hooks, the /admin/theme editors, the public status page +
ghost, and the blog/post ghost).