Releases: elias8/libghostty
Releases · elias8/libghostty
Release list
libghostty v0.0.11
Added
- Color utilities:
parseColor,parsePaletteEntry,
parseX11ColorName,x11ColorNames, palette generation, and luminance
helpers expose Ghostty's runtime color behavior. - Unicode width utilities:
unicodeCodepointWidthand
unicodeGraphemeWidthexpose Ghostty's terminal cell-width rules. - Color-scheme reports:
ColorScheme.encode()encodes terminal
color-scheme reporting responses. - Kitty graphics cache stamps:
KittyGraphics.generationand
KittyImage.generationlet renderers detect placement and image cache
invalidation without comparing image bytes. - Absolute viewport scrolling:
Terminal.scrollToRow()restores viewport
positions using the same row space asScrollbar.offset.
Changed
- Kitty graphics pixel data: stored image payloads are exposed as decoded,
decompressed pixels, including PNG and zlib-compressed transmissions. - Scrollbar metadata: scrollbar reads use Ghostty's cached offset and
incrementally maintained total, reducing repeated scrollback traversal.
libghostty v0.0.10
Breaking
- Position coordinates: cursor and grid lookup APIs use
Position
values.GridRef.positionIn()replacespointIn(), andGridRef
no longer needsdispose().
Added
- Selection APIs:
Selection,SelectionGesture, active terminal
selection, and selection formatting expose libghostty selection behavior. - Tracked grid references:
TrackedGridReffollows a cell across
terminal mutations until the referenced cell is discarded. - Terminal APIs: working-directory changes, device attributes queries,
default cursor blink, and Glyph Protocol toggling are exposed. - Render selection metadata:
RowIterator.selectionand
CellIterator.isSelected
expose row-local selection state for render snapshots.
flterm v0.0.4
Breaking
- Selection APIs: selection is backed by libghostty.
TerminalSelection
andTerminalSelectionModeare removed,TerminalConfig.wordPattern
moves toTerminalGestureSettings.wordBoundaries, and gesture toggles
are explicit settings.
Added
- Terminal links:
TerminalView.linkSettingsdetects OSC 8 links,
text URLs, file paths, and custom regex links. - Controller APIs:
selectRange,hasSelection,pwd, and
onPwdChangedexpose selection and working-directory state. - Glyph Protocol:
TerminalConfig.glyphProtocoltoggles Glyph Protocol
APC handling.
Changed
- Rendering pipeline: selection, cursor viewport state, and cell metadata
use refreshed libghostty render snapshots.
libghostty v0.0.9
Added
- Back-arrow key mode:
TerminalMode.backArrowKeyMode()and
KeyEncoder.setBackArrowKeyMode()expose DEC mode 67, letting legacy
Backspace encoding switch between DEL and BS. - APC buffer limits:
Terminal.setApcBufferLimit()and
Terminal.setKittyApcBufferLimit()configure general and Kitty-specific
APC payload limits.
Fixed
- Resize callbacks:
ghostty_terminal_resizeis no longer bound as a
leaf FFI call, preventing callback crashes when resize emits in-band size
reports throughonWritePty.
flterm v0.0.3
Breaking
- Flutter SDK floor: requires Dart 3.12 and Flutter 3.44.
Added
- IME composition: composing text appears at the terminal cursor
and works with platform text input. - Sprite glyph rendering: box drawing, block elements, Braille,
Powerline, geometric shapes, and legacy computing glyphs render
with built-in glyphs. - Shared render caches:
TerminalScopelets multiple terminal
views share compatible rendering resources. - APC buffer limits:
TerminalConfig.apcBufferLimitcontrols how
much APC payload data the terminal accepts.
Changed
- Rendering pipeline: terminal frames share rendering caches and do
less repeated work between frames.
Fixed
- Keyboard input: shifted printable keys and IME editing produce
the expected terminal text. - Rendering accuracy: erased backgrounds, cursor shape, cell
metrics, and sprite glyphs render more consistently.
libghostty v0.0.8
Breaking
- Standalone companions: rendering, grid lookups, formatting, and
encoding moved offTerminal.RenderStatewithRowIterator/
CellIterator,GridRef.at,Formatter,KittyGraphics.of, and
standaloneKeyEncoder/MouseEncoderreplace theirTerminal
method and getter equivalents.
Added
- Kitty graphics: image and placement lookup with resolved render
geometry, plus a process-global PNG decoder hook. - Log callback: process-global sink for the native library's
internal log output. - Formatter selection: restrict output to a coordinate region,
including block selections. - Terminal data:
cursorStyle,isMouseTracking, and Kitty image
configuration accessors. - Grid references:
hyperlinkUriandpointIn()for OSC 8 lookup
and coordinate round-tripping.
flterm v0.0.2
Breaking
- Theme colors move into
ColorPalette:TerminalThemeno longer
takesbackground,foreground, andansiColorsdirectly. Build a
ColorPaletteonce and pass it in, so palettes are something you
can share, swap, orcopyWithon their own. - Cursor and selection colors can adapt to the cell under them: the
color fields takeDynamicColor?now. Use
DynamicColor.cellForeground()/.cellBackground()to follow the
cell, orDynamicColor.fixed(c)for the old static behavior. selectedTextis a method: callcontroller.selectedText()for
plain text, or pass aFormatterFormatto get VT or HTML for
rich-clipboard copy.- Bold no longer switches to the bright palette by default: expect
slightly different bold colors; setboldIsBright: trueto restore
the old behavior.
Added
- Kitty graphics: programs that emit images (previewers, image
viewers, some editors) render inside the widget. Cap the cache via
TerminalConfig.kittyImageStorageLimit; zero disables. - Transparent background:
TerminalTheme.backgroundOpacitymakes
the default background translucent so the terminal can compose over
a translucent window or other widgets.backgroundOpacityCells
extends it to cells with their own bg color. - More theme knobs:
CursorTheme.text(glyph color under a block
cursor),TerminalTheme.boldColor(forced bold color), and
SelectionTheme.foreground(selected-glyph tint). ColorPalette.generated(): derives indices 16–255 from your base
16 plus background and foreground so the extended palette blends
instead of clashing with the fixed xterm cube.
Changed
- Dirty-row rendering: frames rebuild only rows that changed, so
idle terminals cost much less CPU.
flterm v0.0.1
Initial Release
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) viaonOutput,onResize,onBell, andonTitleChanged. Exposes I/O, selection, focus, scrolling, paste, clear, and mode toggling.- Themes: ANSI 16, 256-color, and truecolor palettes; cursor shape, color, and blink; hyperlink style; font family, size, and fallback; minimum contrast. Immutable and
lerp-able. - Wide characters: CJK, color emoji, VS16, and combining marks render correctly; selection snaps to whole cells.
- Mouse selection: drag, double-click word, triple-click line, and Alt+drag block.
- Shortcuts: built-in copy, paste, select all, and clear with platform-aware defaults.
- OSC 8 hyperlinks: idle and highlighted styles with click hit-testing.
- Cross-platform: Android, iOS, Linux, macOS, Web (WASM), Windows.
libghostty v0.0.7
Fixed
- Linux prebuilts: the prebuilt Linux binaries failed to load on glibc
systems withinvalid ELF header. They now ship as
libghostty-x86_64-linux-gnu.soandlibghostty-aarch64-linux-gnu.so,
properly linked against glibc.
libghostty v0.0.6
Added
- ARGB color accessors:
Cell.backgroundArgbandCell.foregroundArgb
return resolved colors as packed 32-bit ARGB ints, ornullif unset.
Callers handle the default themselves. RgbColor.toArgb32: convert anRgbColorto a packed 32-bit ARGB int
with full opacity.Cell.graphemeLength: number of codepoints in the cell's grapheme
cluster (0 for empty cells).
Changed
- Cell hot path:
codepointandwideare cached during row iteration
to eliminate per-access FFI calls in the renderer hot loop. - Row hot path: the raw row pointer is cached and invalidated when the
iterator advances to a new row.
Fixed
- VS16 emoji width: multi-codepoint graphemes are no longer misclassified
as narrow based on their first codepoint. The wide-cell fast path now only
applies to single-codepoint cells, so an emoji base followed by VS16 is
correctly marked wide. - Wide-codepoint heuristic: replaced the hand-rolled Unicode range table
in the wide-cell fast path with a single>= U+1100check. The old table
could mark some wide CJK codepoints as narrow without consulting the FFI
width query.