Releases: MrCesar107/ruby_coded
Releases · MrCesar107/ruby_coded
Release list
v0.4.0
Added
- Highlight the users' messages in the chat section: Now the chat sections highlights and spots the users' mesagges in blocks
for a easely reading of the chat - Rich text support in the TUI chat renderer: Added rich text rendering support for chat output in the terminal UI.
- Project-local skills system: RubyCoded can now load Markdown skill files from
.rubycoded/skills/using YAML frontmatter metadata (name,description,modes, optionaltags,trigger, andpriority) and expose them as reusable project instructions. - Skill management commands: Added
/skills reloadand/skills listto reload and inspect project-local skills without restarting the application. - Skill validation and cataloging: Added a dedicated
RubyCoded::Skillssubsystem with a markdown loader, normalized skill definitions, duplicate detection, invalid file reporting, and mode-aware in-memory cataloging.
Changed
- Refactor chat panel rendering system into multiple modules
- Prompt construction now supports project skills: Chat, plan, and agent mode instructions now append relevant project-local skills so project-specific guidance is consistently available across runtime modes, including Codex-backed sessions.
- Ruby-conventional predicate names on bridges:
LLMBridgeandCodexBridgenow exposeagentic_mode?andplan_mode?(previouslyagentic_mode/plan_mode). Plugins that read these predicates need to update the call site. - Internal chat bridge refactor: Extracted
RuntimeModeas the single source of truth for chat/agent/plan modes,BridgeFactoryfor backend selection,Tools::ExecutionPolicyfor centralized risk/approval/limits,PromptBuilderfor mode-aware system instructions, andBridgeCommon(ModeTransitions,ToolFlow,AutoSwitch) to share behavior betweenLLMBridgeandCodexBridge. - Tool execution pipeline: Added
Tools::ExecutionPipelineandBaseTool#run_pipelineto standardize path validation, project-root guarding and filesystem error normalization for side-effecting tools; adopted inWriteFileTool,EditFileToolandDeletePathTool. - Extension model documented: The README now describes the boundary between commands, skills and plugins.
v0.3.1
Added
- Git integration tool: New git tool for common git workflows in projects (status, diff, add, commit) backed by a shared
GitBaseTool.
Changed
- Agent mode enabled by default: Sessions now start in Agent mode automatically instead of requiring manual activation.
v0.3.0
Added
- Pro-only Codex model handling:
gpt-5.3-codex-sparkandgpt-5.2-codexare tagged aspro_onlyin the Codex model catalog and render with a(Pro only)marker in the/modelselector. 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 againstgpt-5.4and the user is informed via a system message. - Provider metadata in
/model:CodexModelnow exposes provider metadata so the selector shows(openai)instead of(unknown). - Unified command catalog: New
RubyCoded::Commandsmodule with a centralCatalog,CommandDefinition, and provider abstraction (CoreProvider,PluginProvider,MarkdownProvider) consolidating all slash commands in a single source of truth, replacing the hand-rolledhelp.txtand ad-hoc registrations. - Markdown custom commands: Users can now drop
*.mdfiles under~/.ruby_coded/commands/(or the project-local.ruby_coded/commands/) to define reusable slash commands with front-matter metadata, loaded via the newMarkdownLoader/MarkdownProvider. - Context window tracking: New
State::ContextWindowmodule 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:
CommandHandleris now powered by the unified catalog (core + plugin + markdown providers) and delegates custom command execution to the newCustomCommandsmixin.
Fixed
- Context window indicator for ChatGPT Plus/Pro users:
CodexBridgenow parses theresponse.completedSSE event and feedsinput/output/reasoning/cachedtoken usage intoState, mirroring the API path.session_context_tokens_usedreflects the last turn's live prompt size via the newState#last_turn_context_tokenshelper, eliminating the double-counting that happened because both bridges re-send the full history on each request.
BUFGIX: OAuth credentials lost after in-TUI login
- When logging in to OpenAI via OAuth from within the chat (
/login) while already authenticated with another provider (e.g. Anthropic) and using a non-Codex model, the freshly stored OAuth credentials were wiped from~/.ruby_coded/config.yaml. The root cause was twoUserConfiginstances holding independent in-memory copies of the config; whenensure_valid_codex_model!called@user_config.set_config("model", "gpt-5.4"), the stale hash (loaded before the OAuth login) was serialized back to disk, overwriting the OAuth credentials written moments earlier byCredentialsStore. Fixed by threading a single sharedUserConfigthroughInitializer,AuthManager,CredentialsStoreandChat::App
BUGFIX: Startup crash when stored model provider is not authenticated
The CLI no longer raises RubyLLM::ConfigurationError at startup when the model saved in ~/.ruby_coded/config.yaml belongs to a provider that has no credentials on the current machine (e.g. switching computers with only Anthropic authenticated but a GPT model stored). Instead, the app falls back to the default model of the authenticated provider and shows an in-chat system message suggesting /login or /model to adjust.
v0.2.0
Added
- ChatGPT Plus/Pro OAuth authentication: Use your ChatGPT subscription to access GPT-5.x models via the Codex backend — no API credits required
/logincommand: Authenticate with providers (OpenAI, Anthropic) directly from the TUI without restarting- In-TUI login wizard: Native multi-step login flow with OAuth and API key support, replacing the old TUI-suspend approach
- CodexBridge: Dedicated HTTP client for the ChatGPT Codex Responses API with SSE streaming, stateless conversation history, tool calls, and automatic token refresh
- Codex model catalog: Local catalog of ChatGPT-available models (gpt-5.4, gpt-5.2, gpt-5.2-codex, etc.) integrated with the
/modelselector - Status bar indicator: Shows
(ChatGPT)or(API)next to the model name to distinguish authentication mode - JWT decoder: Extracts
chatgpt_account_idfrom OAuth tokens for Codex API authentication
Changed
- OpenAI OAuth now authenticates via ChatGPT Codex backend instead of the OpenAI Platform API
- OAuth scopes expanded to
openid profile email offline_accesswith Codex-specific auth params - AuthManager skips OpenAI OAuth credentials for RubyLLM configuration (handled by CodexBridge)
- Default OpenAI model updated to
gpt-5.4
First relase
This is the first realse (v0.1.0) of the Ruby Code gem. For this relase, I include the commits of the main branch.
Full Changelog: https://github.com/MrCesar107/ruby_code/commits/main