0.3.6
This version includes a major internal refactoring to support multiple windows in a single Fresh process. The work will be used to add a multi-window orchestrator in a future version.
Features
-
Go to line with selection (#1764, thanks @PavelLoparev!): New action extends the selection from cursor to target line. Supports absolute and relative (
+10) jumps. -
File explorer "follow active buffer" (#1569, #1803, thanks @ko3n1g!): New
file_explorer.follow_active_buffersetting (default off). When on, switching tabs expands and highlights the corresponding file without stealing focus. -
Live Diff: Near-identical lines now render as modified lines, with new words decorated as underline (instead of two separate add/remove rows). Deletion virtual lines get gutter markers. Fixed live diff colors in
terminaltheme. -
Auto-start
vi_mode(#1086, reported by @jmcblane): Vi mode plugin now exposestoggle / enable / disablesoinit.tscan flip vi mode at startup. Add this to yourinit.tsto enable:editor.getPluginApi("vi-mode")?.enable();.
In the future I plan to add a way for plugins to register custom config sections in the Settings UI, and then enabling vi-mode auto-start will be available through the UI.
Improvements
-
openSUSE install instructions (#1897, thanks @ilmanzo!) added to the README.
-
Quick Open ranking: Matches at the start of a path segment now beat arbitrary substring hits —
tssurfacestsconfig.jsonandtsc/...before random.tsfiles. -
Search & Replace no longer freezes on result sets in the thousands.
-
Rust code actions (#1915):
rust-analyzernow returnsWorkspaceEdit-based assists like "Fill struct fields" instead of "No code actions available" — Fresh wasn't advertising the capability. -
Status-bar indicator menus: Clicking another indicator's icon dismisses the currently-open menu instead of stacking a second one on top.
-
LSP-Servers popup is extensible: Plugins (starting with the bundled
rust-lsp) can contribute their own rows. -
terminalbuilt-in theme (#1914): Diff backgrounds no longer collide with syntax foregrounds, so keywords on deletion lines and strings on addition lines stay readable on terminals (e.g. xfce-terminal) where each ANSI palette index renders identically for fg and bg. -
Dashboard matches the editor background and no longer slides in.
-
AppImage install script has error handling and a
/tmpfallback so it no longer silently fails when the target directory isn't writable.
Bug Fixes
-
Crash on startup from a corrupt workspace (#1939, reported by @zdooder): Restoring a session whose persisted split pointed at a buffer no longer in the buffer map crashed in
render.rs. The active-buffer pointer is now validated and falls back to a live buffer if it's stale. -
Completion popup + multicursor (#1901, reported by @dtwilliamson): Typing a word character or
Backspacewhile the popup was open only edited the primary cursor — secondary cursors silently went out of sync after the first keystroke. Accepting a completion now also applies at every cursor. -
LSP indicator click (#1941): Bugs fixed: plugin popup stacked under the built-in one; plugin popup ignored the active theme's
popup_bg; state stayed stale after the LSP process was killed externally; "Disable LSP" didn't actually stop the running server; repeated clicks stacked further popups. -
Scrollbar theme overrides (#1554, reported by @klonuo): User themes setting
ui.scrollbar_track_fg,ui.scrollbar_track_hover_fg, orui.scrollbar_thumb_hover_fghad their overrides silently dropped. -
Utility dock routing (#1932):
Ctrl+P→ filename now opens the file in the editor area instead of inside the bottom dock when the dock has focus. The split tab-bar□button now maximizes the split you clicked, not the active one. -
Tab drag: Dropping a tab onto a fresh split (e.g. a Search & Replace result row) no longer panics on the next keystroke.
-
File explorer: A directory whose
.gitignorefilters out all its contents (e.g.build/with*inside) stays visible when expanded. -
Live Diff visual-line motion:
Down/Upno longer freezes when traversing a deletion block that starts with a blank line. -
S-Tabplugin bindings now register correctly (terminals deliver Shift+Tab asBackTab).