Skip to content

Commit e1ee06b

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 e1ee06b

24 files changed

Lines changed: 2465 additions & 127 deletions

.github/workflows/release.yml

Lines changed: 62 additions & 6 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,10 +138,56 @@ jobs:
136138
name: ferrite-macos-x64
137139
path: ferrite-macos-x64.tar.gz
138140

141+
build-linux-musl:
142+
name: Build Linux (musl static)
143+
runs-on: ubuntu-latest
144+
# GUI apps with OpenGL/GTK deps may fail with musl - don't block release
145+
continue-on-error: true
146+
147+
steps:
148+
- name: Checkout
149+
uses: actions/checkout@v4
150+
151+
- name: Install Rust with musl target
152+
uses: dtolnay/rust-toolchain@stable
153+
with:
154+
targets: x86_64-unknown-linux-musl
155+
156+
- name: Install musl-tools and dependencies
157+
run: |
158+
sudo apt-get update
159+
sudo apt-get install -y musl-tools musl-dev pkg-config
160+
161+
- name: Build release (musl static)
162+
run: cargo build --release --target x86_64-unknown-linux-musl
163+
env:
164+
CC_x86_64_unknown_linux_musl: musl-gcc
165+
PKG_CONFIG_ALLOW_CROSS: "1"
166+
RUSTFLAGS: "-C target-feature=+crt-static"
167+
# Use dlopen for fontconfig at runtime instead of linking at compile time
168+
RUST_FONTCONFIG_DLOPEN: "1"
169+
170+
- name: Verify static linking
171+
run: |
172+
file target/x86_64-unknown-linux-musl/release/ferrite
173+
ldd target/x86_64-unknown-linux-musl/release/ferrite || echo "Binary is statically linked (expected)"
174+
175+
- name: Create release archive
176+
run: |
177+
mkdir release
178+
cp target/x86_64-unknown-linux-musl/release/ferrite release/
179+
tar -czvf ferrite-linux-musl-x64.tar.gz -C release .
180+
181+
- name: Upload artifact
182+
uses: actions/upload-artifact@v4
183+
with:
184+
name: ferrite-linux-musl-x64
185+
path: ferrite-linux-musl-x64.tar.gz
186+
139187
# Create GitHub Release with all artifacts
140188
release:
141189
name: Create Release
142-
needs: [build-windows, build-linux, build-macos-arm64, build-macos-intel]
190+
needs: [build-windows, build-linux, build-linux-musl, build-macos-arm64, build-macos-intel]
143191
runs-on: ubuntu-latest
144192
permissions:
145193
contents: write
@@ -155,6 +203,12 @@ jobs:
155203
with:
156204
name: ferrite-linux-x64
157205

206+
- name: Download Linux musl artifact
207+
uses: actions/download-artifact@v4
208+
continue-on-error: true # musl build may have failed
209+
with:
210+
name: ferrite-linux-musl-x64
211+
158212
- name: Download Linux .deb artifact
159213
uses: actions/download-artifact@v4
160214
with:
@@ -177,9 +231,11 @@ jobs:
177231
draft: false
178232
prerelease: ${{ contains(github.ref_name, '-') }}
179233
generate_release_notes: true
234+
fail_on_unmatched_files: false # musl artifact may not exist
180235
files: |
181236
ferrite-windows-x64.zip
182237
ferrite-linux-x64.tar.gz
238+
ferrite-linux-musl-x64.tar.gz
183239
ferrite-editor_amd64.deb
184240
ferrite-macos-arm64.tar.gz
185241
ferrite-macos-x64.tar.gz

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+
- **Linux musl build** - CI job for statically-linked x86_64-unknown-linux-musl binary (no glibc dependency)
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 8 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: 17 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, configurable line width, and Linux musl build. 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,10 @@ 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 (glibc) | `ferrite-editor_amd64.deb` (recommended) or `ferrite-linux-x64.tar.gz` |
87+
| Linux (musl) | `ferrite-linux-musl-x64.tar.gz` (static, no glibc dependency) |
88+
| macOS (Apple Silicon) | `ferrite-macos-arm64.tar.gz` |
89+
| macOS (Intel) | `ferrite-macos-x64.tar.gz` |
8290

8391
#### Linux Installation
8492

@@ -233,6 +241,10 @@ Toggle between modes using the toolbar buttons or keyboard shortcuts.
233241
| `Ctrl+Y` / `Ctrl+Shift+Z` | Redo |
234242
| `Ctrl+F` | Find |
235243
| `Ctrl+H` | Find and replace |
244+
| `Ctrl+G` | Go to line |
245+
| `Ctrl+Shift+D` | Duplicate line |
246+
| `Alt+↑` | Move line up |
247+
| `Alt+↓` | Move line down |
236248
| `Ctrl+B` | Bold |
237249
| `Ctrl+I` | Italic |
238250
| `Ctrl+K` | Insert link |
@@ -260,8 +272,8 @@ Workspace settings are stored in `.ferrite/` within the workspace folder.
260272

261273
Access settings via `Ctrl+,` or the gear icon. Configure:
262274

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

267279
## Roadmap

0 commit comments

Comments
 (0)