All notable changes to Cortex CLI will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Hidden
cortex mcp-server --verifystdio JSON-RPC server (cortex-verify) so CI and agents can audit TUI chrome, lock scenes, login product copy, and API error paths offline. Remainshide = trueuntil Designer sign-off.
- Code turns default to the Cloud runtime for the TUI and
cortex exec(Designer Q9 /CLI_100_CHROME_LOCK_SIGNED). This PC and SSH are explicit opt-in in 0.1.x (CORTEX_COMPUTERorCORTEX_SSH_HOST) and refuse a fresh session with product copy instead of blocking every first turn. - README
docs/media/intro.gifsits on a photographed green forest desktop (not teal blobs): Terminal chrome, a pointer that walks titlebar → composer → slash / model → Shell, and the signed lock TUI. Local CLI only — no Cortex Cloud handoff in the banner story.
-
Focus accents use green
#1F4945with contrast backing for legible focused controls; primary copy remains white and success/error diagnostics keep their semantic colors. -
README
docs/media/intro.gifis an offline-rendered macOS desktop animation of the current TUI, with no live coding-service requests. -
/modelshows Effort radios Low | Medium | High; Tab cycles them./effortopens that same picker (no A★ / standalone effort list). -
The TUI enters the alternate screen by default (
alternate_screenalways). Interactive launch takes the full viewport. Opt out withcortex --no-alternate-screenor[tui] alternate_screen = falseto stay inline. -
Empty-session splash is
Welcome to Cortex, the coding agent CLIplusv{package version} · / commands · @ files · ! shell · & cloud. After the first user turn the splash is dropped (composer + footer only). No mascot, no painted> cortexshell lines. -
Composer lock: empty is
>+ white block at input col 0 + dimPlan, search, build anythingafter that cell (never a white rect after the placeholder). Blink-off (~530ms) hides the block so the placeholder starts at col 0. Typed copy is#F5F5F5with the block at the caret. -
Focused composer
>uses the green focus palette with contrast backing; past user>stays white. Interrupt× Stopped, quota title, failed MCPx, and sandbox deny paint error red#F87171. Primary copy is#F5F5F5. MCP connect/drop and sandbox deny are live, not painted-only. -
The composer is the Devin-style bar in every session, working and queue state: a full-width thin gray hairline above the
>prompt and another below it, dim placeholder, white block cursor; it follows the transcript until the transcript fills the screen -
Past user turns sit on a full-width, slightly lighter gray bar behind
> prompt text -
Login, trust,
/mode,/permissions, permission prompts, plan / clear / delete confirms and questions are numbered pickers:> 1 …with green focus styling on the selected row,· 2 …white on the others, dim descriptions under the titles,↑↓ select · ↵ confirm · esc …hints; the sign-in screen readsWelcome to Cortex CLI!/How would you like to log in? -
/model,/resume,/skillsand the settings hub frame their/ Type to searchfield with two hairlines; no pricing bar -
The footer is model left, shortcut hint right, all gray:
Cortex Mini 1 · Agent · 92% context…shift+tab to cycle modes(the palette shows its own keys there); the first-run tips sit on a filled charcoal panel -
All 50 lock states recaptured at 40×12 and 120×40 on the gray chrome (raw, plus window-only macOS Terminal composites)
-
Replies auto-format through the real
MarkdownRendererin the session view: markdown tables render as the gray plus-ASCII grid (+---+,|, never Unicode box drawing), fenced code sits between two hairlines with its language tag, a dim line-number gutter and monochrome bold-keyword highlighting (tree-sitter where a grammar is registered, a lexical pass otherwise), nested bullets indent (•/◦), task items render as✓/○. Edit tiles render unified diffs with a dim old/new gutter, white context, red-, green+, a+N -Nstat and word-level colour on a changed line. Six new lock scenes prove it:md_table,md_fence,md_list,md_mixed,diff_hunk,diff_word;mcp_calllists its issues as a real table -
The plus-ASCII grid is the only table layout: the frameless
Header | Header/---+---renderer (render_table_simple) is removed, a table still open when a streamed reply is cut off closes through the same+---+grid, and the table, renderer andmd_tablelock tests ban every Unicode box-drawing glyph and require an outer frame on every row; themd_tablescene is a real assistant message rendered byMarkdownRenderer, pinned row-for-row against the renderer's output -
Models show as English product names everywhere in the TUI —
Cortex Mini 1,Cortex 1,Cortex Max 1— in the footer,/model,/settings,/config, session lists and the splash; served ids stay hyphenated internally -
Every 40×12 and 120×40 lock fixture carries whole copy: bodies wrap at word boundaries instead of stopping at a fragment, code spans keep a trailing space (
estimateTokens(prompt) counts,rateLimit() checks), code excerpts keep their indentation, list rows keep their column gaps and end in an ellipsis when shortened -
Live session chrome stays complete in the empty, loading, error and no-match states (version, keystroke hints, composer, cwd + model footer); a live run says
Working · 0s · esc to interruptand the composer invitesAdd a follow-up ↵ to queue; the settings panel shows a real empty state; The coding service is temporarily unavailable is followed by what to do next -
Zero rounded frames: the wide slash popup, inline forms and overlay widgets drop their
╭╮/ rounded borders; the TUI bleeds to the terminal edges -
Sign-in docs point at
api.cortex.foundationdevice login -
Stream timeouts use the product-facing coding-service error
- Lock boards for typing,
/model(compact + full),/mode,/permissions, working, and Read (states 02, 04–09) with captures at 40×12 and 120×40 - Code session turns against
POST /v1/code/sessions/{id}/turns(streaming tokens, tool rows, Plan/Spec harness locks) - Device login against
POST /v1/auth/deviceonapi.cortex.foundation(no silent guest substitution) - This PC / Cloud / SSH computer label on the welcome card
- Workspace Code session id cache (
~/.cortex/code-sessions.json) - Guest session as an explicit TUI login choice
- Terminal lifecycle cleanup restores terminal modes and screen state when interactive screens exit or fail.
- Windows
install.ps1detects CPU architecture without readingRuntimeInformation.OSArchitectureunder StrictMode, which threwPropertyNotFoundStricton Windows PowerShell 5.1 - Cancel aborts the local SSE stream and best-effort POSTs cancel (API route is still 404)
- Task without a live ModelClient reports failure instead of a fake success
- Remote tool rows keep their label instead of dropping arguments
- Added interactive /agents command for agent management with full TUI support
- Added interactive /mcp panel for centralized MCP server management
- Added multi-step wizard for adding MCP servers with guided configuration
- Added --debug flag to write all trace logs to ./debug.txt for troubleshooting
- Added async loading panels for /billing and /account commands
- Added artifact system for large tool outputs to prevent payload errors
- Added real-time todos display for subagents during task execution
- Added mouse hover and click support for interactive mode
- Added scrollbar click-drag scrolling and hover interaction in TUI
- Added scrollbar support to dropdown menus
- Added TUI capture and snapshot testing framework for debugging
- Added TUI backtracking, file mentions, and external editor support (Ctrl+G)
- Added custom slash commands and agents system
- Added Plan Mode & Spec Mode system for structured task execution
- Added session favorites, tags, sharing, and search functionality
- Added multi-agent collaboration system with orchestrator support
- Added mandatory planning phase and final summary for orchestrator subagents
- Added hooks system with async events and LLM prompts
- Added advanced network proxy SSRF protection and sandbox modes
- Added session filtering and date filtering options
- Added styled output with theme-aware colors
- Added colorful styled help output with categorized options
- Added support for agent.md format (.agents/, .agent/) for agents and skills
- Added fault tolerance and robust defaults for corrupted config files
- Fixed agent creation to be fully automated when using --generate flag
- Fixed subagent max iterations increased from 10 to 500 for complex tasks
- Fixed subagent silent errors with improved logging
- Fixed subagent crash error messages now properly propagated
- Fixed false 'task crashed' errors due to race condition
- Fixed subagent fallback response when no text output is produced
- Fixed subagent display format with proper timer tracking
- Fixed 'Starting...' status changed to 'Processing request...' for clarity
- Fixed HTTP 413 payload errors by displaying todos separately
- Fixed frame capture rate limited to max 1 frame per second
- Fixed paste functionality in MCP server configuration modal
- Fixed MCP panel navigation to return after adding server
- Fixed MCP servers enabled by default after creation
- Fixed content ordering and streaming cursor display
- Fixed tool handler names aligned with registry expectations
- Fixed false session expiration during the last hour
- Fixed auth token reload into provider_manager after login
- Fixed expired token removal to prevent 'Already Logged In' dialog
- Fixed auto-redirect to login on session expiration
- Fixed scrollbar position to reflect viewport, not selection
- Fixed missing slash commands registration (init, commands, agents, share)
- Fixed full Unicode symbols preservation in TUI frame capture
- Fixed Windows Credential Manager 2560-byte BLOB size limit
- Fixed logout to clear all storage locations including fallback
- Fixed Windows keyring issues with fallback storage
- Fixed stale credentials cleared before saving new auth tokens
- Fixed context window configuration options exposed in default config
- Fixed model alias resolution in ACP server command
- Fixed dark green colors replaced with standard theme colors
- Fixed bold text color changed from blue to green in markdown
- Fixed AccessibilityHelp dialog no longer interferes with typing '?'
- Fixed terminal stream closure handling and memory leak prevention
- Fixed terminal duration metadata handling with defensive utilities
- Changed MCP management from modal popup to inline card UI
- Changed CLI output to remove emojis for cleaner terminal display
- Changed error messages and logs to remove emojis
- Changed agents TUI with improved navigation
- Changed subagent display to Factory-style todos format
- Changed tool handlers to remove deprecated handlers and fix naming
- Changed 'droid' renamed to 'agent' throughout codebase
- Changed settings to persist in ~/.cortex on Linux/macOS
- Changed MCP server configurations to persist to local data directory