v0.6.3
Thank you @onexoluxion for contributing PRs #29, #30, #31, #32, #33, #35, #36, and #37. Your Windows testing and detailed bug reports made this maintenance release possible.
Changed
- Claude Desktop launches now expose the selected model plus saved favorites —
relay-ai claude-appputs the selected model first, appends available favorites in saved order, removes duplicates, and caps the catalog at 20 models total. Stale or unauthorized favorites are skipped with a warning, anonymous providers remain supported, and mixed regular/Cloud Code catalogs preserve routing order and OAuth provider identity. Claude Desktop still controls which discovered model it initially activates. - Claude Desktop Favorites launches use the same catalog path everywhere — interactive Favorites selection and Admin UI Favorites launches now choose an available favorite as the starting model while exposing the remaining compatible favorites through the same ordered catalog.
Fixed
- Headless
relay-ai claudelaunches fail clearly instead of crashing (#29) — when no provider/model is resolved and an interactive wizard would be required, non-TTY environments now receive an actionable error explaining how to pass--providerand--model. - Windows builds use a cross-platform UI asset copy step (#30) —
npm run buildno longer depends on POSIX-onlymkdir -pandcpcommands. Docker builds also copy the requiredscripts/directory before running the build. - Claude Desktop is detected in the Windows
AnthropicClaudeinstall directory (#31) — Squirrel installations under%LOCALAPPDATA%\AnthropicClaudecan now be launched normally. - Concurrent transparent-proxy launches no longer delete a session that is still being created (#33) — cleanup gives incomplete session directories a grace period and no longer deletes them after transient read errors.
- Claude Desktop and Codex/ChatGPT app help works without a TTY (#35) —
relay-ai claude-app --helpandrelay-ai codex-app --helpprint help instead of falling through to the interactive-terminal guard. - Fresh Claude launches no longer inherit parent-session identity (#36) — Relay strips Claude Code's parent/child session markers before spawning a new session, preventing it from being misidentified as nested and preserving normal top-level behavior such as transcript saving.
- Claude Desktop cleanup no longer clobbers another live Relay session (#37) — cleanup and
--restorenow respect session ownership. Racing launches preserve the original_meta.jsonbackup, lock writes are atomic, and config files remain in place while the active metadata still references them. - Claude Desktop self-heals from a corrupt session lock instead of getting stuck — a
.relay-ai.lockthat fails to parse (torn write, disk-full, manual edit) used to be treated as a permanently live session: every futurerelay-ai claude-applaunch refused to start, auto-recovery never kicked in, and--restorerefused to fix it. The lock is written atomically (temp file + rename), so a corrupt lock at the real path can never belong to a running session — it's now treated like a stale lock and cleared automatically. - Claude Desktop no longer duplicates every 1M-context Relay model —
relay-ai claude-appnow exposes one context-accurate picker entry per model: sub-1M models remain normal entries, while models with at least one million tokens appear once with a1Mlabel and retain their exact context limit.
Maintenance
- Windows-specific test assertions now normalize paths and platform behavior so the same suite passes on Windows and POSIX systems (#32).