Immutable
release. Only release title and notes can be modified.
0.4.4
For live updates on Fresh, follow me on X.
Most options below can be changed in the Settings UI - run Open Settings from the command palette (
Ctrl+P).
Features
- Terminal text selection with the mouse - dragging on a live integrated terminal now selects text: the view pauses in place (pixel-identical) while you drag,
Ctrl+Ccopies, and copying or clicking away resumes the live grid; double/triple-click selects a word/line. Mouse events are forwarded to the program inside only when it actually asked for mouse reporting, andShift+drag selects even from a mouse-hungry program (xterm convention).
If a new mouse behavior gets in your way, disable it in the Settings UI (
Ctrl+P→ Open Settings) - see Terminal > "Mouse Drag Selects" and Terminal > "Mouse Forwarding".
- Indent rainbow - color indentation guides by indent level via Editor > "Rainbow Indentation" and a six-color
indent_rainbow_1-indent_rainbow_6theme palette; also fixes a literal{level}placeholder leaking into translated locale strings (#2632, requested by @akarinotomoshibi, by @asukaminato0721). - Virtual space - the cursor can move past a line's end, like Visual Studio or Vim's
virtualedit. Enable with Editor > "Virtual Space" (onorblock), toggle per buffer via Toggle Virtual Space (Current Buffer). - Theme text attributes - syntax colors can now carry
bold/italic/underlined/dim/reversedmodifiers (#2638, by @asukaminato0721). - More languages highlighted - new grammars for gettext PO, m4, Xcode pbxproj, Metal, CUDA, HIP, Fortran, LLVM IR, and MLIR (#2593), plus fixed GLSL/HLSL/WGSL highlighting (#2553); both by @asukaminato0721.
NextPane/PrevPane- cycle through every split+tab pane as one flat list, distinct fromNextSplit/PrevSplitandNextWindow/PrevWindow; landing on a terminal now also switches it into terminal mode (#2562, by @masmu).- Orchestrator dock: organize workspaces into custom folders - create/rename/delete folders and move workspaces between them ("Move to Folder…" via the context menu,
F2, right-click, or the palette); the layout survives a crash. The toolbar is condensed to a "New Task…" dropdown and a search field, with other filters in a collapsible section (#2703). - Search in Project: file filter - a new Files field limits project search & replace to comma-separated globs like
*.rsorsrc/**(#2699, by @asukaminato0721).
Bug Fixes
- LSP diagnostic fixes: the gutter marker,
F8target, hover, and panel now shift with inserted/deleted lines instead of freezing at the pre-edit position until the next save (#2602); and dismissing a hover popup no longer drops an unrelated error from the status bar, gutter, andF8navigation (#2601). - LSP Rename keeps focus - a cross-file F2 rename no longer jumps you to the definition's file at a stale cursor position (#2599).
- LSP now pulls diagnostics from every server configured for a language, not just the first - e.g. both
ruffandtyfor Python now stay live (#2615, reported by @ak24watch). - Format Buffer respects the selection - with an active selection and a server that supports range formatting, only the selected range is formatted instead of silently reformatting the whole file (#2605).
- Monorepo workspaces - a workspace whose root is not itself a git repo now gets full git support for its nested sub-projects: file-explorer git decorations, status-bar branch, and git blame / grep / find-file (#2369, by @can2049); Git Log and Git Grep were also fixed for monorepo layouts.
- Search & Replace fixes: match stepping (
Ctrl+Alt+→/←, Enter-open) now follows live edits instead of landing on a stale position (#2583); clicking a Search & Replace or Settings text field now positions the caret at the clicked column, and Settings fields also gainedHome/End, word motion, andShift-selection (#2573, reported by @asukaminato0721); and Search and Replace in Project's results panel now keeps exactly one focused element, soTab/Down/Upreach and highlight the results list correctly (#2664). - Vi mode fixes:
>>/<<indent operators now work, including visual/visual-line/visual-block and.repeat (#2438, #2606);i"/a"now search forward on the line instead of requiring the cursor already inside the quotes (#2439);a"includes trailing whitespace, matching Vim's:help aquote(#2604);j/kclamp to the line's last character on shorter lines instead of overshooting by one (#2442);cwstops at word end instead of eating the trailing whitespace likedw(#2437); and thef/t/F/Tfind-char motions now work with operators (df,ct, …) instead of hanging in operator-pending mode or deleting the wrong span (#2441). - Virtual space status bar tracks the cursor into virtual space instead of freezing at the last real position (#2577).
- Indentation guide staircase gap fixed when a block's opener is scrolled off-screen (#2679).
- Large file fixes: the
:Nline jump now offers a scan prompt instead of jumping to line 1 (#2597), the line-count scan no longer undercounts on the first pass (#2596), and editing a large line-wrapped file no longer stalls for ~1 second per keystroke (#2610). - Remote fixes: the integrated terminal now works when the remote's login shell is fish or any non-POSIX shell, instead of failing on
=syntax (#2584, reported by @demin-dmitriy); switching to a workspace on a stalled SSH link no longer freezes the editor, since a dead connection now fails at connect time instead of hanging during workspace restore; and diving into a disconnected SSH workspace from the dock now lands in that workspace's empty "Disconnected" shell with the failure reason and a retry, instead of the dock claiming a switch that never happened - dormant remote rows also show a backend badge anduser@hostdetail (#2570). - Terminal scrolling no longer pins a CPU core - auto-revert is now per-buffer (off for terminals), and terminal buffers never line-wrap (#2608, #2609).
- Per-split terminal scrollback - a terminal shown in two splits can now read scrollback in one split while the other keeps following live output (#2595).
- Tab bar scrolling now reveals the active tab with minimal movement instead of re-centering it on every switch (#2675).
- Bracketed paste now respects read-only buffers, matching typing and
Ctrl+V(#2674). - Whitespace indicator fixes: the master toggle now restores your configured indicators, not just tabs, when turned back on (#2579); and indicators now show in new/unsaved buffers and re-resolve after Set Language (#2580, reported by @braindevices).
- File Explorer fixes: the context menu now grabs the keyboard while open, so keys no longer leak into the tree underneath (#2587); and git decorations now cover nested sub-repos even when the workspace root is itself a git repo (#2592).
- Git Grep no-match is reported as "No matches", not an error (#2591).
- Orchestrator remembers workspaces after a crash and shows "Cancel" instead of "Quit" on the trust prompt (#2658).
- Command palette names no longer truncate at the start - the name column sizes to the longest visible name; only an overlong name is trimmed, at its tail (#2703).
- Compose mode: cursor movement no longer lags in large files - arrow keys used to re-run wrapping and concealment over the whole buffer on every keypress.
- Per-language settings now apply everywhere - language-dependent buffer settings (tab size, auto-close, whitespace indicators, word characters, etc.) were applied inconsistently depending on how a buffer was created, and didn't refresh when a buffer's language changed. They now resolve uniformly and re-apply on any language change.
- Wheel-scrolled tree views no longer snap back to the selected row when a plugin refreshes the tree; scrollbar drags on trees also work now.
Internals
- A round of flaky-e2e-test stabilization replaced fixed-delay waits with semantic waits across the vi-mode, LSP, review-diff, search-replace, and orchestrator-dock suites.