NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #5164 most downloaded on pub.dev
Dart bindings to libghostty-vt, the terminal emulator library from Ghostty.
Last release 2 months ago
28 Jul 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 12 of 12 stable releases
Nothing withdrawn
no release was ever pulled
7 months old
15 releases · first in 2026
One column per month.
Kitty temporary-file images : Terminal.kittyTempFileDirectory and Terminal.setKittyTempFileDirectory() replace the boolean temporary-file medium API.
Terminal.kittyTempFileDirectory andTerminal.setKittyTempFileDirectory() replace the boolean temporary-fileTerminal.onClipboardWrite exposes atomic,Terminal.compress() andTerminal.compressionActivity support incremental or full compression ofTerminal.geometry returns cell and pixel dimensionsTerminal.hasVtProcessingError reportsTerminal.resize() updates cell pixel geometry,RenderState, RowIterator, CellIterator,SelectionGesture, and Kitty graphics reads use consolidated native and WASMFormatter and Terminal.formatSelection() reuseTerminal.write() and callback-emittingTerminal.resize() rethrow the first effect error after processing completes.Color utilities : parseColor , parsePaletteEntry , parseX11ColorName , x11ColorNames , palette generation, and luminance helpers expose Ghostty's runt
parseColor, parsePaletteEntry,parseX11ColorName, x11ColorNames, palette generation, and luminanceunicodeCodepointWidth andunicodeGraphemeWidth expose Ghostty's terminal cell-width rules.ColorScheme.encode() encodes terminalKittyGraphics.generation andKittyImage.generation let renderers detect placement and image cacheTerminal.scrollToRow() restores viewportScrollbar.offset.Position coordinates : cursor and grid lookup APIs use Position values. GridRef.positionIn() replaces pointIn() , and GridRef no longer needs dispose(
PositionGridRef.positionIn() replaces pointIn(), and GridRefdispose().Selection, SelectionGesture, active terminalTrackedGridRef follows a cell acrossRowIterator.selection andCellIterator.isSelectedBack-arrow key mode : TerminalMode.backArrowKeyMode() and KeyEncoder.setBackArrowKeyMode() expose DEC mode 67, letting legacy Backspace encoding switc
TerminalMode.backArrowKeyMode() andKeyEncoder.setBackArrowKeyMode() expose DEC mode 67, letting legacyTerminal.setApcBufferLimit() andTerminal.setKittyApcBufferLimit() configure general and Kitty-specificghostty_terminal_resize is no longer bound as aonWritePty.Standalone companions : rendering, grid lookups, formatting, and encoding moved off Terminal . RenderState with RowIterator / CellIterator , GridRef.a
Terminal. RenderState with RowIterator /CellIterator, GridRef.at, Formatter, KittyGraphics.of, andKeyEncoder / MouseEncoder replace their TerminalcursorStyle, isMouseTracking, and Kitty imagehyperlinkUri and pointIn() for OSC 8 lookupLinux prebuilts: the prebuilt Linux binaries failed to load on glibc systems with invalid ELF header. They now ship as libghostty-x86_64-linux-gnu.so
invalid ELF header. They now ship as
libghostty-x86_64-linux-gnu.so and libghostty-aarch64-linux-gnu.so,
properly linked against glibc.ARGB color accessors: Cell.backgroundArgb and Cell.foregroundArgb return resolved colors as packed 32-bit ARGB ints, or null if unset. Callers handle
Cell.backgroundArgb and Cell.foregroundArgb
return resolved colors as packed 32-bit ARGB ints, or null if unset.
Callers handle the default themselves.RgbColor.toArgb32: convert an RgbColor to a packed 32-bit ARGB int
with full opacity.Cell.graphemeLength: number of codepoints in the cell's grapheme
cluster (0 for empty cells).codepoint and wide are cached during row iteration
to eliminate per-access FFI calls in the renderer hot loop.>= U+1100 check. The old table
could mark some wide CJK codepoints as narrow without consulting the FFI
width query.Clipboard writes : TerminalController.onClipboardWrite forwards atomic, binary-safe OSC 52 and iTerm2 clipboard requests so applications can apply the
TerminalController.onClipboardWrite forwards atomic,ColorPalette.generated() uses libghostty paletteTerminalView'sterminal-c-api.patch
with upstream Ghostty's natively exposed C headers. This is a complete
rewrite of the bindings and implementation layer.libghostty.dart) has a
new export structure. Most types have been renamed or moved.Line, Screen, Scrollback, TerminalOptions,
TerminalEvent, TerminalModes, Disposable, Result.input.dart and parsing.dart are removed.
Import everything from libghostty.dart.MouseEncoder and MouseEvent for encoding mouse
events into terminal escape sequences (X10, UTF-8, SGR, URxvt, SGR-Pixels).LibGhosttyBuildInfo exposes compile-time feature flags
(SIMD, Kitty graphics, tmux passthrough) and version info.TerminalMode provides typed access to DEC private
and ANSI modes with DECRPM report encoding.RenderState for efficient viewport snapshotting with
two-layer dirty tracking (global + per-row).GridRef for ad-hoc cell lookups by coordinate.Formatter for serializing terminal content as plain text,
HTML, or full VT state.onWritePty, onBell,
onTitleChanged, etc.) replacing the TerminalEvent stream.FocusEventEncode and
SizeReportStyleEncode extension types.ffigen.yaml with a Dart
driver that generates three specialized output files (native FFI, enums,
WASM typed exports).b7e56044d.src/enums/ directory.native/, wasm/, and types/ directories.src/impl/ with key/, mouse/,
and terminal/ subdirectories.Selection APIs : selection is backed by libghostty. TerminalSelection and TerminalSelectionMode are removed, TerminalConfig.wordPattern moves to Termi
TerminalSelectionTerminalSelectionMode are removed, TerminalConfig.wordPatternTerminalGestureSettings.wordBoundaries, and gesture togglesTerminalView.linkSettings detects OSC 8 links,selectRange, hasSelection, pwd, andonPwdChanged expose selection and working-directory state.TerminalConfig.glyphProtocol toggles Glyph ProtocolCell and ScrollbackRow expose OSC 8 hyperlink
URIs via a hyperlink field.TerminalModes exposes screenMode to distinguish
primary and alternate screen.TerminalModes exposes mouseAlternateScroll
flag.^ operator on Mods for bitwise XOR toggling
of modifier flags.scrollbackLength returns zero when
the terminal is on the alternate screen instead of stale values.04fa71e23.Flutter SDK floor : requires Dart 3.12 and Flutter 3.44.
TerminalScope lets multiple terminalTerminalConfig.apcBufferLimit controls howaarch64-ios-simulator
and x86_64-ios-simulator.Theme colors move into ColorPalette : TerminalTheme no longer takes background , foreground , and ansiColors directly. Build a ColorPalette once and p
ColorPalette: TerminalTheme no longerbackground, foreground, and ansiColors directly. Build aColorPalette once and pass it in, so palettes are something youcopyWith on their own.DynamicColor? now. UseDynamicColor.cellForeground() / .cellBackground() to follow theDynamicColor.fixed(c) for the old static behavior.selectedText is a method: call controller.selectedText() forFormatterFormat to get VT or HTML forboldIsBright: true to restoreTerminalConfig.kittyImageStorageLimit; zero disables.TerminalTheme.backgroundOpacity makesbackgroundOpacityCellsCursorTheme.text (glyph color under a blockTerminalTheme.boldColor (forced bold color), andSelectionTheme.foreground (selected-glyph tint).ColorPalette.generated(): derives indices 16–255 from your baseTerminalEvent hierarchy: typed events (BellReceived,
TitleChanged, CursorChanged, MouseShapeChanged, ResponseReceived,
ScreenChanged, ModeChanged) replace ad-hoc state polling.TerminalOptions: configure foreground/background color and scrollback
limit at terminal creation.MouseShape and MouseTracking exposed via the
terminal API.DirtyState enum:clean/partial/full for render-level dirty
tracking on Screen.Screen reuses a single buffer across reads,
reducing per-frame allocations.Screen and Scrollback report whether a row
is soft-wrapped.Scrollback returns full grapheme
clusters.CellWidth and SemanticContent: new cell metadata types.TerminalViewport removed: viewport reading now lives on Screen
directly.055ed285.TerminalView : Flutter widget that renders a terminal and adapts input to the host. Mouse and keyboard on desktop, touch and soft keyboard on mobile,
TerminalView: Flutter widget that renders a terminal and adapts input to the host. Mouse and keyboard on desktop, touch and soft keyboard on mobile, both on web.TerminalController: owns the terminal and bridges it with the view. Connects to a backend (PTY, SSH, socket) via onOutput, onResize, onBell, and onTitleChanged. Exposes I/O, selection, focus, scrolling, paste, clear, and mode toggling.lerp-able.Fix release artifact filenames and download URLs
Add release automation with build and release workflows
- Initial pre-release
Your coding agent can read these notes before it upgrades. Set up the MCP server →