Skip to content

Releases: elias8/libghostty

libghostty v0.0.11

Choose a tag to compare

@github-actions github-actions released this 08 Jul 19:34

Added

  • Color utilities: parseColor, parsePaletteEntry,
    parseX11ColorName, x11ColorNames, palette generation, and luminance
    helpers expose Ghostty's runtime color behavior.
  • Unicode width utilities: unicodeCodepointWidth and
    unicodeGraphemeWidth expose Ghostty's terminal cell-width rules.
  • Color-scheme reports: ColorScheme.encode() encodes terminal
    color-scheme reporting responses.
  • Kitty graphics cache stamps: KittyGraphics.generation and
    KittyImage.generation let renderers detect placement and image cache
    invalidation without comparing image bytes.
  • Absolute viewport scrolling: Terminal.scrollToRow() restores viewport
    positions using the same row space as Scrollbar.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

Choose a tag to compare

@github-actions github-actions released this 26 Jun 06:51

Breaking

  • Position coordinates: cursor and grid lookup APIs use Position
    values. GridRef.positionIn() replaces pointIn(), and GridRef
    no longer needs dispose().

Added

  • Selection APIs: Selection, SelectionGesture, active terminal
    selection, and selection formatting expose libghostty selection behavior.
  • Tracked grid references: TrackedGridRef follows 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.selection and
    CellIterator.isSelected
    expose row-local selection state for render snapshots.

flterm v0.0.4

Choose a tag to compare

@github-actions github-actions released this 26 Jun 08:54
9448356

Breaking

  • Selection APIs: selection is backed by libghostty. TerminalSelection
    and TerminalSelectionMode are removed, TerminalConfig.wordPattern
    moves to TerminalGestureSettings.wordBoundaries, and gesture toggles
    are explicit settings.

Added

  • Terminal links: TerminalView.linkSettings detects OSC 8 links,
    text URLs, file paths, and custom regex links.
  • Controller APIs: selectRange, hasSelection, pwd, and
    onPwdChanged expose selection and working-directory state.
  • Glyph Protocol: TerminalConfig.glyphProtocol toggles Glyph Protocol
    APC handling.

Changed

  • Rendering pipeline: selection, cursor viewport state, and cell metadata
    use refreshed libghostty render snapshots.

libghostty v0.0.9

Choose a tag to compare

@github-actions github-actions released this 26 May 10:14

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_resize is no longer bound as a
    leaf FFI call, preventing callback crashes when resize emits in-band size
    reports through onWritePty.

flterm v0.0.3

Choose a tag to compare

@github-actions github-actions released this 26 May 10:29
1035099

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: TerminalScope lets multiple terminal
    views share compatible rendering resources.
  • APC buffer limits: TerminalConfig.apcBufferLimit controls 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

Choose a tag to compare

@github-actions github-actions released this 24 Apr 19:51

Breaking

  • Standalone companions: rendering, grid lookups, formatting, and
    encoding moved off Terminal. RenderState with RowIterator /
    CellIterator, GridRef.at, Formatter, KittyGraphics.of, and
    standalone KeyEncoder / MouseEncoder replace their Terminal
    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: hyperlinkUri and pointIn() for OSC 8 lookup
    and coordinate round-tripping.

flterm v0.0.2

Choose a tag to compare

@github-actions github-actions released this 24 Apr 20:35
276c82e

Breaking

  • Theme colors move into ColorPalette: TerminalTheme no longer
    takes background, foreground, and ansiColors directly. Build a
    ColorPalette once and pass it in, so palettes are something you
    can share, swap, or copyWith on their own.
  • Cursor and selection colors can adapt to the cell under them: the
    color fields take DynamicColor? now. Use
    DynamicColor.cellForeground() / .cellBackground() to follow the
    cell, or DynamicColor.fixed(c) for the old static behavior.
  • selectedText is a method: call controller.selectedText() for
    plain text, or pass a FormatterFormat to get VT or HTML for
    rich-clipboard copy.
  • Bold no longer switches to the bright palette by default: expect
    slightly different bold colors; set boldIsBright: true to 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.backgroundOpacity makes
    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

Choose a tag to compare

@elias8 elias8 released this 12 Apr 03:57
d5d4422

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) via onOutput, onResize, onBell, and onTitleChanged. 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

Choose a tag to compare

@github-actions github-actions released this 10 Apr 19:13

Fixed

  • Linux 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 and libghostty-aarch64-linux-gnu.so,
    properly linked against glibc.

libghostty v0.0.6

Choose a tag to compare

@github-actions github-actions released this 10 Apr 17:16

Added

  • ARGB color accessors: 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).

Changed

  • Cell hot path: codepoint and wide are 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+1100 check. The old table
    could mark some wide CJK codepoints as narrow without consulting the FFI
    width query.