# Roundtable Rebrand — Design **Date:** 2026-04-13 **Status:** Approved for planning ## 1. Identity **Name:** Roundtable (dropping the "Fabled" prefix). **Why the change:** The old name `FabledScryer` framed the app as a single seer peering into one crystal ball. The actual product is a gathering point — hosts, metrics, alerts, plugins, and dashboards from across the homelab converge here. "Roundtable" captures that: a place where the realm's tools and information meet. **Name conflict check:** - *Roundtable Software* — a Progress ABL tooling vendor. Different demographic, no overlap. - *Fabled.gg* — a virtual tabletop product. Closest concern, and the reason the "Fabled" prefix is dropped entirely to avoid confusion inside the tabletop/fantasy space. **Umbrella:** `fabledsword.com` remains the family umbrella domain; `git.fabledsword.com` remains the plugin catalog host. Roundtable becomes one product under that umbrella. **Tone:** Heraldic / Arthurian register. The roundtable is the gathering place of those who keep watch over the realm. ## 2. Visual System ### Palette — Pewter & Gold Design tokens (map to CSS custom properties in `base.html` `:root`): | Token | Value | Role | |---|---|---| | `--bg-0` | `#131315` | Page background (near-black, no blue cast) | | `--bg-1` | `#1d1d20` | Card / panel background | | `--bg-2` | `#24242a` | Hover / elevated surface | | `--border` | `#30303a` | Default border | | `--border-accent` | `#c8a840` | Gold accent border (focus, active) | | `--text-0` | `#d4d0c0` | Primary text (warm parchment) | | `--text-1` | `#b8b8b0` | Secondary text | | `--text-2` | `#8a8a92` | Tertiary / pewter text | | `--gold` | `#c8a840` | Brand gold | | `--pewter` | `#8a8a92` | Brand pewter | No purple. No steel blue. Backgrounds are neutral near-black; text is warm parchment; the only chromatic accents are gold and pewter. ### Buttons — full action palette | Role | Color | Use | |---|---|---| | Primary | Gold (`#c8a840`) | Main CTA, submit, confirm | | Success | Green | Positive state changes, "all clear" | | Danger | Crimson | Destructive / warning actions | | Secondary | Pewter (`#8a8a92`) | Cancel, neutral | Exact green/crimson hues finalized in implementation; must sit harmoniously next to gold and against the near-black background. ### Logo — Heraldic Seal (crown & table) Locked SVG (24×24 viewBox, solid gold fills only): ```html ``` Reads as a heraldic seal: gold rim, faint pewter wash, five-point crown, solid-gold elliptical table with two legs. No inner detail to clutter at small sizes. Legible from 22px nav icon to 200px marketing size. ### Typography **EB Garamond** via Google Fonts. Used for the wordmark, headings, and body. Warm, classical, matches the heraldic register without being costume-y. Replaces Libertinus Serif. ### Background Candlelit glow — a soft, warm radial wash behind the main content area. Replaces the animated star field. Static (no animation) to stay calm and low-distraction. ### Wordmark "Roundtable" in EB Garamond, gold (`#c8a840`), paired with the seal mark to the left in the nav header. ## 3. Voice & Copy **Strategy:** plain, functional UI copy. Themed flavor appears only at the edges — places where a little atmosphere costs nothing and rewards exploration. **Plain (no flavor):** - Host list, alert list, plugin settings, forms, tables, error validation - Button labels ("Save", "Delete", "Add host") - Column headers, tooltips, help text **Themed (heraldic flavor):** - **Login screen** — brief atmospheric tagline below the wordmark - **Empty states** — "No hosts yet. Summon one to the table." style, one line each - **404 / 500 pages** — themed error messages with clear recovery actions - **Dashboard hero title** — **"Under Watch, Under Care"** (optional, can be disabled) **Not used:** themed language in validation errors, confirmation dialogs, or anywhere the user is trying to accomplish a task. Flavor must never get in the way of understanding what's happening. ## 4. Rename Mechanics **Code & packaging** - `fabledscryer/` package directory → `roundtable/` - All `from fabledscryer...` / `import fabledscryer...` → `roundtable` - `pyproject.toml`: project name, CLI entry point (`fabledscryer = "fabledscryer.cli:main"` → `roundtable = "roundtable.cli:main"`), tool sections - `__init__.py` package metadata **Runtime config** - Env vars: `FABLEDSCRYER_*` → `ROUNDTABLE_*` - Residual `FABLEDNETMON_*` env vars removed - Config dir: `~/.config/fabledscryer` → `~/.config/roundtable` (one-shot copy on first boot) - Log file names, systemd unit names if any **Container & deploy** - `Dockerfile` labels, workdir - `docker-compose.yml` service name, image tag, volume names, `container_name` - Published image: `fabledscryer:latest` → `roundtable:latest` **Database** - Alembic `script_location` and any customized version table - Table prefixes (if any — confirm via grep during implementation) - Rename migration only if prefixed tables exist **Templates & UI** - `base.html` wordmark, ``, meta tags - Hardcoded "FabledScryer" strings in templates, flash messages, emails - Favicon / app icon assets **Docs & repo** - README, CONTRIBUTING, `docs/` - Forgejo repo rename (redirect preserves old URL) - Local directory rename (optional) **Preserved (not renamed)** - `fabledsword.com` umbrella domain - `git.fabledsword.com` plugin catalog host - Plugin repo names ## 5. Sequencing Staged so `main` stays runnable between PRs. **PR 1 — Visual reskin (no rename)** New palette tokens, locked logo SVG, EB Garamond font swap, candlelit glow background, themed edge copy (login, empty states, 404/500, dashboard hero "Under Watch, Under Care"). Still named FabledScryer internally. Ships independently, low risk. **PR 2 — Python package rename** `fabledscryer/` → `roundtable/`, all imports, `pyproject.toml` name + entry point, `__init__.py` metadata. Docker/config untouched. Package installable as `roundtable` locally. **PR 3 — Config & env vars** `FABLEDSCRYER_*` → `ROUNDTABLE_*` with a short-lived fallback reader (accept both, warn on old) so self-hosters don't break mid-upgrade. Config dir migration on first boot. Drop `FABLEDNETMON_*` residue. **PR 4 — Container & deploy** `Dockerfile`, `docker-compose.yml` service/image/volume/container names. Published image tag switch. Template wordmark + `<title>` + meta (the last user-visible string flip). **PR 5 — Repo & docs** README, docs, CONTRIBUTING. Forgejo repo rename. Local directory rename (optional). **PR 6 — Cleanup (after one release cycle)** Remove env var fallback shim from PR 3. Remove config dir migration code. **Rationale:** reskin first is safe and visible; package rename is the mechanical core; config/container flips are the breaking-change moments gated behind the fallback shim; docs last so they reflect final state.