Skip to content

fresh-editor 0.4.4

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Jul 22:10
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+C copies, 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, and Shift+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+POpen 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_6 theme 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" (on or block), toggle per buffer via Toggle Virtual Space (Current Buffer).
  • Theme text attributes - syntax colors can now carry bold/italic/underlined/dim/reversed modifiers (#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 from NextSplit/PrevSplit and NextWindow/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 *.rs or src/** (#2699, by @asukaminato0721).

Bug Fixes

  • LSP diagnostic fixes: the gutter marker, F8 target, 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, and F8 navigation (#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 ruff and ty for 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 gained Home/End, word motion, and Shift-selection (#2573, reported by @asukaminato0721); and Search and Replace in Project's results panel now keeps exactly one focused element, so Tab/Down/Up reach 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/k clamp to the line's last character on shorter lines instead of overshooting by one (#2442); cw stops at word end instead of eating the trailing whitespace like dw (#2437); and the f/t/F/T find-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 :N line 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 and user@host detail (#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.