Skip to content

Settings and UI

comfuture edited this page Aug 10, 2026 · 1 revision

Settings and UI

The client dashboard provides:

  • a left sidebar with all discovered projects
  • a main chat workspace
  • a per-project new thread action in the project row
  • recent project threads with inline Show more expansion in the project tree
  • a read-only workspace file explorer for projects and projectless chats

Choose a discovered Git project, then start a new thread or resume an older one. When you open a stopped project and start chatting, Codori ensures the shared app-server is running and then connects the UI through the Codori WebSocket proxy.

Settings workspace

The Settings item at the bottom of the application sidebar opens a dedicated workspace with directly loadable sections:

  • /settings/general chooses the served project root, reports the remembered service root, and selects the color mode (system, light, or dark).
  • /settings/notifications controls the browser-local codori:system-notifications opt-in without requesting permission on page load.
  • /settings/voice stores the next-conversation voice preference under codori:realtime-voice:v1, provides bundled local previews, and lets this browser override the root-level experimental_realtime_ws_backend_prompt Codex setting under codori:realtime-voice-prompt:v1.
  • /settings/backend reports the selected backend, transport, state, version, and fallback reason as read-only diagnostics.

/settings redirects to General. The settings navigation includes a safe return to the app route from which it was opened.

Notifications

Completed assistant turns can use the server avatar for attention-aware alerts:

  • the currently visible and focused thread does not notify
  • another thread in the active tab uses a toast
  • a background tab uses the Web Notifications API only after the user enables Settings → Notifications and grants browser permission

Selecting a toast or system notification opens the relevant thread. Browser notification permission is optional and is requested only from that explicit settings action.

Server avatar

Codori mirrors the avatar selected by the remote Codex host. Built-in pets and custom manifests under ~/.codex/pets are resolved on the server, while the browser receives only validated animation metadata and bounded image bytes. The dashboard never needs direct access to the remote host's filesystem paths. See Runtime Model for the RPC contract.

Workspace file explorer

The file explorer loads one directory at a time, hides common generated folders by default, and opens supported text and image files in the existing preview. All browser requests use workspace-relative paths; the server canonicalizes each target and rejects traversal and symlink escapes outside the active workspace root.

Local file links in transcripts

Codori injects thread guidance that asks Codex to link workspace files with root-relative Markdown destinations. Transcript links are resolved by the active workspace RPC bridge, while historical absolute workspace links remain compatible. Absolute paths are accepted outside the workspace only for regular files inside canonical platform temporary directories. The bridge validates scope and preview size before asking the selected app-server to read the file with fs/readFile; rejected local references never fall through to browser navigation.

Local Markdown images use the same policy. The img node is rendered with a short-lived Blob URL created from validated app-server bytes, preserving alt and title text without putting a host filesystem path in the browser-loadable src. Ordinary HTTP(S) images keep their normal browser URL.

Clone this wiki locally