homepage: app-card art, zealot-first order, common uncensored warning, admin identity gate
- Every app card carries hex-clipped art: 19 amber-tinted brand marks from the Simple Icons CDN plus 19 improvised monogram SVGs, wired via a per-service "art" field; homepage_config.bats pins art presence for all 32 apps. - Model cards render zealot -> dragoon -> archon (registry order pinned in the seam). - Dragoon and zealot share one common uncensored legal warning (adult content, harmful/hateful/illegal descriptions, sensitive offensive cybersecurity topics, severe legal risk, "don't ruin this server for everybody"), hover label on card and docs. - Archon gets a bordered red permission callout: ask Frank before use. - SearXNG obfuscation-not-anonymity note moved to a card-level hover warning (.svc-warn) and a docs hover note. - Gitea: self-service signup flow; no need to ask Frank. - Footer docs/admin/account-settings become glowing bordered buttons; the admin button is shown only to homepage-admins members via a new Caddy /whoami endpoint echoing the outpost-injected X-Authentik-* headers (spoof-proof; the /admin* 403 stays the real gate). e2e pins both sides. - Docs naming swept: Protoss names primary, bracketed api ids, explicit note that a future switchover renames the ids themselves.
This commit is contained in:
@@ -87,6 +87,34 @@ from the dankcloud SSO; SearXNG is obfuscated, not anonymous (upstream
|
||||
API keys tie to Frank). The user docs `/docs#models` section carries the
|
||||
same renames, api-id mapping, supervision and compaction notes.
|
||||
|
||||
**Icons, card polish, admin identity gate (2026-10-08, later wave):** every
|
||||
app card now carries hex-clipped art beside its name (`services.json` `art`
|
||||
field, files under `img/apps/`): 19 brand marks tinted amber from the
|
||||
Simple Icons CDN plus 19 hand-improvised monogram SVGs (amber hex + VT323
|
||||
initials) for apps with no mark — Copyparty, Marreta, Hermes (+dashboard),
|
||||
node-exporter, Gluetun, OpenWebUI, Calibre-Web, RomM, Seerr, Loki, Alloy,
|
||||
Alertmanager, Valkey, Prowlarr, Readarr, Lidarr, Tautulli, ComfyUI. Model
|
||||
cards render in the order zealot → dragoon → archon (registry order is the
|
||||
contract; `homepage_config.bats` pins it). Dragoon and zealot share one
|
||||
common uncensored legal warning (adult content, harmful/hateful/illegal
|
||||
descriptions, "sensitive offensive cybersecurity topics", severe legal
|
||||
risk, "don't ruin this server for everybody"), rendered as the hover
|
||||
label; archon's ask-Frank rule is a bordered red `.mi-perm` callout.
|
||||
SearXNG's obfuscation-not-anonymity note moved out of its description into
|
||||
a card-level `warn` (`.svc-warn` hover label) and the same hover treatment
|
||||
in the docs. Gitea's note now documents self-service signup — no need to
|
||||
ask Frank. Footer: docs / admin / account settings are bordered glowing
|
||||
`.foot-btn` buttons; **the admin button is identity-gated** — Caddy's
|
||||
`/whoami` echoes the outpost-injected `X-Authentik-Username`/`X-Authentik-Groups`
|
||||
headers (the outpost strips client-supplied copies, so the echo is
|
||||
spoof-proof), and `app.js` shows the button only to `homepage-admins`
|
||||
members. The `/admin*` 403 stays the real gate; the e2e specs pin both
|
||||
sides (standard user: hidden + 403; admin: visible). Docs were swept for
|
||||
naming consistency: Protoss names primary everywhere, bracketed api ids
|
||||
at the model headings, and a note that a future switchover renames the
|
||||
ids themselves (OpenWebUI picker + raw API + models.yml all move together
|
||||
— not done yet).
|
||||
|
||||
## Design decision — 2026-08-22
|
||||
|
||||
The live up/down check runs server-side. A checker on Dankclaw probes each backend and writes a same-origin `status.json`. The page fetches only that file and renders the badges. The browser never calls a backend directly. The checker runs as a systemd timer every 3 minutes.
|
||||
@@ -182,7 +210,9 @@ shared/homepage/
|
||||
├── style.css # full theme; a toggle strips to bare HTML
|
||||
├── app.js # loads status.json once, renders the panels
|
||||
├── services.json # service config (user + admin)
|
||||
├── img/ # screenshots served at /img (docs page; deployed with the page)
|
||||
├── img/ # served at /img: docs screenshots, unit portraits
|
||||
│ ├── apps/ # (unit-*.jpg) and app card icons (apps/*.svg)
|
||||
├── sfx/ # StarCraft unit voice .ogg files served at /sfx
|
||||
└── fonts/ # optional self-hosted fonts (deployed with the page; VT323 comes from the Google Fonts CDN, this dir is absent)
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user