0.4.7
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
- Guided code tours - a codebase walkthrough played in the editor: steps on the left, the current step's explanation on the right, the code open and highlighted above. Tours are small JSON files (
fresh --cmd help tour), VS Code CodeTour files play as-is, and an unfinished tour resumes on next launch. Full guide: Guided Code Tours. - Scripting the editor -
fresh --cmd script runhands a running Fresh a TypeScript program with the full plugin API: open files, arrange panes, start a coding agent, open a tour. Teach agent the Fresh CLI briefsclaude,codexandopencode(on by default). Full guide: Scripting the Editor. - Agents can customize Fresh end to end -
fresh --cmd init reloadre-readsinit.ts,fresh --cmd command run "<name>"invokes any palette command,fresh --cmd help plugindocuments the runtime. - Every settings toggle says what it changes - Toggle X = editor-wide, saved to config; Toggle X (Current Buffer) = this buffer only. Several toggles gained the missing variant.
- Git-gutter hunks and unsaved edits show on the scrollbar (#2713, requested by @RetributionByRevenue).
- The Orchestrator dock has a close button and a View → Orchestrator Dock menu row.
- Thrift syntax highlighting (#2884, by @asukaminato0721).
Bug Fixes
- TOML multiline arrays highlight correctly (#2887, by @asukaminato0721).
- The cursor can reach the last column when the scrollbar is shown (by @ttenneb).
- Editing
- Replace-all finishes on files with tens of thousands of matches - used to run minutes or hang (#2893).
- Two splits on the same file keep independent edit points - transpose, move-line and toggle-comment reset the other pane's cursor (#2878, reported by @FreekyFrank).
- Opening a file straight to a line no longer breaks syntax highlighting.
- Highlights taller than the window are drawn again.
- Input
- Shift works with "Keyboard Report All Keys As Escape Codes" -
Shift+Atypeda(#2880, reported by @akarinotomoshibi). - Pasting works in the New Workspace and Run Agent dialogs, in daemon mode too.
- Shift works with "Keyboard Report All Keys As Escape Codes" -
- Settings & commands
- Settings toggles actually stick
- Eight toggles forgot your choice on restart.
- Project configs silently overrode toggled values; toggles now write the owning layer.
- Workspaces stamped stale settings back on open.
- Config writes are atomic and no longer delete hand-written empty overrides.
- Reset Buffer Settings really resets everything.
- Toggle Tab Indicators no longer hides the space dots too.
- Menus and the palette agree on what a buffer can do - no more
Saveon a terminal (it overwrote the backing file with scrollback), no more greyed-out commands while a terminal or the explorer has focus.
- Settings toggles actually stick
- Git & live diff
- Live diff never refuses a file - "file too large for live diff" is gone; the shared diff engine degrades detail instead of giving up.
- Reverting a file outside Fresh refreshes the git gutter, live diff and conflict markers.
- Panels & docks
- Closing a file no longer pulls a dock panel into the editor split.
- Plugin panels handle the mouse properly - clicks, wheel and scrollbars work in every widget panel.
- A second Utility Dock panel renders like the first - no stray line-number gutter.
- Reloading a plugin stops stacking duplicate panels.
- Workspaces & agents
- Renaming a workspace made with "Extract Tab to New Workspace" no longer renames its co-tenant.
- A restored workspace's agent can still drive the editor - the script grant now survives a restart.
- Self-update
- Updates finish through the channel that installed Fresh
.deb/.rpm/.flatpakupdates asked repos that never served Fresh ("already the newest version", forever).- Homebrew named a nonexistent formula; several other channels' commands fixed.
- Show the update command prints without downloading anything.
- Security hardening - closed a symlink race in the binary swap and a predictable staging path ahead of
sudo dpkg -i.
- Updates finish through the channel that installed Fresh
Internals
- Flaky-e2e stabilization, quieter plugin slow-handler warnings, repo-root cleanup (#2914).