Skip to content

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