orbit-client-docs/docs/config.md

47 lines
2.1 KiB
Markdown

Section: Configuration
Order: 100
# config.json reference
Orbit is configured at **runtime** by `config.json`. It is fetched on startup, deep-merged over the
built-in defaults, then the app renders — so you can re-point or rebrand **without rebuilding**.
- **Source of truth:** `public/config.json` (copied into the build).
- **Served at:** `/app/config.json`.
- **Edit live:** the service worker serves it *network-first*, so editing the deployed file takes
effect on the next reload — no rebuild.
Merge rules: objects merge key-by-key; **arrays and scalars replace** wholesale.
## Options
| Key | Type | What it does |
|-----|------|--------------|
| `server.url` | string | WebSocket URL of the IRCv3 server. |
| `startup.channels` | string[] | Channels auto-joined (first = active). A `?channel=` URL param overrides. |
| `branding.name` | string | App/network name shown in the UI + CTCP VERSION. |
| `branding.icon` | string | Logo / favicon URL. |
| `branding.url` | string | Homepage (used in CTCP VERSION/SOURCE). |
| `branding.tagline` / `taglineEm` / `subtitle` | string | Connect-screen copy. |
| `branding.projectUrl` | string | "Powered by Orbit" link in Settings. |
| `turnstile.enabled` / `sitekey` | bool / string | Cloudflare Turnstile on registration. |
| `report.target` | string | Channel that user reports are sent to. |
| `defaults.theme` | string | `light` · `dark` · `yomirc` · `yomirc-dark`. |
| `defaults.compact` / `sound` / `hideJoinQuit` / `clock24` | bool | Preset new-user prefs. |
| `features.push` / `imageUpload` / `register` | bool | Turn whole features on/off. |
> `defaults.*` only seed a user's preferences the **first** time — once someone changes a setting,
> it's stored in their browser and the config no longer overrides it.
## Example
```json
{
"server": { "url": "wss://irc.example.org/ws/" },
"startup": { "channels": ["#lobby", "#help"] },
"branding": { "name": "ExampleChat", "tagline": "Chat with", "taglineEm": "everyone." },
"turnstile":{ "enabled": false, "sitekey": "" },
"defaults": { "theme": "dark", "compact": true },
"features": { "register": false }
}
```