Skip to content

Commit afbb0e6

Browse files
committed
feat: Ferrite v0.2.0 - Major feature release
New Features: Syntax highlighting (40+ languages with caching), Mermaid diagrams (flowcharts, sequence, state, class, ER, Gantt, pie, mindmaps), Code folding, Bracket matching, Session persistence, Minimap, Split view, Zen mode, Search panel with regex, Auto-save Improvements: Enhanced themes, better sync scrolling, smart list editing, performance optimizations, UTF-8 safe matching, reduced logging Bug Fixes: UTF-8 panics in bracket matching, syntax highlighting cache, line break artifacts
1 parent 581dfb3 commit afbb0e6

63 files changed

Lines changed: 19484 additions & 1028 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/release.yml

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ jobs:
5454
- name: Install Rust
5555
uses: dtolnay/rust-toolchain@stable
5656

57+
- name: Install cargo-deb
58+
run: cargo install cargo-deb
59+
5760
- name: Build release
5861
run: cargo build --release
5962

@@ -63,12 +66,24 @@ jobs:
6366
cp target/release/ferrite release/
6467
tar -czvf ferrite-linux-x64.tar.gz -C release .
6568
66-
- name: Upload artifact
69+
- name: Build .deb package
70+
run: cargo deb --no-build
71+
72+
- name: Copy .deb to workspace root
73+
run: cp target/debian/*.deb ./ferrite-editor_amd64.deb
74+
75+
- name: Upload tar.gz artifact
6776
uses: actions/upload-artifact@v4
6877
with:
6978
name: ferrite-linux-x64
7079
path: ferrite-linux-x64.tar.gz
7180

81+
- name: Upload .deb artifact
82+
uses: actions/upload-artifact@v4
83+
with:
84+
name: ferrite-linux-deb
85+
path: ferrite-editor_amd64.deb
86+
7287
build-macos:
7388
name: Build macOS
7489
runs-on: macos-latest
@@ -114,6 +129,11 @@ jobs:
114129
with:
115130
name: ferrite-linux-x64
116131

132+
- name: Download Linux .deb artifact
133+
uses: actions/download-artifact@v4
134+
with:
135+
name: ferrite-linux-deb
136+
117137
- name: Download macOS artifact
118138
uses: actions/download-artifact@v4
119139
with:
@@ -129,4 +149,5 @@ jobs:
129149
files: |
130150
ferrite-windows-x64.zip
131151
ferrite-linux-x64.tar.gz
152+
ferrite-editor_amd64.deb
132153
ferrite-macos-x64.tar.gz

CHANGELOG.md

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

88
## [Unreleased]
99

10+
## [0.2.0] - 2025-01-09
11+
12+
### Added
13+
14+
#### Major Features
15+
- **Split View** - Side-by-side raw editor and rendered preview with resizable divider and per-tab split ratio persistence
16+
- **MermaidJS Native Rendering** - 11 diagram types rendered natively in Rust/egui (flowchart, sequence, pie, state, mindmap, class, ER, git graph, gantt, timeline, user journey)
17+
- **Editor Minimap** - VS Code-style scaled preview with click-to-navigate, viewport indicator, and search highlights visible in minimap
18+
- **Code Folding** - Fold detection for headings, code blocks, and lists with gutter indicators (▶/▼) and indentation-based folding for JSON/YAML
19+
- **Live Pipeline Panel** - Pipe JSON/YAML content through shell commands with real-time output preview and command history
20+
- **Zen Mode** - Distraction-free writing with centered text column and configurable column width
21+
- **Git Integration** - Visual status indicators in file tree showing modified, added, untracked, and ignored files (using git2 library)
22+
- **Auto-Save** - Configurable delay (default 15s), per-tab toggle, temp-file based for safety
23+
- **Session Persistence** - Restore open tabs on restart with cursor position, scroll offset, view mode, and per-tab split ratio
24+
- **Bracket Matching** - Highlight matching brackets `()[]{}<>` and markdown emphasis pairs `**` and `__` with theme-aware colors
25+
26+
### Fixed
27+
- **Rendered Mode List Editing** - Fixed item index mapping issues, proper structural key hashing, and edit state consistency (Tasks 64-69)
28+
- **Light Mode Contrast** - Improved text and border visibility with WCAG AA compliant contrast ratios, added separator between tabs and editor
29+
- **Scroll Synchronization** - Bidirectional sync between Raw and Rendered modes with hybrid line-based/percentage approach and mode switch scroll preservation
30+
- **Search-in-Files Navigation** - Click result now scrolls to match with transient highlight that auto-clears on scroll or edit
31+
- **Search Panel Viewport** - Fixed top and bottom clipping issues with proper bounds calculation
32+
33+
### Changed
34+
- **Tab Context Menu** - Reorganized icons with logical grouping for better visual clarity
35+
36+
### Technical
37+
- Added ~4000 lines of Mermaid rendering code in `src/markdown/mermaid.rs`
38+
- New modules: `src/vcs/` for git integration, `src/editor/minimap.rs`, `src/editor/folding.rs`, `src/editor/matching.rs`, `src/ui/pipeline.rs`, `src/config/session.rs`
39+
- Comprehensive technical documentation for all major features in `docs/technical/`
40+
41+
### Deferred
42+
- **Multi-cursor editing** (Task 72) - Deferred to v0.3.0, requires custom text editor implementation
43+
1044
## [0.1.0] - 2025-01-XX
1145

1246
### Added
@@ -80,7 +114,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
80114

81115
## Version History
82116

117+
- **0.2.0** - Major feature release (Split View, Mermaid, Minimap, Git integration, and more)
83118
- **0.1.0** - Initial public release
84119

85-
[Unreleased]: https://github.com/OlaProeis/Ferrite/compare/v0.1.0...HEAD
120+
[Unreleased]: https://github.com/OlaProeis/Ferrite/compare/v0.2.0...HEAD
121+
[0.2.0]: https://github.com/OlaProeis/Ferrite/compare/v0.1.0...v0.2.0
86122
[0.1.0]: https://github.com/OlaProeis/Ferrite/releases/tag/v0.1.0

Cargo.lock

Lines changed: 81 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

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

38+
# Git integration
39+
git2 = "0.19"
40+
3841
# Icon loading
3942
image = { version = "0.25", default-features = false, features = ["png"] }
4043

@@ -56,3 +59,43 @@ opt-level = "z" # Optimize for size (use "3" for speed)
5659
# Development profile with some optimizations for faster testing
5760
[profile.dev.package."*"]
5861
opt-level = 2 # Optimize dependencies in dev builds
62+
63+
# ============================================================================
64+
# Linux .deb package configuration (cargo-deb)
65+
# Build with: cargo deb
66+
# ============================================================================
67+
[package.metadata.deb]
68+
name = "ferrite-editor"
69+
maintainer = "OlaProeis <olaproeis@users.noreply.github.com>"
70+
copyright = "2024-2025, OlaProeis"
71+
license-file = ["LICENSE", "0"]
72+
extended-description = """Ferrite is a fast, lightweight text editor built with Rust and egui.
73+
Features include:
74+
- Markdown editing with live preview
75+
- Split view (raw + rendered side-by-side)
76+
- JSON/YAML/TOML tree viewer
77+
- MermaidJS diagram rendering
78+
- Git integration with file status indicators
79+
- Syntax highlighting for code blocks
80+
- Zen mode for distraction-free writing
81+
- Session persistence and auto-save"""
82+
section = "editors"
83+
priority = "optional"
84+
depends = "$auto"
85+
assets = [
86+
# Binary
87+
["target/release/ferrite", "usr/bin/ferrite", "755"],
88+
# Desktop entry
89+
["assets/icons/linux/ferrite.desktop", "usr/share/applications/ferrite.desktop", "644"],
90+
# Icons at various sizes
91+
["assets/icons/icon_16.png", "usr/share/icons/hicolor/16x16/apps/ferrite.png", "644"],
92+
["assets/icons/icon_32.png", "usr/share/icons/hicolor/32x32/apps/ferrite.png", "644"],
93+
["assets/icons/icon_48.png", "usr/share/icons/hicolor/48x48/apps/ferrite.png", "644"],
94+
["assets/icons/icon_64.png", "usr/share/icons/hicolor/64x64/apps/ferrite.png", "644"],
95+
["assets/icons/icon_128.png", "usr/share/icons/hicolor/128x128/apps/ferrite.png", "644"],
96+
["assets/icons/icon_256.png", "usr/share/icons/hicolor/256x256/apps/ferrite.png", "644"],
97+
["assets/icons/icon_512.png", "usr/share/icons/hicolor/512x512/apps/ferrite.png", "644"],
98+
# Documentation
99+
["README.md", "usr/share/doc/ferrite-editor/README.md", "644"],
100+
["LICENSE", "usr/share/doc/ferrite-editor/LICENSE", "644"],
101+
]

0 commit comments

Comments
 (0)