v0.13.0
New voice-first landing experience
Codori can now start a realtime voice companion directly from the landing screen without first opening a project or a normal chat workspace.
- Starts a persistent projectless Codex thread configured for the Luna voice model and
xhighreasoning. - Keeps the paired transcript out of the landing view while the companion is active.
- Uses the existing shared realtime session, voice/prompt preferences, server avatar, and single-session ownership.
Fullscreen voice presentation
Landing voice runs in a complete browser-viewport presentation with the avatar centered above a CSS-only animated color field.
- Four color layers slowly change position, hue, saturation, scale, and rotation.
- Desktop pointer movement drives a diffuse highlight and damped parallax across the gradient layers.
- A visible Exit control and the Escape key stop the session and leave fullscreen voice mode.
- Reduced-motion preferences disable the ambient background animation.
More expressive companion avatar
The shared avatar used by fullscreen and in-thread voice now reacts to Codex activity.
- Turn start: waving.
- Tool start: running.
- Tool or turn failure: failed/sad, with failure cues taking priority.
- Successful turn completion: jumping/bounce.
- Built-in state tracks play twice and return to idle; repeated failures restart playback cleanly.
Voice session reliability
- Codori requests a screen wake lock while a non-preview voice session is active, helping mobile browsers keep the session awake when platform policy allows it.
- Landing voice microphone activation now waits for the realtime conversation to reach the connected state, removing a startup race where
connect()could resolve while the controller was still starting.
Screen wake lock remains best-effort. Manually locking a phone can still suspend browser audio; native background capture remains tracked separately in #91.
Compatibility
Minor release. Existing CLI commands, configuration files, and HTTP APIs remain compatible. The new landing action requires experimental realtime voice to be enabled.