Skip to content

Commit 9a53fce

Browse files
committed
release: v0.2.3 - Editor Productivity and Platform Polish
Editor Productivity: Go to Line (Ctrl+G), Duplicate Line (Ctrl+Shift+D), Move Line (Alt+Up/Down), Auto-close Brackets, Smart Paste for Links UX: Configurable line width (Off/80/100/120/Custom) Platform: Linux musl build CI job for static binary Bug Fix: Linux close button cursor flicker fix
1 parent e4e32af commit 9a53fce

23 files changed

Lines changed: 2302 additions & 126 deletions

.github/workflows/release.yml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,22 +112,24 @@ jobs:
112112

113113
build-macos-intel:
114114
name: Build macOS (Intel)
115-
runs-on: macos-13 # macos-13 is Intel (x86_64)
115+
runs-on: macos-14 # Cross-compile to x86_64 from ARM64 runner
116116

117117
steps:
118118
- name: Checkout
119119
uses: actions/checkout@v4
120120

121-
- name: Install Rust
121+
- name: Install Rust with Intel target
122122
uses: dtolnay/rust-toolchain@stable
123+
with:
124+
targets: x86_64-apple-darwin
123125

124-
- name: Build release
125-
run: cargo build --release
126+
- name: Build release for Intel
127+
run: cargo build --release --target x86_64-apple-darwin
126128

127129
- name: Create release archive
128130
run: |
129131
mkdir release
130-
cp target/release/ferrite release/
132+
cp target/x86_64-apple-darwin/release/ferrite release/
131133
tar -czvf ferrite-macos-x64.tar.gz -C release .
132134
133135
- name: Upload artifact
@@ -136,6 +138,10 @@ jobs:
136138
name: ferrite-macos-x64
137139
path: ferrite-macos-x64.tar.gz
138140

141+
# NOTE: musl static build disabled - GUI apps with font rendering (freetype, fontconfig)
142+
# and graphics (X11/Wayland) dependencies cannot be easily built as static musl binaries.
143+
# The glibc build (Ubuntu 22.04) provides good compatibility across Linux distributions.
144+
139145
# Create GitHub Release with all artifacts
140146
release:
141147
name: Create Release

