@fresh-editor/fresh-editor 0.1.44 → 0.1.55
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/CHANGELOG.md +113 -0
- package/README.md +57 -3
- package/package.json +1 -1
- package/plugins/config-schema.json +1137 -296
- package/plugins/theme_editor.ts +64 -16
- package/plugins/config_editor.ts +0 -1943
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,118 @@
|
|
|
1
1
|
# Release Notes
|
|
2
2
|
|
|
3
|
+
## 0.1.54
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **Universal Install Script**: New `install.sh` script for easy installation across Linux and macOS.
|
|
8
|
+
|
|
9
|
+
* **Settings UI Enhancements**:
|
|
10
|
+
- Entry dialogs for editing Languages, LSP servers, and keybindings
|
|
11
|
+
- Schema-driven dialog builder with automatic field generation
|
|
12
|
+
- Dimming effect for modal dialogs
|
|
13
|
+
- Column-aligned controls for cleaner layout
|
|
14
|
+
- Setting descriptions now displayed inline
|
|
15
|
+
- Map controls with flat navigation, entry highlighting, and delete buttons
|
|
16
|
+
|
|
17
|
+
* **LSP Hover Improvements**: Hover popups now persist when moving within a symbol or hovering over the popup itself. Popups dismiss on focus loss.
|
|
18
|
+
|
|
19
|
+
* **Replace History**: Search & replace now supports history navigation for the replace field.
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* **Paste with Selection**: Fixed paste not replacing selected text - previously inserted without deleting selection.
|
|
24
|
+
|
|
25
|
+
* **Multi-Cursor Paste**: Fixed paste only working at primary cursor - now pastes at all cursor positions.
|
|
26
|
+
|
|
27
|
+
* **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.
|
|
28
|
+
|
|
29
|
+
* **Settings Input Isolation**: Fixed keyboard input leaking between Settings UI panels.
|
|
30
|
+
|
|
31
|
+
* **Map Control Buttons**: Fixed [+] Add new buttons not working for Map controls.
|
|
32
|
+
|
|
33
|
+
* **File Browser Navigation**: Fixed input routing issues in file browser modal.
|
|
34
|
+
|
|
35
|
+
* **Config Loading**: Fixed config not loading from working directory; changes now apply to runtime state immediately.
|
|
36
|
+
|
|
37
|
+
### Configuration
|
|
38
|
+
|
|
39
|
+
* **rust-analyzer Defaults**: Added minimal performance defaults for rust-analyzer LSP.
|
|
40
|
+
|
|
41
|
+
### Packaging
|
|
42
|
+
|
|
43
|
+
* **Ubuntu 20.04**: Added CI coverage for Ubuntu 20.04 (#374).
|
|
44
|
+
|
|
45
|
+
### Internal
|
|
46
|
+
|
|
47
|
+
* **Input Handling Refactor**: New hierarchical `InputHandler` trait system for cleaner modal input routing.
|
|
48
|
+
|
|
49
|
+
* **Component Pattern**: Refactored all Settings UI controls (Button, Toggle, NumberInput, TextInput, Dropdown, TextList, MapInput, KeybindingList) to consistent component pattern.
|
|
50
|
+
|
|
51
|
+
* **Config Module**: Consolidated config path resolution and loading into `config_io` module. Config editor now saves only non-default values.
|
|
52
|
+
|
|
53
|
+
* **Code Organization**: Extracted action handlers into dedicated modules (menu_actions, lsp_actions, prompt_actions, undo_actions, mouse_input).
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 0.1.52
|
|
58
|
+
|
|
59
|
+
### Bug Fixes
|
|
60
|
+
|
|
61
|
+
* **musl Build**: Enabled the `runtime` feature for musl builds.
|
|
62
|
+
* **Flatpak**: Fixed CI and metainfo handling (official Flathub container + flatpak-builder action, appstream-compose deps, avoid corrupting XML declaration, remove invalid `launchable` tag).
|
|
63
|
+
|
|
64
|
+
### Internal
|
|
65
|
+
|
|
66
|
+
* **Version Bump Script**: Version bumps now skip `cargo check`.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 0.1.45
|
|
71
|
+
|
|
72
|
+
### Features
|
|
73
|
+
|
|
74
|
+
* **Settings UI**: New graphical settings editor accessible via View menu or command palette. Features:
|
|
75
|
+
- Two-panel layout with categories on left and settings on right
|
|
76
|
+
- Fuzzy search to quickly find settings
|
|
77
|
+
- Full keyboard navigation (Tab cycles through panels, arrow keys navigate items)
|
|
78
|
+
- Mouse support with scrolling, scrollbar dragging, and hover indicators
|
|
79
|
+
- Dropdown, number input, text list, and map editing controls
|
|
80
|
+
- Reset to default functionality for individual settings
|
|
81
|
+
- Confirmation dialog when discarding unsaved changes
|
|
82
|
+
- Help overlay showing keyboard shortcuts
|
|
83
|
+
|
|
84
|
+
* **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.
|
|
85
|
+
|
|
86
|
+
* **Flatpak Packaging**: Added Flatpak support for Linux installation (#340). Flatpak bundles are now included in releases.
|
|
87
|
+
|
|
88
|
+
### Bug Fixes
|
|
89
|
+
|
|
90
|
+
* **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.
|
|
91
|
+
|
|
92
|
+
* **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).
|
|
93
|
+
|
|
94
|
+
* **Terminal Input Capture**: Fixed terminal capturing keyboard input when the Settings UI is opened while a terminal split is focused.
|
|
95
|
+
|
|
96
|
+
* **Search Result Scrolling**: Fixed settings UI not scrolling to show selected search results.
|
|
97
|
+
|
|
98
|
+
### Configuration
|
|
99
|
+
|
|
100
|
+
* **Memory Limit**: Changed `max_memory_mb` to `max_memory_percent` (default 50%) for consistent behavior across machines with different RAM.
|
|
101
|
+
|
|
102
|
+
### Packaging
|
|
103
|
+
|
|
104
|
+
* **AUR**: Updated package names to match conventions (fresh-editor vs fresh-editor-bin). Added `--syncdeps` to makepkg commands (#343).
|
|
105
|
+
|
|
106
|
+
### Internal
|
|
107
|
+
|
|
108
|
+
* **TimeSource Abstraction**: Added TimeSource trait for testability, making time-dependent behavior deterministic in tests (issue #314).
|
|
109
|
+
|
|
110
|
+
* **Test Reliability**: Replaced thread::sleep with testable time source in e2e tests. Fixed flaky tests on macOS and Windows.
|
|
111
|
+
|
|
112
|
+
* **Dependency Updates**: Updated deno_core, deno_error, actions/upload-artifact, actions/download-artifact, and actions/setup-node.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
3
116
|
## 0.1.44
|
|
4
117
|
|
|
5
118
|
### Features
|
package/README.md
CHANGED
|
@@ -6,6 +6,16 @@
|
|
|
6
6
|
|
|
7
7
|
A terminal-based text editor.
|
|
8
8
|
|
|
9
|
+
## Why?
|
|
10
|
+
|
|
11
|
+
Why another text editor? Fresh brings the intuitive, conventional UX of editors like VS Code and Sublime Text to the terminal.
|
|
12
|
+
|
|
13
|
+
While veterans like Emacs and Vim - and newer editors like Neovim and Helix - are excellent for power users who prefer modal, highly specialized workflows, they often present a steep learning curve for those used to standard GUI interactions. Fresh is built for the developer who wants a familiar, non-modal experience out-of-the-box, without sacrificing the speed and portability of the command line. Keyboard bindings, mouse support, menus, command palette etc. are all designed to be familiar to most modern users.
|
|
14
|
+
|
|
15
|
+
Architecturally, Fresh is built to handle multi-gigabyte files or slow network streams efficiently, maintaining a negligible memory overhead regardless of file size. While traditional editors struggle with latency and RAM bloat on large files, Fresh delivers consistent, high-speed performance on any scale.
|
|
16
|
+
|
|
17
|
+
The goal for Fresh is to be an intuitive and accessible, high-performance terminal-based editor that "just works" on any hardware, for everyone.
|
|
18
|
+
|
|
9
19
|
## Discovery & Ease of Use
|
|
10
20
|
|
|
11
21
|
Fresh is designed for discovery. It features native UIs, a full Menu system, and a powerful Command Palette. With full mouse support, transitioning from graphical editors is seamless.
|
|
@@ -41,6 +51,7 @@ Fresh is engineered for speed. It delivers a low-latency experience, with text a
|
|
|
41
51
|
| Arch Linux | [AUR](#arch-linux-aur) |
|
|
42
52
|
| Debian/Ubuntu | [.deb](#debianubuntu-deb) |
|
|
43
53
|
| Fedora/RHEL | [.rpm](#fedorarhelopensuse-rpm) |
|
|
54
|
+
| Linux (any distro) | [Flatpak](#flatpak) |
|
|
44
55
|
| All platforms | [Pre-built binaries](#pre-built-binaries) |
|
|
45
56
|
| npm | [npm / npx](#npm) |
|
|
46
57
|
| Rust users (Fast) | [cargo-binstall](#using-cargo-binstall) |
|
|
@@ -55,9 +66,31 @@ brew tap sinelaw/fresh
|
|
|
55
66
|
brew install fresh-editor
|
|
56
67
|
```
|
|
57
68
|
|
|
58
|
-
### Arch Linux ([AUR](https://aur.archlinux.org/packages/fresh-editor))
|
|
69
|
+
### Arch Linux ([AUR](https://aur.archlinux.org/packages/fresh-editor-bin))
|
|
70
|
+
|
|
71
|
+
**Binary package (recommended, faster install):**
|
|
59
72
|
|
|
60
73
|
```bash
|
|
74
|
+
git clone https://aur.archlinux.org/fresh-editor-bin.git
|
|
75
|
+
cd fresh-editor-bin
|
|
76
|
+
makepkg --syncdeps --install
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Build from source:**
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
git clone https://aur.archlinux.org/fresh-editor.git
|
|
83
|
+
cd fresh-editor
|
|
84
|
+
makepkg --syncdeps --install
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Using an AUR helper (such as `yay` or `paru`):**
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Binary package (recommended, faster install)
|
|
91
|
+
yay -S fresh-editor-bin
|
|
92
|
+
|
|
93
|
+
# Or build from source
|
|
61
94
|
yay -S fresh-editor
|
|
62
95
|
```
|
|
63
96
|
|
|
@@ -66,7 +99,7 @@ yay -S fresh-editor
|
|
|
66
99
|
Download and install the latest release:
|
|
67
100
|
|
|
68
101
|
```bash
|
|
69
|
-
curl -sL $(curl -s https://api.github.com/repos/sinelaw/fresh/releases/latest | grep "browser_download_url
|
|
102
|
+
curl -sL $(curl -s https://api.github.com/repos/sinelaw/fresh/releases/latest | grep "browser_download_url.*_$(dpkg --print-architecture)\.deb" | cut -d '"' -f 4) -o fresh-editor.deb && sudo dpkg -i fresh-editor.deb
|
|
70
103
|
```
|
|
71
104
|
|
|
72
105
|
Or download the `.deb` file manually from the [releases page](https://github.com/sinelaw/fresh/releases).
|
|
@@ -76,11 +109,22 @@ Or download the `.deb` file manually from the [releases page](https://github.com
|
|
|
76
109
|
Download and install the latest release:
|
|
77
110
|
|
|
78
111
|
```bash
|
|
79
|
-
curl -sL $(curl -s https://api.github.com/repos/sinelaw/fresh/releases/latest | grep "browser_download_url
|
|
112
|
+
curl -sL $(curl -s https://api.github.com/repos/sinelaw/fresh/releases/latest | grep "browser_download_url.*\.$(uname -m)\.rpm" | cut -d '"' -f 4) -o fresh-editor.rpm && sudo rpm -i fresh-editor.rpm
|
|
80
113
|
```
|
|
81
114
|
|
|
82
115
|
Or download the `.rpm` file manually from the [releases page](https://github.com/sinelaw/fresh/releases).
|
|
83
116
|
|
|
117
|
+
### Flatpak
|
|
118
|
+
|
|
119
|
+
Download the `.flatpak` bundle from the [releases page](https://github.com/sinelaw/fresh/releases) and install:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
flatpak install --user fresh-editor-VERSION-x86_64.flatpak
|
|
123
|
+
flatpak run io.github.sinelaw.fresh
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
See [flatpak/README.md](flatpak/README.md) for building from source.
|
|
127
|
+
|
|
84
128
|
### Pre-built binaries
|
|
85
129
|
|
|
86
130
|
Download the latest release for your platform from the [releases page](https://github.com/sinelaw/fresh/releases).
|
|
@@ -139,6 +183,16 @@ cd fresh
|
|
|
139
183
|
cargo build --release
|
|
140
184
|
./target/release/fresh [file]
|
|
141
185
|
```
|
|
186
|
+
#### For immutable distros (Bazzite, ublue, aurora, etc.)
|
|
187
|
+
Install Rust via HomeBrew first
|
|
188
|
+
```bash
|
|
189
|
+
brew install rust
|
|
190
|
+
```
|
|
191
|
+
Follow the `From source` instructions above, then copy the binary your home local bin folder.
|
|
192
|
+
```bash
|
|
193
|
+
cp ./target/release/fresh ~/.local/bin
|
|
194
|
+
fresh
|
|
195
|
+
```
|
|
142
196
|
|
|
143
197
|
## Documentation
|
|
144
198
|
|