v3.0.0: ThreadingHTTPServer, dynamic ports, health gating, atomic config, safe cleanup, buffered SSE, batched stats, graceful shutdown
This commit is contained in:
29
CHANGELOG.md
29
CHANGELOG.md
@@ -1,5 +1,34 @@
|
||||
# Changelog
|
||||
|
||||
## v3.0.0 (2026-05-20)
|
||||
|
||||
**Major architectural overhaul — Phase 0 + Phase 1 of engineering roadmap**
|
||||
|
||||
### Proxy (translate-proxy.py)
|
||||
- **ThreadingHTTPServer** — serves concurrent requests (no more blocking)
|
||||
- **Thread-safe shared state** — OrderedDict response store with locks, Crof state lock, stats lock
|
||||
- **Batched + atomic stats writes** — stats buffered in memory, flushed every 5s via `os.replace()`
|
||||
- **Graceful shutdown** — SIGTERM/SIGINT drain active connections (up to 5s), reject new with 503
|
||||
- **Progressive upstream timeouts** — based on input size and tools (60-300s instead of flat 180s)
|
||||
- **Lazy JSON parsing** — skip parsing SSE events unless they contain `response.completed`
|
||||
- **Buffered SSE writes** — flush every 30ms, on urgent events, or at 4KB (reduces syscalls)
|
||||
- **`/health` endpoint** — returns backend, target, models, BGP route count
|
||||
- **Consolidated imports** — all at top, no more missing import crashes
|
||||
- **`main()` entry point** — runtime init moved out of module level
|
||||
- **TCP_NODELAY** — on all streaming paths (from v2.7.0)
|
||||
- **Anthropic prompt caching** — `cache_control: ephemeral` on system prompts (from v2.7.0)
|
||||
|
||||
### Launcher (codex-launcher-gui)
|
||||
- **Dynamic port allocation** — `_pick_free_port()` picks random free port, no more 8080 conflicts
|
||||
- **Proxy health gating** — Codex will NOT launch if proxy fails health check within 15s
|
||||
- **Error dialogs** — clear GTK error dialog when proxy startup fails
|
||||
- **Atomic config backup/restore** — temp file + `os.replace()`, no more corrupted config.toml
|
||||
- **Config transactions** — recovery from interrupted sessions on next startup
|
||||
- **Safe cleanup (PID registry)** — only kills processes launched by the app (pids.json)
|
||||
- **Proxy stderr piped to log** — real-time proxy logs in launcher UI
|
||||
- **Bearer token** — Codex config uses `codex-launcher-local` instead of real API key
|
||||
- **Usage Dashboard v2** — OpenUsage-inspired dark theme with status pills, KPI strip, model bars (from v2.7.0)
|
||||
|
||||
## v2.7.0 (2026-05-20)
|
||||
|
||||
- **Usage Dashboard redesigned** (inspired by OpenUsage design patterns)
|
||||
|
||||
Reference in New Issue
Block a user