From feeb1df4eb0890856291bc024b4961716af0f503 Mon Sep 17 00:00:00 2001 From: JonKazama-Hellion Date: Tue, 5 May 2026 14:54:58 +0200 Subject: [PATCH] docs(themes): theme authoring guide with hellion forge branding --- README.md | 8 ++ docs/THEME-AUTHORING.md | 185 ++++++++++++++++++++++++++++++++++ docs/images/hellion-forge.png | Bin 0 -> 37850 bytes 3 files changed, 193 insertions(+) create mode 100644 docs/THEME-AUTHORING.md create mode 100644 docs/images/hellion-forge.png diff --git a/README.md b/README.md index f6a898b..f257792 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,13 @@ Hellion Chat baut auf [Chat 2](https://github.com/Infiziert90/ChatTwo) von **Inf - **Mitgelieferte Hellion-Schrift** (Exo 2, OFL-1.1) als optionaler Default statt System-Font. - **Hellion-Logo** im Plugin-Bundle und in der Dalamud-Plugin-Liste. +#### Custom Themes (v1.1.0) + +HellionChat 1.1.0 bringt eine Theme-Engine mit fünf eingebauten Themes +(Hellion Arctic, Chat 2 Klassik, Event Horizon, Moonlit Bloom, Mint Grove) +und ein JSON-basiertes Authoring-Format für eigene Themes. Schema und +Schritt-für-Schritt-Anleitung in [`docs/THEME-AUTHORING.md`](docs/THEME-AUTHORING.md). + ### Pop-Out Convenience (v0.6.0) - **Eingabe-Bar in Pop-Out-Fenstern** als globaler Opt-In in Settings → Fenster → Fenster-Rahmen. Wenn aktiv hat jedes Pop-Out-Window unten einen kompakten Input mit kanal-farbigem Icon-Button und Text-Eingabe — kein Wechsel mehr ins Hauptfenster für eine schnelle Antwort. @@ -302,6 +309,7 @@ Dokumentation lebt unter [`docs/`](docs/). | [`docs/CONTRIBUTORS.md`](docs/CONTRIBUTORS.md) | Tester, Übersetzer und Code-Beiträger der Hellion-Seite. | | [`docs/LEARNING-JOURNEY.md`](docs/LEARNING-JOURNEY.md) | Entwicklungsgeschichte, vom Web-Stack zu C# / Dalamud, was ich aus dem Fork gelernt habe. | | [`docs/IPC.md`](docs/IPC.md) | IPC-Kanal-Reference, Tuple-Payload-Felder, Migrations-Diff für Drittplugins. | +| [`docs/THEME-AUTHORING.md`](docs/THEME-AUTHORING.md) | Theme-Engine-Authoring-Guide (EN): JSON-Schema, Color-/Layout-Slots, Channel-Identity-Regeln, Validierung. | | [`docs/UPSTREAM_SYNC.md`](docs/UPSTREAM_SYNC.md) | Cherry-Pick-Policy gegenüber Chat 2. | | [`docs/THIRD_PARTY_NOTICES.md`](docs/THIRD_PARTY_NOTICES.md) | NuGet-Dependencies mit Lizenzen, Bundled Assets, Network-Status pro Komponente. | | [`docs/AI_DISCLOSURE.md`](docs/AI_DISCLOSURE.md) | Offenlegung der KI-Unterstützung im Entwicklungsprozess. | diff --git a/docs/THEME-AUTHORING.md b/docs/THEME-AUTHORING.md new file mode 100644 index 0000000..0f7376a --- /dev/null +++ b/docs/THEME-AUTHORING.md @@ -0,0 +1,185 @@ +

+ Hellion Forge +

+ +# Theme Authoring Guide + +> Built by **Hellion Forge** — the plugin workshop arm of [Hellion Online Media](https://hellion-media.de). HellionChat ships with five built-in themes; this guide walks you through writing your own. + +## TL;DR + +1. Open Settings → Themes → **Open themes folder** +2. Copy `example-theme.json` to `.json` in the same folder +3. Edit the file with any text editor +4. Reload the plugin (toggle off/on in `/xlplugins`) +5. Your theme appears in the Custom-Themes section in Settings → Themes + +That's the whole loop. The rest of this document is reference. + +## File location + +``` +%APPDATA%\XIVLauncher\pluginConfigs\HellionChat\themes\ +``` + +(or the equivalent path on Linux/macOS — Settings → Themes → "Open themes folder" opens it directly). + +Each `*.json` file in this folder is loaded as one theme. The `example-theme.json` that HellionChat seeds on first launch is your starting template. + +## File format + +Theme JSON has four blocks: + +```json +{ + "schemaVersion": 1, + "slug": "your-slug", + "name": "Your Theme Name", + "author": "You", + "description": "One-line description shown under the theme name.", + "colors": { ... 21 color slots ... }, + "layout": { ... 9 layout values ... }, + "chatChannels": { ... optional, channel-name → hex ... } +} +``` + +### Top-level fields + +| Field | Type | Required | Notes | +|---|---|---|---| +| `schemaVersion` | int | yes | Always `1` for HellionChat 1.1.0. The plugin warns and skips themes with a different number. | +| `slug` | string | yes | Lowercase, hyphenated. Must be unique across all themes (built-in slugs are reserved). | +| `name` | string | yes | Display name in the picker. | +| `author` | string | yes | Shown small under the theme name. | +| `description` | string | yes | One short sentence. | +| `colors` | object | yes | All 21 slots required (see below). | +| `layout` | object | yes | All 9 slots required (see below). | +| `chatChannels` | object | no | Optional channel-name → hex map (see below). | + +### Color slots + +All values are 6-digit `#RRGGBB` or 8-digit `#RRGGBBAA` hex strings. Six-digit values get an implicit `FF` alpha. + +| Slot | Role | +|---|---| +| `primary` | Brand color — used on buttons, sliders, check marks, highlighted separators. | +| `primaryDark` | Pressed-button stage. | +| `primaryLight` | Hovered-button / link-text stage. | +| `primaryGlow` | Glow / subtle accent (typically primary with ~60% alpha). | +| `accent` | Counter-accent — scrollbar grab on hover/active, resize grip, optional CTA. | +| `accentDark` / `accentLight` | Dark/light siblings of accent. | +| `identity` | Title-bar active color and active-tab color. Often equals `primaryDark`. | +| `windowBg` | Outermost window background. | +| `childBg` | Inner panel / popup background. | +| `frameBg` | Input fields, sliders, combos. | +| `surface` | Card surfaces, headers, selectables. | +| `surfaceHover` | Hovered card / header step. | +| `border` | Panel borders. Typically primary with ~40% alpha for a brand-tinted edge. | +| `textPrimary` | Body text. Soft off-white reads better than pure `#FFFFFF` on dark backgrounds. | +| `textMuted` | Captions, secondary lines. | +| `textDim` | Disabled / hint text, separators. | +| `statusSuccess` | Green-ish for success notifications. | +| `statusDanger` | Red for errors. | +| `statusWarning` | Amber for warnings. | +| `statusInfo` | Cyan-ish info. Often equals primary. | + +### Layout slots + +All values are floats in pixels. `BorderSize` is 0 or 1 (no thicker borders look right with ImGui's edge anti-aliasing). + +| Slot | Typical range | Notes | +|---|---|---| +| `windowRounding` | 0–8 | 0 = sharp upstream look; 4–6 = softer "app" feel. | +| `childRounding` | 0–6 | Usually 1 less than `windowRounding`. | +| `popupRounding` | 0–6 | Same as `childRounding`. | +| `frameRounding` | 0–4 | For inputs, sliders. | +| `grabRounding` | 0–4 | Slider grab dot. | +| `tabRounding` | 0–4 | Tab corners. | +| `scrollbarRounding` | 0–4 | Scrollbar grab. | +| `windowBorderSize` | 0 or 1 | 1 reads better in dark themes. | +| `frameBorderSize` | 0 or 1 | Usually matches windowBorderSize. | + +### Optional `chatChannels` + +If present, your theme proposes its own chat-channel colors. Property names are `ChatType` enum values (case-insensitive). Unknown names are skipped silently — safe for forward-compat. + +```json +"chatChannels": { + "Say": "#FFFFFF", + "Yell": "#FFE066", + "Shout": "#FFA040", + "TellIncoming": "#FF99CC", + "TellOutgoing": "#FF99CC", + "Party": "#80C0E8", + "FreeCompany": "#4DD9E8", + "NoviceNetwork": "#A8E060", + "Linkshell1": "#A8E060" +} +``` + +The user is asked **once per theme switch** whether to apply these colors — never auto-overwriting existing picks. The banner shows up only if your suggested colors differ from the user's current `Configuration.ChatColours`. + +#### Channel-identity rule + +**Don't break FFXIV channel identity.** Players have used these conventions for over a decade: + +| Channel | Convention | Why | +|---|---|---| +| Say | white / off-white | Default-readable speech. | +| Yell | yellow | Urgent broadcast. | +| Shout | orange | Local urgent. | +| Tell | pink-magenta | Whisper, must stand out. | +| Party | light blue | Group ops. | +| FreeCompany | cyan-teal | Guild ops. | +| NoviceNetwork | lime-green | Mentor channel. | + +A theme can tint these toward its brand family (e.g., a purple theme can shift Tell from `#FF99CC` to `#E090FF`), but **don't** flip them (Tell suddenly green, Yell suddenly cyan). RP groups and combat-spec setups depend on the visual hierarchy. + +The four colored built-in themes (Hellion Arctic, Event Horizon, Moonlit Bloom, Mint Grove) all follow this rule — read their JSON for reference. Chat 2 Klassik intentionally ships without `chatChannels` so the user keeps their existing picks. + +## Theme families + +Naming convention `-` is recommended for theme families. The first member of a family is the lightest/brightest: + +- `mint-grove` (current built-in, light mint) +- `forest-grove` (planned, dark emerald) +- `moss-grove` (planned, mid muted) + +Code-wise families have no special handling — only the slug naming hints at the relationship. The picker may group families later, but that's not required. + +## Validation and errors + +When HellionChat loads your theme: + +- **Schema mismatch** (`schemaVersion != 1`): theme is skipped, warning written to `/xllog`. +- **Missing required field** (e.g., no `slug`): theme is skipped, warning written. +- **Invalid hex** (e.g., `#GGHHII`): theme is skipped, warning written. +- **Unknown channel name** in `chatChannels`: that one channel is skipped silently, the rest of the theme loads normally. + +Check `/xllog` after a plugin reload to see what loaded and what didn't. + +## Testing your theme + +1. Edit the JSON, save the file. +2. Reload the plugin: `/xlplugins` → toggle HellionChat off, then on. +3. Settings → Themes → click your theme card. +4. Watch every plugin window (chat, settings, pop-out) and pick something to fix. +5. Tweak. Reload. Repeat. + +Tip: the **Settings → Themes** picker shows a mini-mockup per theme — your colors are visible before you switch. + +## Sharing themes + +Themes are JSON, so sharing is just a file. Drop it into someone's `pluginConfigs/HellionChat/themes/` folder and their plugin picks it up on next reload. + +A community theme repository is on the Hellion Forge roadmap. Until then: share via Discord or any pastebin. + +## Reference + +- `docs/example-theme.json` (seeded automatically on first launch into `pluginConfigs/HellionChat/themes/`) — minimal valid theme. +- The five built-in themes live in source under `HellionChat/Themes/Builtin/`. They are a good reference for Color choices that work. +- [Hellion Online Media branding](https://hellion-media.de) — the Arctic Cyan + Ember Glow palette that drives the default Hellion Arctic theme. + +--- + +

HellionChat is a privacy-focused fork of Chat 2, distributed under the EUPL-1.2.
Theme engine and authoring guide are part of Hellion Forge.

diff --git a/docs/images/hellion-forge.png b/docs/images/hellion-forge.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b169b48cb67e7ee8dc95607068a30043f7db3b GIT binary patch literal 37850 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 LNkvXXu0mjfa({cg literal 0 HcmV?d00001