Red v0.7.0: Your agent can point to the code it means
Red is a Vim-style terminal editor with a persistent Agent panel and focused inline help. This release turns explanations into source-linked walkthroughs, adds real multi-cursor editing, and makes large workspaces faster and safer.
Three things to try
- Follow an Agent explanation into the source. Press
Space Aand ask for a code walkthrough. Agent can annotate exact locations and link its answer to those cards, even across files. - Ask inline about the code in front of you. Select code and press
Space ifor a scoped review, explanation, or refactor. Inline edits stay unsaved and undoable; wider or background changes require review. - Edit repeated matches with Ctrl-n and one undo. Select successive occurrences or add vertical cursors, then change every selection in one undoable edit.
More in this release
- New: Give Agent language-server diagnostics and a rename preview. Agent can inspect diagnostics and preview a cross-file semantic rename. Applied edits stay unsaved and undoable; start a new Agent conversation to load these tools.
- New: Pick a model for the conversation you're in. Change the model and reasoning effort in the Agent panel without changing your global Codex configuration.
- Improved: Find a file before a large workspace finishes scanning. File results stream in as discovery runs; completed indexes are cached. File trees and editor interactions also received targeted speedups.
- New: Keep your edits when another tool changes the file. Clean buffers reload; dirty buffers show a conflict and keep both versions available to compare before you choose what to save.
- New: Run Vim-style shell commands and range filters. Run
:!commands or filter a visual range through a shell command; successful output becomes one undoable edit. - New: Try Red in a guided, disposable practice buffer. A new first-run welcome offers a hands-on tour of editing, navigation, Git, and the Agent workflow without changing your project.
Agent support requires an installed Codex CLI and codex login.
What's Changed
Features
- release: Sharpen next release announcements by @fcoury-oai in #358
- tree: Move reusable tree rendering into rust by @fcoury-oai in #357
- release: Curate cross-channel release campaigns by @fcoury-oai in #350
- agent: Add lsp diagnostics and semantic rename tools by @fcoury-oai in #345
- commands: Add vim-style shell range filters by @fcoury-oai in #340
- picker: Support file line navigation by @fcoury-oai in #339
- commands: Add vim-style shell execution by @fcoury-oai in #338
- git: Browse committed files in dashboard by @fcoury-oai in #337
- editor: Format pasted text by default by @fcoury-oai in #334
- picker: Add configurable symbol tree guides by @fcoury-oai in #333
- editor: Detect and resolve external file conflicts by @fcoury-oai in #330
- editor: Add vim-style multi-cursor editing by @fcoury-oai in #326
- editor: Warn at bracket navigation boundaries by @fcoury-oai in #322
- editor: Wrap directional window navigation by @fcoury-oai in #324
- editor: Support newlines in substitute replacements by @fcoury-oai in #320
- fidget: Improve progress overlay rendering by @fcoury-oai in #319
- commands: Add save-all command by @fcoury-oai in #317
- neotree: Open file tree from insert mode by @fcoury-oai in #312
- commands: Add bufdo support by @fcoury-oai in #311
- editing: Add Vim-style comment formatting by @fcoury-oai in #307
- lsp: Improve references loading feedback by @fcoury-oai
- commands: Add vim-compatible command abbreviations by @fcoury-oai in #304
- picker: Modernize buffer navigation by @fcoury-oai in #302
- vim: Add paragraph and sentence motions by @fcoury-oai in #303
- buffers: Add unnamed buffer creation by @fcoury-oai in #299
- lsp: Cache diagnostics across editor restarts by @fcoury-oai in #296
- lsp: Apply project-specific rustfmt settings by @fcoury-oai in #295
- lsp: Show code action loading picker by @fcoury-oai in #292
- lsp: Auto-import rust types from completions by @fcoury-oai
- neotree: Virtualize unbounded file trees by @fcoury-oai in #289
- agent: Relax agent guardrails by @fcoury-oai in #288
- agent: Add composer history search by @fcoury-oai in #287
- agent: Add source annotation walkthroughs by @fcoury-oai in #282
- completion: Add opt-in coordinated suggestions by @fcoury-oai in #281
- agent: Show compact progress and create workspace directories by @fcoury-oai in #280
- onboarding: Add interactive first-run tutorial by @fcoury-oai in #275
- agent: Add model selection to the agent pane by @fcoury-oai
- lsp: Show signature help while typing by @fcoury-oai
- indent: Add query-driven language indentation by @fcoury-oai
- completion: Accept selected item with enter by @fcoury-oai in #263
- completion: Add interactive snippet placeholders by @fcoury-oai in #262
- formatting: Enable format on save by default by @fcoury-oai
- neotree: Activate items on double click by @fcoury-oai
Performance
- picker: Stream and cache file discovery by @fcoury-oai in #352
- editor: Accelerate large repository interactions by @fcoury-oai in #332
- runtime: Accelerate editor and plugin hot paths by @fcoury-oai in #309
- picker: Accelerate large workspace file searches by @fcoury-oai in #298
- lsp: Batch progress updates and coalesce redraws by @fcoury-oai in #297
- editor: Speed up repeated edits by @fcoury-oai in #267
Bug Fixes
- statusline: Preserve styles when sections are hidden by @fcoury-oai in #356
- editor: Repeat visual indentation by line span by @fcoury in #355
- editor: Seed multi-cursor from visual selection by @fcoury in #354
- git: Avoid repeated full repository scans by @fcoury-oai in #353
- agent: Stabilize dynamic tool contracts by @fcoury in #349
- neotree: Keep large workspaces responsive by @fcoury-oai in #344
- editor: Reindent pasted code without range formatting by @fcoury-oai in #341
- editor: Resolve recovered external-file warnings by @fcoury-oai in #336
- session: Scope restore state by workspace by @fcoury-oai in #335
- picker: Prioritize distinctive primary labels by @fcoury-oai in #331
- editor: Prevent overwriting external file changes by @fcoury-oai
- lsp: Refresh stale auto-import completions by @fcoury-oai in #329
- neotree: Restore recursive tree search by @fcoury-oai in #327
- editor: Preserve indent after compound closers by @fcoury-oai in #328
- editor: Smooth distant cursor reveals by @fcoury-oai in #325
- notifications: Clarify command and lsp outcomes by @fcoury-oai in #321
- completion: Select top result after lsp updates by @fcoury-oai in #314
- notifications: Make routine errors non-intrusive by @fcoury-oai in #318
- commands: Allow bufdo to delete buffers by @fcoury-oai in #316
- lsp: Retain diagnostics across code actions by @fcoury-oai in #315
- completion: Rebase refreshed edits from their request by @fcoury-oai in #313
- editor: Refresh plugins after buffer replacement by @fcoury-oai in #310
- lsp: Improve workspace symbol filtering by @fcoury-oai in #306
- editor: Preserve navigation jump history by @fcoury-oai in #305
- lsp: Recover save formatting and inlay hints by @fcoury-oai
- formatting: Trim whitespace before format on save by @fcoury-oai
- lsp: Ignore stale inlay hint responses by @fcoury-oai
- editor: Reveal wrapped final lines by @fcoury-oai in #301
- picker: Prioritize filename matches by @fcoury-oai in #294
- lsp: Restore work-done progress by @fcoury-oai in #293
- diagnostics: Preserve wrapped source text by @fcoury-oai in #291
- neotree: Prevent instruction budget exhaustion in deep workspaces by @fcoury-oai
- lsp: Refresh and relocate stale diagnostics by @fcoury-oai
- lsp: Tolerate language server failures by @fcoury-oai in #286
- agent: Finish interrupted turns promptly by @fcoury-oai in #285
- agent: Make transcript links navigable by @fcoury-oai in #283
- statusline: Compact displayed file paths by @fcoury-oai in #284
- copilot: Keep autocomplete enabled alongside suggestions by @fcoury-oai in #279
- editor: Restore the terminal promptly on quit by @fcoury-oai in #278
- copilot: Persist enablement across restarts by @fcoury-oai in #277
- buffers: Toggle between recently used buffers by @fcoury-oai in #276
- keymap: Honor command-mode aliases across navigation contexts by @fcoury-oai in #274
- breadcrumbs: Restore symbol context and abbreviate home paths by @fcoury-oai
- matchit: Handle rust lifetimes in percent motions by @fcoury-oai
- copilot: Accept inline suggestions with ctrl-l by @fcoury
- completion: Preserve snippet navigation with empty popups by @fcoury-oai
- clipboard: Isolate editor tests from system clipboard by @fcoury-oai
- picker: Prioritize exact name matches by @fcoury-oai
- lsp: Retry cancelled diagnostics quietly by @fcoury-oai
- config: Accept signature help settings by @fcoury-oai
- lsp: Refresh and preserve diagnostics after saving by @fcoury-oai
- neotree: Show symlinks as their targets by @fcoury-oai in #260
- editor: Keep cursor visible on matching brackets by @fcoury-oai in #259
Documentation
- editor: Clarify agent workflows and upcoming release features by @fcoury-oai in #351
- perf: Record edit replay optimization plan by @fcoury-oai
Tests
- lsp: Make diagnostic close fixture portable by @fcoury-oai
Maintenance
- branch: Sync main before snippet fix publication by @fcoury-oai
Other
- Use smaller macOS test runners by @fcoury in #343
- Reduce repeated validation spend by @fcoury in #342
- Use worktrunk for features by @fcoury-oai
Contributors
Installation
Homebrew
brew install codersauce/tap/redmacOS
curl --proto '=https' --tlsv1.2 -fsSL https://getred.dev/install.sh | shLinux
curl --proto '=https' --tlsv1.2 -fsSL https://getred.dev/install.sh | shWindows
irm https://getred.dev/install.ps1 | iexInstall Codex separately and run codex login to enable agent support.
Checksums
Download SHA256SUMS.txt from this release to verify archives.