-
Notifications
You must be signed in to change notification settings - Fork 0
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 moreexpansion 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.
The Settings item at the bottom of the application sidebar opens a dedicated workspace with directly loadable sections:
-
/settings/generalchooses the served project root, reports the remembered service root, and selects the color mode (system,light, ordark). -
/settings/notificationscontrols the browser-localcodori:system-notificationsopt-in without requesting permission on page load. -
/settings/voicestores the next-conversation voice preference undercodori:realtime-voice:v1, provides bundled local previews, and lets this browser override the root-levelexperimental_realtime_ws_backend_promptCodex setting undercodori:realtime-voice-prompt:v1. -
/settings/backendreports 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.
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.
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.
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.
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.