Repository navigation
Codex App Server WebUI v0.2.3
Codex App Server WebUI v0.2.3
This release makes busy Codex installations easier to navigate and safer to control. It combines
project-aware history, a calmer live conversation timeline, direct queue controls, and fixes for
archiving, stopping a run, and downloading task artifacts.
Project-aware history
The bridge now builds a bounded, paginated index from app-server project/list and thread/list.
An explicit project ID wins; otherwise a task uses the longest matching project root. Only indexed
tasks that match neither are collected under Chats, while older tasks not yet present in the
app-server index retain the existing Git or working-directory fallback. New project tasks pass the
known project ID back to app-server.
Stable live timeline
Message refreshes reconcile stable keyed nodes instead of detaching the whole timeline. Open tool
details remain open, reading older content retains its visible-message anchor, and only a genuinely
new message triggers smooth bottom-following. The layout now uses a lighter ChatGPT-style content
flow with neutral user bubbles, quieter tool summaries, and per-message copy controls.
Buffered messages expose a compact Queue/Steer ··· menu. A queue can be withdrawn, or a
text-only entry can be withdrawn and immediately handed to the active turn as Steer. Attachment
queues intentionally do not offer conversion because the native queue update path does not carry
their media safely.
Lifecycle and download fixes
- Stop includes the exact active turn ID observed from app-server notifications. This removes the
race where the button became available before the same turn was flushed to the rollout file;
older clients still use the rollout lookup fallback. - Archiving a watched task now removes it from the persistent reconnect set, preventing a later
thread/resumeof an archived task from blocking bridge RPCs. - Markdown file targets and direct URLs containing an encoded
<absolute/path>are normalized
before requesting a download ticket. Mobile browsers use the response navigation directly rather
than relying on a detached synthetic link.
Download security is unchanged: a regular file must be smaller than 16 MiB and resolve inside the
selected task workspace. Tickets expire after five minutes, live only in bridge process memory,
and become invalid after restart.
Validation
- All 21 Rust/WASM browser-contract regressions pass.
- The Rust workspace passes 129 tests, with 2 explicitly live-only tests ignored.
- Clippy passes with warnings denied.
- The Vite production bundle, Demo WASM, and embedded release binaries build successfully.
- The deployed daemon reports bridge protocol 22 with the bundled app-server available.
- A real download ticket returned the complete expected byte count, and the browser rendered the
previously inert encoded file URL as a controlled download link.
See the installation guide,
codexctl reference, and
interactive demo.