Ghostty Release Notes

Last updated: Mar 13, 2026

  • Mar 13, 2026
    • Date parsed from source:
      Mar 13, 2026
    • First seen by Releasebot:
      Mar 13, 2026
    Ghostty logo

    Ghostty

    Ghostty 1.3.1

    Ghostty releases 1.3.1 a macOS focused patch that fixes phantom mouse events and a suite of stability issues while adding small config and binding improvements. Highlights include progress-style toggle, set_surface_title, set_tab_title, and working-directory expansion along with broad macOS and GTK refinements.

    Release notes for Ghostty 1.3.1, released on March 13, 2026.

    Ghostty 1.3.1 includes changes from 15 contributors over 100 commits. This is a patch release focused on fixing regressions introduced in 1.3.0, especially on macOS, along with a handful of targeted improvements.

    Highlights

    macOS Mouse Selection Bugs Fixed

    PRs: #11276

    Ghostty 1.3.0 had a very noticeable bug on macOS where phantom mouse events would occur after focus changes, leading to phantom drag, selection, and scroll events.

    This issue is now resolved.

    Full Changelog

    Full list of closed issues on GitHub.

    In each section, we try to sort improvements before bug fixes.

    • New configuration: progress-style controls whether OSC 9;4 progress bars are shown, allowing progress bars to be disabled entirely. #11289
    • New binding actions set_surface_title:<title> and set_tab_title:<title> allow direct title setting from keybinds and other action entry points. #11373 #11316
    • The working-directory configuration now expands ~/ paths. #11337 #11336
    • jump_to_prompt:next now handles multiline prompts correctly when moving forward through prompts. #11331 #11330

    Shell Integration

    • zsh: Improve prompt marking compatibility with dynamic themes and prompt rebuild behavior. #11367
    • bash: Multiline PS1 prompts with command substitutions no longer break due to mark insertion behavior. #11369
    • bash: Readline vi mode indicator redraws no longer introduce extra newlines. #11377 #10953

    macOS

    • macOS: paste_from_clipboard is now performable: for keybind parity with GTK. #11328 #10751
    • macOS: Fix stale mouse state leading to phantom drag/selection behavior after focus changes. #11276 #11319
    • macOS: Fix window sizing regressions where opening tabs could unexpectedly resize windows under certain configurations. #11313 #11322 #11380
    • macOS: Fix configuration cycle detection when loading config files from App Support paths. #11323 #11326
    • macOS: Inline tab title editing now correctly restores keyboard focus after confirming or canceling edits. #11320
    • macOS: Fix fullscreen tab title rename hit testing so you can now double-click to rename tabs in native fullscreen. #11353
    • macOS: Split drag handles no longer appear in native fullscreen with no splits. #11376
    • macOS: Split drag handles only appear when the mouse is somewhat near them. #11379
    • macOS: Ghostty keybinds once again override system macOS keybinds, so keys such as super+h are once again bindable. #11396 #11403
    • macOS: Automatic one-time code inputs will no longer appear in the terminal. #11351
    • macOS: Improve first-window positioning, window cascading, and split drag-to-new-window placement behavior. #11421 #11426 #11429
    • macOS: The AppleScript tab selection command no longer activates the application unexpectedly. #11459

    GTK (Linux, FreeBSD)

    • GTK: +new-window now correctly handles inferred --working-directory when used with -e. #11357 #11356
    • Snap: Ghostty no longer leaks LD_LIBRARY_PATH from the snap launcher into child processes, avoiding runtime conflicts in launched applications. #11431

    Changes for Package Maintainers

    No changes for package maintainers in this release.

    Roadmap

    We're still investigating other 1.3.x regressions and issues, and I do expect a 1.3.2 release at some point. The plan is for that release to be a bit further out than the 1.3.1 release, which focused on critical release-day bugs.

    Edit on GitHub

    Original source Report a problem
  • Mar 9, 2026
    • Date parsed from source:
      Mar 9, 2026
    • First seen by Releasebot:
      Mar 10, 2026
    Ghostty logo

    Ghostty

    Ghostty 1.3.0

    Ghostty releases 1.3.0 delivering major terminal updates including scrollback search, native scrollbars, click-to-move-cursor in prompts, enhanced OSC133, command-finish notifications, rich clipboard, keybind tables and chaining, improved Unicode rendering, and macOS/GTK polish.

    Release notes for Ghostty 1.3.0, released on March 9, 2026.

    Ghostty 1.3.0 is a significant release which includes many of the most requested features such as scrollback search, native scrollbars, click-to-move-cursor in shell prompts, and more. It also includes hundreds of improvements, bug fixes, and performance optimizations across all platforms.

    This release features 6 months of work with changes from 180 contributors over 2,858 commits. Thank you to all the contributors, maintainers, community moderators, translators, packagers, and users who each helped make this release possible.

    These release notes are painstakingly and lovingly hand-crafted by human Ghostty maintainers, including the full changelog. They take a combined 16+ hours to write, so please enjoy. 🥰

    Ghostty is non-profit! Please support development. Almost all donations go directly to paying contributors. Learn more about how you can help.

    Security

    • CVE-2026-26982. Fixed an issue where control characters such as 0x03 (Ctrl+C) in pasted or drag-and-dropped text could be used to execute arbitrary commands in some shell environments. This requires user interaction (copy-paste or drag-and-drop) to trigger.

    Highlights

    Scrollback Search

    PRs: #9585 #9602 #9687 #9702 #9709 #9756

    You can now search your terminal scrollback with cmd+f on macOS or ctrl+shift+f on GTK. Search highlights all matches in the viewport and allows you to navigate between them with the arrow buttons or cmd+g / shift+cmd+g (macOS) or enter / shift+enter (GTK). All of these keybinds are configurable, of course.

    On macOS, the search bar can be dragged to any of the four corners of the terminal if it gets in the way. The search also integrates with standard macOS conventions: the menu bar, Find Next / Find Previous shortcuts, and the system find pasteboard all work as expected.

    On GTK, the search bar also appears in one of the corners and can be dragged to any corner.

    Search is implemented using a dedicated search thread that operates concurrently with terminal I/O. The thread grabs the terminal lock in small time slices to make forward progress on searching while minimizing impact on I/O throughput or rendering. If you do not use search, or you close the search bar, the search thread exits and does not consume any resources.

    Scrollbars

    PRs: #9225 #9232

    Ghostty now has native scrollbars. A new scrollbar configuration controls whether scrollbars are visible, defaulting to system which lets the OS decide.

    The scrollbar on both macOS and GTK uses native widgets and styling, and supports all the standard interactions you would expect, such as dragging the knob, clicking the track, using scroll gestures, etc.

    On both platforms, we use a minimal overlay-style scrollbar so that the terminal grid doesn't have to reserve space for the scrollbar with an aesthetically unpleasant gap or gutter. The scrollbar is overlaid on top of the terminal contents with minimal styling to prevent impacting selection.

    Click to Move Cursor In Shell Prompts

    PR: #10455

    Ghostty now supports the click-events and cl=line extensions to the OSC 133 Semantic Prompts specification. This lets you click your mouse within an active shell prompt to move the cursor, like a normal text field.

    This feature is supported natively by Fish (v4+) and Nushell (0.111+). For other shells, support varies based on Ghostty's injected shell integration. If you're using a supported shell, this will just magically work.

    Additionally, Ghostty now has a much more complete and accurate implementation of OSC 133 which enables more accurate behaviors for our long-supported jump-to-prompt or copy command output features. This also results in better resize behaviors while at an active prompt.

    As a fun detail, we also added a really cool debug overlay that shows the OSC 133 areas, which were a significant help for shell developers working to better support this. This can be enabled by anyone in the terminal inspector.

    Command Finished Notifications

    PRs: #8992 #10934

    Ghostty can now notify you when a long-running command finishes. This is useful when you kick off a build or test suite and switch to another window and want to be notified when it's done, for example.

    Three new configuration options control this feature:

    notify-on-command-finish = unfocused
    notify-on-command-finish-action = no-bell,notify
    notify-on-command-finish-after = 30s

    notify-on-command-finish controls when notifications are sent: never (default), unfocused (only when the terminal is not focused), or always. notify-on-command-finish-action controls how you're notified, supporting bell (default) and notify (desktop notification), which can be combined or negated (e.g. no-bell,notify). notify-on-command-finish-after sets the minimum command duration before a notification is sent, defaulting to 5 seconds.

    This feature uses OSC 133 escape sequences to track command execution, so it requires shell integration to be enabled or a shell that sends OSC 133 sequences natively such as Fish or Nushell.

    Key Tables, Chained Keybinds, and catch_all

    PRs: #9984 #9961 #9977 #10098

    Ghostty 1.3 adds many new features to our keybind system for keybind power users: key tables, chained keybinds, and the catch_all special key.

    Key tables enable tmux-like modal keybinding workflows. A key table is a named set of keybindings that can be activated or deactivated on demand. When a table is active, key presses are looked up within that table first, allowing you to create entirely separate keybinding modes.

    Tables are defined using a / syntax on the existing keybind configuration. For example:

    keybind = resize/arrow_up=resize_split:up,10
    keybind = resize/arrow_down=resize_split:down,10
    keybind = resize/arrow_left=resize_split:left,10
    keybind = resize/arrow_right=resize_split:right,10
    keybind = resize/escape=deactivate_key_table
    keybind = resize/catch_all=ignore

    keybind = ctrl+a=activate_key_table:resize

    In this example, pressing ctrl+a activates the resize table. While active, the arrow keys resize splits and all other keys are ignored. Pressing escape deactivates the table and returns to normal keybinding behavior.

    On both macOS and GTK, a dedicated UI indicator shows when a key table is active, similar to the existing key sequence indicator.

    Chained keybinds let you bind multiple actions to a single key. Using the chain key, actions are appended to the most recently defined binding:

    keybind = ctrl+shift+f=toggle_fullscreen
    keybind = chain=toggle_window_decorations

    This triggers both actions when ctrl+shift+f is pressed. Chains work within key tables and with key sequences.

    catch_all is a new special key that matches any key not explicitly bound. It can be combined with modifiers (ctrl+catch_all=ignore) and used within key sequences (ctrl+a>catch_all=end_key_sequence), making it easy to build self-contained modal keybinding sets that don't leak unintended input to the terminal.

    Fine-grained Working Directory Inheritance Controls

    PR: #9158

    New configurations tab-inherit-working-directory and split-inherit-working-directory allow you to control working directory inheritance independently for new tabs, windows, and split panes. This was one of the most requested configuration features.

    window-inherit-working-directory = false
    tab-inherit-working-directory = true
    split-inherit-working-directory = true

    Longer term, we plan on supporting better conditional configuration in a more general way, but this specific use case was so highly requested that we added these specific options for now to get it in sooner.

    Rich Clipboard Copy

    PRs: #9418 #9431

    Clipboard copy now sets multiple content types on the clipboard (both text/plain and text/html) to enable rich text pasting with formatting so when you paste into a rich text editor, you get formatted text with colors and other styles preserved.

    The copy_to_clipboard binding now supports a parameter specifying the format to copy. In addition to mixed, plain, and HTML formats, the binding also supports vt which copies text with terminal escape sequences to preserve formatting when pasting into another terminal.

    Unicode and International Text Rendering

    PRs: #8757 #10895 #9680 #10465 #9883 #10179 #10295 #10332

    Text in Brahmic scripts such as Devanagari, Bengali, Tibetan, Javanese, Tai Tham, and Chakma now renders correctly. These scripts rely on font shaping to form ligatures, position combining marks, and join characters, and all of these are significantly improved.

    An update to Unicode 17 with full conformance to the grapheme clustering specification means multi-codepoint characters are correctly treated as single units for selection, cursor movement, and cell width calculation.

    The first row shows the previous version and the second row shows 1.3.0 rendering the same text. Notice the improved ligature formation, combining mark placement, and grapheme clustering — in the first column, the selection highlight now correctly covers the entire character as a single unit.

    Performance Improvements

    PRs: #9662 #9645

    Thanks to asciinema, we received ~4GB of public terminal recording data to analyze and optimize Ghostty's performance. This is exciting because it's based on real-world terminal usage, not just synthetic workloads.

    Using this data, we improved I/O processing considerably, lowering the time it took Ghostty to replay everything in the dataset from minutes to tens of seconds (with asciinema configured to ignore all pauses, of course). These improvements were also visible in synthetic benchmarks such as Alacritty's vtebench.

    In addition to I/O updates, the renderer was rearchitected, lowering the time the renderer holds the terminal lock by 2x to 5x. And in most frames, the renderer doesn't hold the lock at all thanks to improved dirty/damage tracking. This applies to both Metal and OpenGL.

    Stability Improvements

    PRs: #10337 #10401 #11089 #11109 #9594

    Ghostty 1.3 includes a significant investment in stability and robustness.

    This release fixes a major memory leak that Claude Code regularly triggered in prior Ghostty releases. This leak has existed since Ghostty 1.0 but was difficult or rare to trigger until Claude Code began exhibiting the perfect conditions to trigger this at scale, especially with their large user base. Details of the leak and the fix can be found in this specific blog post about it.

    We also ran this release through extensive AFL++ fuzz testing for Ghostty's terminal escape sequence parser (#11089) and the full VT stream processor (#11109). We identified and fixed around 10 crashes and potential memory safety issues through this process. None of these were known to cause any real-world issues, but they may have! As a longer-term goal, we'd like to spin up infrastructure to continuously fuzz Ghostty.

    We built a new testing tool called Tripwire (#10401) to systematically test errdefer cleanup paths by injecting failures at every try site. This uncovered and fixed several bugs including memory leaks, state corruption, and glyph cache corruption in the font subsystem. This only addresses bugs in error recovery paths, so this helps Ghostty be more robust in the face of unexpected errors such as OOMs, GPU driver issues, etc.

    On the memory side, we've optimized memory in a handful of places. Alt screen memory is now allocated on demand, saving several megabytes per terminal for sessions that never use it (#9594). There are a variety of minor improvements in all subsystems, however.

    AppleScript (macOS)

    PRs: #11208 #11251

    Ghostty now has built-in AppleScript support on macOS, enabling powerful automation and integration capabilities. Using AppleScript, you can inspect and control windows, tabs, splits, and individual terminals. In addition to simple creation and navigation actions, you can also send text, key, and mouse input.

    Some example workflows that are possible through scripting include automated terminal layouts, command broadcasting, jumping to terminals by working directory, and more.

    Here is a short example that targets the currently focused terminal in the frontmost Ghostty window:

    tell application "Ghostty"
    set term to focused terminal of selected tab of front window
    input text "pwd\n" to term
    end

    AppleScript is enabled by default and secured by macOS Automation permissions (TCC), so macOS will prompt before another app can control Ghostty. If you don't want AppleScript support at all, set macos-applescript = false.

    Important: We're treating this as a preview feature in 1.3. The AppleScript functionality didn't get as much time as other features to test in our pre-release builds, so we expect we'll make breaking API changes and add significant new features in 1.4 based on user feedback.

    Split Drag and Drop (macOS)

    PR: #10090

    You can now reorder splits on macOS by dragging them. When you hover near the top of a split, a grab handle appears that can be used to drag the split into any other split position. Simply grab the handle and drop the split where you want it; the terminal contents, working directory, and running processes all move with it.

    You can also drag splits out of windows or into new tabs, and all of this integrates with the undo/redo system so you can easily revert if you accidentally drop a split somewhere you didn't want it.

    This is a mouse-driven approach to rearranging your terminal layout without having to close and recreate splits. The implementation also lays the groundwork for future enhancements like dragging splits into new tabs or windows.

    A GTK implementation of this feature is planned for a future release.

    Unobtrusive Updates (macOS)

    PR: #9116

    Update notifications on macOS are now unobtrusive. If a terminal window is open, update notifications appear as a small pill in the titlebar or bottom corner of the window instead of a disruptive popup window. The pill itself can be dismissed with a right click if you want to further hide it.

    You can also trigger a full update and restart directly from the command palette with "Update and Restart" (#9131), making the entire update process keyboard-driven.

    System Requirements

    There are no changes to the system requirements from Ghostty 1.2.

    macOS: The minimum required macOS version for Ghostty 1.3 remains unchanged (macOS 13 Ventura).

    GTK: Ghostty 1.3 requires GTK 4.14 and libadwaita 1.5. This aligns with our GTK/Adwaita version policy. Systems with older GTK or Adwaita versions can work around this requirement by using an older version of Ghostty or a community-maintained snap or flatpak package.

    Important: This is the last version to support macOS 13. Starting with Ghostty 1.4 (and tip releases prior to 1.4), the minimum required macOS version will be macOS 14. Apple dropped security support for macOS 13 in the fall of 2025, so this change is in line with Apple's general support.

    Breaking Changes

    The following default behaviors have been changed in 1.3.0:

    • The default clipboard copy format has changed from text to mixed. The mixed format sets both plain text and HTML on the clipboard. If this causes issues, you must rebind copy_to_clipboard with a specific format. #9418

    • GTK: FreeType now defaults to light hinting instead of full hinting, matching the behavior of most other GTK applications. The old behavior can be restored via the freetype-load-flags configuration. #9253

    Full Changelog

    • Scrollback search is now available to search through terminal scrollback. This is triggered with cmd+f on macOS and ctrl+shift+f on GTK and comes with a number of new bindable actions. #189
    • Native scrollbars are now available to navigate scrollback. These can be controlled with the new scrollbar configuration. #111
    • Inherit working directory configuration can now be specified differently for windows vs. tabs vs. splits. #1392
    • Keybinds now support chaining multiple actions in sequence using the chain key, allowing a single keybind to trigger multiple actions (e.g., toggling fullscreen and window decorations together). #9961
    • Keybinds now support key tables: named sets of keybindings that can be activated and deactivated, enabling modal keybinding workflows. Tables support one-shot mode, catch-all fallthrough, stacking, and compose with key sequences and chained actions. #9963
    • New catch_all special key for keybindings that matches any key not explicitly bound. Supports modifiers (ctrl+catch_all=...) and trigger sequences (ctrl+a>catch_all=...). #9977
    • Data copied to clipboard now supports rich text and can be configured with copy_to_clipboard binding action parameters. #9396
    • Window and tab titles can now be set separately from split titles using the menu, command palette, or new keybind actions. #9879
    • Session search in the command palette lets you jump to any running terminal by searching its title or working directory, with tab color indicators (macOS). #9945
    • Support Kitty's click_events extension which lets clicking the prompt in supported shells move the cursor, such as Fish v4+ and Nushell 0.111+. #10536
    • Support OSC133 cl=line so bash and zsh get clickable prompts with the above. #10542
    • The Ghostty configuration can now have the .ghostty extension. #8689
    • Ghostty can now show notifications when a command finishes using the notify-on-command-finish configuration. This can be set to trigger under various conditions such as slow commands, unfocused windows, etc. #8991
    • A surface can now be marked "readonly" and it will no longer send any input events to the pty and will always warn before closing. This can be triggered by a new keyboard binding, command palette, etc. #8432
    • A new configuration key-remap can be used to remap keys from one to another within the scope of Ghostty. Example: key-remap = ctrl=super. #5160
    • A new configuration clipboard-codepoint-map takes a mapping to replace some codepoints when copying to the clipboard (writing the clipboard, specifically). This would allow copying things like symbols for computing, branch drawing, etc. #8383
    • A new configuration selection-word-chars can be used to configure the characters that determine word boundaries for double-click selection. #9335
    • A new configuration value mouse-reporting = false can be used to disable all TUI mouse reporting features. #8430
    • A new configuration value scroll-to-bottom = output that automatically scrolls the window to the bottom on any output (default off). #9938
    • A new configuration option split-preserve-zoom that starts with a single option navigation (default false). When navigation is set, zoomed splits will remain zoomed when split navigation (goto_split) is done. #8458 #9089
    • A new binding action goto_window:next and goto_window:previous to deterministically navigate through windows. #8387
    • A new binding action toggle_mouse_reporting toggles mouse reporting to the TUI. #9282
    • A new end_key_sequence binding action to explicitly end an active key sequence, flushing prior keys to the terminal without encoding the triggering key (e.g. ctrl+w>escape=end_key_sequence). #10098
    • The close_tab binding action takes a new parameter right which closes all tabs to the right. #9783
    • resize_split and toggle_split_zoom actions now return false when there is only a single pane, allowing performable: keybinds to pass the key through to the terminal application. #10376
    • The quick terminal now sets the GHOSTTY_QUICK_TERMINAL environment variable which can be used in any way, such as for custom shell prompts. #9673
    • The cursor shell integration feature now respects cursor-style-blink, using a steady bar when blinking is disabled instead of always using a blinking bar. #10643
    • Right clicking a URL will now highlight the full URL. #9298
    • Upgrade to Unicode 17. #8757
    • The +list-themes command now has a keybind to write a configuration file. #8930
    • Commands started with -e now set the terminal title to argv[0]. #9121
    • Custom shaders have many new uniforms such as cursor shape, position, previous position, time since change, color scheme, etc. to support more advanced shaders. #9416 #9417
    • OSC7 URI parsing now handles more edge cases such as MAC addresses better. #9193
    • Unsafe control characters in pasted text are now replaced with spaces to prevent malicious pastes from tricking users into executing unexpected commands, matching xterm's behavior. #10746
    • IME preedit text is now rendered with underlines instead of inverted colors for better readability and consistency across programs. #10368
    • Improved font rendering on some low-DPI monitors. #9432
    • For font metrics, round cell height from line height instead of ceiling. This change should give more consistent results between high and low DPI displays. #9648
    • Decouple balanced top and left window paddings to avoid diagonal resize window jitter. #9518
    • Update many default keybindings to work with other keyboard layouts. This should not affect standard US layouts. #9469
    • Ignore Unicode byte-order-mark (BOM) characters in the configuration file. #9490
    • Keypad variation sequences respect Unicode VS16. #9502
    • VS15/16 check now considers emoji bases properly. #9679
    • Grapheme break algorithm updated to match Unicode spec exactly. #9680
    • Fix rendering of wide grapheme clusters in scripts like Devanagari where multiple non-zero-width code points combine into a single cluster that should occupy two cells. #10465
    • Fix possible crash due to data race condition looking up hyperlinks. #9813
    • Fix possible crash due to data race with selection and copy. #9818
    • Fix a crash caused by a race condition between drawing Kitty image placements and the placement list being updated, triggered when rapidly cycling through images in applications like Yazi. #10680
    • Fix a major memory leak when pruning scrollback with non-standard sized pages. Non-standard pages (caused by emoji-heavy, hyperlink-heavy, or Claude Code output) were incorrectly returned to the memory pool instead of being unmapped. #10251
    • Fix rendering artifacts that could be caused in certain edge cases with insert lines or delete lines (IL/DL) VT operations. #10290

    Terminal Capabilities

    • vt: More complete and accurate parsing and implementation of OSC 133. #10427
    • vt: ConEmu OSC9 is now fully parsed (subcommand 1 to 12). Ghostty GUI only implements a subset of this but libghostty can parse it all. #3125
    • vt: Report color scheme events are now reported synchronously. #5922
    • vt: Modify other keys state 2 no longer encodes option as alt on macOS. #9406
    • vt: shift+backspace encodes properly for Kitty Keyboard Protocol. #9896
    • vt: CSI Scroll Up (\e[nS) now preserves scrolled-off lines in the scrollback buffer instead of erasing them, matching the behavior of other terminal emulators. This fixes Fish shell's Ctrl-L (scrollback-push) losing history. #9905
    • vt: Reset (RIS) now also resets the progress bar. #10168
    • vt: Suppress mouse reports for focus-transfer clicks so split focus changes don't emit unintended mouse input to terminal applications. #11167
    • vt: Parse Kitty text sizing protocol (OSC 66), not implemented in the GUI yet. #10315
    • vt: Parse (but do not implement) iTerm2 OSC 1337 extensions. #10417
    • vt: Parse (but do not implement) Kitty clipboard protocol (OSC 5522). #10560
    • vt: Significantly more tmux control mode parsing, but not hooked up to the GUI yet. #9803 #9860
    • vt: Fix crash with specially crafted large images in Kitty Graphics. #9579
    • vt: Fix crash when spamming BEL (0x07). #9800
    • vt: Ghostty terminfo now advertises support for SGR dim. #11144

    Shell Integration

    • nu: SSH shell integration now supported. #7877
    • fish: Add descriptions to fish shell completions for Ghostty. #9531
    • zsh: Fix literal \n appearing in window titles when running commands in zsh by stripping control characters instead of converting them to visible representations. #10341
    • bash: shell integration no longer depends on bash-preexec for Bash 4.4+, using native PS0 and PROMPT_COMMAND instead for faster and simpler hooks. Older Bash versions (e.g. macOS's 3.2) continue using bash-preexec. #10609
    • elvish: always report working directory changes, decoupling it from the title reporting feature. #10533
    • sudo shell integration feature is now more stable across all shells. #9891
    • Fix SSH cache failing when $TMPDIR and $XDG_STATE_HOME are on different filesystems. #10364
    • If cursor-style is manually set, default shell-integration-features to contain no-cursor. #8681

    macOS

    (Several macOS-specific improvements and fixes, including drag handle for reordering splits, default terminal app option, inline tab title editing, update notification pill, mouse button encoding, app intent for Apple Shortcuts, tab color setting, background blur options, bell audio, fullscreen configuration, close_all_windows binding, toggle_background_opacity binding, Cmd+Home/Cmd+End shortcuts, equalize splits on double-click, notification badge behavior, system bell setting, dictation icon placement, window sizing fixes, restore behavior, quick terminal state restoration, toggle_quick_terminal fix, unsafe paste text field fixed, close confirmation sheet attachment, Metal cursor color fix, Undo New Tab crash fix, command palette focus-follows-mouse fix, quick-terminal-size fix, custom app icon update fix, menu bar flash behavior, subpixel alignment, font shaping fixes, window-size clamping, tab overview hide, many windowing and rendering fixes.)

    GTK (Linux, FreeBSD)

    (Several GTK-specific improvements and fixes, including two-finger swipes to switch tabs, key tables UI parity, spatial split navigation wrapping, CLI new-window enhancements, cgroup scoping per-surface, split-modifying flicker fixes, window centering, paste_from_clipboard behavior, i3 border fix, Kitty keyboard protocol fix, gtk-enable-primary-paste respect, OpenGL version warning, FreeType hinting default, XKB mapping, prefers-color-scheme use.)

    Localization

    Ghostty 1.3 adds support for 6 new languages: Croatian, Kazakh, Latvian, Lithuanian, Spanish (as spoken in Spain), Vietnamese.

    Localization is maintained by volunteer contributors. If you want to help localize Ghostty in your language, please open a discussion on the GitHub repo. Thank you to all the volunteers who contributed to Ghostty's localization!

    Changes for Package Maintainers

    • Ghostty now requires Zig 0.15 to build. #8372

    Libghostty

    While not directly related to the Ghostty 1.3 release, one of the goals of the 1.3 development cycle was to begin focusing on libghostty in earnest, so I wanted to include an update on that here.

    During the 1.3 development cycle, libghostty was successfully extracted and is now available as a standalone Zig module. The Zig module is full featured and shares almost all of its code with Ghostty. Simultaneously, there is a work-in-progress C API. There are a set of Zig and C examples in the Ghostty repository.

    We aren't ready to tag a versioned release for either of these modules yet, but dozens of projects both free and commercial are already using libghostty, and I'm excited about it! If you're interested, there is a libghostty channel in our Discord.

    The Ghostty development team has decided to separate the Ghostty GUI and libghostty release cycles, so libghostty will have its own versioning and release schedule independent of the Ghostty desktop application. This allows us to maintain different paces of development for the library and the desktop application, which have different user bases and stability requirements.

    We aren't sure yet when we'll tag the first libghostty releases, but work continues on both the Zig module and C API, and we hope to have a release soon!

    Financial Update

    Ghostty officially became a non-profit project during the 1.3 development cycle.

    This matters because it provides enforceable assurances that Ghostty cannot be sold, pivoted, or repurposed for commercial gain. The non-profit structure protects the people and communities that adopt and contribute to Ghostty, ensuring the project is stewarded by a mission-driven entity that prioritizes public benefit over private profit. For more on the motivation behind this decision, see the original announcement.

    We have now officially signed 5 contributor contracts, compensating individuals who are involved in the project and have consistently demonstrated high-quality work. These contracts cover community management, graphics work, Unicode compatibility, GTK, and Discord/GitHub integrations. These contracts commit almost 300 hours of billable work, and we're excited to provide paid opportunities for contributors to continue their work on Ghostty.

    If you'd like to support Ghostty, please visit our sponsorship page.

    Roadmap

    With highly requested features like scrollback search and native scrollbars now implemented, I believe Ghostty 1.3 is a great release that delivers on the longstanding goal to make Ghostty the "best existing terminal emulator".

    "Best" will always be subjective, of course, but the point is that Ghostty 1.3 has all the mainstream features that users expect from any established terminal emulator, and it delivers them with a high level of polish and performance. We'll continue to improve Ghostty, of course, but this marks a major milestone in the project's development.

    The short-term focus will be on stabilizing and tagging a libghostty release. Dozens of projects are already using libghostty, and I believe that ultimately libghostty will be more widely used and influential than the Ghostty desktop application itself, so this is an important next step for the project.

    There is also a lot of non-profit development work to be done such as building out a corporate sponsorship program, providing more tangible benefits for sponsoring the project, better advertising what Ghostty is doing with funds, and more.

    Ghostty 1.4 will continue to iterate and improve the desktop application. I don't want to promise any specific features, but we're working hard on making Ghostty scriptable, enabling a true Tmux control mode, graphical preferences, and more.

    To answer a common request, support for Microsoft Windows is still not planned. This still remains part of the long term roadmap, but I think that focusing on a capable and powerful libghostty will enable better Windows support in the long run. libghostty itself already supports Windows.

    Ghostty 1.4 will continue the 6-month release cycle and is planned for September. For users interested in more frequent updates, we recommend using the tip release channel on macOS or building from source frequently on Linux.

    Edit on GitHub

    Original source Report a problem
  • All of your release notes in one feed

    Join Releasebot and get updates from Ghostty and hundreds of other software products.

  • Oct 23, 2025
    • Date parsed from source:
      Oct 23, 2025
    • First seen by Releasebot:
      Dec 17, 2025
    Ghostty logo

    Ghostty

    Ghostty 1.2.3

    Ghostty 1.2.3 is a patch release with a critical deadlock fix, macOS titlebar tabs improvements, and refined font rendering. It fixes long standing titlebar issues and stabilizes the 1.2.x line.

    Release notes for Ghostty 1.2.3, released on October 23, 2025.

    Ghostty 1.2.3 features two weeks of work with changes from 6 contributors over 27 commits. This is a patch release primarily focused on fixing issues introduced in the 1.2.x series.

    Important

    This release contains a critical fix for a deadlock scenario that can happen on all platforms. We highly recommend that all users on prior 1.2.x versions upgrade to this version at their soonest convenience.

    Highlights

    • macOS Titlebar Tabs Improvements

      • PRs: #9090 #9163 #9168 #1787 #1813 #1945 #8612
      • Ghostty 1.2.3 includes multiple fixes for macos-titlebar-style = tabs, including many issues that have existed since pre-1.0! Additionally, multiple Tahoe-specific (macOS 26) bugs related to this configuration were also fixed, since Tahoe introduced a dramatically different tab bar.
      • An overview of the changes:
        • Fixed title misalignment and clipping in tab titlebar style.
        • Corrected titlebar coloring in fullscreen mode when titlebar tabs are enabled.
        • Resolved issues where theme changes would cause the titlebar to lose styling.
        • Fixed truncated title appearing in top-left corner when using tab titlebar style in fullscreen.
        • Improved behavior with macOS 26 native fullscreen and titlebar tabs.
    • Font Rendering Improvements

      • PRs: #9142 #9152 #9160
      • Ghostty 1.2.3 continues to include a number of refinements to the rewritten font rendering system introduced in 1.2.0. The changes in Ghostty 1.2.3 focus primarily on icon glyphs (e.g. Nerd Fonts). Ghostty 1.2.3 users should see better sized icons in all scenarios.
      • This addresses all currently known font rendering issues, particularly those stemming from the rewritten renderer in 1.2.0. Note that there are still other known font-related issues but they either predate Ghostty 1.2 or are otherwise unrelated to font rendering (and are instead related to font discovery, loading, shaping, etc.).

    Full Changelog

    Full list of closed issues on GitHub.
    In each section, we try to sort improvements before bug fixes.

    • font: Numerous tweaks to improve various edge cases, especially around icon glyphs. #9076 #9142 #9160 #9152

    • terminal: add semi-colon character to word boundary list for selection. #9069

    • input: modify other keys 2 should use all mods, ignore consumed mods. This fixes a misencoding that caused shifted modifiers to not work with tmux (but also any other terminal program using modify other keys state 2) #9289

    • Fix a deadlock scenario where programs that emit many color change or query operations could cause Ghostty to hang. #9224

    • Fix a resource leak by not starting the scroll timer when scrolling outside the viewport if the scroll timer is already active. #9195

    • Fix memory corruption that could happen when starting a scroll in one screen (primary vs alt) and continuing to scroll after the terminal program switched screens. #9223

    • renderer: fix garbled rendering under some cases. #9252

    • shell-integration: ssh-terminfo now caches properly for IPv6 addresses. #9251 #9281

    • shell-integration: cursor integration now works in vi mode for fish. #9157

    • shell-integration: no longer updates universal fish_user_paths variable. #9273

    • macOS

      • macOS: Quick terminal size is now properly remembered per screen. #9256
      • macOS: goto_split direction is now compatible with performable bindings. #9283 #9284
      • macOS: window-position-x/y works properly paired with window-width/height. #9313
      • macOS: Fix UI hang when pasting large unsafe text. #9322 #9324
      • macOS: Fixed multiple macos-titlebar-style=tabs related issues. #1787 #1813 #1945 #8612 #9090 #9163
      • macOS: New Tab action now reliably opens tab instead of window when appropriate. #9124
      • macOS: Fix crash if Cocoa APIs return a nil locale. #9290
    • GTK (Linux, FreeBSD)

      • GTK: If title is configured, set the correct window title immediately. #9120
      • GTK: quick terminal autohide now works properly. #9145 #9139

    Changes for Package Maintainers

    • A new -Demit-themes (default true) build option has been added to build Ghostty without any bundled themes. This was added for packagers who are sensitive to licensing issues that may exist in our upstream dependency. We're looking into this in more detail but this is meant as a short-term solution to avoid the themes entirely if there are concerns. #9288

    Roadmap

    We don't plan on releasing any further 1.2.x releases, except in the circumstance that a critical issue is found. The 1.2.x series has already been very stable, and we believe 1.2.3 addresses the remaining major issues that exist.
    That doesn't mean Ghostty is without bugs, of course! We'll continue to fix bugs and improve features, but unless those bugs are critical, we'll hold their release until Ghostty 1.3.0.

    Edit on GitHub

    Original source Report a problem
  • Oct 8, 2025
    • Date parsed from source:
      Oct 8, 2025
    • First seen by Releasebot:
      Dec 17, 2025
    Ghostty logo

    Ghostty

    Ghostty 1.2.2

    Release notes for Ghostty 1.2.2, released on October 8, 2025.

    Ghostty 1.2.2 is a hotfix to fix a critical regression from 1.2.1 where we accidentally forgot to backport a memory leak fix. As a result, Ghostty 1.2.1 has a significant memory leak under certain scenarios that can cause runaway memory growth. This issue affects all platforms.

    We've also included a very small fix for macOS font rendering that would cause very small (one pixel or half pixel) offsets for some glyphs that could result in blurriness.

    This was released very shortly after 1.2.1, please see the 1.2.1 release notes.

    Original source Report a problem
  • Oct 6, 2025
    • Date parsed from source:
      Oct 6, 2025
    • First seen by Releasebot:
      Dec 17, 2025
    Ghostty logo

    Ghostty

    Ghostty 1.2.1

    Ghostty 1.2.1 patches fallout from 1.2.0 with fixes and a few improvements. Highlights include shell PATH integration and precision scrolling for trackpads, plus glyph adjustments and platform tweaks for macOS and GTK for smoother performance.

    Release notes for Ghostty 1.2.1, released on October 6, 2025.

    Ghostty 1.2.1 features two weeks of work with changes from 13 contributors over 62 commits. This is a patch release primarily focused on fixing issues introduced in the 1.2.0 release. It includes a small handful of improvements, too.

    Highlights

    Font Rendering Improvements

    PRs: #8563 #8580 #8738 #8720 #8847
    Ghostty 1.2.0 contained a substantial overhaul of the font rendering system. As expected with such a large change, some issues were discovered outside of our testing. Ghostty 1.2.1 addresses many of these issues.
    An overview of the changes:

    • Nerd Font icons are now larger and better matched in size relative to each other, making better use of available cell space. Icons wider than a single cell are now left-aligned rather than centered across cells.
    • CJK characters no longer appear oversized when using wide-aspect primary fonts. The IC width (ideographic character width) is now upper-bounded by measuring the overall bounding box of ASCII characters.
    • Glyph constraints are now applied before thickening and centering operations, ensuring that icon sizes and positions are consistent regardless of font size, thickening strength, or display DPI.
    • Fixed bugs in Nerd Font patch extraction where rules were applied to wrong glyphs due to codepoint offset issues, and irrelevant patch sets were incorrectly included.
    • Improved FreeType glyph measurements to ensure glyphs are measured with the same hinting as they are rendered.

    Shell Integration Adds ghostty to PATH

    PR: #8976
    Shell integration now automatically adds GHOSTTY_BIN_DIR to your PATH, making the ghostty binary available in many shells without additional configuration.
    Ghostty previously (and still) adds ghostty to your PATH prior to executing the shell, but many shell configurations reset PATH. This change adds an additional layer as part of the shell integration scripts to increase the chances that ghostty is available in your shell.
    This is supported for bash, zsh, fish, and elvish.

    Mouse Scroll Multiplier for Precision Scrolling Devices

    PR: #8927
    The mouse-scroll-multiplier configuration now supports precision scrolling devices like Apple trackpads. You can now independently control multipliers for both discrete (mouse wheel) and precision (trackpad) scrolling, making navigation through large scrollback buffers smoother and more predictable across different input devices.
    Examples:

    • Apply the same multiplier to both precision and discrete
      mouse-scroll-multiplier = 3

    • Apply different multipliers (order doesn't matter)
      mouse-scroll-multiplier = precision:0.1,discrete:3

    • Apply only to precision, use default for discrete
      mouse-scroll-multiplier = precision:2

    The default precision multiplier is 0.1 while the default discrete multiplier remains 1.

    Full Changelog

    Full list of closed issues on GitHub.
    In each section, we try to sort improvements before bug fixes.

    • config: font-size now reloads at runtime if font wasn't manually set. #8680
    • cli: +list-themes now includes cursor and selection colors in preview. #8446
    • cli: +edit-config properly handles $EDITOR values with arguments. #8898
    • config: command-palette-entry now supports commas in fields. #8849
    • config: binding values containing = now parse properly. #8675
    • Scrolling no longer reverses direction when dragging mouse outside the window. #8683
    • Config template creates properly even if config directory already exists. #8892
    • config: treat empty XDG environment variables as not existing. #8830
    • shell-integration: now adds GHOSTTY_BIN_DIR to PATH for all supported shells. #8976
    • shell-integration/bash: mark ssh wrapper as a function to avoid alias conflicts. #8647
    • i18n: add Croatian (hr_HR) translation. #8668
    • i18n: add Traditional Chinese (zh_TW) translation. #6773
    • i18n: Portuguese translation updates. #8633
    • contrib/vim: use :setf to set the filetype. #8914

    macOS

    • macOS: implement bell-features=border on macOS. #8768
    • macOS: bell-features=title now works properly. #8766
    • macOS: progress bar widget now renders correctly on macOS 26. #8731 #8753
    • macOS: allocation error when editing config file no longer causes a crash. #8886
    • macOS: custom shaders now work on Intel GPUs. #8751 #8749
    • macOS: "New Terminal" shortcut properly passes desired configuration to splits. #8638
    • macOS: add support for ~ expansion in macos-custom-icon. #9024
    • macOS: quick terminal restores size more reliably when used with muiltiple monitors. #8796
    • macOS: "New Terminal" app intent now opens only one terminal when Ghostty isn't running. #8669
    • macOS: "Copy Screen to Temporary File and Open" action now opens the file properly. #8763
    • macOS: window-position-x/y now correctly use top-left corner as reference. #8672 #8760
    • macOS: "New Ghostty Tab Here" service now opens a tab instead of a new window. #8783 #8784
    • macOS: Services no longer show warning dialog "the service could not be used". #8785 #8790
    • macOS: window-step-resize now works more reliably with Stage Manager. #9020
    • macOS: Delay app icon update in syncAppearance to improve startup time. #8792
    • font/coretext: crash with certain RTL languages and trailing spaces no longer occurs. #9002

    GTK (Linux, FreeBSD)

    • GTK: Enter key now confirms "Change Terminal Title" dialog. #8949
    • GTK: dragging last tab out of tab overview no longer crashes. #8944 #8955
    • GTK: minimum-contrast for black text now sets proper color instead of being invisible. #8782
    • GTK: quit-after-last-window-closed-delay now works as expected. #9052 #9053
    • GTK: split-divider-color now applies correctly. #8853
    • GTK: unfocused-split-fill now renders properly. #8813
    • GTK: bell features now trigger on every BEL character. #8962
    • GTK: duplicate signal handlers no longer cause multiple toasts. #9001
    • GTK: Flatpak-aware resource directory support restored. #8816

    Changes for Package Maintainers

    • Ghostty now limits builds to 32 cores on Linux to workaround a known memory corruption bug in Zig, allowing Ghostty to be reliably built on machines with more than 32 cores. This bug has been resolved in Zig but won't be backported to the 0.14.x series that Ghostty 1.2.x relies on. #8925

    Roadmap

    We believe there will likely be a 1.2.2 release at some point to continue to address minor issues introduced by the changes in 1.2.0 and 1.2.1. A possible 1.2.2 release is probably going to be a mid-cycle release (months away) rather than a quick follow-up.
    As it stands, the 1.2.x series has been very stable and we don't feel a rush to release any more bugfix releases. We've heard very positive feedback about the release and we're happy to see people enjoying the new features.
    See the roadmap from the 1.2.0 release notes for bigger picture plans.

    Edit on GitHub

    Original source Report a problem
  • Mar 24, 2025
    • Date parsed from source:
      Mar 24, 2025
    • First seen by Releasebot:
      Dec 17, 2025
    Ghostty logo

    Ghostty

    Ghostty 1.1.3

    Ghostty 1.1.3 patches GTK 4.18 and Gnome 48 compatibility with stability fixes across platforms. No new features, just bug fixes and compatibility tweaks, setting the stage for the upcoming 1.2.0 release.

    Release notes for Ghostty 1.1.3, released on March 24, 2025.

    Ghostty 1.1.3 primarily addresses Gnome 48 and GTK 4.18 compatibility issues but also includes bug fixes for all platforms. This release contains no features or improvements and is only focused on stability and compatibility. The next major release (1.2.0) will include new features and improvements. This release includes changes from 11 contributors over 21 commits.

    Highlights

    Gnome 48, GTK 4.18 Compatibility

    PR: #6877

    Ghostty 1.1.3 is fully compatible with Gnome 48 and GTK 4.18.

    GTK 4.18 changes the default renderer for GTK applications to the "ngl" renderer. This change exposed some bugs in Ghostty's rendering code that caused major visual glitches that effectively made Ghostty unusable on GTK 4.18 with prior versions (1.1.2 and earlier).

    Since Ghostty now works with all current GTK GSK renderers, the gtk-gsk-renderer configuration is deprecated and no longer has any effect. If users want to force a specific GTK renderer, they can use the standard GTK GSK_RENDERER environment variable. The configuration option still exists but will be removed in Ghostty 1.2.0.

    Full List

    Full list of closed issues on GitHub.

    • OSC 21 (Kitty color protocol): Ghostty no longer sends a response for non-query requests. #5770
    • The pty no longer has an initialize size of 0x0. The size is something non-zero but may still be incorrect due to a race condition between initializing the pty and drawing the GUI window. We do not consider this a bug. #5776
    • Increase the maximum number of parameters for CSI sequences to 24. This fixes some SGR sequences that were not working properly in Kakoune. #5949
    • The default binding for equalize_splits is now usable by default for US (and similar) keyboard layouts. It was previously an impossible binding. The binding is super+ctrl+shift+plus. #5646
    • The elvish shell integration sudo feature now works properly. #5992

    macOS

    • macOS: The new tab button is now more visible with semi-transparent dark backgrounds. #5897
    • macOS: New windows created while the quick terminal is in focused now properly transfer focus to the new window. #5834
    • macOS: Fix an issue where the terminal draw area would appear garbled until focused under various conditions, most reliably when a DPI change occurred. #6008
    • macOS: Fix an issue where the terminal inspector menu item would become deactivated under certain conditions in the Quick Terminal. #6024
    • macOS: The equalize splits keybind and menu item now only affect the focused tab, as expected. #6080

    Linux (GTK)

    • GTK: Fix various rendering issues with the "ngl" GSK renderer. This resolves compatibility issues with GTK 4.18 and Gnome 48. #6877
    • GTK: Treat negative content scale values from GTK as 1.0. This fixes some known default setting issues on Gentoo systems. #5954
    • GTK: Make the split drag handle area smaller to allow selecting text on the boundary. This fix isn't perfect but is an improvement. A more comprehensive fix is planned for 1.2.0. #6000
    • GTK: The title configuration is now respected when a new tab is created from the tab overview. #6032
    • GTK: Improve the reliability of Korean input methods, specifically the fcitx5-hangul input method. #6779

    Changes for Package Maintainers

    • The fetch-zig-cache.sh script is back in the source tarball. This was erroneously removed in 1.1.1 and 1.1.2. #5762
    • A new build.zig.zon.txt file is included in the source tarball. This is an easily parsable file that contains the URL of every dependency used to build Ghostty (for all configurations, so this includes optional dependencies). #5764

    This release still requires Zig 0.13, but note that the next major release (1.2.0) will require Zig 0.14. This is just a heads-up for package maintainers. The main branch of Ghostty is already updated to Zig 0.14 so you can start testing now, if you wish. There is no schedule for the 1.2.0 release yet, we expect it to still be months away.

    Any future patch releases for 1.1.x will continue to require Zig 0.13.

    Roadmap

    The focus of our efforts remain on the 1.2.0 release, which is shaping up very nicely. We didn't expect to have a 1.1.3 release, but the compatibility issues with GTK 4.18 and Gnome 48 were severe enough that we felt it was necessary to release a patch.

    I don't want to make any promises for any specific features coming in 1.2.0, but we are working hard to address many of the most requested features and improvements.

    Ghostty 1.1.x has been a very stable series, and we are in no rush to ship 1.2.0, so there is no timeline for that release yet. We will cut the release when we feel it is ready. Thank you!

    Edit on GitHub

    Original source Report a problem
  • Feb 13, 2025
    • Date parsed from source:
      Feb 13, 2025
    • First seen by Releasebot:
      Dec 17, 2025
    Ghostty logo

    Ghostty

    Ghostty 1.1.1

    Ghostty 1.1.1 patches regressions from 1.1.0, fixes macOS input and discrete GPU issues, and adds SSD support on X11. It tightens IME stability, resolves crashes, and includes several usability improvements. Roadmap points to a larger 1.2.0 release.

    Release notes for Ghostty 1.1.1, released on February 13, 2025.

    Ghostty 1.1.1 features two weeks of work with changes from 13 contributors over 125 commits. The focus of this release is on fixing regressions or bugs introduced as part of the 1.1.0 release. We've also snuck in some nice improvements to existing features.

    Important

    A critical regression was found in Ghostty 1.1.1 on macOS that caused control-modified keys to not work properly in programs using the Kitty Keyboard protocol such as Neovim and Fish 4.0. This was fixed in 1.1.2.

    Highlights

    Server Side Decorations (SSD) on Linux X11

    PR: #5533
    Ghostty 1.1.0 introduced support for server-side decorations (SSD) on Linux for Wayland compositors. This allows Ghostty to look and feel more like a native application on a wider variety of desktop environments. Notably, however, this did not work on X11.
    With Ghostty 1.1.1, we've added support for SSD on X11 as well when window-decoration = server. X11 doesn't provide a standard way to tell us if it prefers SSD or client-side decorations (CSD), so SSD on X11 only works with the explicit server configuration and does not work with the auto value.

    Continued Input Method Editor (IME) Improvements

    PR: #5550, #5448
    A lot of effort went into Ghostty 1.1.0 to improve IME support, but ironically broke the scenario where no input method was active (the GTK "simple" input method). This has been fixed in 1.1.1. A workaround in 1.1.0 was to install ibus or fcitx. This is no longer necessary, and the "simple" input method should work as expected.
    Additionally, on macOS, improved IME support regressed the ability for certain keyboard layouts to input control characters (e.g. ctrl+c). This has been fixed in 1.1.1.

    macOS: Renderer Improvements for Intel GPUs

    PR: #5625, #5652
    It turns out Ghostty was triggering undefined behavior on macOS when using discrete GPUs. Practically, this only affected Intel Macs because all Apple Silicon Macs have integrated GPUs and Ghostty will always prefer an integrated GPU if available for power efficiency.
    The undefined behavior would sometimes work but sometimes result in rendering artifacts or other strange visual behaviors. We now properly detect discrete GPUs and use the proper APIs and behaviors to avoid undefined behavior.

    Full List

    Full list of closed issues on GitHub.
    In each section, we try to sort improvements before bug fixes.

    • goto_split and goto_tab now work properly with the performable: keybind prefix. #5644
    • The +list-actions CLI command now includes actions that have no associated documentation. #4958
    • Added keyboard navigation to the terminal IO window for the terminal inspector. #3909
    • Fix a crash that could occur when resetting the terminal with Kitty graphics on the screen. #5693
    • Fix a crash that could occur with very large OSC8 hyperlinks. There are likely other scenarios where this crash could be triggered but the entire class of crash has been resolved. #5666
    • Fix an issue where the character under the cursor would not be visible when the cursor color matched the background color. #5570
    • Fix crashes that could occur when loading themes that were not files. #5632
    • iTerm2 color themes updated to db227d159 #5511

    macOS

    • macOS: Add a handful of new alternate artist-drawn icon choices. These can be set using the macos-icon configuration. #5696
    • macOS: Place the window at the location of the last focused window on startup, following the behavior of other native macOS applications. #5529
    • macOS: Close confirmation now appears if there is an active but hidden quick terminal that requires close confirmation. #5450
    • macOS: Fix control characters not working with certain keyboard layouts. #5448
    • macOS: Fix graphical flickering when invoking the move_tab keybind. #5729
    • macOS: toggle_visibility now restores focus to the proper tab when called from a global keybind. #5692
    • macOS: Fixed an issue where some command characters such as cmd+backtick would leak the unmodified character into the terminal. #5558
    • macOS: toggle_visibility no longer has any effect while the window is in native fullscreen. Previously, it would cause the window to lose focus. #5472
    • macOS: Fix undefined behavior for discrete GPUs. #5625
    • macOS: Update our Sparkle dependency to 2.6.4 to fix security issues. #5598

    Linux (GTK)

    • GTK: Server-side decorations (SSD) now work on X11. #5533
    • GTK: Set the WINDOWID environment variable to the X11 window ID. #5650
    • GTK: Fix incorrect context menu location in certain circumstances. #5710
    • GTK: The "simple" input method now works properly. #5550
    • GTK: Add option to disable color management to workaround GTK bugs. #5593
    • GTK: window-decoration=none works properly on GNOME #5463
    • GTK: Remove CSD styling such as borders when CSDs are not in use. #5581
    • GTK: Nautilus integration now uses a properly named file. #5469
    • GTK: Close cgroup file descriptor after clone to prevent a small fd leak. #5515

    Changes for Package Maintainers

    • A new Zig dependency zig-gobject was introduced. This is licensed 0BSD. The introduction of this dependency does not change the existing process for packaging Ghostty.

    Roadmap

    At the time of this release, we do not plan to have followup patch releases. We believe the remaining bugs are minor and can be addressed as part of a future, larger 1.2.0 release. We will continue to monitor the issue tracker and pull requests for any critical issues that may arise.
    The focus will shift to the 1.2.0 release. This will be a larger release with more significant changes and features. The timeline for this release is not yet determined, but is likely to be several months away.
    One major breaking change planned with 1.2.0 for Linux is to require libadwaita. We announced this intention as part of the 1.1.0 release and have asked for feedback if this is an issue. Before providing feedback, please carefully read the details about this change.

    Original source Report a problem
  • Feb 13, 2025
    • Date parsed from source:
      Feb 13, 2025
    • First seen by Releasebot:
      Dec 17, 2025
    Ghostty logo

    Ghostty

    Ghostty 1.1.2

    Release notes for Ghostty 1.1.2, released on February 13, 2025.

    Ghostty 1.1.2 is a hotfix to fix a critical regression from 1.1.1 on macOS that caused control-modified keys to not work properly in programs using Kitty Keyboard protocol such as Neovim and Fish 4.0.

    This was released on the same day as 1.1.1, please see the 1.1.1 release notes.

    Note

    There are no changes in this release for Linux. Package managers can skip this release and stay on 1.1.1 until the next release if that is more convenient.

    Original source Report a problem
  • Dec 31, 2024
    • Date parsed from source:
      Dec 31, 2024
    • First seen by Releasebot:
      Dec 17, 2025
    Ghostty logo

    Ghostty

    Ghostty 1.0.1

    Ghostty 1.0.1 delivers security fixes, a zero configuration default config, bitmap font support, and numerous UI and stability improvements across macOS and Linux.

    Security

    • GHSA-5hcq-3j4q-4v6p. Fixed a security vulnerability where Ghostty was improperly handling window title sequences in such a way that could lead to arbitrary code execution (required user interaction).
    • GHSA-hfg5-8q2c-crhc. The file created with write_*_file keybind actions previously defaulted to mode 0644 allowing any local user to read the file. The file now defaults to mode 0600 to prevent unauthorized access.

    Highlights

    Default Configuration File

    PR: #3460
    Ghostty will now create a default configuration file on launch if no non-empty configuration files are found. In line with our zero configuration philosophy, the default configuration file only has comments, but the comments help educate users on file location, syntax, and documentation.
    For the 1.0.0 release, we noticed there was a significant amount of confusion about where the configuration file was located, how to edit it, and what options were available. This change is intended to help users better understand how to configure Ghostty.

    Bitmap Font Support

    PR: #4115 (CoreText), #3837 (Freetype)
    Ghostty now supports bitmap fonts on both macOS and Linux. Bitmap fonts must still be in truetype format, but may contain bitmaps for each glyph instead of outlines.

    macOS: "Settings" Improvements

    PR: #4004
    The "Settings" menu option (open_config keybinding action) has improved in several ways.
    First, Ghostty now finds the first non-empty configuration file to open if one exists. Previously, Ghostty would always open the XDG configuration path first, even if the AppSupport path existed. This led to confusion because the AppSupport path overrides the XDG path. Now, Ghostty will open the AppSupport path if it exists, and if not, it will open the XDG path.
    Second, Ghostty now properly prioritizes opening the AppSupport path over the XDG path if neither path exists. This is important because the AppSupport path overrides all other paths on macOS.
    Third, Ghostty now uses the -t flag with open to open the configuration file in a text editor.
    Note
    A future update will allow users to use their $EDITOR to open the configuration file. And another future update will allow users to use a GUI to modify the configuration file.

    Improvements

    • Color values now accept shorthand hex values (e.g. #ABC). #4111
    • confirm-close-surface can now be set to always to always show the confirmation dialog when closing a window. #3700
    • macOS: Add "terminal" keyword to the Spotlight search metadata. #3745
    • GTK: Add window-titlebar-foreground and window-titlebar-background configuration options. #3806
    • Bundled iTerm2 color schemes updated to e030599a.

    Bug Fixes

    Full list of closed issues on GitHub.

    • keybinds with triggers that map to a key are now treated as a translated key and not a unicode trigger, i.e. cmd+1 now works in addition to cmd+one and cmd+. is the same as cmd+period. #4147
    • write_selection_file would sometimes write empty contents. #4078
    • Hyperlinks within TUI applications are more stable. #3903
    • Reloading configuration no longer overrides OSC 10/11/12. #3228
    • scrollback-limit configuration now accepts numbers larger than 32-bit. #3906
    • Fix issues background-opacity on both macOS and Linux. #3347
    • Fix a crash that could happen if --font-family="" was set specifically on the command-line. #4151
    • vt: mode 2031 DSR reports are no longer sent for OSC 10/11/12 in accordance with the updated specification. #3994
    • vt: fix direct-color parsing edge cases #4216
    • bash: shell integration works better with sudo aliases. #4080

    macOS

    • macOS: Fixed a resource leak where windows were not fully destroyed. #4128
    • macOS: Fixed an issue where toggle_visibility would bring up unusable "ghost windows" in certain circumstances. #3219
    • macOS: Quick Terminal now works with focus-follows-mouse. #3337
    • macOS: Titlebar is now opaque like the rest of Ghostty when fullscreen. #3834
    • macOS: Exiting fullscreen now restores proper background opacity. #3553
    • macOS: open_config action now prefers AppSupport path over XDG to match loading priority. #3953
    • macOS: open_config action now uses the -t flag with open so that a text editor opens. #3284
    • macOS: Fixed an issue that would sometimes cause the quick terminal to consume 100% CPU, causing significant battery drain. The quick terminal now idles with no CPU usage. #4055
    • macOS: App bundle now contains the nvim directory. #3966
    • macOS: Help menu item opens the Ghostty documentation. #3990
    • macOS: Blur radius being unset now properly reloads at runtime. #3954
    • macOS: Fix startup crash when $HOME was not writable. #3949

    Linux (GTK)

    • GTK: Detect proper system color scheme on older GTK versions by falling back to a deprecated API if the recommended one is not available. #4035
    • GTK: Fixed a broken window when both gtk-titlebar=false and gtk-tabs-location=hidden. #3178
    • GTK: Fix version comparison that was incorrectly detecting minimum GTK versions for some features. #3977
    • GTK: Install the 1024x1024 app icon for supporting desktop environments. #4003
    • GTK: Fix artifacting issues when window-decoration=false and gtk-titlebar=true. #3999
    • GTK: Tab overview is now styled when window-theme=ghostty (requires libadwaita 1.8). #3920
    • GTK: Tab overview works even when gtk-titlebar=false. #3940
    • GTK: Add a small delay to title changes to avoid flickering. #3746
    • GTK: Add xdg-terminal-exec fields to the desktop file. #3853
    • GTK: Support building against libgtk without X11 support. #3748
    • GTK: Fix possible segfault when closing surfaces. #3694

    Changes for Package Maintainers

    • The Ghostty source tarball is now named ghostty-${VERSION}.tar.gz (from ghostty-source.tar.gz) and extracts to a directory named ghostty-${VERSION} (from ghostty-source). This better aligns with standard source tarball conventions. The PACKAGING.md file has been updated to reflect this change. #3490
    • DESTDIR now works properly as documented in PACKAGING.md. #3426

    Known Issues

    Ghostty 1.0.1 still contains many known issues, but is considered stable for general, professional use.
    We are working hard to triage and resolve these issues. This release addresses what we felt were the most critical issues, especially given many people are about to return from holiday and get back to work. Please see the GitHub discussions and issue tracker for more information on known or newly discovered issues.

    Roadmap

    We plan to release a version 1.0.2 in the near future. We don't want to get in the habit of releasing too many patch versions, but there are still a number of important issues discovered from our initial public release that we feel are important to resolve as quickly as possible.
    The major categories of issues we are looking into for 1.0.2 are keyboard input issues especially with non-US keyboard layouts, xterm compatibility issues, and GUI issues on both Linux and macOS.
    Long term, we plan to follow a general pattern of only releasing one or two patch versions after a significant release, followed by a months-long period of development towards the next significant release1. This pattern will allow package maintainers to keep up with our releases and get them into distribution channels without too much churn, and allow maintainers to focus on new features and improvements.

    Footnotes

    1. Barring any critical issues or security advisories that require immediate attention. ↩
    Original source Report a problem

This is the end. You've seen all the release notes in this feed!

Related vendors