Releases: hhoao/flutter_alacritty
Releases · hhoao/flutter_alacritty
Release list
v2.2.0
[2.2.0] - 2026-06-25
🚀 Features
- (engine) Flush color-scheme report on live theme reconfigure
- (alacritty) Add TerminalLinkProvider seam
- (alacritty) UrlLinkProvider as library default link source
- (alacritty) Painter consults LinkOverlay for host links
- (alacritty) TerminalView link providers + overlay decoration/hover/click
- (alacritty) Export link-provider seam from barrel; document it
- (alacritty) Clamp terminal grid to VT minimum; OSC8-only links
- (alacritty) Add primaryTapActivatesLink option for link activation
- (terminal) Lock-step resize pipeline (resolver/policy/controller)
- (example) Add proportional history scrollbar beside terminal
- (terminal) Unified scroll input with TUI line batching
- (terminal) Resize v2 with single viewport authority
🐛 Bug Fixes
- (engine) Skip grid updates after dispose during async drain
- (alacritty) LinkOverlay value equality + drop redundant grid read
- (alacritty) Debounce provider-notify recompute; unmodifiable default link providers
- (alacritty) Recompute link overlay per-turn so decorations track scroll
- (alacritty) Abandon IME composition on engine swap
- (alacritty) Stop kinetic fling on engine swap
- (render) Bound the glyph atlas + grow it incrementally (review)
- (render) Self-sufficient background + implement backgroundOpacity (review)
- (analyze) Silence publish-time lint on test/extension APIs
- (analyze) Qualify static _resizeWindow in pointer extension
- (terminal) Address review findings on links, scroll, and docs
- (terminal) Stabilize scrollback wheel, pan, and scrollbar races
- (terminal) Avoid drainHistoryScroll deadlock on in-flush snap
- (test) Skip benchmark/visual suites by default in dart_test.yaml
🚜 Refactor
- (2W) Finish library seam polish and split pointer input
- (terminal) Atomic engine+PTY resize via onPtyResize
- (terminal) Remove legacy scrollBy path and simplify scroll drain
- (rust) Clean up code formatting and structure in engine and event proxy files
📚 Documentation
- (alacritty) Reference existing engine.workingDir for cwd tracking
⚡ Performance
- (render) Isolate cursor/blink, skip+merge bg rects, columnar FFI grid
- (render) Batch grid glyphs through a GPU glyph atlas (drawRawAtlas)
- (terminal) Throttle grid resize + skip same-size reflow
- (terminal) Lazy per-row link scan and scroll-only scrollbar updates
- Incremental scroll refresh, atlas prewarm, scroll benchmark
🧪 Testing
- (alacritty) Assert LinkOverlay cell gets hint color + underline at painter level
- (alacritty) Lock glyph-cache survival across engine swap
- (alacritty) Fix glyph-swap test priming + share TextFakeBinding
- (benchmark) Add vtebench engine fixtures and regression thresholds
- Fix viewport pixel-floor expectations and add engine breakdown bench
⚙️ Miscellaneous Tasks
- (pub) Prepare 2.1.0 pub.dev release
- (dependencies) Update rust_lib_flutter_alacritty version and add dependency override
- Remove outdated performance and implementation plans from documentation
- Bump rust_lib_flutter_alacritty submodule to 98a4749
- Include dart_test.yaml in workflow path filters
- Release 2.2.0 with rust_lib_flutter_alacritty 0.2.0
v2.1.0
[2.1.0] - 2026-06-01
🚀 Features
- (config) Align default terminal font with VS Code per platform
- (api) Export RustLib from public barrel for host app init
🐛 Bug Fixes
- (input) Pass viewId to TextInputConfiguration to fix IME on Windows
- (ime) Restore CJK input and Backspace on desktop
📚 Documentation
- (README) Add section for projects using the library with a description of TeamPilot
⚙️ Miscellaneous Tasks
- (pubspec) Bump version from 2.0.0 to 2.1.0
v2.0.0
[2.0.0] - 2026-05-30
🚀 Features
- (rust) Hyperlinks — OSC 8 + URL auto-detect + interned URI table
- (render) Hyperlink underline + hint colors with full match precedence
- (ui) Ctrl+click hyperlinks + MouseRegion cursor + url_launcher
- (ui) Drag-drop files → shell-quoted bracketed-paste insertion
- (ui) Font zoom — Ctrl+=/Ctrl+-/Ctrl+0 rebuilds metrics + glyph cache
- (ui) Right-click context menu (gnome-terminal-style; Shift bypasses)
- (ui) Visual bell — fade overlay driven by [bell] config
- (input) ImeSession — TextInputClient for preedit / commit
- (ui) PreeditOverlay — floating composing-string below cursor
- (config) Additive [ime] section (preedit colors + underline)
- (ui) Wire ImeSession + PreeditOverlay into TerminalScreen
- (ui) Extract TerminalView (Task 3a) + TerminalTheme/Style; TerminalScreen wraps
- (ui) Shortcuts/Actions hotkey API (Task 3b); TerminalView is pure
- (ui) Paint chrome from snapshot colors (OSC 10/11/12 follow)
- (config) Parse shell/keyboard/window/selection/cursor-defaults/osc52 sections
- (2O-a) Spawn shell from [shell] config (program/args/cwd/env)
- (2O-a) [[keyboard.bindings]] with full alacritty Action-enum parity
- (2N-b) OSC 52 paste round-trip, TextAreaSizeRequest reply, mouse-mode cursor
- (2O-b) Window padding, cursor colors, per-style fonts, semantic selection chars
- (hot-reload) Watch config file + live-apply colors/font/keybindings/engine config
- (2P/2Q) Dart-side wiring for OSC 7 cwd + OSC 9/777 notifications
- (scroll) GNOME-style smooth sub-cell + momentum scrolling
🐛 Bug Fixes
- (rust) Apply URL hint pass on take_damage hot path
- (ui) Restore drag-drop after font-zoom commit clobbered DropTarget
- Address code-review nits (dead code + drop-test regression + analyzer info)
- (ime,perf) Plan 2L review nits + alacritty-aligned input/paste hot paths
- (2W) Code-review nits — critical seam bugs + readOnly + lifecycle
- (ui) Notify host on first TerminalView layout resize
- (ui) Size TerminalView grid to padded paint area
- (render) Disable AA on cell bg/selection/cursor fills
- (engine) Bump rust_lib — never half-select a wide CJK glyph
- (codegen) Bump submodule pointer to committed frb_generated.rs
- (2O/2N-b) Address code-review findings (#2-#5, #8)
- (terminal_view) Sync viewport when engine is swapped
- (render) Disable AA on block-element fills to kill inter-cell seams
- (input) Implement TextInputClient.onFocusReceived for Flutter 3.44
- (terminal_view) Update hyperlink activation to support Cmd key on macOS
🚜 Refactor
- (engine) Extract TerminalEngine handle (wraps client+grid+binding)
- (ui) Lift selection/search/scroll state into TerminalController
- (example) Rewrite TerminalScreen as example consumer (Task 4)
📚 Documentation
- Plan 2K/2M spec — hyperlinks + desktop UX (zoom/drop/menu/bell)
- Plan 2K/2M implementation plan (hyperlinks + desktop UX cluster)
- (km) Sample hint/bell config + Plan 2K·2M acceptance findings
- Plan 2L IME preedit overlay design spec
- Plan 2L IME preedit implementation plan
- (ime) Sample [ime] config + Plan 2L acceptance findings
- (library) API surface walkthrough + consumer quick-start (Task 5)
- (2W) Findings — library widget seam complete
- (2W) Spec + plan for library widget seam
- (2X) Add scroll-coalesce spec + findings
- (2N) Live color resolution + chrome sync + OSC query reply design
- (2N) Findings — live color resolution + chrome sync + OSC query replies
- (2N) Fix reset escape — OSC 111, not empty OSC 11
- (2O/2N-b) Design spec for config expansion, OSC pump-through, hot-reload
- (2O/2N-b) Implementation plan (config + OSC + hot-reload), 6 commit-phases
- (2O/2N-b) Implementation findings + roadmap update
- (2O/2N-b) Record code-review findings + fixes
⚡ Performance
- (engine) Coalesce input-driven scroll per frame
- (ui) Route wheel/trackpad/fling through engine.scrollBy; resize engine on font zoom
🧪 Testing
- Add clearHistory stubs to EngineBinding fakes
- (engine) Add drainForTest for unit tests without frame pumping
⚙️ Miscellaneous Tasks
- (vscode) Add launch configuration for Flutter development
- (pubspec) Bump version from 1.0.1 to 2.0.0
v1.0.1
[1.0.1] - 2026-05-28
🚀 Features
- (rust) Headless alacritty engine with advance + cell snapshot
- (rust) Engine resize
- (frb) Bridge TerminalEngine (new/advance/snapshot/resize)
- (pty) PtyBackend interface + flutter_pty implementation
- (render) MirrorGrid + CustomPainter cell renderer
- Wire PTY <-> engine <-> painter in TerminalScreen
- (rust) Testable EventProxy + EngineEvent back-channel
- (rust) Take_damage() incremental render updates
- (frb) Async advance/take_damage + polled EngineEvent via take_events
- (render) Mutable MirrorGrid with incremental apply()
- (render) LRU glyph cache of pre-laid-out paragraphs
- (render) Sub-pixel CellMetrics + glyph-cached painter
- (engine) Per-frame coalescing client with backpressure
- Route events + wire coalescing client into TerminalScreen
- (rust) Emit FLAG_WIDE_SPACER for wide-char trailing cells
- (render) Per-cell flags lane in MirrorGrid
- (engine) Carry cell flags through to the mirror grid
- (render) Wide-aware glyph cache (2x layout width)
- (render) Two-pass paint with wide-char glyphs + spacer skip
- (render) CJK monospace fonts in the fallback chain
- (render) Box-drawing core + arm-weight line/junction ops
- (render) Rounded corners, diagonals, blocks, shades, quadrants
- (render) Paint box-drawing glyphs programmatically (seamless borders)
- (rust) Emit FLAG_DIM and FLAG_STRIKEOUT
- (render) Effective colors (inverse swap, dim darken)
- (render) Bold/italic in the glyph cache
- (render) Underline + strikeout decorations
- (rust) Expose cursor shape + blinking in RenderUpdate
- (engine) Carry cursor shape/blinking to the mirror grid
- (render) Draw cursor by shape (block/beam/underline/hollow)
- (render) Cursor blink via timer + merged repaint
- (render) True inverse block cursor (alacritty-style)
- (rust) Expose terminal mode flags in RenderUpdate
- (engine) Carry mode flags to the mirror grid
- (input) TermMode bit constants + helpers
- (input) Mode- and modifier-aware key encoder
- (input) Pass full modifiers + mode flags to the key encoder
- (input) SGR/X10 mouse event encoder
- (input) Report pointer events as mouse sequences
- (input) Bracketed-paste encoder with end-marker sanitization
- (input) Ctrl+Shift+V bracketed paste + focus reporting
- (rust) Display_offset-aware render + scroll_lines/scroll_to_bottom
- (engine) FRB scroll + carry display offset to the mirror grid
- (ui) Wheel scrollback, alt-screen wheel arrows, snap-to-bottom on key
- (rust) Alacritty selection + FLAG_SELECTED in snapshot
- (render) Selection FRB passthroughs + selected-cell highlight
- (ui) Mouse selection (word/line) + Ctrl+Shift+C copy
- (ui) Middle-click pastes the in-app primary selection
- (pty) Expose child exitCode on PtyBackend
- (ui) Shell-exit/spawn-fail overlay + restart-on-input
- (rust) Inject color palette + scrollback via EngineConfig
- (config) ParseColor for #rrggbb/#aarrggbb/0x..
- (config) TerminalConfig value object + fromTomlString
- (config) ConfigLoader path resolution + file loading
- (config) Thread TerminalConfig through widget tree
- (rust) Regex search (search_set/next/prev/clear + searched snapshot)
- (config) Match flags + alacritty search colors
- (render) Opaque search-match color override in painter
- (engine) Search passthroughs + searched-snapshot refresh
- (ui) Search bar + Ctrl+Shift+F wiring
- (render) Box-drawing long-tail — mixed junctions + dashed lines
- (ui) Touch input — one-finger scroll + long-press select
- (input) Precision trackpad two-finger pan = scroll
🐛 Bug Fixes
- Address tracer-bullet review (reproducible dep, lifecycle, FFI test)
- (render) Use concrete monospace font (DejaVu Sans Mono) with fallback
- (perf) Unblock Plan 2A startup and first paint
- (render) Schedule repaint when grid updates
- (ui) Sync grid on resize and wire window title
- (frb) Log advance panic; strengthen bindings test
- (ui) Title widget opaque color assertion
- (render) Restore live repaint after regression
- (render) Ensure terminal repaints on grid updates
- (engine) Request a frame when scheduling a drain (idle-refresh bug)
- (engine) Avoid MirrorGrid RangeError on resize/drain race
- (render) Rounded corners reach cell edges (no gap to box sides)
- (input) Skip DRAG mouse move when no button is held
- (input) Correct mouse button codes + drop unnecessary imports
- (ui) Re-render view/selection changes from a full snapshot
- (ui) Align exit handler with Plan 2E spec
- (ui) Only KeyDown/Repeat restarts from exited state, not KeyUp
- (config) Repair integration test + drop orphaned text-style consts
- (config) Theme the grid's empty-cell fill (no stale-color bands)
- (render) Forced-strut line box so glyphs share baseline + fill cell
- (search) Preserve highlights on selection + invalid-regex UI
- (search) Ctrl+Shift+F can toggle close + tighten review nits
- (search) Step origin past match boundary so prev/next actually move
- (search) TextField was eating Shift+Enter; flag desync masked highlights
- (packaging) Update package name format in make_config.yaml
🚜 Refactor
- (rust) RenderUpdate/LineUpdate + full_snapshot
- Address Plan 2A review (drop setState, font, cleanups)
- (engine_bindings_test) Improve Rust library path resolution
📚 Documentation
- Add v1 design for Flutter terminal on Alacritty Rust core
- Add tracer-bullet implementation plan (Plan 1 of v1)
- Tracer-bullet acceptance findings + Plan 2 inputs
- Add Plan 2A design (core data path)
- Add Plan 2A implementation plan (core data path)
- Validate Plan 2A — switch events from StreamSink to per-frame polling
- Plan 2A acceptance findings + carry-over notes
- Mark Plan 2A tasks complete + progress note
- Add Plan 2C-1 design (wide-char / CJK rendering)
- Add Plan 2C-1 implementation plan (wide-char / CJK)
- Plan 2C-1 acceptance findings
- Add Plan 2C design (rendering fidelity: box-drawing, attributes, cursor)
- Add Plan 2C staged implementation plan (P1/P2/P3)
- Plan 2C acceptance findings
- Add Plan 2B design (input completeness: keyboard, mouse, paste)
- Add Plan 2B staged implementation plan (B1/B2/B3)
- Note validated 1003-hover mouse limitation in Plan 2B
- Plan 2B acceptance findings
- Add Plan 2D design (scrollback, selection, copy/paste)
- Add Plan 2D staged implementation plan (D1/D2/D3)
- Plan 2D acceptance findings
- Add Plan 2E design (robustness & lifecycle)
- Add Plan 2E implementation plan (robustness & lifecycle)
- Plan 2E acceptance findings
- Plan 2F config/theme design spec
- 2F spec — split config value-object from file loading for library use
- Plan 2F config/theme implementation plan
- (config) Sample config + Plan 2F acceptance findings
- (config) Record empty-cell fill fix in findings
- (config) Correct flake note — was stale native lib, not timing
- Plan 2G/2J/2H spec — search, box-drawing long-tail, touch input
- Plan 2G/2J/2H implementation plan (search, box-drawing, touch)
- Sample search colors + Plan 2G/2J/2H acceptance findings
- (search) Record post-review user-testing fixes in findings
⚡ Performance
- (search) Keep bar mounted under Offstage to skip first-open lag
🧪 Testing
- (render) Restore Plan 2A MirrorGrid regression tests
⚙️ Miscellaneous Tasks
- Gitignore local .worktrees directory
- Integrate flutter_rust_bridge scaffold
- Initialize Flutter project with Rust engine integration
- Add Linux packaging support and CI workflows
- Bump version to 1.0.1 in pubspec.yaml