@involvex/fresh-editor 0.1.76 → 0.1.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/CHANGELOG.md +1017 -0
- package/bin/LICENSE +117 -0
- package/bin/README.md +248 -0
- package/bin/fresh.exe +0 -0
- package/bin/plugins/README.md +71 -0
- package/bin/plugins/audit_mode.i18n.json +821 -0
- package/bin/plugins/audit_mode.ts +1810 -0
- package/bin/plugins/buffer_modified.i18n.json +67 -0
- package/bin/plugins/buffer_modified.ts +281 -0
- package/bin/plugins/calculator.i18n.json +93 -0
- package/bin/plugins/calculator.ts +770 -0
- package/bin/plugins/clangd-lsp.ts +168 -0
- package/bin/plugins/clangd_support.i18n.json +223 -0
- package/bin/plugins/clangd_support.md +20 -0
- package/bin/plugins/clangd_support.ts +325 -0
- package/bin/plugins/color_highlighter.i18n.json +145 -0
- package/bin/plugins/color_highlighter.ts +304 -0
- package/bin/plugins/config-schema.json +768 -0
- package/bin/plugins/csharp-lsp.ts +147 -0
- package/bin/plugins/csharp_support.i18n.json +80 -0
- package/bin/plugins/csharp_support.ts +170 -0
- package/bin/plugins/css-lsp.ts +143 -0
- package/bin/plugins/diagnostics_panel.i18n.json +236 -0
- package/bin/plugins/diagnostics_panel.ts +642 -0
- package/bin/plugins/examples/README.md +85 -0
- package/bin/plugins/examples/async_demo.ts +165 -0
- package/bin/plugins/examples/bookmarks.ts +329 -0
- package/bin/plugins/examples/buffer_query_demo.ts +110 -0
- package/bin/plugins/examples/git_grep.ts +262 -0
- package/bin/plugins/examples/hello_world.ts +93 -0
- package/bin/plugins/examples/virtual_buffer_demo.ts +116 -0
- package/bin/plugins/find_references.i18n.json +275 -0
- package/bin/plugins/find_references.ts +359 -0
- package/bin/plugins/git_blame.i18n.json +496 -0
- package/bin/plugins/git_blame.ts +707 -0
- package/bin/plugins/git_find_file.i18n.json +314 -0
- package/bin/plugins/git_find_file.ts +300 -0
- package/bin/plugins/git_grep.i18n.json +171 -0
- package/bin/plugins/git_grep.ts +191 -0
- package/bin/plugins/git_gutter.i18n.json +93 -0
- package/bin/plugins/git_gutter.ts +477 -0
- package/bin/plugins/git_log.i18n.json +481 -0
- package/bin/plugins/git_log.ts +1285 -0
- package/bin/plugins/go-lsp.ts +143 -0
- package/bin/plugins/html-lsp.ts +145 -0
- package/bin/plugins/json-lsp.ts +145 -0
- package/bin/plugins/lib/fresh.d.ts +1321 -0
- package/bin/plugins/lib/index.ts +24 -0
- package/bin/plugins/lib/navigation-controller.ts +214 -0
- package/bin/plugins/lib/panel-manager.ts +220 -0
- package/bin/plugins/lib/types.ts +72 -0
- package/bin/plugins/lib/virtual-buffer-factory.ts +130 -0
- package/bin/plugins/live_grep.i18n.json +171 -0
- package/bin/plugins/live_grep.ts +422 -0
- package/bin/plugins/markdown_compose.i18n.json +223 -0
- package/bin/plugins/markdown_compose.ts +630 -0
- package/bin/plugins/merge_conflict.i18n.json +821 -0
- package/bin/plugins/merge_conflict.ts +1810 -0
- package/bin/plugins/path_complete.i18n.json +80 -0
- package/bin/plugins/path_complete.ts +165 -0
- package/bin/plugins/python-lsp.ts +162 -0
- package/bin/plugins/rust-lsp.ts +166 -0
- package/bin/plugins/search_replace.i18n.json +405 -0
- package/bin/plugins/search_replace.ts +484 -0
- package/bin/plugins/test_i18n.i18n.json +67 -0
- package/bin/plugins/test_i18n.ts +18 -0
- package/bin/plugins/theme_editor.i18n.json +3746 -0
- package/bin/plugins/theme_editor.ts +2063 -0
- package/bin/plugins/todo_highlighter.i18n.json +184 -0
- package/bin/plugins/todo_highlighter.ts +206 -0
- package/bin/plugins/typescript-lsp.ts +167 -0
- package/bin/plugins/vi_mode.i18n.json +1549 -0
- package/bin/plugins/vi_mode.ts +2747 -0
- package/bin/plugins/welcome.i18n.json +236 -0
- package/bin/plugins/welcome.ts +76 -0
- package/bin/themes/dark.json +102 -0
- package/bin/themes/dracula.json +62 -0
- package/bin/themes/high-contrast.json +102 -0
- package/bin/themes/light.json +102 -0
- package/bin/themes/nord.json +62 -0
- package/bin/themes/nostalgia.json +102 -0
- package/bin/themes/solarized-dark.json +62 -0
- package/binary-install.js +1 -1
- package/dist/bin/fresh.js +9 -0
- package/dist/binary-install.js +149 -0
- package/dist/binary.js +30 -0
- package/dist/fresh-6yhknp07.exe +0 -0
- package/dist/install.js +158 -0
- package/dist/run-fresh.js +43 -0
- package/package.json +7 -2
package/bin/CHANGELOG.md
ADDED
|
@@ -0,0 +1,1017 @@
|
|
|
1
|
+
# Release Notes
|
|
2
|
+
|
|
3
|
+
## 0.1.75
|
|
4
|
+
|
|
5
|
+
This is mostly a bugfix release.
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **Prompt History**: Generic prompt history system with Up/Down navigation, now available for Go to Line and other prompts.
|
|
10
|
+
* **Session External Files**: Files opened from outside the project directory are now restored in sessions.
|
|
11
|
+
* **Fuzzy Search Exact Match Priority**: Open File dialog now prioritizes exact filename matches over fuzzy matches.
|
|
12
|
+
* **Horizontal Scroll**: Fixed cursor position with horizontal scroll after Open File dialog and pressing Enter on long lines.
|
|
13
|
+
* **Multi-Cursor Bracket Skip**: Fixed bracket skip-over with multiple cursors in bulk edit.
|
|
14
|
+
* **F3 Search**: Fixed F3 to allow searching more after editing and to update positions correctly after buffer modifications.
|
|
15
|
+
* **File Explorer**: Removed plain letter shortcuts causing accidental actions, fixed focus after rename/delete, improved new file command behavior.
|
|
16
|
+
* **Terminal**: Fixed scrollback colors, mouse scroll now exits to scrollback mode, fixed viewport position bugs, persist exit message.
|
|
17
|
+
* **Theme Editor**: Fixed reopening after closing the theme editor, allow editing builtin themes (#696), store builtin themes as json instead of hardcoded inside rust.
|
|
18
|
+
* **LSP Diagnostics**: Made diagnostic cache per-buffer to prevent marker position bugs.
|
|
19
|
+
* **Cursor Visibility**: You can see the letter under the block cursor now! Apply REVERSED style to primary cursor for better visibility.
|
|
20
|
+
* **Open Terminal**: Command now available in all contexts.
|
|
21
|
+
* **Open File Dialog**: When run while a terminal is focused, use CWD instead of the internal backing file directory.
|
|
22
|
+
|
|
23
|
+
### Internal
|
|
24
|
+
|
|
25
|
+
* Refactored reference highlighting to use overlay system (#694).
|
|
26
|
+
* Built-in themes now loaded from JSON artifacts at build time instead of hardcoded Rust.
|
|
27
|
+
* Removed duplicate dead code from LspTask.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 0.1.74
|
|
32
|
+
|
|
33
|
+
### Features
|
|
34
|
+
|
|
35
|
+
* **Italian Locale**: Full Italian translation support added across the editor and all core plugins (@fdefilippo).
|
|
36
|
+
* **Interactive Links in Popups**: Markdown popups (such as LSP hover) now support clickable hyperlinks (OSC 8). Clicking a link opens it in your default web browser (@Asuka-Minato).
|
|
37
|
+
* **Sudo Save Fallback**: When saving a file fails due to insufficient permissions, the editor now offers to save using `sudo` (Linux/macOS) (#301).
|
|
38
|
+
* **Improved Language Features**: Improved word navigation, auto-pairs, and multi-cursor behavior.
|
|
39
|
+
|
|
40
|
+
### Bug Fixes
|
|
41
|
+
|
|
42
|
+
* **LSP Hover Reliability**: Fixed multiple issues with hover popups, including race conditions during rapid mouse movement, incorrect positioning on empty lines, and popups triggering past the end of a line.
|
|
43
|
+
* **Popup Scrollbar Drag**: You can now click and drag the scrollbar in popups (like hover and completion) to scroll through long content.
|
|
44
|
+
* **Inlay Hint Positioning**: Corrected inlay hint placement in Rust files to prevent them from shifting line content (#626, @Asuka-Minato).
|
|
45
|
+
* **Theme Editor Path Resolution**: Fixed a bug where the theme editor couldn't find the correct configuration directory on some systems.
|
|
46
|
+
|
|
47
|
+
### Internal
|
|
48
|
+
|
|
49
|
+
* **Error Handling**: Migrated to `anyhow` for more robust error tracking and backtraces.
|
|
50
|
+
* **Plugin API**: Added `editor.getConfigDir()` and `editor.getThemesDir()` to the plugin API.
|
|
51
|
+
* **Dependency Updates**: Bumped `clap` to 4.5.54.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 0.1.71
|
|
56
|
+
|
|
57
|
+
### Features
|
|
58
|
+
|
|
59
|
+
* **Side-by-Side Diff View**: Word-level highlighting, synchronized scrolling, cursor navigation.
|
|
60
|
+
* **Theme Editor**: JSON Schema API, color swatches, command palette integration, delete theme.
|
|
61
|
+
* **Create Files from Open Dialog**: Type non-existent filename to create new buffer.
|
|
62
|
+
* **Tilde Expansion**: `~/path` works in Save As, Open File, Switch Project.
|
|
63
|
+
|
|
64
|
+
### Bug Fixes
|
|
65
|
+
|
|
66
|
+
* **Toggle Comment**: Use language config for comment prefixes, preserve selection, don't hang (#681).
|
|
67
|
+
* **Split Close**: Close split when closing last buffer instead of empty buffer.
|
|
68
|
+
* **Terminal**: Resume mode on buffer switch, sync content, clean up on close.
|
|
69
|
+
* **Hidden Buffers**: Skip in next/prev buffer, fix tab click targets.
|
|
70
|
+
|
|
71
|
+
### Internal
|
|
72
|
+
|
|
73
|
+
* Plugin i18n completeness tests. Bumped libc, tokio, tree-sitter-lua.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 0.1.70
|
|
78
|
+
|
|
79
|
+
### Features
|
|
80
|
+
|
|
81
|
+
* **Input Calibration Wizard**: New wizard to calibrate keyboard input for terminals with broken key sequences. Access via "Calibrate Keyboard" in command palette or View menu. Uses failsafe ASCII-only navigation (#219).
|
|
82
|
+
|
|
83
|
+
* **Terminal Cursor Color**: Cursor color now set via OSC 12 escape sequence for proper visibility across all themes, especially light theme.
|
|
84
|
+
|
|
85
|
+
### Bug Fixes
|
|
86
|
+
|
|
87
|
+
* **Dynamic Keybinding Hints**: Status messages now show actual keybindings from keymap instead of hardcoded shortcuts (#659).
|
|
88
|
+
|
|
89
|
+
* **Search in Large Files**: Fixed "Buffer not fully loaded" error when searching in large plain text files (#657).
|
|
90
|
+
|
|
91
|
+
* **LSP Config Preservation**: Fixed LSP command field becoming empty when toggling enabled state. Partial config now merges with defaults (#630, #631).
|
|
92
|
+
|
|
93
|
+
* **Multi-Cursor End of Line**: Fixed secondary cursors rendering at line start instead of end (#632).
|
|
94
|
+
|
|
95
|
+
* **Selection at Cursor**: Fixed selection background not showing at primary cursor position with bar/underline cursor styles (#614).
|
|
96
|
+
|
|
97
|
+
* **Locale Interpolation**: Fixed locale name not appearing in "Locale changed" message (#624).
|
|
98
|
+
|
|
99
|
+
* **Cursor Past Trailing Newline**: Allow cursor to navigate to the empty line after trailing newline (#622, @Asuka-Minato).
|
|
100
|
+
|
|
101
|
+
* **.env Syntax Highlighting**: Added .env to default shell syntax patterns (#559).
|
|
102
|
+
|
|
103
|
+
* **Spanish Translation**: Fixed typo in menu bar (@osniel).
|
|
104
|
+
|
|
105
|
+
* **Audit Mode Keybindings**: Use Emacs-style key notation in diff-view bindings (@xunzhou).
|
|
106
|
+
|
|
107
|
+
### Internal
|
|
108
|
+
|
|
109
|
+
* Refactored config system to use layered PartialConfig resolution everywhere.
|
|
110
|
+
* Code cleanup: use `Self` where possible, merge match arms (@adamnemecek).
|
|
111
|
+
* Clean up log output by resetting to column zero (@Martin-Häcker).
|
|
112
|
+
* Bumped windows-sys to 0.61.2 (@dependabot).
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 0.1.69
|
|
117
|
+
|
|
118
|
+
> **macOS Users**: This release includes significant improvements for macOS terminal compatibility. See the new [macOS Terminal Tips](docs/USER_GUIDE.md#macos-terminal-tips) guide for recommended terminal emulators and keyboard configuration. The macOS keymap ([`keymaps/macos.json`](keymaps/macos.json)) is a work in progress—please submit patches based on your experience with different terminals and keyboard layouts!
|
|
119
|
+
|
|
120
|
+
### Features
|
|
121
|
+
|
|
122
|
+
* **macOS Keymap**: Terminal-friendly keybindings that avoid broken Ctrl+Shift combinations, ASCII control char collisions (Ctrl+J=LF), and international keyboard conflicts (Ctrl+Alt+L=@ on German). Key bindings: Ctrl+R (redo), Ctrl+G (find next), Ctrl+L (go to line), Ctrl+T (go to symbol), Alt+B/F (word movement). See [macOS Terminal Tips](docs/USER_GUIDE.md#macos-terminal-tips) (#219).
|
|
123
|
+
|
|
124
|
+
* **4-Level Config System**: Configuration now merges user, platform, project, and session layers. Settings UI shows layer indicators and allows editing specific config files.
|
|
125
|
+
|
|
126
|
+
* **Tab Context Menu**: Right-click tabs for Close, Close Others, Close All, Close to Right options.
|
|
127
|
+
|
|
128
|
+
* **Drag-to-Split Tabs**: Drag tabs to screen edges to create new splits.
|
|
129
|
+
|
|
130
|
+
* **Plugin Logging**: New `editor.error()`, `editor.warn()`, `editor.info()`, `editor.debug()` methods route plugin output through the editor's logging system.
|
|
131
|
+
|
|
132
|
+
* **Log Management**: Logs moved to XDG state directory with automatic 24-hour cleanup. Use `--show-paths` to see log locations.
|
|
133
|
+
|
|
134
|
+
### Experimental
|
|
135
|
+
|
|
136
|
+
*These features are work-in-progress. Expect rough edges and breaking changes.*
|
|
137
|
+
|
|
138
|
+
* **Internationalization (i18n)**: Full i18n support with 11 languages (German, French, Spanish, Japanese, Korean, Chinese, Russian, Ukrainian, Czech, Portuguese, Thai). Select locale via command palette or Settings UI. Plugins support translation via `editor.t()` and `.i18n.json` files. *Note*: Keybinding shortcuts do not take the active layout into account, which is why this feature is still experimental. Also I need you to provide feedback on the translations since they were all machine-generated and I don't speak any of the languages added.
|
|
139
|
+
|
|
140
|
+
* **Vi Mode Plugin**: Added `.` repeat command, visual block mode, and colon command mode with comprehensive vim commands (`:w`, `:q`, `:wq`, `:e`, `:split`, etc.).
|
|
141
|
+
|
|
142
|
+
* **Review Diff Plugin**: Side-by-side diff view with synchronized scrolling, line alignment, and word-level highlighting. Access via "Side-by-Side Diff" command.
|
|
143
|
+
|
|
144
|
+
### Bug Fixes
|
|
145
|
+
|
|
146
|
+
* **Tab Size Zero Panic**: Fixed division by zero when tab_size is 0 (#580).
|
|
147
|
+
|
|
148
|
+
* **Hidden Cursor Panic**: Fixed crash when rendering buffers with hidden cursors (#607, yoooughtul).
|
|
149
|
+
|
|
150
|
+
* **Settings Paste**: Fixed clipboard paste not working in Settings UI edit dialogs (#605, Tyooughtul).
|
|
151
|
+
|
|
152
|
+
* **Show Hidden Truncation**: Fixed "Show Hidden" checkbox label truncated in file dialog (#558).
|
|
153
|
+
|
|
154
|
+
* **Syntax Highlighting Config**: User-configured filename patterns now work for syntax highlighting (#565).
|
|
155
|
+
|
|
156
|
+
* **Replace All Performance**: Fixed O(n²) performance issue causing hangs on large files (#564).
|
|
157
|
+
|
|
158
|
+
* **Plugin Thread Hang**: Fixed plugin thread hanging on shutdown.
|
|
159
|
+
|
|
160
|
+
* **File Explorer Crash**: Fixed crash when scroll_offset exceeds tree size (#562).
|
|
161
|
+
|
|
162
|
+
* **Background Revert Jump**: Fixed viewport jumping when auto-reverting background files.
|
|
163
|
+
|
|
164
|
+
* **Scrollbar Gaps**: Render scrollbars with background fills to avoid glyph gaps in some terminals (Oleksii Smotrov).
|
|
165
|
+
|
|
166
|
+
### Performance
|
|
167
|
+
|
|
168
|
+
* **BulkEdit Operations**: Multi-cursor and replace-all now use O(n) algorithm instead of O(n²).
|
|
169
|
+
|
|
170
|
+
* **Semantic Highlighting**: Debounced to reduce CPU usage during rapid cursor movement.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 0.1.67
|
|
175
|
+
|
|
176
|
+
### Features
|
|
177
|
+
|
|
178
|
+
* **Find Selection Next/Previous**: Search for word under cursor without opening find panel. Ctrl+F3/Ctrl+Shift+F3 or Alt+N/Alt+P (#489).
|
|
179
|
+
|
|
180
|
+
* **Cursor Style Configuration**: Configure terminal cursor style (block/bar/underline, blinking/steady) via command palette (#341).
|
|
181
|
+
|
|
182
|
+
* **Case Conversion**: Transform selected text to uppercase (Alt+U) or lowercase (Alt+L) (#522).
|
|
183
|
+
|
|
184
|
+
* **Folder Modified Indicators**: Parent folders show dot indicator when containing unsaved files (#526).
|
|
185
|
+
|
|
186
|
+
* **Line Ending Indicator**: Status bar shows LF/CRLF/CR, clickable to change. Conversion on save, configurable default (#487).
|
|
187
|
+
|
|
188
|
+
### Experimental
|
|
189
|
+
|
|
190
|
+
*These features are work-in-progress. Expect rough edges and breaking changes.*
|
|
191
|
+
|
|
192
|
+
* **LSP Helper Plugins**: Popup with install commands when LSP server not found for Python, Rust, TypeScript (#502).
|
|
193
|
+
|
|
194
|
+
* **Vi Mode Plugin**: Full vi-style modal editing with normal/insert/visual modes, operators (d/c/y), motions (hjkl, w/b/e, gg/G), text objects (iw, i", i(), etc.), counts, and find character (f/t).
|
|
195
|
+
|
|
196
|
+
* **Review Diff Plugin**: Code review for AI-generated changes or git diffs. Side-by-side view with synchronized scrolling, line comments, approve/reject/stage actions, export to Markdown/JSON.
|
|
197
|
+
|
|
198
|
+
### Bug Fixes
|
|
199
|
+
|
|
200
|
+
* **Line Numbers with Wrapped Lines**: Fixed line numbers desyncing when scrolling through wrapped lines (#552).
|
|
201
|
+
|
|
202
|
+
* **Click Past End of Line**: Now positions cursor at line end instead of next line start (#547).
|
|
203
|
+
|
|
204
|
+
* **Line Wrapping**: Fixed characters being clipped at wrap boundaries with tabs and grapheme clusters (#550).
|
|
205
|
+
|
|
206
|
+
* **Zsh Dotfiles**: .zshrc, .zprofile, .zshenv now highlighted as shell scripts (#537).
|
|
207
|
+
|
|
208
|
+
* **Cursor on Status Bar**: Fixed cursor jumping to status bar when scrolling to end of file (#468).
|
|
209
|
+
|
|
210
|
+
* **Large Single-Line Files**: Fixed memory exhaustion and 100% CPU on files like minified JSON (#481).
|
|
211
|
+
|
|
212
|
+
* **Config Editor Keys**: Fixed Delete, Home/End, Ctrl+A in JSON text box.
|
|
213
|
+
|
|
214
|
+
* **Search Term Persistence**: Alt+N/Alt+P keeps original search term when landing on longer word.
|
|
215
|
+
|
|
216
|
+
### Packaging
|
|
217
|
+
|
|
218
|
+
* **AUR**: Use stable source tarball to fix sha256sum validation failures.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 0.1.65
|
|
223
|
+
|
|
224
|
+
### Features
|
|
225
|
+
|
|
226
|
+
* **Warning Indicators**: Non-intrusive warning notifications in the status bar. Click or use commands to view warnings, with domains for LSP and general warnings.
|
|
227
|
+
|
|
228
|
+
* **Format Buffer Command**: Explicit command to format the current buffer on demand.
|
|
229
|
+
|
|
230
|
+
* **Config Applied on Open**: `line_numbers` and `line_wrap` settings now properly apply when opening new buffers.
|
|
231
|
+
|
|
232
|
+
### Bug Fixes
|
|
233
|
+
|
|
234
|
+
* **Settings Persistence**: Fixed settings not persisting after save and reopen (#474, #457).
|
|
235
|
+
|
|
236
|
+
* **SaveAs Overwrite Confirmation**: Added confirmation dialog when SaveAs would overwrite an existing file (#476).
|
|
237
|
+
|
|
238
|
+
* **Multi-Byte Character Input**: Fixed panic when editing multi-byte characters in text inputs and prompts (#466).
|
|
239
|
+
|
|
240
|
+
* **TextList Dialog**: Fixed add-new input not rendering in entry dialogs.
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 0.1.64
|
|
245
|
+
|
|
246
|
+
* To prevent accidental deletion of files, removed 'd' / delete key bindings from File Explorer, changed the underlying delete to show a prompt and to move files to trash instead of really deleting.
|
|
247
|
+
|
|
248
|
+
## 0.1.63
|
|
249
|
+
|
|
250
|
+
### Features
|
|
251
|
+
|
|
252
|
+
* **Shell Command Prompt**: Pipe buffer or selection through shell commands (Alt+|).
|
|
253
|
+
|
|
254
|
+
* **On-Save Actions**: Run formatters/linters on save. Default formatters included for Rust (rustfmt), JavaScript/TypeScript (prettier), Python (ruff), C/C++ (clang-format), Go (gofmt).
|
|
255
|
+
|
|
256
|
+
* **Stdin Input**: Pipe content via stdin with background streaming (`echo "hello" | fresh -`).
|
|
257
|
+
|
|
258
|
+
* **Multi-File CLI**: Open multiple files from command line (#389).
|
|
259
|
+
|
|
260
|
+
* **Tab Indent Selection**: Tab indents selected lines, Shift+Tab dedents (#353).
|
|
261
|
+
|
|
262
|
+
* **Toggle Menu Bar**: Hide/show menu bar via command palette for extra screen space.
|
|
263
|
+
|
|
264
|
+
* **Global File Positions**: Cursor/scroll positions stored globally per file, not per project (#423).
|
|
265
|
+
|
|
266
|
+
* **Relative Line Numbers**: Show relative distances from cursor in gutter for easier vim-style navigation. Enable via `relative_line_numbers` config (#454).
|
|
267
|
+
|
|
268
|
+
### Bug Fixes
|
|
269
|
+
|
|
270
|
+
* **On-Save Missing Tools**: Graceful handling when formatter/linter command not found.
|
|
271
|
+
|
|
272
|
+
* **Settings UI Nested Dialogs**: Fixed nested ObjectArray navigation and save not persisting (e.g., editing on_save inside language config).
|
|
273
|
+
|
|
274
|
+
* **Live Grep Working Directory**: Fixed search plugins using process cwd instead of project working directory.
|
|
275
|
+
|
|
276
|
+
* **Open File Path Resolution**: Fixed relative paths resolving incorrectly when editor launched from different directory.
|
|
277
|
+
|
|
278
|
+
### Performance
|
|
279
|
+
|
|
280
|
+
* **Live Grep UI**: Fixed UI freezing for seconds during large codebase searches by making plugin event loop non-blocking.
|
|
281
|
+
|
|
282
|
+
### Internal
|
|
283
|
+
|
|
284
|
+
* Embedded plugins in binary as fallback for cargo-binstall (#416).
|
|
285
|
+
|
|
286
|
+
* Removed duplicate theme JSON files (#438).
|
|
287
|
+
|
|
288
|
+
* Extracted modules from mod.rs (file_operations, split_actions, clipboard, etc.).
|
|
289
|
+
|
|
290
|
+
* Pinned Rust 1.92 via rust-toolchain.toml (#338).
|
|
291
|
+
|
|
292
|
+
* Windows build switched from MSVC to GNU target.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## 0.1.59
|
|
297
|
+
|
|
298
|
+
### Features
|
|
299
|
+
|
|
300
|
+
* **Copy with Formatting**: Copy selected text as HTML with syntax highlighting. Works in Google Docs, Word, etc. Available via Edit menu submenu or command palette.
|
|
301
|
+
|
|
302
|
+
* **Pascal Language Support**: Auto-indentation and semantic highlighting for `.pas` and `.p` files (@casibbald).
|
|
303
|
+
|
|
304
|
+
* **Set Line Ending Command**: Change buffer line ending format (LF/CRLF/CR) via command palette.
|
|
305
|
+
|
|
306
|
+
* **Buffer Settings Commands**: Toggle auto_indent, use_tabs, and tab_size via command palette.
|
|
307
|
+
|
|
308
|
+
* **Settings UI**: Recursive dialog stack for nested arrays/maps, focus indicators, Ctrl+S to save, select-all on number input edit.
|
|
309
|
+
|
|
310
|
+
### Bug Fixes
|
|
311
|
+
|
|
312
|
+
* **Tab Size Config**: Fixed tab_size config not being respected (#384).
|
|
313
|
+
|
|
314
|
+
* **Windows Multi-Line Paste**: Fixed CRLF paste appearing as single line (#427).
|
|
315
|
+
|
|
316
|
+
* **CRLF Highlighting**: Fixed syntax highlighting offset drift in CRLF files.
|
|
317
|
+
|
|
318
|
+
* **CRLF Cursor**: Fixed cursor invisible at end of line in CRLF mode.
|
|
319
|
+
|
|
320
|
+
* **Menu Navigation**: Keyboard navigation now skips disabled items.
|
|
321
|
+
|
|
322
|
+
* **Cut/Copy Disabled**: Menu items grayed out when no selection.
|
|
323
|
+
|
|
324
|
+
### Internal
|
|
325
|
+
|
|
326
|
+
* Extracted CRLF helpers, consolidated TextMateHighlighter into TextMateEngine.
|
|
327
|
+
|
|
328
|
+
* Updated insta (1.45.0), deno_core (0.376.0).
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## 0.1.57
|
|
333
|
+
|
|
334
|
+
### Bug Fixes
|
|
335
|
+
|
|
336
|
+
* **External Paste with Prompts**: Fixed paste via terminal (Ctrl+Shift+V / bracketed paste) going to editor instead of open prompt (#406).
|
|
337
|
+
|
|
338
|
+
* **Block Selection Escape**: Fixed Escape key not canceling block selection mode (#405).
|
|
339
|
+
|
|
340
|
+
* **CRLF Line Endings**: Fixed CRLF handling to preserve original line endings. Enter inserts correct line ending, End key positions before \r\n, backspace/delete treat \r\n as single unit (#401).
|
|
341
|
+
|
|
342
|
+
* **RPM Package**: Fixed /usr/bin/fresh entry missing from RPM package manifest.
|
|
343
|
+
|
|
344
|
+
* **Settings Percentage Values**: Fixed percentage settings saving as integers instead of floats.
|
|
345
|
+
|
|
346
|
+
* **Windows Unicode**: Fixed unicode character not supported on Windows (#400).
|
|
347
|
+
|
|
348
|
+
### Packaging
|
|
349
|
+
|
|
350
|
+
* **AUR Source Package**: Fixed sha256sum not being updated when publishing.
|
|
351
|
+
|
|
352
|
+
* **Nix Flake**: Fixed missing sublime-syntax grammar files in source filter.
|
|
353
|
+
|
|
354
|
+
* **Flatpak/AppImage**: Strip binaries before bundling for smaller package sizes.
|
|
355
|
+
|
|
356
|
+
### Internal
|
|
357
|
+
|
|
358
|
+
* **Test Reliability**: Fixed flaky e2e tests on macOS by removing timing sensitivity.
|
|
359
|
+
|
|
360
|
+
* **Release Workflow**: Added package upgrade tests and nix build test.
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## 0.1.56
|
|
365
|
+
|
|
366
|
+
### Features
|
|
367
|
+
|
|
368
|
+
* **Per-Language Tab Settings**: Added `use_tabs` and `show_whitespace_tabs` config options per language. Go and Makefile default to tabs (#364).
|
|
369
|
+
* **AppImage Packaging**: AppImage bundles now included in GitHub releases (#365).
|
|
370
|
+
* **Terminal Color Detection**: Auto-detection of terminal color capabilities with fallback to 256 colors. Override via `FRESH_COLOR_MODE`.
|
|
371
|
+
* **TOML Syntax Highlighting**: Added embedded TextMate grammar for TOML files.
|
|
372
|
+
* **Language Detection by Filename**: Detect languages by filename (`.bashrc`, `Makefile`, `Dockerfile`, etc.) (#383).
|
|
373
|
+
* **Minimal Config Saves**: Config file only saves non-default fields.
|
|
374
|
+
* **Settings UI**: Mouse click/double-click support, hover effects, improved scrolling.
|
|
375
|
+
|
|
376
|
+
### Bug Fixes
|
|
377
|
+
|
|
378
|
+
* **LSP**: Improved error messages when server not found (#363). Fixed didOpen ordering (#399). Check diagnosticProvider capability before pull diagnostics (#399).
|
|
379
|
+
* **Terminal Mode Reset**: Fixed terminal_mode not being reset when closing a terminal buffer.
|
|
380
|
+
* **cargo-binstall**: Fixed missing binaries warning (#388).
|
|
381
|
+
* **macOS Keybinding Display**: Fixed showing ⌘ instead of Ctrl (#356).
|
|
382
|
+
* **tmux Truecolor**: Fixed detection when `COLORTERM=truecolor` is set.
|
|
383
|
+
* **RPM Upgrade**: Fixed upgrade failing when older version installed (#387).
|
|
384
|
+
|
|
385
|
+
## 0.1.54
|
|
386
|
+
|
|
387
|
+
### Features
|
|
388
|
+
|
|
389
|
+
* **Universal Install Script**: New `install.sh` script for easy installation across Linux and macOS.
|
|
390
|
+
|
|
391
|
+
* **Settings UI Enhancements**:
|
|
392
|
+
- Entry dialogs for editing Languages, LSP servers, and keybindings
|
|
393
|
+
- Schema-driven dialog builder with automatic field generation
|
|
394
|
+
- Dimming effect for modal dialogs
|
|
395
|
+
- Column-aligned controls for cleaner layout
|
|
396
|
+
- Setting descriptions now displayed inline
|
|
397
|
+
- Map controls with flat navigation, entry highlighting, and delete buttons
|
|
398
|
+
|
|
399
|
+
* **LSP Hover Improvements**: Hover popups now persist when moving within a symbol or hovering over the popup itself. Popups dismiss on focus loss.
|
|
400
|
+
|
|
401
|
+
* **Replace History**: Search & replace now supports history navigation for the replace field.
|
|
402
|
+
|
|
403
|
+
### Bug Fixes
|
|
404
|
+
|
|
405
|
+
* **Paste with Selection**: Fixed paste not replacing selected text - previously inserted without deleting selection.
|
|
406
|
+
|
|
407
|
+
* **Multi-Cursor Paste**: Fixed paste only working at primary cursor - now pastes at all cursor positions.
|
|
408
|
+
|
|
409
|
+
* **Bracketed Paste**: Enabled bracketed paste mode for proper handling of external paste (Ctrl+Shift+V). External pastes now arrive as single atomic events instead of character streams.
|
|
410
|
+
|
|
411
|
+
* **Settings Input Isolation**: Fixed keyboard input leaking between Settings UI panels.
|
|
412
|
+
|
|
413
|
+
* **Map Control Buttons**: Fixed [+] Add new buttons not working for Map controls.
|
|
414
|
+
|
|
415
|
+
* **File Browser Navigation**: Fixed input routing issues in file browser modal.
|
|
416
|
+
|
|
417
|
+
* **Config Loading**: Fixed config not loading from working directory; changes now apply to runtime state immediately.
|
|
418
|
+
|
|
419
|
+
### Configuration
|
|
420
|
+
|
|
421
|
+
* **rust-analyzer Defaults**: Added minimal performance defaults for rust-analyzer LSP.
|
|
422
|
+
|
|
423
|
+
### Internal
|
|
424
|
+
|
|
425
|
+
* **Input Handling Refactor**: New hierarchical `InputHandler` trait system for cleaner modal input routing.
|
|
426
|
+
|
|
427
|
+
* **Component Pattern**: Refactored all Settings UI controls (Button, Toggle, NumberInput, TextInput, Dropdown, TextList, MapInput, KeybindingList) to consistent component pattern.
|
|
428
|
+
|
|
429
|
+
* **Config Module**: Consolidated config path resolution and loading into `config_io` module. Config editor now saves only non-default values.
|
|
430
|
+
|
|
431
|
+
* **Code Organization**: Extracted action handlers into dedicated modules (menu_actions, lsp_actions, prompt_actions, undo_actions, mouse_input).
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
## 0.1.52
|
|
436
|
+
|
|
437
|
+
### Bug Fixes
|
|
438
|
+
|
|
439
|
+
* **musl Build**: Enabled the `runtime` feature for musl builds.
|
|
440
|
+
* **Flatpak**: Fixed CI and metainfo handling (official Flathub container + flatpak-builder action, appstream-compose deps, avoid corrupting XML declaration, remove invalid `launchable` tag).
|
|
441
|
+
|
|
442
|
+
### Internal
|
|
443
|
+
|
|
444
|
+
* **Version Bump Script**: Version bumps now skip `cargo check`.
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## 0.1.45
|
|
449
|
+
|
|
450
|
+
### Features
|
|
451
|
+
|
|
452
|
+
* **Settings UI**: New graphical settings editor accessible via View menu or command palette. Features:
|
|
453
|
+
- Two-panel layout with categories on left and settings on right
|
|
454
|
+
- Fuzzy search to quickly find settings
|
|
455
|
+
- Full keyboard navigation (Tab cycles through panels, arrow keys navigate items)
|
|
456
|
+
- Mouse support with scrolling, scrollbar dragging, and hover indicators
|
|
457
|
+
- Dropdown, number input, text list, and map editing controls
|
|
458
|
+
- Reset to default functionality for individual settings
|
|
459
|
+
- Confirmation dialog when discarding unsaved changes
|
|
460
|
+
- Help overlay showing keyboard shortcuts
|
|
461
|
+
|
|
462
|
+
* **Default/Reset Color Support**: Theme colors can now use "Default" or "Reset" values for terminal transparency. The theme editor plugin shows these special colors with a "∅" placeholder swatch. Terminal background and foreground can inherit from the user's terminal emulator settings.
|
|
463
|
+
|
|
464
|
+
* **Flatpak Packaging**: Added Flatpak support for Linux installation (#340). Flatpak bundles are now included in releases.
|
|
465
|
+
|
|
466
|
+
### Bug Fixes
|
|
467
|
+
|
|
468
|
+
* **File Permissions Loss on Save**: Fixed file permissions/mode bits being lost when saving files (#329). Executable scripts and other special permissions are now preserved.
|
|
469
|
+
|
|
470
|
+
* **Polling File Watcher**: Replaced inotify/FSEvents-based file watching with a simple polling approach (#321). This fixes "too many open files" errors on large projects. Configurable via `auto_revert_poll_interval_ms` (default 2s) and `file_tree_poll_interval_ms` (default 3s).
|
|
471
|
+
|
|
472
|
+
* **Terminal Input Capture**: Fixed terminal capturing keyboard input when the Settings UI is opened while a terminal split is focused.
|
|
473
|
+
|
|
474
|
+
* **Search Result Scrolling**: Fixed settings UI not scrolling to show selected search results.
|
|
475
|
+
|
|
476
|
+
### Configuration
|
|
477
|
+
|
|
478
|
+
* **Memory Limit**: Changed `max_memory_mb` to `max_memory_percent` (default 50%) for consistent behavior across machines with different RAM.
|
|
479
|
+
|
|
480
|
+
### Packaging
|
|
481
|
+
|
|
482
|
+
* **AUR**: Updated package names to match conventions (fresh-editor vs fresh-editor-bin). Added `--syncdeps` to makepkg commands (#343).
|
|
483
|
+
|
|
484
|
+
### Internal
|
|
485
|
+
|
|
486
|
+
* **TimeSource Abstraction**: Added TimeSource trait for testability, making time-dependent behavior deterministic in tests (issue #314).
|
|
487
|
+
|
|
488
|
+
* **Test Reliability**: Replaced thread::sleep with testable time source in e2e tests. Fixed flaky tests on macOS and Windows.
|
|
489
|
+
|
|
490
|
+
* **Dependency Updates**: Updated deno_core, deno_error, actions/upload-artifact, actions/download-artifact, and actions/setup-node.
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
## 0.1.44
|
|
495
|
+
|
|
496
|
+
### Features
|
|
497
|
+
|
|
498
|
+
* **Double-Click Word Selection**: Double-click now selects the word under the cursor. Both clicks must be at the same position within the configurable time threshold (`double_click_time_ms`, default 500ms).
|
|
499
|
+
|
|
500
|
+
* **Multi-Byte Character Support**: Full support for CJK characters, emoji, and other double-width Unicode characters. Includes correct visual width calculation, cursor positioning, mouse click handling, line wrapping, and display across all UI components (status bar, tabs, file explorer, suggestions). (reported by @pm100)
|
|
501
|
+
|
|
502
|
+
* **Nix Flakes Support**: Added Nix flakes for reproducible builds and development. Includes crane-based Rust caching, dev shell with toolchain and dependencies, checks for clippy/tests/formatting, and direnv integration.
|
|
503
|
+
|
|
504
|
+
### Bug Fixes
|
|
505
|
+
|
|
506
|
+
* **Mouse Escape Codes After Panic**: Fixed mouse control codes littering the terminal after a crash by disabling mouse capture in the panic handler (#311, reported by @rluvaton).
|
|
507
|
+
|
|
508
|
+
* **Hover Popup Screen Edge**: Fixed panic when LSP hover popup appears near the edge of the screen.
|
|
509
|
+
|
|
510
|
+
* **File Explorer Click Focus**: Fixed typing not working after clicking on empty area in the file explorer and then clicking back on the editor.
|
|
511
|
+
|
|
512
|
+
### Infrastructure
|
|
513
|
+
|
|
514
|
+
* **npm Publish Workflow**: Consolidated npm publishing into a single workflow that works both standalone and when called from release.yml.
|
|
515
|
+
|
|
516
|
+
### Credits
|
|
517
|
+
|
|
518
|
+
Thanks to @blissartt, @dvchd, @jakoss, @pm100, @rluvaton, @sottey, and @Yousa-Mirage for bug reports, suggestions, and contributions.
|
|
519
|
+
|
|
520
|
+
---
|
|
521
|
+
|
|
522
|
+
## 0.1.40
|
|
523
|
+
|
|
524
|
+
### Features
|
|
525
|
+
|
|
526
|
+
* **Switch Project Command**: New "Switch Project" command (renamed from "Open Folder") to change project root with full context switch. Sessions are automatically saved and restored when switching projects, preserving open files, cursor positions, and split layouts.
|
|
527
|
+
|
|
528
|
+
* **Nested Submenu Support**: Menus now support nested submenus with proper arrow indicators and positioning.
|
|
529
|
+
|
|
530
|
+
* **Select Keybinding Map Command**: New popup selector to choose between different keybinding schemes.
|
|
531
|
+
|
|
532
|
+
* **Double-Click in File Dialog**: Can now double-click to open files in the file open dialog.
|
|
533
|
+
|
|
534
|
+
* **File Explorer UX Improvements**:
|
|
535
|
+
- Ctrl+E now focuses the file explorer instead of toggling it
|
|
536
|
+
- File explorer automatically focuses when closing the last tab
|
|
537
|
+
- Menu checkboxes properly sync with file explorer visibility state
|
|
538
|
+
|
|
539
|
+
* **Split Auto-Close**: Closing the last tab in a split now automatically closes the split.
|
|
540
|
+
|
|
541
|
+
### Bug Fixes
|
|
542
|
+
|
|
543
|
+
* **Mouse Click Below Last Line**: Fixed mouse click below the last line incorrectly jumping to position 0,0.
|
|
544
|
+
|
|
545
|
+
* **Menu Checkbox Sync**: Fixed View menu checkboxes not syncing with file explorer visibility state.
|
|
546
|
+
|
|
547
|
+
* **Duplicate Buffer on Project Switch**: Fixed duplicate buffer creation when switching projects.
|
|
548
|
+
|
|
549
|
+
* **Wrong Upgrade Tip**: Fixed incorrect upgrade tip message (#293).
|
|
550
|
+
|
|
551
|
+
### Infrastructure
|
|
552
|
+
|
|
553
|
+
* **Build System Overhaul**: Replaced cargo-dist with direct cargo builds and custom packaging for more control over the release process.
|
|
554
|
+
|
|
555
|
+
* **npm OIDC Publishing**: Improved npm publish workflow with OIDC trusted publishing and provenance attestations.
|
|
556
|
+
|
|
557
|
+
* **GitHub Actions Updates**: Bumped actions/checkout to v6, actions/upload-artifact to v5, actions/download-artifact to v6, and actions/setup-node to v6.
|
|
558
|
+
|
|
559
|
+
* **Test Improvements**: Many test reliability improvements including Windows compatibility fixes, flaky test fixes, and better test isolation for session persistence tests.
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
## 0.1.35
|
|
564
|
+
|
|
565
|
+
### Features
|
|
566
|
+
|
|
567
|
+
* **XDG Config Paths**: Support standard XDG config paths for user configuration. On macOS, `~/.config/fresh/config.json` is now prioritized if it exists, in addition to the system default path. (@Yousa-Mirage)
|
|
568
|
+
|
|
569
|
+
### Packaging
|
|
570
|
+
|
|
571
|
+
* **cargo-binstall**: Added cargo-binstall as an installation method in documentation. (@dvchd)
|
|
572
|
+
|
|
573
|
+
* **npm OIDC Publishing**: Switched npm publish to OIDC trusted publishing with provenance attestations.
|
|
574
|
+
|
|
575
|
+
---
|
|
576
|
+
|
|
577
|
+
## 0.1.28
|
|
578
|
+
|
|
579
|
+
### Features
|
|
580
|
+
|
|
581
|
+
* **Integrated Terminal**: Full terminal emulation using alacritty_terminal. Open a terminal split with "Open Terminal" command, run shell commands, and interact with TUI applications. Supports:
|
|
582
|
+
- Keyboard capture mode (F9) for sending all keys to terminal
|
|
583
|
+
- Scrollback history with file-backed storage
|
|
584
|
+
- Session persistence - terminals restore across editor restarts
|
|
585
|
+
- Paste support (Ctrl+V)
|
|
586
|
+
- Click to focus terminal splits
|
|
587
|
+
- Auto-restore terminal mode when switching back to terminal tabs
|
|
588
|
+
- Dimmed UI indication when keyboard capture is active
|
|
589
|
+
|
|
590
|
+
* **Mouse Hover for LSP**: Hover over symbols to see LSP hover information (type info, documentation). Configurable delay before showing hover popup.
|
|
591
|
+
|
|
592
|
+
* **Toggle Maximize Split**: New command to maximize/restore the current split view.
|
|
593
|
+
|
|
594
|
+
* **Close Tab Command**: New command to close a tab without closing the underlying buffer.
|
|
595
|
+
|
|
596
|
+
* **C# Language Support**: Added C# language configuration with LSP support (csharp-ls or csharp-language-server) and auto-indent. Includes proactive `dotnet restore` on C# file open.
|
|
597
|
+
|
|
598
|
+
* **Config Editor Improvements**: New `getConfig`/`getUserConfig` plugin APIs. Config editor now properly merges user config with defaults for LSP and languages sections. Timestamped backups created before saving config.
|
|
599
|
+
|
|
600
|
+
* **LSP Menu**: New LSP menu in menu bar with common LSP actions. Menu items are disabled when LSP server is not ready.
|
|
601
|
+
|
|
602
|
+
* **Common LSP Keybindings**: Added default keybindings for common LSP operations.
|
|
603
|
+
|
|
604
|
+
* **C/C++ Language Support**: Added C and C++ language configurations to defaults.
|
|
605
|
+
|
|
606
|
+
### Bug Fixes
|
|
607
|
+
|
|
608
|
+
* **LSP Focus Stealing**: Fixed LSP error and warning buffers stealing focus from the active buffer.
|
|
609
|
+
|
|
610
|
+
* **Terminal Scrollback**: Fixed multiple issues with terminal scrollback not being captured, restored, or displayed correctly after session restore and mode toggles.
|
|
611
|
+
|
|
612
|
+
* **Terminal View Following**: Fixed terminal view not following output when at the bottom of the screen.
|
|
613
|
+
|
|
614
|
+
* **Config Editor**: Fixed config editor saving null instead of user changes. Fixed undefined defaultValue reference.
|
|
615
|
+
|
|
616
|
+
* **Duplicate LSP didOpen**: Fixed duplicate didOpen notifications being sent to strict LSP servers.
|
|
617
|
+
|
|
618
|
+
* **LSP didChange Race**: Fixed LSP didChange notification being sent before didOpen.
|
|
619
|
+
|
|
620
|
+
### Internal
|
|
621
|
+
|
|
622
|
+
* **Musl Builds**: Added musl builds without plugins for fully static Linux binaries.
|
|
623
|
+
|
|
624
|
+
* **Plugin Build Flag**: Added cargo feature (`no-plugins`) to disable plugins at the dependency level, reducing binary size and startup time.
|
|
625
|
+
|
|
626
|
+
* **Test Organization**: Moved plugin-related and LSP find_references tests to dedicated plugins directory.
|
|
627
|
+
|
|
628
|
+
* **Test Reliability**: Fixed flaky e2e tests, skipped platform-specific tests on Windows/macOS where appropriate.
|
|
629
|
+
|
|
630
|
+
* **Terminal Architecture**: Implemented incremental streaming architecture for terminal scrollback with PTY logging and file-backed buffers.
|
|
631
|
+
|
|
632
|
+
---
|
|
633
|
+
|
|
634
|
+
## 0.1.27
|
|
635
|
+
|
|
636
|
+
### Features
|
|
637
|
+
|
|
638
|
+
* **Update Checker**: Automatically checks for new versions periodically (every 24 hours) and on quit, showing a notification when updates are available.
|
|
639
|
+
|
|
640
|
+
* **Diagnostics Panel**: New diagnostics panel plugin showing all errors/warnings in a dedicated split view. Opens in horizontal split, auto-updates on buffer change, and syncs cursor position with F8/Shift+F8 navigation. Includes help line with keybinding hints.
|
|
641
|
+
|
|
642
|
+
* **Diagnostics API**: New plugin API for accessing LSP diagnostics programmatically.
|
|
643
|
+
|
|
644
|
+
* **LSP Initialization Options**: Added support for `initialization_options` in LSP server configuration.
|
|
645
|
+
|
|
646
|
+
* **Warning Log Layer**: Captures WARN+ level logs to a file and can open them in the editor for debugging.
|
|
647
|
+
|
|
648
|
+
* **Plugin Hook**: Added `cursor_moved` hook for plugins to respond to cursor position changes. Standardized hook naming to use underscores.
|
|
649
|
+
|
|
650
|
+
### Bug Fixes
|
|
651
|
+
|
|
652
|
+
* **UTF-8 Status Bar**: Fixed panic when truncating status bar text mid-character.
|
|
653
|
+
|
|
654
|
+
* **Session Restore**: Fixed session restore when a plugin buffer was the active buffer.
|
|
655
|
+
|
|
656
|
+
* **Viewport Sync**: Fixed viewport sync issues after SplitViewState refactoring.
|
|
657
|
+
|
|
658
|
+
* **LSP Null Response**: Treat null LSP response as valid result instead of error.
|
|
659
|
+
|
|
660
|
+
* **LSP Auto-Start**: Persist LSP auto-start setting when manually stopping the server.
|
|
661
|
+
|
|
662
|
+
* **Safe String Slicing**: Use safe string slicing in get_text_to_end_of_line to prevent panics.
|
|
663
|
+
|
|
664
|
+
### Internal
|
|
665
|
+
|
|
666
|
+
* **SplitViewState Refactoring**: Made SplitViewState authoritative for viewport state.
|
|
667
|
+
|
|
668
|
+
* **Default Log Path**: Use system temp directory for default log file path.
|
|
669
|
+
|
|
670
|
+
* **Test Reliability**: Fixed flaky tests on macOS and Windows, improved diagnostics panel tests.
|
|
671
|
+
|
|
672
|
+
* **Dependency Updates**: Updated deno_core, schemars, libloading, and GitHub Actions dependencies.
|
|
673
|
+
|
|
674
|
+
* **Documentation**: Added macOS plugin location information, documented reloadConfig plugin API.
|
|
675
|
+
|
|
676
|
+
---
|
|
677
|
+
|
|
678
|
+
## 0.1.26
|
|
679
|
+
|
|
680
|
+
### Bug Fixes
|
|
681
|
+
|
|
682
|
+
* **aarch64 Build**: Fixed build on aarch64 Linux by enabling v8_use_custom_libcxx.
|
|
683
|
+
|
|
684
|
+
---
|
|
685
|
+
|
|
686
|
+
## 0.1.25
|
|
687
|
+
|
|
688
|
+
### Features
|
|
689
|
+
|
|
690
|
+
* **GPM Mouse Support**: Added mouse support in Linux virtual consoles (TTY) via the GPM daemon (#231). Uses dlopen to load libgpm.so at runtime, so the binary works on systems without GPM installed. Gracefully falls back to standard terminal mouse protocol when GPM is unavailable.
|
|
691
|
+
|
|
692
|
+
* **Configurable Highlight Context**: Syntax highlighting lookback/lookforward is now configurable via `highlight_context_bytes` in config (default increased from 1KB to 10KB). Fixes inaccurate highlighting when viewing the middle of files with long multi-line constructs.
|
|
693
|
+
|
|
694
|
+
### Bug Fixes
|
|
695
|
+
|
|
696
|
+
* **Mouse Wheel After Keyboard**: Fixed mouse wheel scroll not working in main editor after keyboard navigation (#248).
|
|
697
|
+
|
|
698
|
+
### Internal
|
|
699
|
+
|
|
700
|
+
* **Reduced Logging**: Reduced verbose debug logging in default config.
|
|
701
|
+
|
|
702
|
+
* **Signal Handling**: Removed ctrlc dependency, use nix sigaction directly.
|
|
703
|
+
|
|
704
|
+
* **Test Reliability**: Fixed flaky auto-revert tests on macOS (FSEvents latency) and filesystems with 1-second mtime granularity.
|
|
705
|
+
|
|
706
|
+
* **Dependency Updates**: Reduced and updated dependencies.
|
|
707
|
+
|
|
708
|
+
---
|
|
709
|
+
|
|
710
|
+
## 0.1.24
|
|
711
|
+
|
|
712
|
+
### Bug Fixes
|
|
713
|
+
|
|
714
|
+
* **Windows Build**: Fixed Windows build compatibility.
|
|
715
|
+
|
|
716
|
+
---
|
|
717
|
+
|
|
718
|
+
## 0.1.23
|
|
719
|
+
|
|
720
|
+
### Bug Fixes
|
|
721
|
+
|
|
722
|
+
* **Split Close Tab Preservation**: Fixed tabs not being preserved when closing a split.
|
|
723
|
+
|
|
724
|
+
### Performance
|
|
725
|
+
|
|
726
|
+
* **Diff Optimization**: Optimized diff_since_saved with two-phase algorithm.
|
|
727
|
+
|
|
728
|
+
---
|
|
729
|
+
|
|
730
|
+
## 0.1.22
|
|
731
|
+
|
|
732
|
+
### Features
|
|
733
|
+
|
|
734
|
+
* **CLI file:line:col**: Support `file:line:col` format on CLI command (#217).
|
|
735
|
+
|
|
736
|
+
* **LSP Error Logging**: LSP stderr is now piped to a file and opened as read-only buffer on error.
|
|
737
|
+
|
|
738
|
+
* **Config Languages**: Use config languages section for LSP language detection.
|
|
739
|
+
|
|
740
|
+
### Bug Fixes
|
|
741
|
+
|
|
742
|
+
* **TypeScript Highlighting**: Fixed TypeScript syntax highlighting by falling back to tree-sitter.
|
|
743
|
+
|
|
744
|
+
* **Plugin Race Condition**: Fixed race condition in plugin hooks reading stale state snapshot.
|
|
745
|
+
|
|
746
|
+
* **Long Path Truncation**: Truncate long paths in Open File prompt with styled [...].
|
|
747
|
+
|
|
748
|
+
* **Graceful Shutdown**: Prevent spurious LspError on graceful shutdown.
|
|
749
|
+
|
|
750
|
+
### Internal
|
|
751
|
+
|
|
752
|
+
* **Syntect for Highlighting**: Use syntect for syntax highlighting, retain tree-sitter for other features (#237).
|
|
753
|
+
|
|
754
|
+
---
|
|
755
|
+
|
|
756
|
+
## 0.1.21
|
|
757
|
+
|
|
758
|
+
### Packaging
|
|
759
|
+
|
|
760
|
+
* **AUR Package**: Added AUR package automation and installation instructions.
|
|
761
|
+
|
|
762
|
+
* **npm and crates.io**: Added automated npm and crates.io publishing.
|
|
763
|
+
|
|
764
|
+
---
|
|
765
|
+
|
|
766
|
+
## 0.1.20
|
|
767
|
+
|
|
768
|
+
### Features
|
|
769
|
+
|
|
770
|
+
* **Theme Editor Plugin**: New interactive theme editor for customizing colors. Allows editing all theme color values with a visual interface.
|
|
771
|
+
|
|
772
|
+
* **Drag-to-Select Mouse Support**: Click and drag to select text, similar to graphical editors.
|
|
773
|
+
|
|
774
|
+
* **Homebrew Distribution**: Preliminary setup for Homebrew distribution on macOS.
|
|
775
|
+
|
|
776
|
+
### Bug Fixes
|
|
777
|
+
|
|
778
|
+
* **File Open Dialog**: Fixed handling of pasted paths in the file open dialog. Previously pasting a full path would fail; now it correctly opens the file or navigates to the directory.
|
|
779
|
+
|
|
780
|
+
* **Mouse Click on Wrapped Lines**: Fixed mouse click positioning not working correctly on wrapped lines and empty lines.
|
|
781
|
+
|
|
782
|
+
### Packaging
|
|
783
|
+
|
|
784
|
+
* **Linux Packages**: `.deb` and `.rpm` packages are now available for Debian/Ubuntu and Fedora/RHEL distributions respectively.
|
|
785
|
+
|
|
786
|
+
* **Homepage**: Set official homepage to https://sinelaw.github.io/fresh/
|
|
787
|
+
|
|
788
|
+
---
|
|
789
|
+
|
|
790
|
+
## 0.1.19
|
|
791
|
+
|
|
792
|
+
### Packaging
|
|
793
|
+
|
|
794
|
+
* **Linux packages fix**: Fixed `.deb` and `.rpm` packages not being included in GitHub releases.
|
|
795
|
+
|
|
796
|
+
---
|
|
797
|
+
|
|
798
|
+
## 0.1.18
|
|
799
|
+
|
|
800
|
+
### Features
|
|
801
|
+
|
|
802
|
+
* **Auto-load user config**: Startup now loads the default config file (e.g. `~/.config/fresh/config.json`) so themes and preferences persist without needing `--config`.
|
|
803
|
+
* **Clearer confirmation prompts**: Destructive prompts now use action verbs (revert, overwrite, discard) instead of generic y/n, reducing misclicks.
|
|
804
|
+
|
|
805
|
+
### Bug Fixes
|
|
806
|
+
|
|
807
|
+
* **UTF-8 safe deletion**: Backspace/Delete operate on full Unicode characters (emojis, accented letters, currency symbols) instead of raw bytes.
|
|
808
|
+
|
|
809
|
+
### Packaging
|
|
810
|
+
|
|
811
|
+
* **Deb/RPM artifacts**: Release workflow now builds stripped `.deb` and `.rpm` packages for x86_64 and aarch64, with matrixed install/uninstall tests across Ubuntu 22.04/24.04, Debian 12, Fedora 39/40, and Rocky Linux 9.
|
|
812
|
+
|
|
813
|
+
---
|
|
814
|
+
|
|
815
|
+
## 0.1.15 - Unreleased
|
|
816
|
+
|
|
817
|
+
### Features
|
|
818
|
+
|
|
819
|
+
* **TextMate Grammar Support**: Syntax highlighting now uses TextMate grammars via syntect for languages without tree-sitter support. Includes proper highlighting for Markdown (headings, bold, italic, code, links, quotes, lists).
|
|
820
|
+
|
|
821
|
+
* **Fuzzy Matching**: Command palette and file browser now use fzf-style fuzzy matching. Matches are highlighted and scored by consecutive characters, word boundaries, and match position.
|
|
822
|
+
|
|
823
|
+
* **Tab Navigation Commands**: New commands "Go to Next Tab" and "Go to Previous Tab" in the command palette for keyboard-driven tab switching.
|
|
824
|
+
|
|
825
|
+
* **File Recovery**: Emacs-style auto-recovery for unsaved changes. Buffers are automatically saved every 2 seconds to `~/.local/share/fresh/recovery/`. On startup, automatically recovers unsaved changes from crashed sessions. Uses chunked storage for large files to avoid memory issues.
|
|
826
|
+
|
|
827
|
+
* **Explorer Menu**: New menu bar entry with file explorer actions (New File, New Folder, Rename, Delete) and keybindings. Disabled items shown in theme colors when not applicable.
|
|
828
|
+
|
|
829
|
+
* **File Explorer Rename**: Press F2 or use Explorer menu to rename files/folders. Project root is protected from renaming.
|
|
830
|
+
|
|
831
|
+
* **Emacs-Style Readline Bindings**: Added terminal key equivalents for common operations:
|
|
832
|
+
- Ctrl+A: Home (beginning of line)
|
|
833
|
+
- Ctrl+E: End (end of line)
|
|
834
|
+
- Ctrl+K: Kill to end of line
|
|
835
|
+
- Ctrl+U: Kill to beginning of line
|
|
836
|
+
- Ctrl+W: Kill word backward
|
|
837
|
+
- Alt+D: Kill word forward
|
|
838
|
+
- Ctrl+Y: Yank (paste from kill ring)
|
|
839
|
+
|
|
840
|
+
### Bug Fixes
|
|
841
|
+
|
|
842
|
+
* **Multi-Cursor Selection**: Fixed Ctrl+D selection replacement not working correctly (issue #210).
|
|
843
|
+
|
|
844
|
+
* **LSP Auto-Restart**: Fixed stopped LSP server incorrectly auto-restarting on edit.
|
|
845
|
+
|
|
846
|
+
* **File Explorer Selection**: Fixed selection being lost after rename completes.
|
|
847
|
+
|
|
848
|
+
* **Markdown Highlighting**: Fixed markdown files not getting syntax highlighting for headers, bold, italic, links, etc.
|
|
849
|
+
|
|
850
|
+
### Performance
|
|
851
|
+
|
|
852
|
+
* **Recovery Write Performance**: Removed sync_all from recovery writes, reducing disk I/O overhead.
|
|
853
|
+
|
|
854
|
+
* **Large File Recovery**: Chunked recovery format applies edits directly without loading entire file into memory.
|
|
855
|
+
|
|
856
|
+
---
|
|
857
|
+
|
|
858
|
+
## 0.1.14
|
|
859
|
+
|
|
860
|
+
See git history for changes.
|
|
861
|
+
|
|
862
|
+
---
|
|
863
|
+
|
|
864
|
+
## 0.1.13
|
|
865
|
+
|
|
866
|
+
### Features
|
|
867
|
+
|
|
868
|
+
* **Git Gutter Plugin**: Shows git diff indicators in the gutter for lines changed vs HEAD:
|
|
869
|
+
- │ (green): Added line
|
|
870
|
+
- │ (yellow): Modified line
|
|
871
|
+
- ▾ (red): Deleted line(s) below
|
|
872
|
+
|
|
873
|
+
* **Buffer Modified Plugin**: Shows unsaved changes with │ (blue) indicators for lines modified since last save.
|
|
874
|
+
|
|
875
|
+
* **Line Indicator System**: New plugin API for gutter indicators with automatic position tracking. Indicators use byte-position markers that shift automatically when text is inserted/deleted. Priority system allows multiple indicator types to coexist (diagnostics > git > buffer modified).
|
|
876
|
+
|
|
877
|
+
* **LCS-Based Line Diff**: Buffer modified indicators now use the classic LCS (Longest Common Subsequence) algorithm - the foundation of Unix diff - for accurate change detection. Correctly handles insertions without marking shifted lines as changed, and detects deletion points.
|
|
878
|
+
|
|
879
|
+
* **Content-Based Diff**: Diff comparison now uses actual byte content rather than piece tree structure. This means if you delete text and paste it back, the indicator correctly clears because the content matches the saved state.
|
|
880
|
+
|
|
881
|
+
### Bug Fixes
|
|
882
|
+
|
|
883
|
+
* **Save As Undo History**: Fixed undo history being cleared after Save As due to auto-revert triggered by file watcher detecting the newly created file. Uses optimistic concurrency with mtime comparison to avoid spurious reverts.
|
|
884
|
+
|
|
885
|
+
* **Save As Dirty State**: Fixed undo dirty state not being tracked correctly after Save As on unnamed buffers (issue #191).
|
|
886
|
+
|
|
887
|
+
### Performance
|
|
888
|
+
|
|
889
|
+
* **Large File Mode**: Diffing is now disabled in large file mode for performance. Uses the simpler is_modified() flag instead of expensive diff calculations for files with >10MB or unknown line counts.
|
|
890
|
+
|
|
891
|
+
---
|
|
892
|
+
|
|
893
|
+
## 0.1.12
|
|
894
|
+
|
|
895
|
+
### Features
|
|
896
|
+
|
|
897
|
+
* **Live Grep Plugin**: Project-wide search with ripgrep integration and live preview. Search results update as you type (minimum 2 characters), with a split pane showing file context and syntax highlighting. Press Enter to open file at location, ESC to close preview.
|
|
898
|
+
|
|
899
|
+
* **Calculator Plugin**: Scientific calculator with clickable buttons and keyboard input. Supports parentheses, exponents (^), sqrt, ln, log, trig functions, pi, and e. Mouse click/hover support, copy button for results, and ANSI-colored UI with Unicode box drawing. ESC to close, DEL to clear.
|
|
900
|
+
|
|
901
|
+
* **File Explorer Improvements**:
|
|
902
|
+
- Shows file sizes (KB/MB/GB) and directory entry counts
|
|
903
|
+
- Close button (×) in title bar to hide explorer
|
|
904
|
+
- Left arrow on file/collapsed directory selects parent
|
|
905
|
+
- Keybinding changed from Ctrl+B to Ctrl+E (avoids tmux conflict)
|
|
906
|
+
|
|
907
|
+
* **Split View Close Buttons**: Split views now show a × button on the right side of the tab row (only when multiple splits exist) for easy closing.
|
|
908
|
+
|
|
909
|
+
* **Close Last Buffer**: Closing the last buffer now creates a fresh anonymous buffer instead of blocking with "Cannot close last buffer".
|
|
910
|
+
|
|
911
|
+
* **Alt+W Keybinding**: New shortcut to close the current tab.
|
|
912
|
+
|
|
913
|
+
* **Command Palette Source Column**: Shows where each command comes from - "builtin" or the plugin filename - in a right-aligned column.
|
|
914
|
+
|
|
915
|
+
* **Relative Buffer Names**: Buffer display names are now shown relative to the working directory.
|
|
916
|
+
|
|
917
|
+
### Bug Fixes
|
|
918
|
+
|
|
919
|
+
* **File Explorer Toggle**: Fixed Ctrl+B/Ctrl+E toggle not working correctly - now properly opens/closes instead of just focusing.
|
|
920
|
+
|
|
921
|
+
* **Session Restore**: Fixed file explorer not initializing when restoring a session with explorer visible.
|
|
922
|
+
|
|
923
|
+
* **Open File Popup**: Hide status bar when file browser popup is shown; improved high-contrast theme colors (cyan instead of yellow).
|
|
924
|
+
|
|
925
|
+
---
|
|
926
|
+
|
|
927
|
+
## 0.1.11
|
|
928
|
+
|
|
929
|
+
See git history for changes.
|
|
930
|
+
|
|
931
|
+
---
|
|
932
|
+
|
|
933
|
+
## 0.1.10
|
|
934
|
+
|
|
935
|
+
### Features
|
|
936
|
+
|
|
937
|
+
* **Session Persistence**: Automatically saves per-project state (open files, tabs, split layout, cursor/scroll positions, file explorer state, search/replace history and options, bookmarks) to the XDG data dir and restores it on launch. Session restore is skipped when opening a specific file; use `--no-session` to start fresh.
|
|
938
|
+
|
|
939
|
+
* **Unified Search & Replace**: Replace (Ctrl+H) and Query Replace (Ctrl+Shift+H) now share the same interface with a "Confirm each" toggle (Alt+E). Query Replace enables confirmation by default; Replace uses the toggle state. Confirmation prompt shows `(y)es (n)o (a)ll (c)ancel` options.
|
|
940
|
+
|
|
941
|
+
### Bug Fixes
|
|
942
|
+
|
|
943
|
+
* **Session Restore Reliability**: Fixed session rehydration to reopen files/splits with the correct active buffer, cursor, and scroll position (including nested splits) instead of jumping back to the top on first render.
|
|
944
|
+
|
|
945
|
+
* **macOS Build**: Fixed Linux-specific `.init_array` by using cross-platform V8 initialization.
|
|
946
|
+
|
|
947
|
+
* **Syntax Highlighting**: Fixed invisible/hard-to-read highlighting in light and nostalgia themes by using theme-based color resolution instead of hardcoded colors.
|
|
948
|
+
|
|
949
|
+
* **Theme Colors**: Improved status bar and prompt colors across all themes (dark, high-contrast, light, nostalgia).
|
|
950
|
+
|
|
951
|
+
* **Search Prompt**: Search/replace prompts now cancel when focus leaves the editor (switching buffers or focusing file explorer).
|
|
952
|
+
|
|
953
|
+
---
|
|
954
|
+
|
|
955
|
+
## 0.1.9
|
|
956
|
+
|
|
957
|
+
### Features
|
|
958
|
+
|
|
959
|
+
* **Native File Browser**: New built-in file browser for Open File command (Ctrl+O) that works without plugins. Features sortable columns (name, size, modified), navigation shortcuts (parent, home, root), filtering with grayed non-matches, mouse support with hover indicators, and async directory loading.
|
|
960
|
+
|
|
961
|
+
* **CRLF Line Ending Support**: Transparent handling of Windows-style line endings. Files are detected and normalized internally, then saved with their original line ending format preserved.
|
|
962
|
+
|
|
963
|
+
* **CLI Enhancements**: Added `--version`, `--no-plugins` (skip JS runtime for faster startup), `--log-file`, and `--config` flags.
|
|
964
|
+
|
|
965
|
+
* **UI Improvements**:
|
|
966
|
+
- Tab hover effects with close button changing to red on hover
|
|
967
|
+
- Menu hover-to-switch when a menu is open
|
|
968
|
+
- Buffer name shown in modified buffer confirmation prompts
|
|
969
|
+
- Fixed column widths in command palette for stable layout
|
|
970
|
+
|
|
971
|
+
### Bug Fixes
|
|
972
|
+
|
|
973
|
+
* **V8 Segfault**: Fixed crash when creating multiple Editor instances (e.g., in tests) by initializing V8 platform once at library load.
|
|
974
|
+
|
|
975
|
+
* **Windows**: Fixed duplicate key presses caused by processing both Press and Release events.
|
|
976
|
+
|
|
977
|
+
---
|
|
978
|
+
|
|
979
|
+
## 0.1.8
|
|
980
|
+
|
|
981
|
+
### Bug Fixes
|
|
982
|
+
|
|
983
|
+
* **Open File Prompt**: Fixed completions not showing immediately (issue #193) by enabling ICU support for Unicode functions.
|
|
984
|
+
|
|
985
|
+
* **Keyboard Shortcuts Help**: Fixed crash when reopening keyboard shortcuts buffer (issue #192).
|
|
986
|
+
|
|
987
|
+
* **Undo Save Points**: Fixed extra undo step at beginning of save history (issue #191).
|
|
988
|
+
|
|
989
|
+
* **Scroll Keybindings**: Fixed Ctrl+Up/Down scroll not working by syncing viewport between SplitViewState and EditorState.
|
|
990
|
+
|
|
991
|
+
---
|
|
992
|
+
|
|
993
|
+
## 0.1.7
|
|
994
|
+
|
|
995
|
+
### Features
|
|
996
|
+
|
|
997
|
+
* **Select Theme Command**: New theme picker accessible from the command palette and View menu. Includes a new "nostalgia" theme inspired by Turbo Pascal 5 / WordPerfect 5.
|
|
998
|
+
|
|
999
|
+
* **Compose Mode Improvements**: Paper-on-desk visual effect with desk margin colors, and hanging indent support for markdown lists and blockquotes.
|
|
1000
|
+
|
|
1001
|
+
* **Binary File Detection**: Binary files are now detected and opened in read-only mode to prevent accidental corruption.
|
|
1002
|
+
|
|
1003
|
+
### Bug Fixes
|
|
1004
|
+
|
|
1005
|
+
* **Light Theme**: Fixed colors for status bar, prompt, scrollbar, tabs, and file explorer to use proper light theme colors.
|
|
1006
|
+
|
|
1007
|
+
* **Mouse Performance**: Fixed slow mouse movement on large terminals by skipping redundant renders when hover target hasn't changed. Added mouse event coalescing to skip stale positions.
|
|
1008
|
+
|
|
1009
|
+
* **UTF-8 Truncation**: Fixed panic when truncating suggestion descriptions mid-character.
|
|
1010
|
+
|
|
1011
|
+
### Internal Changes
|
|
1012
|
+
|
|
1013
|
+
* **Code Refactoring**: Major cleanup extracting helpers and reducing duplication across many modules including `process_async_messages`, `handle_plugin_command`, `render_view_lines`, `multi_cursor`, `highlight_color`, and more. Consolidated duplicate `hook_args_to_json` implementations.
|
|
1014
|
+
|
|
1015
|
+
* **Test Improvements**: Fixed flaky tests by removing timing assertions, made shortcut tests platform-aware for macOS.
|
|
1016
|
+
|
|
1017
|
+
* **Documentation**: Reorganized internal planning docs, updated plugin README from Lua to TypeScript, and added embedded help manual using `include_str!()`.
|