44 lines
2.1 KiB
Markdown
44 lines
2.1 KiB
Markdown
# 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 }
|
|
}
|
|
```
|