You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pro-only Codex model handling: gpt-5.3-codex-spark and gpt-5.2-codex are tagged as pro_only in the Codex model catalog and render with a (Pro only) marker in the /model selector. Plus/free JWT plan claims now hide Pro-only models from the selector, while unknown plans keep the previous behavior to avoid breaking Pro users.
Automatic Codex model fallback: When the Codex backend rejects a model with not supported when using Codex with a ChatGPT account, the request is transparently retried against gpt-5.4 and the user is informed via a system message.
Provider metadata in /model: CodexModel now exposes provider metadata so the selector shows (openai) instead of (unknown).
Unified command catalog: New RubyCoded::Commands module with a central Catalog, CommandDefinition, and provider abstraction (CoreProvider, PluginProvider, MarkdownProvider) consolidating all slash commands in a single source of truth, replacing the hand-rolled help.txt and ad-hoc registrations.
Markdown custom commands: Users can now drop *.md files under ~/.ruby_coded/commands/ (or the project-local .ruby_coded/commands/) to define reusable slash commands with front-matter metadata, loaded via the new MarkdownLoader / MarkdownProvider.
Context window tracking: New State::ContextWindow module plus status bar integration that shows live context usage per model, driven by per-turn token tracking.
Changed
Status bar polish: The status bar now renders context window usage alongside the model/auth indicators and hides noisy fields when data is unavailable.
Command handler refactor: CommandHandler is now powered by the unified catalog (core + plugin + markdown providers) and delegates custom command execution to the new CustomCommands mixin.
Fixed
Context window indicator for ChatGPT Plus/Pro users: CodexBridge now parses the response.completed SSE event and feeds input/output/reasoning/cached token usage into State, mirroring the API path. session_context_tokens_used reflects the last turn's live prompt size via the new State#last_turn_context_tokens helper, eliminating the double-counting that happened because both bridges re-send the full history on each request.