install
Onyx, as an app.
Onyx runs in the browser, but it can live on your dock, taskbar, or home screen with local memory, offline reading, and update recovery handled by the service worker.
Open Onyx, then use your browser's install action. Chrome, Edge, and Android show an install icon or menu item. Safari can add the site to the Home Screen. Firefox keeps it as a pinned tab or shortcut depending on platform support.
Onyx stores recent channel and DM history in this device's IndexedDB vault when local history is enabled. That means remembered rooms, search hits, and time links can open before the network answers.
| Surface | What works locally |
|---|---|
| Read | Recent history, reviewed catch-up spans, and saved invite moments. |
| Search | Device-memory results appear alongside server search when available. |
| Compose | Offline channel sends, room drafts, and topic drafts stay visible on this device until reconnect. |
Private DM plaintext is not stored at rest. Encrypted envelopes stay in the vault; decryption happens again when the conversation opens.
The app shell is cached by a service worker and stamped on every deploy. When a new worker takes control, Onyx reloads once so a tab cannot keep running stale hashed chunks after a release.
app shell /app
service worker /sw.js
manifest /manifest.json
live status /status
invite entry /invite?join=%23root
If an installed copy acts stale, reload once from the browser chrome. You can also open Preferences → Installed app readiness and press Refresh app shell; Onyx asks the service worker for an update and reloads the stamped shell when needed.
Release checks
- StampEvery deploy writes a unique service-worker cache name.
- RoutesDirect loads for app, status, stats, roadmap, invite, and docs stay materialized.
- RecoveryExisting windows reload once after the new worker activates; Preferences also exposes a manual Refresh app shell action for stale installed copies.
The roadmap keeps PWA, desktop shell, and future mobile wrappers on the same information model. The browser app is the source of truth today: install metadata, app shortcuts, offline vault behavior, and route recovery are shipped here before any wrapper-specific release.
Wrapper contract
- LaunchStart at /app and preserve invite, time-link, and status routes without wrapper-only forks.
- StorageKeep IndexedDB, localStorage, and service-worker cache on the same origin so vault recall, offline outbox, room drafts, topic drafts, followed rooms/topics, saved sign-in targets, Preferences switches, and portable transfer stay compatible.
- NotificationsUse Onyx notification preferences as the control plane before adding native tray, badge, or push plumbing.
- UpdatesRespect the stamped service worker, controller-change reload, and Preferences refresh action; wrappers must not pin stale hashed assets.
- LinksOpen /invite and /app links in an existing installed window when the platform launch handler supports it.
- ReadinessCheck Preferences → Installed app readiness for standalone-window, service-worker, notification, and local-state health on the target device.
- App starts at /app, not a marketing page.
- Shortcuts expose chat, status, and stats.
- Invite links preserve room, moment, topic, reader mode, and suggested guest name.
- Portable transfer preserves followed rooms and named conversations for calm notifications and Home catch-up ranking.
- Portable transfer preserves Preferences switches such as density, feature visibility, contrast, transparency, and scene motion.
- Portable transfer may carry saved server/nick handoffs, but never passwords, session tokens, mesh tokens, or encrypted DM plaintext.
- Preferences remain the single control plane for motion, transparency, contrast, notifications, and local memory.
- Classic clients stay documented alongside the browser app.