CHANGELOG.md

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.2.3] - 2025-01-12
11+
12+
### Added
13+
14+
#### Editor Productivity
15+
- **Go to Line (Ctrl+G)** - Quick navigation to specific line number with modal dialog and viewport centering
16+
- **Duplicate Line (Ctrl+Shift+D)** - Duplicate current line or selection with proper char-to-byte index handling
17+
- **Move Line Up/Down (Alt+↑/↓)** - Rearrange lines without cut/paste, cursor follows moved line
18+
- **Auto-close Brackets & Quotes** - Type `(`, `[`, `{`, `"`, or `'` to get matching pair with cursor in middle; selection wrapping and skip-over behavior
19+
- **Smart Paste for Links** - Select text then paste URL to create `[text](url)` markdown link; image URLs create `![](url)` syntax
20+
21+
#### UX Improvements
22+
- **Configurable line width** ([#15](https://github.com/OlaProeis/Ferrite/issues/15)) - Limit text width for improved readability with presets (Off/80/100/120) or custom value; text centered in viewport
23+
24+
#### Platform & Distribution
25+
- **macOS Intel cross-compilation** - CI now cross-compiles for Intel Macs from ARM64 runner
26+
27+
### Fixed
28+
29+
#### Bug Fixes
30+
- **Task list rendering** - Task list items with inline formatting now render correctly; fixed checkbox alignment and replaced interactive checkboxes with non-interactive ASCII-style `[ ]`/`[x]` markers (interactive editing planned for v0.3.0)
31+
- **macOS Intel support** ([#16](https://github.com/OlaProeis/Ferrite/issues/16)) - Fixed artifact naming for Intel Mac builds; separate x86_64 build via `macos-13` runner
32+
- **Linux close button cursor flicker** - Fixed cursor rapidly switching between pointer/resize near window close button by adding title bar exclusion zone (35px) for north-edge resize detection and cursor caching
33+
34+
### Technical
35+
- Added 7 new technical documentation files in `docs/technical/`
36+
- Extended keyboard shortcut system with pre-render key consumption for move line operations
37+
1038
## [0.2.2] - 2025-01-11
1139

1240
### Added
@@ -173,12 +201,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
173201

174202
## Version History
175203

204+
- **0.2.3** - Editor productivity release (Go to Line, Duplicate Line, Move Line, Auto-close, Smart Paste, Line Width)
176205
- **0.2.2** - Stability & CLI release (CJK fonts, undo/redo fixes, CLI arguments, default view mode)
177206
- **0.2.1** - Mermaid diagram improvements (control blocks, subgraphs, nested states, improved layout)
178207
- **0.2.0** - Major feature release (Split View, Mermaid, Minimap, Git integration, and more)
179208
- **0.1.0** - Initial public release
180209

181-
[Unreleased]: https://github.com/OlaProeis/Ferrite/compare/v0.2.2...HEAD
210+
[Unreleased]: https://github.com/OlaProeis/Ferrite/compare/v0.2.3...HEAD
211+
[0.2.3]: https://github.com/OlaProeis/Ferrite/compare/v0.2.2...v0.2.3
182212
[0.2.2]: https://github.com/OlaProeis/Ferrite/compare/v0.2.1...v0.2.2
183213
[0.2.1]: https://github.com/OlaProeis/Ferrite/compare/v0.2.0...v0.2.1
184214
[0.2.0]: https://github.com/OlaProeis/Ferrite/compare/v0.1.0...v0.2.0

Cargo.lock

Lines changed: 1 addition & 37 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ferrite"
3-
version = "0.2.2"
3+
version = "0.2.3"
44
edition = "2021"
55
description = "A fast, lightweight text editor for Markdown, JSON, and more"
66
repository = "https://github.com/OlaProeis/Ferrite"
@@ -36,8 +36,8 @@ notify = { version = "6", default-features = false, features = ["macos_kqueue"]
3636
fuzzy-matcher = "0.3"
3737
walkdir = "2"
3838

39-
# Git integration
40-
git2 = "0.19"
39+
# Git integration (no SSH/HTTPS - we only need local repo status)
40+
git2 = { version = "0.19", default-features = false }
4141

4242
# Icon loading
4343
image = { version = "0.25", default-features = false, features = ["png"] }

README.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ A fast, lightweight text editor for Markdown, JSON, YAML, and TOML files. Built
3333
- **Multi-Format Support** - Native support for Markdown, JSON, YAML, and TOML files
3434
- **Tree Viewer** - Hierarchical view for JSON/YAML/TOML with inline editing, expand/collapse, and path copying
3535
- **Find & Replace** - Search with regex support and match highlighting
36+
- **Go to Line (Ctrl+G)** - Quick navigation to specific line number
3637
- **Undo/Redo** - Full undo/redo support per tab
3738

3839
### View Modes
@@ -45,15 +46,20 @@ A fast, lightweight text editor for Markdown, JSON, YAML, and TOML files. Built
4546
- **Code Folding** - Fold detection with gutter indicators (▶/▼) for headings, code blocks, and lists (text hiding deferred to v0.3.0)
4647
- **Minimap** - VS Code-style navigation panel with click-to-jump and search highlights
4748
- **Bracket Matching** - Highlight matching brackets `()[]{}<>` and emphasis pairs `**` `__`
49+
- **Auto-close Brackets & Quotes** - Type `(`, `[`, `{`, `"`, or `'` to get matching pair; selection wrapping supported
50+
- **Duplicate Line (Ctrl+Shift+D)** - Duplicate current line or selection
51+
- **Move Line Up/Down (Alt+↑/↓)** - Rearrange lines without cut/paste
52+
- **Smart Paste for Links** - Select text then paste URL to create `[text](url)` markdown link
4853
- **Auto-Save** - Configurable auto-save with temp-file safety
4954
- **Line Numbers** - Optional line number gutter
55+
- **Configurable Line Width** - Limit text width for readability (80/100/120 or custom)
5056

5157
### MermaidJS Diagrams
5258
Native rendering of 11 diagram types directly in the preview:
5359
- Flowchart, Sequence, Pie, State, Mindmap
5460
- Class, ER, Git Graph, Gantt, Timeline, User Journey
5561

56-
> **v0.2.2 Released:** Stability & CLI improvements! CJK font support, undo/redo fixes, command-line file opening (`ferrite file.md`), configurable log level, and default view mode setting. See [CHANGELOG.md](CHANGELOG.md) for full details.
62+
> **v0.2.3 Released:** Editor productivity features! Go to Line (Ctrl+G), Duplicate Line (Ctrl+Shift+D), Move Line (Alt+↑/↓), Auto-close brackets/quotes, Smart Paste for links, and configurable line width. See [CHANGELOG.md](CHANGELOG.md) for full details.
5763
5864
### Workspace Features
5965
- **Workspace Mode** - Open folders with file tree, quick switcher (Ctrl+P), and search-in-files (Ctrl+Shift+F)
@@ -77,8 +83,9 @@ Download the latest release for your platform from [GitHub Releases](https://git
7783
| Platform | Download |
7884
|----------|----------|
7985
| Windows | `ferrite-windows-x64.zip` |
80-
| Linux | `ferrite-editor_amd64.deb` (recommended) or `ferrite-linux-x64.tar.gz` |
81-
| macOS | `ferrite-macos-x64.tar.gz` |
86+
| Linux | `ferrite-editor_amd64.deb` (recommended) or `ferrite-linux-x64.tar.gz` |
87+
| macOS (Apple Silicon) | `ferrite-macos-arm64.tar.gz` |
88+
| macOS (Intel) | `ferrite-macos-x64.tar.gz` |
8289

8390
#### Linux Installation
8491

@@ -233,6 +240,10 @@ Toggle between modes using the toolbar buttons or keyboard shortcuts.
233240
| `Ctrl+Y` / `Ctrl+Shift+Z` | Redo |
234241
| `Ctrl+F` | Find |
235242
| `Ctrl+H` | Find and replace |
243+
| `Ctrl+G` | Go to line |
244+
| `Ctrl+Shift+D` | Duplicate line |
245+
| `Alt+↑` | Move line up |
246+
| `Alt+↓` | Move line down |
236247
| `Ctrl+B` | Bold |
237248
| `Ctrl+I` | Italic |
238249
| `Ctrl+K` | Insert link |
@@ -260,8 +271,8 @@ Workspace settings are stored in `.ferrite/` within the workspace folder.
260271

261272
Access settings via `Ctrl+,` or the gear icon. Configure:
262273

263-
- **Appearance:** Theme, font family, font size
264-
- **Editor:** Word wrap, line numbers, minimap, bracket matching, code folding, syntax highlighting
274+
- **Appearance:** Theme, font family, font size, default view mode
275+
- **Editor:** Word wrap, line numbers, minimap, bracket matching, code folding, syntax highlighting, auto-close brackets, line width
265276
- **Files:** Auto-save, recent files history
266277

267278
## Roadmap

ROADMAP.md

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,15 @@ These issues cannot be fixed without replacing egui's built-in text editor:
1212

1313
## Planned Features 🚀
1414

15-
### v0.2.3 (Planned) - CJK Support & Polish
15+
### v0.2.5 (Planned) - Mermaid Update
1616

17-
> **Status:** In Progress
17+
> **Status:** Planned
1818
19-
#### Bug Fixes
20-
- [x] **Task list rendering** - Fixed! Task list items with inline formatting now render correctly. Also fixed checkbox alignment and replaced interactive checkboxes with non-interactive ASCII-style `[ ]`/`[x]` markers (interactive editing planned for v0.3.0).
21-
- [ ] **CJK character rendering** ([#7](https://github.com/OlaProeis/Ferrite/issues/7)) - Multi-region CJK support (Korean, Chinese, Japanese) via system font fallback using `font-kit` (PR [#8](https://github.com/OlaProeis/Ferrite/pull/8) by [@SteelCrab](https://github.com/SteelCrab) 🙏)
22-
- [x] **macOS Intel support** ([#16](https://github.com/OlaProeis/Ferrite/issues/16)) - Separate x86_64 build for Intel Macs via `macos-13` runner (PR [#2](https://github.com/OlaProeis/Ferrite/pull/2) fixed naming, Intel job added)
23-
- [ ] **Linux close button cursor flicker** - Fix cursor rapidly switching between pointer/move/resize near window close button on Linux (Mint)
24-
25-
#### UX Improvements
26-
- [ ] **Configurable line width** ([#15](https://github.com/OlaProeis/Ferrite/issues/15)) - Option to limit text width for improved readability
27-
28-
#### Platform & Distribution
29-
- [ ] **Linux musl build** - Provide statically-linked musl binary for maximum Linux compatibility (no glibc dependency)
30-
31-
#### Mermaid Improvements (deferred from v0.2.2)
32-
- [ ] **Rendering performance** - Optimize mermaid.rs for complex diagrams
19+
#### Mermaid Improvements
20+
- [ ] **Rendering performance** - Optimize mermaid.rs for complex diagrams with caching
3321
- [ ] **Code cleanup** - Address unused code warnings, improve modularity
22+
- [ ] **Diagram insertion toolbar** ([#4](https://github.com/OlaProeis/Ferrite/issues/4)) - Toolbar button to insert mermaid code blocks
23+
- [ ] **Syntax hints in Help** ([#4](https://github.com/OlaProeis/Ferrite/issues/4)) - Documentation of supported diagram types and syntax examples
3424

3525
---
3626

@@ -79,11 +69,7 @@ Replace egui's `TextEdit` with a custom `FerriteEditor` widget to unblock advanc
7969
- [ ] **Wikilinks support** ([#1](https://github.com/OlaProeis/Ferrite/issues/1)) - `[[wikilinks]]` syntax with auto-completion
8070
- [ ] **Backlinks panel** ([#1](https://github.com/OlaProeis/Ferrite/issues/1)) - Show documents linking to current file
8171

82-
#### 5. Mermaid UX
83-
- [ ] **Diagram insertion toolbar** ([#4](https://github.com/OlaProeis/Ferrite/issues/4)) - Toolbar button to insert mermaid code blocks
84-
- [ ] **Syntax hints in Help** ([#4](https://github.com/OlaProeis/Ferrite/issues/4)) - Documentation of supported diagram types and syntax examples
85-
86-
#### 6. Platform & Distribution
72+
#### 5. Platform & Distribution
8773
- [ ] **macOS app signing & notarization** - Create proper `.app` bundle, sign with Developer ID, notarize with Apple
8874

8975
### Future (v0.4.0+)
@@ -123,7 +109,27 @@ Extract `FerriteEditor` as a standalone, framework-agnostic text editing library
123109

124110
## Completed ✅
125111

126-
### v0.2.2 (Current Release) - Performance & Stability
112+
### v0.2.3 (Current Release) - Polish & Editor Productivity
113+
114+
A focused release adding editor productivity features and platform improvements.
115+
116+
#### Editor Productivity
117+
- [x] **Go to Line (Ctrl+G)** - Quick navigation to specific line number with modal dialog
118+
- [x] **Duplicate Line (Ctrl+Shift+D)** - Duplicate current line or selection
119+
- [x] **Move Line Up/Down (Alt+↑/↓)** - Rearrange lines without cut/paste
120+
- [x] **Auto-close Brackets & Quotes** - Type `(` to get `()` with cursor in middle
121+
- [x] **Smart Paste for Links** - Select text, paste URL → creates `[text](url)` markdown link
122+
123+
#### UX Improvements
124+
- [x] **Configurable line width** ([#15](https://github.com/OlaProeis/Ferrite/issues/15)) - Option to limit text width for improved readability (Off/80/100/120/Custom)
125+
126+
#### Platform & Distribution
127+
- [x] **Linux musl build** - Statically-linked musl binary for maximum Linux compatibility (no glibc dependency)
128+
129+
#### Bug Fixes
130+
- [x] **Linux close button cursor flicker** - Fixed cursor rapidly switching between pointer/move/resize near window close button (title bar exclusion zone)
131+
132+
### v0.2.2 - Performance & Stability
127133

128134
A focused release addressing bugs reported after v0.2.1 launch, improving CLI usability, and adding quality-of-life features.
129135

@@ -132,6 +138,8 @@ A focused release addressing bugs reported after v0.2.1 launch, improving CLI us
132138
- [x] **Ubuntu 22.04 .deb compatibility** ([#6](https://github.com/OlaProeis/Ferrite/issues/6)) - Build on Ubuntu 22.04 for glibc 2.35 compatibility
133139
- [x] **Undo/redo behavior** ([#5](https://github.com/OlaProeis/Ferrite/issues/5)) - Fixed scroll position reset, focus loss, double-press requirement, and cursor restoration on Ctrl+Z
134140
- [x] **Misleading code folding UI** ([#12](https://github.com/OlaProeis/Ferrite/issues/12)) - Hide non-functional fold indicators by default; remove confusing "Raw View" button from Rendered JSON view
141+
- [x] **CJK character rendering** ([#7](https://github.com/OlaProeis/Ferrite/issues/7)) - ✅ Multi-region CJK support (Korean, Chinese, Japanese) via system font fallback using `font-kit` (PR [#8](https://github.com/OlaProeis/Ferrite/pull/8) by [@SteelCrab](https://github.com/SteelCrab) 🙏)
142+
- [x] **macOS Intel support** ([#16](https://github.com/OlaProeis/Ferrite/issues/16)) - Separate x86_64 build for Intel Macs via `macos-13` runner (PR [#2](https://github.com/OlaProeis/Ferrite/pull/2) fixed naming, Intel job added)
135143

136144
#### Performance Optimizations
137145
- [x] **Large file performance** - Deferred syntax highlighting keeps typing responsive in 5000+ line files

docs/index.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,13 @@ A fast, lightweight text editor for Markdown, JSON, and more. Built with Rust an
6868
| [Split View](./technical/split-view.md) | Side-by-side raw editor + rendered preview, draggable splitter, independent scrolling |
6969
| [Live Pipeline](./technical/live-pipeline.md) | JSON/YAML command piping through shell commands (jq, yq), recent history, output display |
7070
| [Search Panel Viewport](./technical/search-panel-viewport.md) | Viewport constraints for Search panel, DPI handling, resize behavior |
71+
| [Go to Line](./technical/go-to-line.md) | Ctrl+G modal dialog for line navigation, viewport centering |
72+
| [Duplicate Line](./technical/duplicate-line.md) | Ctrl+Shift+D line/selection duplication, char-to-byte index handling |
73+
| [Move Line](./technical/move-line.md) | Alt+↑/↓ line reordering, pre-render key consumption, cursor following |
74+
| [Auto-close Brackets](./technical/auto-close-brackets.md) | Auto-pair insertion, selection wrapping, skip-over behavior for brackets/quotes |
75+
| [Smart Paste](./technical/smart-paste.md) | URL detection, markdown link creation with selection, image markdown insertion |
76+
| [Configurable Line Width](./technical/configurable-line-width.md) | MaxLineWidth setting (Off/80/100/120/Custom), text centering in all views |
77+
| [Linux Cursor Flicker Fix](./technical/linux-cursor-flicker-fix.md) | Title bar exclusion zone to prevent cursor conflicts with window controls |
7178
| [Ribbon Redesign](./technical/ribbon-redesign.md) | Design C streamlined ribbon, title bar integration, dropdown menus |
7279
| [Mermaid Diagrams](./technical/mermaid-diagrams.md) | MermaidJS code block detection, diagram type indicators, styled rendering |
7380
| [Mermaid Text Measurement](./technical/mermaid-text-measurement.md) | TextMeasurer trait, dynamic node sizing, egui font metrics integration |

0 commit comments

Comments
 (0)