@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 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.*\.deb" | cut -d '"' -f 4) -o fresh-editor.deb && sudo dpkg -i fresh-editor.deb
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.*\.rpm" | cut -d '"' -f 4) -o fresh-editor.rpm && sudo rpm -i fresh-editor.rpm
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fresh-editor/fresh-editor",
3
- "version": "0.1.44",
3
+ "version": "0.1.55",
4
4
  "description": "A modern terminal-based text editor with plugin support",
5
5
  "repository": {
6
6
  "type": "git",