Skip to content

Releases: hhoao/flutter_alacritty

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 07:40

[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

Choose a tag to compare

@github-actions github-actions released this 01 Jun 02:26

[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

Choose a tag to compare

@github-actions github-actions released this 30 May 06:37

[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

Choose a tag to compare

@github-actions github-actions released this 28 May 06:58

[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