news-digest: multi-tenant deploy + masthead overlap fix

Two pieces:

1) Multi-tenant onboarding via scripts/add-digest-user.sh

   Shared miniflux + per-user digest stack. Onboarding a teammate
   takes one command (plus a one-time sudo for dir creation):

     scripts/add-digest-user.sh <username>

   What the script does:
     - Reads miniflux admin creds from ana-docker
     - Allocates next free port (scans existing digest-*/.env)
     - Generates a random password (or accepts one as 2nd arg)
     - Creates the miniflux user via the admin API
     - Materializes a per-user .env at /opt/docker/compose/digest-<user>/
       (inherits NEWS_DIGEST_TAG from the canonical stack so all
       tenants run the same image)
     - Brings up `docker compose -p digest-<user> up -d`
     - Seeds default world/local feeds in the new user's miniflux
     - Triggers a first digest run

   compose.yaml now uses ${DIGEST_PROJECT:-news-digest} to namespace
   container_name + homepage labels. Default keeps backward-compat
   for the singleton install — existing stacks unaffected.

2) Masthead overlap on phone widths

   Desktop CSS pinned .masthead-edition to grid-row 1, which collided
   with .masthead-brand once the mobile media query collapsed both
   to grid-column 1. Result: "MORNING EDITION" badge stacked on top
   of the "DAILY DIGEST" hero. Reset grid-row to `auto` for all
   three masthead children in the ≤720 px breakpoint so they
   auto-flow vertically.
This commit is contained in:
vh
2026-04-28 13:53:26 -07:00
parent be7cb298b6
commit aeb5c18ca3
4 changed files with 197 additions and 5 deletions
+7 -1
View File
@@ -899,9 +899,15 @@ a:hover { color: var(--accent); }
padding: 24px var(--pad-x) 16px;
row-gap: 12px;
}
/* Desktop pins brand+edition both to grid-row 1, which collapses
them on top of each other once we go single-column. Reset row
placement so they auto-flow vertically. */
.masthead-brand,
.masthead-edition,
.masthead-meta { grid-column: 1 / 2; }
.masthead-meta {
grid-column: 1 / 2;
grid-row: auto;
}
.masthead-edition { justify-content: flex-start; flex-wrap: wrap; gap: 12px; }
.edition-stamp { font-size: 16px; padding: 3px 8px; }
.masthead-meta {