@fresh-editor/fresh-editor 0.1.44 → 0.1.56

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,139 @@
1
1
  # Release Notes
2
2
 
3
+ ## 0.1.56
4
+
5
+ ### Features
6
+
7
+ * **Per-Language Tab Settings**: Added `use_tabs` and `show_whitespace_tabs` config options per language. Go and Makefile default to tabs (#364).
8
+ * **AppImage Packaging**: AppImage bundles now included in GitHub releases (#365).
9
+ * **Terminal Color Detection**: Auto-detection of terminal color capabilities with fallback to 256 colors. Override via `FRESH_COLOR_MODE`.
10
+ * **TOML Syntax Highlighting**: Added embedded TextMate grammar for TOML files.
11
+ * **Language Detection by Filename**: Detect languages by filename (`.bashrc`, `Makefile`, `Dockerfile`, etc.) (#383).
12
+ * **Minimal Config Saves**: Config file only saves non-default fields.
13
+ * **Settings UI**: Mouse click/double-click support, hover effects, improved scrolling.
14
+
15
+ ### Bug Fixes
16
+
17
+ * **LSP**: Improved error messages when server not found (#363). Fixed didOpen ordering (#399). Check diagnosticProvider capability before pull diagnostics (#399).
18
+ * **Terminal Mode Reset**: Fixed terminal_mode not being reset when closing a terminal buffer.
19
+ * **cargo-binstall**: Fixed missing binaries warning (#388).
20
+ * **macOS Keybinding Display**: Fixed showing ⌘ instead of Ctrl (#356).
21
+ * **tmux Truecolor**: Fixed detection when `COLORTERM=truecolor` is set.
22
+ * **RPM Upgrade**: Fixed upgrade failing when older version installed (#387).
23
+
24
+ ## 0.1.54
25
+
26
+ ### Features
27
+
28
+ * **Universal Install Script**: New `install.sh` script for easy installation across Linux and macOS.
29
+
30
+ * **Settings UI Enhancements**:
31
+ - Entry dialogs for editing Languages, LSP servers, and keybindings
32
+ - Schema-driven dialog builder with automatic field generation
33
+ - Dimming effect for modal dialogs
34
+ - Column-aligned controls for cleaner layout
35
+ - Setting descriptions now displayed inline
36
+ - Map controls with flat navigation, entry highlighting, and delete buttons
37
+
38
+ * **LSP Hover Improvements**: Hover popups now persist when moving within a symbol or hovering over the popup itself. Popups dismiss on focus loss.
39
+
40
+ * **Replace History**: Search & replace now supports history navigation for the replace field.
41
+
42
+ ### Bug Fixes
43
+
44
+ * **Paste with Selection**: Fixed paste not replacing selected text - previously inserted without deleting selection.
45
+
46
+ * **Multi-Cursor Paste**: Fixed paste only working at primary cursor - now pastes at all cursor positions.
47
+
48
+ * **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.
49
+
50
+ * **Settings Input Isolation**: Fixed keyboard input leaking between Settings UI panels.
51
+
52
+ * **Map Control Buttons**: Fixed [+] Add new buttons not working for Map controls.
53
+
54
+ * **File Browser Navigation**: Fixed input routing issues in file browser modal.
55
+
56
+ * **Config Loading**: Fixed config not loading from working directory; changes now apply to runtime state immediately.
57
+
58
+ ### Configuration
59
+
60
+ * **rust-analyzer Defaults**: Added minimal performance defaults for rust-analyzer LSP.
61
+
62
+ ### Packaging
63
+
64
+ * **Ubuntu 20.04**: Added CI coverage for Ubuntu 20.04 (#374).
65
+
66
+ ### Internal
67
+
68
+ * **Input Handling Refactor**: New hierarchical `InputHandler` trait system for cleaner modal input routing.
69
+
70
+ * **Component Pattern**: Refactored all Settings UI controls (Button, Toggle, NumberInput, TextInput, Dropdown, TextList, MapInput, KeybindingList) to consistent component pattern.
71
+
72
+ * **Config Module**: Consolidated config path resolution and loading into `config_io` module. Config editor now saves only non-default values.
73
+
74
+ * **Code Organization**: Extracted action handlers into dedicated modules (menu_actions, lsp_actions, prompt_actions, undo_actions, mouse_input).
75
+
76
+ ---
77
+
78
+ ## 0.1.52
79
+
80
+ ### Bug Fixes
81
+
82
+ * **musl Build**: Enabled the `runtime` feature for musl builds.
83
+ * **Flatpak**: Fixed CI and metainfo handling (official Flathub container + flatpak-builder action, appstream-compose deps, avoid corrupting XML declaration, remove invalid `launchable` tag).
84
+
85
+ ### Internal
86
+
87
+ * **Version Bump Script**: Version bumps now skip `cargo check`.
88
+
89
+ ---
90
+
91
+ ## 0.1.45
92
+
93
+ ### Features
94
+
95
+ * **Settings UI**: New graphical settings editor accessible via View menu or command palette. Features:
96
+ - Two-panel layout with categories on left and settings on right
97
+ - Fuzzy search to quickly find settings
98
+ - Full keyboard navigation (Tab cycles through panels, arrow keys navigate items)
99
+ - Mouse support with scrolling, scrollbar dragging, and hover indicators
100
+ - Dropdown, number input, text list, and map editing controls
101
+ - Reset to default functionality for individual settings
102
+ - Confirmation dialog when discarding unsaved changes
103
+ - Help overlay showing keyboard shortcuts
104
+
105
+ * **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.
106
+
107
+ * **Flatpak Packaging**: Added Flatpak support for Linux installation (#340). Flatpak bundles are now included in releases.
108
+
109
+ ### Bug Fixes
110
+
111
+ * **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.
112
+
113
+ * **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).
114
+
115
+ * **Terminal Input Capture**: Fixed terminal capturing keyboard input when the Settings UI is opened while a terminal split is focused.
116
+
117
+ * **Search Result Scrolling**: Fixed settings UI not scrolling to show selected search results.
118
+
119
+ ### Configuration
120
+
121
+ * **Memory Limit**: Changed `max_memory_mb` to `max_memory_percent` (default 50%) for consistent behavior across machines with different RAM.
122
+
123
+ ### Packaging
124
+
125
+ * **AUR**: Updated package names to match conventions (fresh-editor vs fresh-editor-bin). Added `--syncdeps` to makepkg commands (#343).
126
+
127
+ ### Internal
128
+
129
+ * **TimeSource Abstraction**: Added TimeSource trait for testability, making time-dependent behavior deterministic in tests (issue #314).
130
+
131
+ * **Test Reliability**: Replaced thread::sleep with testable time source in e2e tests. Fixed flaky tests on macOS and Windows.
132
+
133
+ * **Dependency Updates**: Updated deno_core, deno_error, actions/upload-artifact, actions/download-artifact, and actions/setup-node.
134
+
135
+ ---
136
+
3
137
  ## 0.1.44
4
138
 
5
139
  ### Features
package/README.md CHANGED
@@ -1,10 +1,18 @@
1
1
  # Fresh
2
2
 
3
- [Visit the official Fresh website](https://sinelaw.github.io/fresh/)
3
+ A terminal-based text editor. [Official Website →](https://sinelaw.github.io/fresh/)
4
4
 
5
5
  **[📦 Installation Instructions](#installation)**
6
6
 
7
- A terminal-based text editor.
7
+ ## Why?
8
+
9
+ Why another text editor? Fresh brings the intuitive, conventional UX of editors like VS Code and Sublime Text to the terminal.
10
+
11
+ 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.
12
+
13
+ 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.
14
+
15
+ The goal for Fresh is to be an intuitive and accessible, high-performance terminal-based editor that "just works" on any hardware, for everyone.
8
16
 
9
17
  ## Discovery & Ease of Use
10
18
 
@@ -35,12 +43,20 @@ Fresh is engineered for speed. It delivers a low-latency experience, with text a
35
43
 
36
44
  ## Installation
37
45
 
46
+ Quick install (autodetect best method):
47
+
48
+ `curl https://raw.githubusercontent.com/sinelaw/fresh/refs/heads/master/scripts/install.sh | sh`
49
+
50
+ Or, pick your preferred method:
51
+
38
52
  | Platform | Method |
39
53
  |----------|--------|
40
- | macOS | [Homebrew](#macos-homebrew) |
54
+ | macOS | [brew](#brew) |
55
+ | Bazzite/Bluefin/Aurora Linux | [brew](#brew) |
41
56
  | Arch Linux | [AUR](#arch-linux-aur) |
42
57
  | Debian/Ubuntu | [.deb](#debianubuntu-deb) |
43
58
  | Fedora/RHEL | [.rpm](#fedorarhelopensuse-rpm) |
59
+ | Linux (any distro) | [AppImage](#appimage), [Flatpak](#flatpak) |
44
60
  | All platforms | [Pre-built binaries](#pre-built-binaries) |
45
61
  | npm | [npm / npx](#npm) |
46
62
  | Rust users (Fast) | [cargo-binstall](#using-cargo-binstall) |
@@ -48,16 +64,40 @@ Fresh is engineered for speed. It delivers a low-latency experience, with text a
48
64
  | Nix | [Nix flakes](#nix-flakes) |
49
65
  | Developers | [From source](#from-source) |
50
66
 
51
- ### macOS (Homebrew)
67
+ ### Brew
68
+
69
+ On macOS and some linux distros (Bazzite/Bluefin/Aurora):
52
70
 
53
71
  ```bash
54
72
  brew tap sinelaw/fresh
55
73
  brew install fresh-editor
56
74
  ```
57
75
 
58
- ### Arch Linux ([AUR](https://aur.archlinux.org/packages/fresh-editor))
76
+ ### Arch Linux ([AUR](https://aur.archlinux.org/packages/fresh-editor-bin))
77
+
78
+ **Binary package (recommended, faster install):**
79
+
80
+ ```bash
81
+ git clone https://aur.archlinux.org/fresh-editor-bin.git
82
+ cd fresh-editor-bin
83
+ makepkg --syncdeps --install
84
+ ```
85
+
86
+ **Build from source:**
87
+
88
+ ```bash
89
+ git clone https://aur.archlinux.org/fresh-editor.git
90
+ cd fresh-editor
91
+ makepkg --syncdeps --install
92
+ ```
93
+
94
+ **Using an AUR helper (such as `yay` or `paru`):**
59
95
 
60
96
  ```bash
97
+ # Binary package (recommended, faster install)
98
+ yay -S fresh-editor-bin
99
+
100
+ # Or build from source
61
101
  yay -S fresh-editor
62
102
  ```
63
103
 
@@ -66,7 +106,7 @@ yay -S fresh-editor
66
106
  Download and install the latest release:
67
107
 
68
108
  ```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
109
+ 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
110
  ```
71
111
 
72
112
  Or download the `.deb` file manually from the [releases page](https://github.com/sinelaw/fresh/releases).
@@ -76,11 +116,42 @@ Or download the `.deb` file manually from the [releases page](https://github.com
76
116
  Download and install the latest release:
77
117
 
78
118
  ```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
119
+ 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 -U fresh-editor.rpm
80
120
  ```
81
121
 
82
122
  Or download the `.rpm` file manually from the [releases page](https://github.com/sinelaw/fresh/releases).
83
123
 
124
+ ### AppImage
125
+
126
+ Download the `.AppImage` file from the [releases page](https://github.com/sinelaw/fresh/releases) and run:
127
+
128
+ ```bash
129
+ chmod +x fresh-editor-VERSION-x86_64.AppImage
130
+ ./fresh-editor-VERSION-x86_64.AppImage
131
+ ```
132
+
133
+ **For faster startup** (recommended): Extract the AppImage instead of running it directly. This avoids the FUSE mount overhead on each launch (~10x faster):
134
+
135
+ ```bash
136
+ ./fresh-editor-VERSION-x86_64.AppImage --appimage-extract
137
+ mkdir -p ~/.local/share/fresh-editor ~/.local/bin
138
+ mv squashfs-root/* ~/.local/share/fresh-editor/
139
+ ln -sf ~/.local/share/fresh-editor/usr/bin/fresh ~/.local/bin/fresh
140
+ ```
141
+
142
+ Ensure `~/.local/bin` is in your PATH. Available for x86_64 and aarch64 architectures.
143
+
144
+ ### Flatpak
145
+
146
+ Download the `.flatpak` bundle from the [releases page](https://github.com/sinelaw/fresh/releases) and install:
147
+
148
+ ```bash
149
+ flatpak install --user fresh-editor-VERSION-x86_64.flatpak
150
+ flatpak run io.github.sinelaw.fresh
151
+ ```
152
+
153
+ See [flatpak/README.md](flatpak/README.md) for building from source.
154
+
84
155
  ### Pre-built binaries
85
156
 
86
157
  Download the latest release for your platform from the [releases page](https://github.com/sinelaw/fresh/releases).
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.56",
4
4
  "description": "A modern terminal-based text editor with plugin support",
5
5
  "repository": {
6
6
  "type": "git",