1.4.0 – Launch Notes


Ghostty 1.4.0 is a significant launch that features massive efficiency and
reminiscence enhancements, a 100% full Kitty graphics implementation together with
animation and relative placements (the primary non-Kitty terminal to take action),
SSH integration enhancements, and lots of extra enhancements and fixes
throughout all platforms.

This launch options 7 months of labor with adjustments from
172 contributors over 2,889 commits. Thank you to all of the contributors,
maintainers, group moderators, translators, packagers, and customers
who every helped make this launch doable.

These launch notes are painstakingly and lovingly hand-crafted
by human Ghostty maintainers, together with the total changelog. They take
a mixed 16+ hours to put in writing, so please take pleasure in. 🥰

  • GHSA-4hwh-wx3w-3fqg.
    Paste safety did not deal with carriage returns as line endings, so a
    paste may run a command with out affirmation in applications that do not
    use bracketed paste. This requires consumer interplay (copy-paste) to
    set off.
  • GHSA-mhff-mv4q-fp63.
    Malicious Kitty graphics instructions may crash or cling Ghostty, power
    big allocations, or in restricted circumstances learn or delete information outdoors the
    allowed momentary directories. This solely requires displaying malicious
    output.
  • GHSA-hcr9-7hcr-mjm8.
    Malicious terminal output may crash Ghostty, closing each window,
    by way of tmux management mode. tmux would not must be put in. This impacts
    Ghostty 1.3.0 and 1.3.1.
  • GHSA-hp9c-qp4q-cpw3.
    The similar affect as above, by way of a tmux management mode structure with a
    zero-sized or outsized pane. This impacts Ghostty 1.3.0 and 1.3.1.
  • GHSA-w9q4-5jvv-mcv4.
    Clearing the display into scrollback may corrupt reminiscence if it deleted
    the scrollback web page holding a styled or hyperlinked cursor. This solely
    requires displaying malicious output, however solely with a small
    scrollback-limit comparable to 0. The default is not recognized to be affected.
  • GHSA-2r63-vmw6-3m3c.
    A crafted listing title may make the zsh shell integration ship
    arbitrary escape sequences, comparable to silently changing the clipboard by way of
    OSC 52. bash was affected in a extra restricted method. This solely requires
    cd-ing right into a listing from untrusted content material, comparable to a cloned
    repository.
  • macOS: GHSA-cw69-wm67-5pv8.
    Cmd-clicking a crafted OSC 8 hyperlink may open unsafe native information or
    customized URL schemes, resulting in arbitrary command execution. Ghostty now
    blocks unsafe targets and confirms customized URL schemes. This requires
    consumer interplay (cmd-click) to set off.
  • macOS: GHSA-mfw9-xcr3-7gfp.
    The similar difficulty as above for hyperlinks detected by the hyperlink configuration,
    together with the default URL matcher. This requires consumer interplay
    (cmd-click) to set off.
  • macOS: GHSA-v8cw-fg4j-jcc4.
    Drag-and-drop textual content skipped paste safety, with the identical affect as
    above. This requires consumer interplay (drag-and-drop) to set off.
  • macOS: GHSA-mxqx-236q-wrv7.
    Opening a file whose title accommodates management characters may run a
    completely different command than the one proven within the affirmation dialog. This
    requires a crafted file in your system and confirming the dialog.

Note: I requested CVEs for the above advisories weeks in the past, however GitHub
hasn’t assigned them but. If/once they’re assigned, I’ll replace the
above with correct CVE numbers.

PRs: #12999 #13069 #13393 #14413 #14414

Ghostty 1.4 helps macOS 27 (Golden Gate). Most of the work was
compatibility fixes:

  • Tabs within the titlebar (macos-titlebar-style = tabs) lay out appropriately
    once more.
  • The native tab bar now not attracts as a stable grey bar on high of your
    theme. It now lets the brand new glass model mix along with your terminal
    background.
  • macos-titlebar-style = hidden now not covers the highest traces of the
    terminal when Reduce Transparency is on.
  • The app icon now not has a skinny border.
  • The Shortcuts “New Window” motion now not opens two home windows when
    Ghostty is working with none home windows.

Ghostty 1.4 stays absolutely suitable with prior macOS variations again to
and together with macOS 13 (Ventura). See the
system requirements for extra particulars.

Ghostty 1.3.1 works on macOS 27, nevertheless it has among the visible points
listed above, comparable to the grey tab bar.

PRs: #13943 #13939 #13935 #13934 #13893 #13933 #13389
#13270 #13281

Ghostty now helps Kitty graphics
animation
and relative placements.
These have been the final main options of the Kitty graphics protocol that
Ghostty did not help.

Programs that show animated photos with the Kitty protocol, comparable to an
animated GIF proven with kitten icat, now animate in Ghostty as a substitute of
displaying a single nonetheless body. Frame transmission, composition, and playback
management are all supported, and animations pause whereas the terminal is not
seen. Relative placements let a program place one picture relative to
one other picture’s placement, so the kid picture strikes together with its dad or mum.

We additionally did a full conformance move in opposition to the specification and Kitty
itself, fixing dozens of behavioral variations. For instance, photos now
scroll with textual content inside scroll areas (#4323 ), retransmitting a picture
ID replaces the previous picture (#6711 ), and invalid picture information now will get an
error response as a substitute of silence, which may go away shoppers hanging. The
full checklist is within the terminal capabilities part.

Kitty graphics are sooner, too. Image payloads are actually parsed in bulk
with SIMD as a substitute of 1 byte at a time, making massive picture transfers
about 16x sooner to parse in our benchmarks (64 MiB of picture information,
x86_64 Linux), and drawing photos prices a lot much less per body.

Our Kitty graphics implementation now covers 100% of the revealed
specification, making Ghostty (and libghostty) the primary terminal
to do that outdoors of Kitty itself.

PRs: #13264 #13473 #13240 #13245 #14130 #14137 #14138
#14017

Ghostty now transparently compresses scrollback that is not seen,
decreasing the bodily reminiscence these pages use by 70% to 90% for typical
text-heavy historical past. Compression solely runs whereas the terminal is idle and
pages are decompressed on demand whenever you scroll again or search, so it
has no measurable affect on I/O throughput.

Thanks to compression, the default scrollback restrict has been raised from
10 MB to 50 MB
per terminal. On platforms that help compression, a
full scrollback nonetheless usually makes use of much less bodily reminiscence than the previous
10 MB restrict did.

Compression lowers resident (bodily) reminiscence, not digital reminiscence, so
take a look at resident reminiscence when measuring it. It is presently out there on
macOS and 64-bit Linux.

Beyond scrollback, reminiscence utilization is decrease in lots of locations:

  • A brand new, empty terminal now makes use of about 16 KiB of terminal web page reminiscence
    on macOS, down from 128 KiB in Ghostty 1.3.1.
  • On macOS and Linux, reminiscence freed by clearing or trimming scrollback is
    now returned to the OS as a substitute of being held till the terminal closes.
  • Hidden tabs launch their GPU sources. On macOS, with one seen tab
    and 20 hidden tabs, GPU reminiscence dropped from about 385 MiB to 18 MiB.
    Rebuilding them when a tab turns into seen once more takes below a
    millisecond.

PRs: #13209 #13220 #13226 #13227 #13537 #13827 #13587
#14011 #13722 #14035 #12760

There are efficiency enhancements throughout the board in Ghostty 1.4
that yield important features in comparison with prior Ghostty variations.

The largest win got here from a shocking discovery: on macOS, the kernel
caps each learn from a pty at about 1 KiB irrespective of how massive the learn
buffer is. Previously, Ghostty processed every learn because it arrived, so per-read
overhead was paid each kilobyte, and this system writing output sat
blocked whereas we parsed. Ghostty now drains the pty on one thread whereas
parsing on one other, elevating end-to-end I/O throughput by 25% to 55%
on macOS (M4 Max, plain and Unicode textual content) over Ghostty 1.3.x.

VT processing itself can be a lot sooner. In parser benchmarks, plain
ASCII textual content went from 128 MB/s to 725 MB/s (5.7x), CJK textual content bought 3.4x
sooner, and a 2.6 GB dataset of real-world terminal recordings
from asciinema is processed about 25% sooner.
Together, these adjustments took cat-ing a 150 MB textual content file on macOS from
1.5 seconds to 566 milliseconds.

Other notable enhancements:

  • Resize: resizing a terminal with a big scrollback is about 6x
    sooner
    (120×80 with 10,000 traces of scrollback), and 3x to 5x sooner
    with historical past stuffed with CJK textual content or emoji.
  • Rendering: the renderer holds the terminal lock 2.7x to 11x
    much less per body, leaving extra time for the I/O thread throughout heavy
    output.
  • Copy and search: formatting terminal contents as plain textual content, HTML,
    or VT, which backs clipboard copy, write_screen_file, and scrollback
    search, is 1.5x to 8x sooner.
  • Launch (macOS): about 15% sooner from launch to seen window, and
    27% sooner to the primary rendered body.
  • Idle power: on macOS, the renderer’s show hyperlink now sleeps when
    there’s nothing to attract. On GTK, hidden tabs cease rendering, matching
    macOS.
  • Large OSC sequences: OSC 52 clipboard payloads parse about 30x
    sooner
    , and even quick sequences like title adjustments are about 6x
    sooner.

PRs: #14052 #14269

The GTK app has a brand new rendering pipeline. It now not makes use of GtkGLArea.
Instead, the renderer attracts with EGL by itself thread, exports every body
as a DMABUF, and fingers it to GTK to show. Rendering is now
triple-buffered, which ought to enormously scale back tearing, and no OpenGL calls
run on the principle thread anymore, which allow us to take away numerous
workarounds.

The most seen result’s crisp textual content below fractional scaling. Text and
box-drawing characters are now not blurry with fractional show
scaling comparable to 125% or 150% (#1938 ). We fastened this as soon as earlier than, nevertheless it
got here again after upstream GTK adjustments. Ghostty now renders on the window’s
true fractional scale, so each rendered pixel maps to precisely one pixel
on display.

The new render floor wants a system EGL library (see
Changes for Package Maintainers).
On GPU drivers that may’t export DMABUFs, Ghostty falls again to copying
frames by way of the CPU, which is slower however works.

PRs: #13962 #13993 #13995 #13998 #14002 #14061

Ghostty now implements the
Kitty clipboard protocol
(OSC 5522) on each macOS and GTK. Ghostty 1.3 may parse the protocol
however did not implement it.

OSC 52 can solely learn and write plain textual content. The Kitty clipboard protocol
lets applications working within the terminal learn and write any form of clipboard
information, comparable to photos or HTML, and lets them choose among the many codecs on the
clipboard. Programs also can allow paste occasions (mode 5522), which inform
this system what codecs a paste accommodates so it may learn the one it
needs. This is how a terminal program can settle for a pasted picture, for
instance.

Clipboard entry follows the prevailing clipboard-read and
clipboard-write configurations. By default, reads immediate for permission
and writes are allowed. The permission immediate exhibits a preview of the
clipboard contents, together with photos. Programs that ship a password can
have your reply remembered for the remainder of that terminal session. A brand new
clipboard-write-limit-bytes configuration limits the dimensions of a single
write (default 64 MiB). A write over the restrict fails and leaves the
clipboard untouched.

PRs: #10423 #13706

You can now rearrange splits on GTK by dragging them, matching the macOS
function launched in Ghostty 1.3. When a tab has two or extra splits, every
break up exhibits a drag deal with on the high. Grab the deal with and drop the break up
onto every other break up, together with splits in different tabs and home windows. An
overlay exhibits which aspect of the goal break up it’s going to land on. The terminal
contents, working listing, and working processes all transfer with it.

A brand new drag-handle configuration controls when drag handles are proven on
each macOS and GTK: auto (default), at all times, or by no means. With by no means,
splits cannot be rearranged with the mouse. Hiding the handles was a
frequent request from customers who discovered them in the way in which.

On GTK, splits can solely be dropped onto different splits. Dragging a break up out
to create a brand new tab or window is macOS-only.

PRs: #14454 #13494 #14483 #14538 #14673 #14375 #14144

Ghostty 1.4 contains dozens of enhancements to core terminal emulation. We
now run esctest, Thomas Dickey’s
terminal conformance suite, in opposition to Ghostty’s terminal core in CI.
Alongside that, we fastened many variations from xterm in cursor motion
inside margins, tab stops, character units, mode reviews, and extra. You
can discover the total checklist of associated adjustments within the
terminal capabilities part.

Ghostty additionally helps a number of new sequences, together with delicate terminal reset
(DECSTR), prolonged cursor place reviews (DECXCPR), backarrow key mode
(DECBKM), and display dimension reviews in characters (CSI 19 t). Programs can
additionally now ask whether or not the terminal is seen utilizing
visibility reports
(mode 2033), to allow them to cease rendering whereas hidden.

Keyboard encoding additionally matches xterm extra intently, with fixes for
modifyOtherKeys mode 2 and legacy Alt-as-Escape encoding of non-ASCII
keys.

Two new sequences are disabled by default as a result of they are often abused by
untrusted applications, together with ones working on a distant machine:

# Allow applications to resize the window (CSI 8 t)
vt-window-resize-allowed = true

# Allow applications to request display checksums (DECRQCRA)
vt-xt-checksum-report = true

PRs: #12582 #12814 #13533 #13844 #14472 #14854

Ghostty 1.2 launched SSH shell integration features
as a piece in progress. In Ghostty 1.4, they’re backed by a brand new
ghostty +ssh CLI motion: a drop-in ssh wrapper that prepares the
distant session for Ghostty after which runs the actual ssh along with your
arguments forwarded unchanged.

ghostty +ssh [email protected]


alias ssh='ghostty +ssh --'

Before connecting, +ssh installs Ghostty’s terminfo on the distant host
so the correct xterm-ghostty TERM worth can be utilized, and forwards
COLORTERM, TERM_PROGRAM, and TERM_PROGRAM_VERSION. If the terminfo
set up fails (for instance, tic is not out there on the distant), it falls
again to TERM=xterm-256color. Flags comparable to --terminfo=false,
--forward-env=false, and --verbose management every step.

The ssh-env and ssh-terminfo shell integration options (nonetheless opt-in)
now name +ssh too. Previously, every shell integration carried its personal copy
of this logic, which made up roughly a 3rd of our shell integration
scripts. Now bash, zsh, fish, elvish, and Nushell all behave identically,
and you will get the identical habits from scripts or anyplace else by calling
ghostty +ssh instantly.

The terminfo set up itself can be extra dependable. Ghostty now at all times
installs its personal bundled terminfo moderately than accepting no matter
xterm-ghostty entry the distant already has, and it reinstalls
mechanically when a Ghostty replace adjustments the terminfo. It additionally now not
wants infocmp or Ghostty’s terminfo on the native machine. Installs are
cached per host and port, so two machines behind one handle now not
share a cache entry. And ssh-env now not silently overrides SetEnv
entries in your ~/.ssh/config (#11518 ).

The +ssh-cache command that manages this cache now takes positional
locations (ghostty +ssh-cache [email protected]) and has a brand new
--prune=30d flag. See the breaking changes if you happen to
script in opposition to +ssh-cache.

macOS: The minimal required macOS model for Ghostty 1.4 stays
unchanged (macOS 13 Ventura). Ghostty is now suitable with macOS 27.

GTK: Ghostty 1.4 requires GTK 4.18 and libadwaita 1.7, up from
GTK 4.14 and libadwaita 1.5 in Ghostty 1.3. This aligns with our
GTK/Adwaita version policy.
Notably, Ubuntu 24.04 LTS would not meet this requirement. Systems with
older GTK or Adwaita variations can work round this requirement by utilizing an
older model of Ghostty or the Flatpak bundle. #14330

OpenGL (GTK): The minimal required OpenGL model stays 4.3, however
Ghostty now renders by way of EGL as a substitute of GTK’s OpenGL widget. This
ought to be invisible for almost everybody, but when Ghostty fails to begin
with an EGL error, please be certain your GPU driver gives a working
EGL implementation.

We beforehand introduced that Ghostty 1.4 would require macOS 14.
Nothing pressured our hand to do that on this launch, so we stored macOS
13 help. We nonetheless plan to drop macOS 13 in a future launch. Apple
dropped safety help for macOS 13 within the fall of 2025, so we
suggest upgrading regardless.

The following behaviors have modified in 1.4.0:

  • copy-on-select has been reworked and now accepts none, major,
    clipboard, or each. The which means of clipboard has modified: it
    beforehand copied to each the choice clipboard and the system
    clipboard, and now copies solely to the system clipboard. If you set
    copy-on-select = clipboard and need the previous habits, change it to
    each. #12600 #12604
  • macOS: copy-on-select now defaults to none (beforehand true), so
    deciding on textual content now not copies it anyplace and middle-click paste of the
    choice now not works by default. To restore the 1.3 habits, set
    copy-on-select = major. Note that an express copy-on-select = true
    on macOS now copies picks to the system clipboard, which is
    completely different from 1.3. #12600 #12604
  • macOS: cmd+arrow_up and cmd+arrow_down now run jump_to_prompt once more,
    matching Terminal.app and Ghostty 1.2. In 1.3, these keys have been hardcoded
    to scroll to the highest and backside and could not be rebound. To maintain the 1.3
    habits, set keybind = cmd+arrow_up=scroll_to_top and
    keybind = cmd+arrow_down=scroll_to_bottom. #12245
  • GTK: The default ctrl+shift+page_up and ctrl+shift+page_down keybinds
    now transfer the present tab left and proper (move_tab), matching Firefox,
    GNOME Terminal, and VS Code. jump_to_prompt moved to
    ctrl+shift+arrow_up and ctrl+shift+arrow_down, so applications working in
    the terminal now not obtain these keys. If a program you utilize wants
    them, unbind them with keybind = ctrl+shift+arrow_up=unbind and
    keybind = ctrl+shift+arrow_down=unbind. #4998 #12458

The checklist beneath accommodates deprecations that stay suitable at present by way of
a compatibility layer, however could break in a future launch if they’re
ignored:

  • scrollback-limit has been renamed to scrollback-limit-bytes, to make
    room for the brand new scrollback-limit-lines. #13473
  • copy-on-select = true is changed with copy-on-select = major on
    Linux and FreeBSD, or copy-on-select = clipboard on macOS.
    copy-on-select = false is changed with copy-on-select = none.
    #12600 #12604

There isn’t any set timeline to take away these deprecations, however we suggest
adapting to the brand new configurations sooner moderately than later to keep away from
any doable disruptions sooner or later.

  • Scrollback historical past is now transparently compressed whereas the terminal
    is idle, decreasing the bodily reminiscence utilized by compressed scrollback by
    70% to 90% for typical textual content. Compression is out there on macOS and 64-bit
    Linux and may be disabled with the brand new scrollback-compression
    configuration. Because of this, the default scrollback restrict has been
    raised from 10 MB to 50 MB, which on common nonetheless makes use of much less reminiscence than
    a full scrollback did beforehand. #13264
  • A brand new configuration scrollback-limit-lines limits scrollback by quantity
    of traces as a substitute of bytes. The current scrollback-limit configuration
    has been renamed to scrollback-limit-bytes (the previous title continues to
    work). If each are set, the primary restrict reached applies, and each settle for
    limitless. #13473
  • copy-on-select now accepts none, major, clipboard, and each
    and now not impacts middle-click paste (see middle-click-action).
    clipboard now copies solely to the system clipboard, so use each for the
    earlier habits. The default on macOS is now none. See the
    breaking changes for migration particulars. #12600
  • A brand new configuration middle-click-action configures the habits of
    middle-clicking: primary-paste (default) pastes from the choice
    clipboard, clipboard-paste pastes from the system clipboard, and
    ignore does nothing. #12478
  • A brand new binding motion move_tab_to_new_window strikes the present tab into
    a brand new window of its personal. It can be out there within the command palette.
    #2630
  • A brand new CLI command +explain-config prints the documentation for a
    configuration possibility or binding motion, e.g.
    ghostty +explain-config font-size. #11546
  • The +explain-config and +show-config CLI instructions now web page their
    output by way of $GHOSTTY_PAGER or $PAGER (falling again to much less) when
    run interactively. Paging may be disabled with --no-pager or by setting
    the pager to an empty worth. #11940
  • A brand new configuration drag-handle controls when the break up drag handles
    are proven: auto (default), at all times, or by no means. #13706 #13709
  • Scrollback search now wraps round when navigating previous the primary or
    final match. #11449
  • A brand new configuration link-osc8 (default true) may be set to false to
    disable OSC 8 hyperlinks solely. Disabled OSC 8 hyperlinks will not be
    highlighted, previewed, copied, or opened. #13634
  • Processes working in Ghostty now obtain a GHOSTTY_SURFACE_ID
    surroundings variable that uniquely identifies the terminal they’re
    working in. #12027
  • The right-click context menu now has a “Close Split” merchandise. #11173
    #11174
  • Upgrade to Unicode 18. #14293
  • I/O throughput is 25% to 55% greater on macOS by studying from the pty
    concurrently with parsing beforehand learn output. #13209
  • VT processing is considerably sooner throughout the board. Plain textual content is up
    to ~6x sooner, real-world output (measured in opposition to a big asciinema
    dataset) is ~24% sooner, grapheme-heavy output is ~3x sooner, and DEC
    particular graphics (line drawing), repeated characters (REP),
    hyperlink-heavy output, and scroll areas are all sooner. #13220
    #13226 #13231 #13294 #13625 #13826 #14356
  • Large OSC sequences, comparable to OSC 52 clipboard writes, are parsed ~30x
    sooner and small OSC sequences, comparable to title adjustments, ~6x sooner.
    #14011 #13565
  • Resizing with reflow is ~6x sooner with massive scrollback and 3x to 5x
    sooner with scrollback heavy in vast characters comparable to CJK or emoji.
    #13537 #13827
  • Terminals use considerably much less reminiscence. A brand new terminal now makes use of ~16 KiB
    of bodily reminiscence for its display as a substitute of 128 KiB on macOS, each
    terminal web page makes use of 30% much less reminiscence, and reminiscence free of scrollback
    (comparable to by clearing it) is now returned to the working system.
    #13240 #13245 #14130 #14137 #14138
  • Kitty graphics are sooner. Large picture transfers are parsed in bulk utilizing
    SIMD, zlib-compressed photos decompress ~17% sooner, pixel format
    conversion avoids an additional copy, and the per-frame value of drawing photos
    is way decrease, particularly with Unicode placeholder photos on display or
    lengthy scrollback. #13270 #13281 #13987 #14422 #14780 #14789
  • Formatting terminal contents is 1.5x to 8x sooner, which accelerates
    clipboard copy (plain, HTML, and VT), write_screen_file and associated
    actions, and scrollback search. #13587
  • The renderer holds the terminal lock 2.7x to 11x much less time per body,
    and glyph and font lookups are sooner. #13227 #14300 #14301 #14420
    #14406 #13258
  • command-palette-entry = clear removes all command palette entries,
    together with the default entries. #12682
  • window-padding-balance has a brand new worth equal that balances padding
    equally on all 4 sides with out capping the highest padding. #11491
  • theme now expands ~ to the house listing in theme file paths,
    together with in separate mild and darkish themes. #13840
  • +list-themes now helps g and G to leap to the primary and
    final theme, and ctrl+d and ctrl+u to web page down and up. #13681
    #14607
  • The terminal inspector can now copy terminal I/O occasions or export them
    to a file. #13519
  • Bundled themes up to date to release-20261019-151001-86a776d.
    This provides 356 new themes and renames or removes none. The colours of 10
    current themes modified upstream: Adwaita, Adwaita Dark, Atom One Light,
    Catppuccin Frappe, Catppuccin Latte, Catppuccin Macchiato, Catppuccin
    Mocha, Cursor Dark, Dark Modern, and Electron Highlighter.
  • Fix configuration parsing silently ignoring all settings after a remark
    or clean line that occurred to finish at an inner buffer boundary. This
    sometimes solely affected lengthy configuration information. #13638
  • Fix a efficiency degradation the place, after a protracted uptime, the renderer
    rebuilt its full terminal state on each body. #13585
  • Fix the mechanically created configuration file being empty as a substitute of
    containing the configuration template. #13774
  • +edit-config works when $EDITOR or $VISUAL accommodates arguments,
    comparable to zed --new. #11897
  • adjust-cursor-height works once more. #13225
  • Mouse choice enhancements: dragging after a ctrl/cmd triple-click
    output choice now extends the choice by command output, autoscroll
    stops when the display switches (e.g. to the alternate display), a power
    contact on macOS selects the phrase on the press location with out beginning a
    drag, and releasing a drag now not prompts a hyperlink or immediate click on.
    #12830
  • Double-click phrase choice now not continues throughout exhausting line breaks,
    and double-clicking both half of a large character (comparable to CJK) selects
    the entire phrase. #14354 #14391
  • Wide characters on the edges of a range are actually constantly rendered
    as chosen and included when copying, together with when the vast character
    wraps onto a brand new inner web page. #14632 #14651
  • Triple-click line choice now not pulls in neighboring immediate textual content
    when clicking clean cells between OSC 133 immediate boundaries. #14553
  • Link detection and double-click choice now not merge immediate textual content
    with the command textual content subsequent to it when shell integration is lively.
    #12435
  • File paths opened with cmd/ctrl-click now not embrace trailing
    areas, which broke opening paths printed by some TUIs. #13505
  • Mouse releases are actually reported to this system that obtained the mouse
    press when clicking at a shell immediate with click-to-move enabled. This
    fixes double-click choice in applications like fzf’s ctrl+r historical past
    search. #14710
  • Shell redraws after a resize are now not processed on the previous terminal
    dimension. This fixes one reason behind duplicated or misplaced prompts after
    resizing. #14706
  • Scrolling, comparable to clicking within the scrollbar, now works with very massive
    scrollback (thousands and thousands of traces). #13048
  • Custom command-palette-entry actions with string parameters, comparable to
    set_tab_title, now not have their parameters escaped when run from
    the command palette. #13609
  • HTML clipboard copies now not embrace a superfluous trailing newline.
    #13543
  • Copying as VT (copy_to_clipboard:vt) and VT display information now protect
    OSC 8 hyperlinks, empty gaps between textual content, and cells that solely have
    a background colour, comparable to coloured standing bars. VT display information additionally
    maintain trailing clean rows. #14711 #14725 #14766
  • The mouse pointer now restores the form set by the working program
    (OSC 22) after releasing modifier keys as a substitute of resetting to the
    default. #14128
  • Custom shaders now not obtain swapped choice foreground and
    background colour uniforms. #14460
  • Ghostty now not floods the logs with “adjusting web page capability”
    messages throughout output with many kinds, graphemes, or hyperlinks.
    #14631
  • Fix stale wrap and immediate state on rows reused after scrolling or
    erasing, which may trigger incorrect copy, search, choice, and reflow
    outcomes. #14010
  • Fix stale rendering of the earlier row after erasing or deleting a
    wrapped vast character. #14054
  • Fix a freeze when reloading the configuration whereas a program is flooding
    the terminal with queries, comparable to colour queries. #14833
  • +list-themes now not crashes on some keys when the search
    matches no themes, and the keypad down key now strikes one row as a substitute of
    21. #14612 #14605
  • Fix crashes in scrollback search after clearing the scrollback, resizing,
    or erasing historical past. #11957 #13274 #13282
  • Fix crashes and viewport corruption when resizing with scrolled-back
    historical past or with the cursor close to the underside of the display. #12300
    #12907 #12935
  • Fix a use-after-free crash when clicking or deciding on textual content throughout heavy
    output. #12463
  • Fix a doable crash when reflowing hyperlinks throughout a resize. #13524
  • Fix doable crashes or reminiscence corruption when scrolling or erasing rows
    throughout a web page boundary that wanted extra capability. #13394 #13397
  • Fix doable crashes and reminiscence corruption discovered by way of fuzzing when
    printing causes a web page to develop, or after clearing the display into
    scrollback. #11261 #13997
  • Fix many latent crashes and undefined habits in choice, pins,
    search, title and dealing listing updates, and resize error dealing with.
    #12894 #13275 #13278 #13367
  • Fix a doable crash or corrupted enter when many pty writes are queued,
    comparable to throughout massive pastes. #13659
  • Fix an out-of-bounds entry when IME preedit textual content with vast characters
    consists between current vast characters, comparable to with Korean enter.
    #12479
  • Fix a crash when urgent or releasing mouse button 11. #14759
  • Fix the write_screen_file, write_scrollback_file, and
    write_selection_file actions leaking two file descriptors on every use,
    which may finally forestall opening new terminals. #13644
  • Fix reminiscence and file descriptor leaks in terminal I/O, together with for writes
    in read-only mode and information learn by way of the enter configuration.
    #13574 #13579 #13931
  • vt: Kitty graphics animation is now absolutely supported: body transmission,
    composition, animation management, and rendering. #5255 #13943
  • vt: Kitty graphics relative placements (P=, Q=, H=, V=) are actually
    supported, permitting photos to be positioned relative to different photos.
    #13939
  • vt: Support the Kitty graphics transient picture utilization trace. Transient
    photos are evicted first when picture storage is full. #13389
  • vt: The Kitty clipboard protocol (OSC 5522) is now carried out on macOS
    and GTK, together with paste occasions (mode 5522). Reads and writes observe
    clipboard-read and clipboard-write, and a brand new
    clipboard-write-limit-bytes configuration limits the dimensions of a single
    write. #10549 #13962 #13993 #13995 #13998 #14002 #14061
  • vt: Support visibility reviews (mode 2033 and CSI ? 998 n), which inform
    applications when the terminal isn’t seen, comparable to in a background tab
    or on one other workspace, to allow them to cease rendering. #13494
  • vt: Programs can resize the window with the xterm CSI 8 ; rows ; cols t
    sequence if the brand new vt-window-resize-allowed configuration is enabled
    (default off). The request is ignored in splits, home windows with a number of
    tabs, the short terminal, and fullscreen, maximized, or tiled home windows.
    #1115 #14375
  • vt: Support OSC 133 click_events=2, which reviews immediate clicks with
    row coordinates relative to the immediate. #10865 #12953
  • vt: Support delicate terminal reset (DECSTR, CSI ! p), which resets
    modes, margins, and textual content attributes with out clearing the display.
    #14538
  • vt: Support backarrow key mode (DECBKM, mode 67), which lets applications
    select whether or not backspace sends DEL (0x7f, the default) or BS
    (0x08). #12226
  • vt: Support the DECRQCRA and XTCHECKSUM display checksum reviews, which
    are largely utilized by terminal check suites. Because a program can use these
    to learn the display contents, they’re disabled until the brand new
    vt-xt-checksum-report configuration is enabled. The new
    vt-xt-checksum-extension configuration controls how the checksum is
    calculated. #14483
  • vt: Respond to CSI 19 t (report display dimension in characters) and to
    DECXCPR (CSI ? 6 n) prolonged cursor place requests. #14633
    #14673
  • vt: DECRQM now solutions ANSI mode queries (CSI Ps $ p), reviews DECECM
    and different unimplemented ANSI modes as completely reset like xterm, and
    now not truncates mode numbers above 32767 in its reply. #12505
    #14236 #14237 #14672
  • vt: Ghostty terminfo now advertises overline help (Smol/Rmol),
    which lets tmux move overlines by way of. DECRQSS SGR replies now embrace
    overline and curly, double, dotted, and dashed underline kinds.
    #13649 #13653 #13470
  • vt: The terminfo Se functionality now resets the cursor to the configured
    cursor-style as a substitute of a gradual block. This fixes applications like Neovim
    leaving a block cursor behind on exit. #12482
  • vt: OSC payloads are actually restricted to eight MiB, Kitty graphics payloads to
    65 MiB, and every cell to 64 combining codepoints, so terminal output
    cannot simply exhaust reminiscence. This additionally fixes a reminiscence leak on invalid
    Kitty graphics information. #12349 #13633
  • vt: Experimental help for the
    Glyph Protocol
    (APC 25a1), which lets applications register customized glyphs. Ghostty parses
    and solutions requests however would not render registered glyphs but.
    #12352 #12930 #12937
  • vt: Parse the brand new program standing protocol (OSC 7501), which lets applications
    report whether or not they’re idle, working, finished, blocked, or failed. This is
    the primary terminal specification pioneered by the Ghostty undertaking.
    libghostty can parse all of it, however the Ghostty GUI ignores it for now.
    #14560
  • vt: Parse (however don’t implement) the Kitty desktop notification protocol
    (OSC 99). #10467
  • vt: Parse (however don’t implement) the Kitty drag and drop protocol
    (OSC 72). #13029
  • vt: More tmux management mode fixes, together with crashes that working
    tmux -CC may set off. tmux management mode continues to be not hooked as much as
    the GUI. #11395 #11935 #14262 #14680
  • vt: Clearing the display at a immediate (e.g. ctrl+l in bash or zsh) now
    strikes prior output into scrollback even when the immediate isn’t on the
    final row. Previously, the output was erased. #14660 #14668
  • vt: Kitty graphics: transmitting a picture with an current ID now
    replaces the picture and removes its previous placements, because the spec requires.
    Interrupted or failed retransmissions now not go away stale photos on
    display. #6711 #13723 #13893
  • vt: Kitty graphics: photos now transfer with the textual content when a program scrolls
    with CSI S, CSI T, or scroll margins, and are clipped to the scroll
    area. #4323 #13935
  • vt: Kitty graphics: mechanically assigned picture IDs now not collide
    with IDs chosen by this system. #2197 #13934
  • vt: Kitty graphics: delete instructions now match the spec and Kitty. Point
    deletes (d=p, d=c) solely take away placements at that cell, d=a solely
    removes placements on the seen display, vary deletes settle for empty
    ranges, and deleting a lacking placement now not frees the picture.
    #13652 #13895 #13898 #13932
  • vt: Kitty graphics: command validation and responses now match Kitty.
    This fixes lacking responses for invalid picture information that would cling
    shoppers, false constructive question replies, misplaced IDs in chunked switch
    replies, file transfers with an actual S dimension, and masses interrupted by
    a non-chunk transmission. #13889 #13892 #13896 #13897 #13933
    #14811
  • vt: Kitty graphics: cropped supply rectangles are now not stretched,
    and X/Y offsets are stored inside the first cell. #13890 #13891
  • vt: Kitty graphics: the cursor strikes after tall photos like Kitty does,
    so consecutive photos now not overlap. #13887
  • vt: Full reset (RIS) now not resets image-storage-limit to the
    default. #13951
  • vt: OSC and APC sequences (comparable to Kitty graphics instructions) canceled by
    CAN or SUB, or aborted by one other management character, are actually discarded
    as a substitute of executed, matching xterm. #14453 #14812
  • vt: With modifyOtherKeys degree 2, management keys, keypad keys, and
    alt+escape now encode like xterm. F13 to F25, Help, and Menu now ship
    xterm’s perform key sequences in all legacy encoding modes. #14144
    #14145
  • vt: Legacy alt-as-escape encoding now sends the total UTF-8 sequence for
    non-ASCII keys. #14146
  • vt: Kitty keyboard protocol launch occasions now not repeat the typed
    textual content for useless keys or degree 5 keys on GTK, which precipitated duplicated
    characters in applications like Neovim. #13861
  • vt: ctrl+alt+shift+backspace now sends ESC BS in legacy key encoding,
    matching xterm. #14508
  • vt: UTF-8 mouse mode (1005) now encodes the button appropriately, fixing
    invalid reviews for the again and ahead mouse buttons. #14532
  • vt: Foreground, background, and cursor colours reset with OSC 110, 111,
    or 112 now observe later configuration adjustments, comparable to a light-weight/darkish
    theme swap. #13650
  • vt: Full reset (RIS) now restores palette colours modified with OSC 4.
    #14480
  • vt: An empty OSC 22 now resets the mouse pointer form to the default.
    #14495
  • vt: Long desktop notifications (OSC 9 and OSC 777) with multibyte UTF-8
    textual content are now not dropped or proven as invalid UTF-8 when truncated.
    #13795 #13811
  • vt: DCS strings now carry UTF-8 information. Previously, some UTF-8 bytes have been
    dropped, ended the string early, or began a brand new management sequence.
    #14016
  • vt: C0 controls 0x10 to 0x1F are actually executed as a substitute of printed
    as textual content, and UTF-8 encoded C1 controls are ignored, matching xterm.
    #14022 #14023
  • vt: Erasing a full line (CSI 2 Ok) now clears its soft-wrap state, so
    erased rows now not be part of collectively when the window is resized. #13637
  • vt: The cursor and saved cursor maintain the proper place when a resize
    reflows textual content, fixing an additional line wrap or overwritten textual content after
    resizing. #12598 #14458 #14478
  • vt: Variation selectors (VS15/VS16) now apply to the previous codepoint,
    fixing the rendering of some ZWJ emoji such because the pirate flag. #12596
  • vt: Combining marks printed after a personality within the final column now
    connect to that character. #12581
  • vt: Characters above U+00FF, comparable to emoji, now print as-is as a substitute of as
    a clean whereas a non-UTF-8 character set comparable to DEC line drawing is
    lively. #14554
  • vt: Single shifts (SS2/SS3) now apply solely to the subsequent printed character.
    #14576
  • vt: Tab clear (TBC) fixes: CSI 0 g now not units a tab cease the place
    there wasn’t one, and CSI g with no parameter clears the tab cease at
    the cursor. #13900 #14644
  • vt: Printing with autowrap (DECAWM) disabled clears the pending wrap, so
    re-enabling autowrap would not trigger a spurious line wrap. #14652
  • vt: With reverse wrap enabled, shifting left after restoring a cursor with
    a pending wrap now not jumps the cursor. #14390
  • vt: Cursor motion respects margins and origin mode: CUB and backspace
    cease on the left margin, and CHA, HPA, VPA, HPR, and VPR now not apply
    the margin offset twice in origin mode. #14761 #14762
  • vt: Fix a crash when VS15 narrows a large character below the cursor.
    #13631
  • vt: Fix a crash or reminiscence corruption after narrowing the terminal cuts a
    vast character in half on the alternate display or with wraparound
    disabled. #14509
  • vt: Fix a crash when a grapheme cluster widens within the final column and
    wraps inside or beneath a scroll area with grapheme clustering (mode
    2027) enabled. #14552
  • vt: Fix a gradual reminiscence and efficiency leak in graphics-heavy classes
    the place evicted Kitty photos left their placements’ tracked positions
    behind. #13656
  • vt: Fix a reminiscence leak when an OSC colour sequence accommodates greater than two
    requests. #13239
  • A brand new ghostty +ssh CLI motion wraps ssh and units up Ghostty on distant
    hosts: it forwards Ghostty’s surroundings and installs Ghostty’s terminfo
    on the primary connection to every host, caching profitable installs. It can
    be used instantly (ghostty +ssh [email protected]) or as an alias
    (alias ssh='ghostty +ssh --') with out shell integration. The ssh-env
    and ssh-terminfo shell integration options now use it for each
    shell. #12582
  • ssh-terminfo now at all times installs Ghostty’s bundled terminfo on distant
    hosts as a substitute of maintaining an current, probably outdated, xterm-ghostty
    entry, and reinstalls it when a more moderen Ghostty adjustments its terminfo.
    #13844
  • ghostty +ssh-cache has been reworked with positional locations, a
    new --prune possibility, constant output and exit codes, and error
    messages that title the cache file. See the
    breaking changes above. #12814 #13533
  • ssh-terminfo now tells aside the identical host on completely different ports, so
    terminfo is put in on every of them. ghostty +ssh-cache accepts
    host:port locations. #14472
  • ssh-env now not overrides SetEnv entries in your ~/.ssh/config.
    #11518 #14854
  • bash: Failed instructions now report their actual exit standing on Bash 4.4+,
    so command completed notifications now not report each command as
    profitable. #14247 #14250
  • nu: Tab completion for ssh and sudo now works with exterior
    completers comparable to carapace. #13310
  • bash: The bundled bash-preexec, used just for Bash variations older than
    4.4 comparable to macOS’s /bin/bash, has been up to date to 0.7.0. #14120
  • zsh: Fix a stray { within the immediate and damaged immediate marking when PS1
    or PS2 ends with a naked %. #11832
  • bash: Fix “command not discovered” errors in subshells that inherit
    PROMPT_COMMAND. #11690
  • bash: Fix a syntax error when an current PROMPT_COMMAND ends with a
    newline. #11621
  • bash: Fix additional clean traces on the immediate when utilizing ble.sh. #11644
  • bash: Fix the shell integration hook being added twice when it’s
    sourced once more with an array PROMPT_COMMAND. #14266
  • macOS: Support macOS 27. This fixes the structure and background colour of
    titlebar tabs, a skinny border across the app icon, hidden titlebars
    masking the highest traces of the terminal with Reduce Transparency enabled,
    and the Shortcuts “New Window” motion opening two home windows. #13001
    #13390 #14107 #14411 #12999 #13069
  • macOS: When a terminal’s course of exits, a local bar now seems on the
    backside of the terminal as a substitute of textual content being written into the terminal.
    Commands that fail or exit sooner than abnormal-command-exit-runtime
    are highlighted in pink. #7649 #12251
  • macOS: Quitting, or closing a window, when a number of home windows or tabs have
    working processes now provides “Review Windows…”, which steps by way of
    each so you possibly can resolve what to shut. #12742 #14062
  • macOS: The command palette now highlights matching textual content, matches
    initials, searches motion descriptions, and ranks outcomes by the place they
    matched. #12264 #13610 #13624
  • macOS: The search bar now remembers the final search and shares it with
    different apps by way of the system discover pasteboard, like Safari and
    Terminal.app. #12516 #12712
  • macOS: Screen readers comparable to VoiceOver are actually notified when the
    choice adjustments as a substitute of studying a stale choice. #12902
  • macOS: The AppleScript terminal class and the Shortcuts terminal entity
    now expose pid (of the foreground course of) and tty. #11592
    #10756 #11922
  • macOS: AppleScript tabs and terminals have a brand new read-write
    title override property to set or clear a customized title. #12048
    #14733
  • macOS: Middle-clicking a tab closes it with
    macos-titlebar-style = tabs. #11962 #11963
  • macOS: The model within the About window now hyperlinks to the discharge notes
    for that model. #11964
  • macOS: Updates which can be downloaded and put in mechanically now not
    immediate you to restart. Checking for updates manually nonetheless provides to
    restart. #13623
  • macOS: toggle_background_opacity now applies to each tab within the
    window, and new home windows inherit the present state. #11583
  • macOS: cmd+arrow_up and cmd+arrow_down now run their configured
    keybinds, which default to jump_to_prompt. Ghostty 1.3 at all times scrolled
    to the highest or backside of the scrollback as a substitute, ignoring the
    configuration. To scroll to the highest or backside, use cmd+residence and
    cmd+finish. #12245
  • macOS: In the configuration errors window, Return reloads the
    configuration and Escape ignores the errors. #12601
  • macOS: Ghostty launches about 15% sooner to a visual window and attracts
    its first body about 27% sooner. #13722
  • macOS: Terminals that are not seen, comparable to background tabs, now
    launch their GPU sources and rebuild them when proven once more. With 20
    background tabs, GPU reminiscence drops from about 385 MiB to 18 MiB. Metal
    buffers additionally now not over-allocate once they develop. #14017 #13490
  • macOS: Lower idle CPU and power use. The show hyperlink now pauses when
    there may be nothing to attract, and unfocused terminals which can be animating
    draw at most as soon as per show refresh as a substitute of as soon as per write.
    #14035 #14068
  • macOS: Update Sparkle to 2.9.6, which fixes a number of safety advisories
    in Sparkle, together with CVE-2026-47121 and CVE-2026-47122. #14072 #14082
  • macOS: Global keybinds now not cease working after macOS disables
    Ghostty’s occasion faucet. #12294 #12714
  • macOS: Fix IME composition points. Korean textual content being composed is now
    dedicated as a substitute of misplaced when urgent an arrow key, and control-key
    IME shortcuts comparable to Japanese enter’s ctrl+j now not ship management
    characters to the terminal. #11461 #12447 #12518 #12547
  • macOS: Text from enter strategies, dictation, and the emoji picker is now
    despatched as typed enter as a substitute of pasted textual content. Programs now not deal with
    dictation as a paste, and switching enter sources mid-composition sends
    the pending textual content as keys, matching Terminal.app. #13195 #13222
    #13817
  • macOS: Unicode Hex Input can now enter characters outdoors the Basic
    Multilingual Plane, comparable to emoji, typed as surrogate pairs. #13733
    #13737
  • macOS: font-thicken now additionally applies to IME preedit textual content. #14230
  • macOS: possibility+backspace and different modified Backspace keys now report
    their modifiers with the Kitty keyboard protocol as a substitute of sending a
    naked DEL. #13871
  • macOS: Pasting and dropping textual content now want plain textual content over URLs, so a
    path copied from apps like Transmit pastes as a path as a substitute of an
    sftp:// URL. #13152 #13170 #13212
  • macOS: The search bar retains focus whenever you click on in it or on the
    subsequent/earlier buttons, and the terminal’s focus state is now right
    whereas search is open. #11872 #11978
  • macOS: The Find Next and Find Previous menu gadgets and the
    navigate_search and end_search keybinds now work appropriately,
    together with whereas the search area is concentrated. #12070 #12492
  • macOS: Pressing Enter within the search bar now not blocks confirming an
    IME candidate. #12781
  • macOS: Clicking a command palette entry with the mouse now runs it
    as a substitute of closing the palette. #11665
  • macOS: The command palette now will get focus and paste when opened from the
    inline tab title editor. #12524
  • macOS: Holding cmd+t to create many tabs now leaves the latest tab
    centered. #13725 #13985
  • macOS: Fix an empty “ghost” tab or window that would seem when a tab
    was closed proper after it was opened. #12119
  • macOS: Titlebar tabs now not disappear after making a tab from
    “Show All Tabs”. #12949 #13017
  • macOS: Double-clicking the window title now zooms the window with
    macos-titlebar-style = tabs. #12219
  • macOS: Moving a tab with macos-titlebar-style = tabs on macOS 26 no
    longer briefly exhibits the neighboring tab. #14847
  • macOS: The inline tab title editor stays in place whereas the window is
    resized. #12220
  • macOS: Fix tabs flashing when switching tabs after a program modified the
    background colour with OSC 11, and the window chrome maintaining the previous
    colour after a light-weight/darkish theme swap. #12825 #12828 #12822
  • macOS: The macos-glass-regular and macos-glass-clear choices for
    background-blur now layer the glass over the background colour, and
    centered home windows are now not much less clear than unfocused ones.
    #13914 #13928
  • macOS: The native titlebar now not cuts off the tip of the title when
    utilizing a customized window-title-font-family. #14135 #14217
  • macOS: Fix terminals rendering at a stale dimension below heavy system load or
    throughout speedy resizes from window managers. #12143
  • macOS: Splits dragged into one other tab or window now render instantly,
    and the supply window retains keyboard focus. #12343 #12338
  • macOS: The break up zoom indicator now not stays seen after the opposite
    splits of a zoomed break up are closed, comparable to with AppleScript. #14703
  • macOS: The break up divider now makes use of the usual row and column resize
    pointers. #13433
  • macOS: window-save-state = by no means now additionally stops macOS from taking
    window restoration snapshots, which may stall focus adjustments between
    home windows. #14506
  • macOS: Window state saved by Ghostty 1.2 or later is now migrated, so
    home windows and tabs are restored after updating Ghostty. #12461
  • macOS: Tabs created whereas the display is locked now initialize appropriately.
    #13639
  • macOS: Quitting now asks for affirmation when home windows with working
    processes are minimized or the short terminal is hidden. #13686
  • macOS: OSC 52 clipboard learn confirmations now not steal focus. If the
    terminal is unfocused, Ghostty rings the bell and exhibits the immediate when
    you come to it. #13744
  • macOS: Splits within the fast terminal now additionally set
    GHOSTTY_QUICK_TERMINAL=1. #12895 #12896
  • macOS: The fast terminal now not reopens at a stale dimension after a
    show is reconnected at a distinct decision. #13250
  • macOS: The “New Ghostty Tab Here” and “New Ghostty Window Here” companies
    now open the proper listing when given a plain-text path. #12727
    #12731
  • macOS: Working directories handed from Services, Shortcuts, and
    AppleScript are actually normalized, fixing Nushell and zsh %1~ prompts.
    #12614 #14051
  • macOS: ghostty -e now not opens the command’s file arguments as
    additional terminals, e.g. ghostty -e vim file.txt. #13748
  • macOS: Opening a .command file from Finder now not corrupts
    non-ASCII characters in its path. #13862
  • macOS: The Shortcuts terminal entity now reviews the proper variety,
    title, working listing, and screenshot for brand spanking new terminals. #13007
  • macOS: The Shortcuts “New Terminal” motion now works with instructions that
    have arguments and with a command area that was cleared. #12391
    #12392
  • macOS: AppleScript ship key now works for character keys, not solely
    particular keys like enter, and respects macos-option-as-alt. #13205
  • macOS: Update tablet fixes: replace errors are actually proven, “Install and
    Relaunch” now not asks for affirmation, and the cancel possibility is
    hidden as soon as an replace can now not be canceled. #13540 #13562
    #13612
  • macOS: The default app icon follows the system icon model once more after
    altering it in System Settings, and customized icons now apply to the app in
    Finder. #12180 #12344
  • macOS: The dock icon bell badge now seems when notification permission
    was granted earlier with out badge permission. #12133
  • macOS: The Copy menu merchandise is disabled when nothing is chosen. #12521
  • macOS: Menu gadgets now present the proper shortcut for keybinds on bodily
    keys (e.g. tremendous+backquote), uppercase letters, ahead delete, and
    the scroll_to_selection and search_selection actions. #13888
    #12039 #12011 #12281
  • macOS: The safe enter indicator’s popover arrow now factors on the
    icon. #12249
  • macOS: Fix a uncommon everlasting freeze after waking from sleep or altering
    shows. macOS didn’t mark the app as “Not Responding”, so it may
    solely be killed. #14691
  • macOS: Fix a crash when closing a tab, most simply triggered with
    undo-timeout = 0. #13359 #13364
  • macOS: Fix a crash when opening a brand new tab from a local fullscreen
    window. #13636
  • macOS: Fix a crash brought on by a knowledge race when studying cached terminal
    contents. #13646
  • macOS: Fix a crash when OSC 52 clipboard affirmation prompts overlap.
    #13648
  • macOS: Fix crashes when CoreText returns null, comparable to for fonts with out
    a show title or below extreme reminiscence stress. #13642 #13679
  • macOS: Fix closed home windows leaking with clear titlebars (the
    default), which made Ghostty and WindowServer use extra CPU and reminiscence
    over time. #13601
  • macOS: Fix a reminiscence leak every time Ghostty reads terminal textual content, comparable to
    for copy, Quick Look, or accessibility. #12020 #12025
  • macOS: Fix an IOSurface reminiscence leak when scripts quickly create and shut
    terminals. #13640
  • macOS: Fix a Mach port leak, and a gradual slowdown, whereas international
    keybinds await Accessibility permission. #13590
  • GTK: Splits can now be rearranged with drag and drop, matching macOS.
    Drag a break up by its deal with and drop it onto one other break up, together with
    splits in different tabs and home windows. #10224 #10423
  • GTK: Ghostty now renders on the true fractional scale (e.g. 125% or
    150%), so textual content and box-drawing characters are sharp as a substitute of blurry
    below fractional scaling. #1938 #14269
  • GTK: The renderer now not makes use of GtkGLArea. Ghostty now renders with
    EGL solely on the render thread and fingers completed frames to GTK as
    DMABUFs, so the principle thread now not does any OpenGL work. #14052
    #14636
  • GTK: Windows can now be renamed utilizing the menu, command palette, or the
    new prompt_window_title and set_window_title binding actions.
    #10469 #10999
  • GTK: A brand new +new-tab CLI command opens a brand new tab in a working Ghostty
    occasion. When run from inside Ghostty, the tab opens in the identical
    window. It accepts the identical -e, --working-directory, and --title
    flags as +new-window. #11762
  • GTK: A brand new +toggle-quick-terminal CLI command toggles the short
    terminal of a working Ghostty occasion, helpful for binding in window
    managers with out international shortcut help. #12661
  • GTK: Global keybinds now use the vicinae-hotkey-v1 Wayland protocol
    when the compositor helps it (e.g. Hyprland 0.56+), falling again to
    the XDG desktop portal in any other case. Ghostty exhibits a desktop notification if
    a world keybind cannot be registered. #13464
  • GTK: quick-terminal-screen is now supported on Wayland. The default,
    fundamental, locations the short terminal on the compositor’s major output
    (or the primary monitor if the compositor would not report one). Set it to
    mouse to let the compositor select, which was the earlier habits.
    #11117
  • GTK: On Wayland, background-blur now makes use of the compositor-agnostic
    ext-background-effect-v1 protocol as a substitute of KDE’s blur protocol,
    enabling blur on compositors comparable to Niri. The blur area additionally now not
    covers the window’s client-side shadows. #10721 #10720 #10727
  • GTK: On GTK 4.23.3 and newer, background-blur makes use of GTK’s built-in
    background blur, which covers the window extra precisely. #13581
    #13586
  • GTK: The open_config binding motion now accepts new_window to
    edit the configuration in $VISUAL or $EDITOR in a brand new Ghostty
    window. The default, os_open, retains the earlier habits. #11905
  • GTK: A brand new configuration gtk-horizontal-tab-scroll (default true)
    may be set to false to cease two-finger horizontal scrolling from
    switching tabs, passing the scroll to the terminal utility as a substitute.
    #12659
  • GTK: A brand new configuration gtk-tabs-inverted strikes the shut button to
    the beginning of every tab, in each the tab bar and the tab overview.
    #14657
  • GTK: The default command palette entries are actually translatable. #11641
  • GTK: The embedded Noto emoji fonts have been up to date, so newer emoji and ZWJ
    sequences such because the head-shaking faces render as one glyph as a substitute of
    overlapping neighboring cells. #14047
  • GTK: ctrl+shift+page_up and ctrl+shift+page_down now transfer the present
    tab left and proper (move_tab), matching Firefox, GNOME Terminal, and
    VS Code. jump_to_prompt moved to ctrl+shift+arrow_up and
    ctrl+shift+arrow_down. #4998 #12458
  • GTK: URLs now open by way of the XDG desktop portal, falling again to
    xdg-open if the portal is unavailable. Ghostty passes an activation
    token so the opened utility, comparable to your browser, can come to the
    entrance on compositors that require one. #5991 #11754 #14785
    #14787
  • GTK: Desktop notifications are actually withdrawn when their terminal is
    centered or closed, and repeated notifications with the identical textual content
    change one another, matching macOS. #14108
  • GTK: Tabs that are not seen now not render, saving CPU and GPU.
    This matches macOS. #12760
  • GTK: The Dolphin “Open Ghostty Here” motion now opens a brand new window in
    the working Ghostty occasion as a substitute of launching a separate one.
    #11614
  • GTK: Fix Ghostty generally failing to launch with systemd 262, which
    refused to begin the service as a result of Ghostty reported readiness earlier than
    it may deal with reload indicators. #14398 #14399
  • GTK: Fix deeply nested splits generally turning into invisible or shedding
    focus. #11193 #12698
  • GTK: Resizing splits, particularly with resize_split keybinds, no
    longer glints. #13414
  • GTK: resize_split on nested splits now not causes massive jumps in
    dimension. #12699
  • GTK: Splits can now not be resized smaller than one cell, by dragging
    the divider or with resize_split. #14476
  • GTK: High-resolution scroll wheels now not scroll a lot sooner than
    normal scroll wheels. #12483
  • GTK: Disable undesirable kinetic scrolling on trackpads with GTK variations
    older than 4.20.1. #11793
  • GTK: Middle clicks are as soon as once more despatched to terminal purposes utilizing
    mouse reporting when gtk-enable-primary-paste is disabled in
    GSettings. #12940 #13108
  • GTK: The fast terminal now not breaks when toggled off manually
    whereas quick-terminal-autohide is enabled. #11679 #12471
  • GTK: Opening the right-click context menu now not hides the short
    terminal when quick-terminal-autohide is enabled. #12843
  • GTK: The resize overlay now not retains reappearing when the scrollbar
    is seen and now not blocks mouse enter whereas proven. #11970
    #11972
  • GTK: The most window dimension is now primarily based on the monitor the window is
    presently on, not the monitor it was opened on. #13171
  • GTK: +new-window -e now works when shell-integration is about to a
    particular shell. +new-window and +new-tab additionally settle for a brand new
    --shell-integration flag. #12378 #13741
  • GTK: Keys remapped to modifiers with XKB (e.g. Delete remapped to
    ISO_Level3_Shift) now not additionally ship the unique key. #13967
  • GTK: On Wayland, the IME candidate window now follows the cursor whereas
    composing and now not covers the road being edited. #14729
  • GTK: Splits in a tab that was moved to a different window now act on the
    new window (e.g. toggle_fullscreen). #14474
  • GTK: The mouse cursor retains its textual content form whereas deciding on textual content.
    #14558
  • GTK: The command palette now makes use of the terminal colours when
    window-theme = ghostty. #14662
  • GTK: Opening URLs now not fails when the fallback opener (xdg-open)
    produces massive output. #12797
  • GTK: Clicking a desktop notification now not focuses the fallacious
    terminal when the one which despatched it has since been closed. #12028
  • GTK: A bell within the centered terminal now not leaves the bell
    indicator set. #13597
  • GTK: Fix the window repeatedly redrawing within the background after an
    indeterminate progress bar (OSC 9;4) was eliminated. #14704 #14738
  • GTK: Log lacking or invalid gtk-xft-dpi values as soon as as a substitute of
    repeatedly. #14410 #14085 #14434
  • GTK: Fix a crash when closing tabs or splits on GTK 4.20 (GNOME 49).
    #12426
  • GTK: Fix a crash with international keybinds or on configuration reload when
    no D-Bus connection is out there. #13101
  • GTK: Fix a doable crash when Fontconfig reviews a font’s language as a
    plain string as a substitute of a language set. #14853
  • GTK: Fix a leak the place each audio bell began a brand new GStreamer pipeline
    and threads that have been by no means cleaned up, slowly elevating CPU utilization.
    #13647 #12815 #13657
  • Snap: Link the system FreeType, Fontconfig, HarfBuzz, libpng, and zlib
    as a substitute of bundled copies, fixing frequent crashes brought on by two copies
    of the identical library in a single course of. #14392 #14682
  • Snap: The snap’s personal GIO modules and XDG information directories now take
    precedence over the host’s. #12045
  • Snap: Programs working inside Ghostty, comparable to clear, now discover the
    xterm-ghostty terminfo entry. #12662
  • Flatpak: Commands began by Ghostty on the host are actually terminated if
    Ghostty crashes. #12427

Ghostty 1.4 introduces full localization for the command palette and provides
help for 4 new languages:

  • Basque
  • Belarusian
  • Danish
  • Serbian (Cyrillic and Latin scripts)

Localization is maintained by volunteer contributors. If you wish to
assist localize Ghostty in your language, please open a dialogue on the
GitHub repo. Thank you to all of the volunteers who contributed to Ghostty’s
localization!

  • Ghostty now requires Zig 0.17 to construct. #14518 #14519
  • GTK builds now require GTK 4.18 and libadwaita 1.7, up from
    GTK 4.14 and libadwaita 1.5. Builds in opposition to older headers fail at
    compile time, and Ghostty exits at startup if older libraries are
    loaded at runtime. #14330
  • GTK builds now hyperlink the system EGL library (pkg-config egl, normally
    supplied by libglvnd or Mesa) for the brand new renderer. At runtime, Ghostty
    makes use of GTK’s EGL show when it may, and in any other case wants an EGL driver
    that helps the surfaceless platform. #14052 #14636
  • A brand new -Dinstalled-exe-path construct possibility units absolutely the executable
    path written into the desktop file, D-Bus companies, and systemd consumer
    service. Previously this path got here from the set up prefix. Without the
    possibility, these information now title ghostty alone, which systemd solely finds in
    /usr/bin or /usr/native/bin, so set it for every other prefix.
    #14805 #14806
  • When linking the system gtk4-layer-shell (-fsys=gtk4-layer-shell),
    model 1.0.4 or newer is now required. Ghostty now not disables the
    fast terminal on older variations, which might crash on some compositors.
    #11559

As with 1.3, libghostty is not instantly a part of the Ghostty 1.4 launch.
But a big a part of the 1.4 growth cycle went into libghostty, so
here is an replace.

Over the previous 6 months, the C API for libghostty-vt has grown from a
parser and some encoders into a whole terminal emulator API, adopted
by dozens of free and industrial terminal emulators utilized by thousands and thousands of
folks. It’s exhausting to quantify precisely, however the variety of folks utilizing a
libghostty-based terminal is confidently a number of occasions the variety of
folks utilizing the Ghostty GUI.

libghostty-vt now builds for macOS, Linux, Windows (MSVC and GNU), FreeBSD,
Android, iOS, and WebAssembly, and CI repeatedly verifies each one among
these targets. The objective is for libghostty-vt to be usually usable in every single place,
inside cause, so if you’d like extra goal help, tell us!

It’s additionally simpler to combine libghostty-vt into current construct techniques.
There’s CMake help, Nix packaging, an xcframework, and a supply
tarball, along with the prevailing pkg-config file. libghostty-vt no
longer wants libc++, and it may construct freestanding.

The API continues to be marked as a piece in progress and broke compatibility
a number of occasions throughout this cycle, so anticipate extra breaking adjustments earlier than
a tagged launch. The API documentation
and the Zig, C, C++, Swift, and WebAssembly examples
(now over 30) are stored updated with fundamental.

We’re going to do a closing move over the C API, break ABI another time,
after which probably tag a libghostty 1.0 launch very quickly.

Ghostty is a non-profit project, fiscally sponsored
by Hack Club.
All of our funds are public on HCB,
so you possibly can see precisely the place each greenback goes.

During the 1.4 cycle, we paid $41,820 to contributors below contract and
spent about $1,260 on roads comparable to web site internet hosting.

I’m blissful to share that we have now signed our first two 12-month contracts,
which give contributors secure, long-term paid work on Ghostty and assist
guarantee the continued stability and sustainability of the undertaking:

  • @trag1c is Ghostty’s head of operations.
    He manages the group on GitHub and Discord, coordinates our
    volunteer translators, and maintains numerous different vital undertaking
    techniques.
  • @vancluever works on numerous Ghostty
    subsystems. In this cycle, he led the improve to Zig 0.16, moved the
    construct off Zig’s deprecated @cImport, up to date the bundled Fontconfig,
    and extra. He’s additionally the writer of
    z2d, the 2D graphics library Ghostty
    makes use of to attract box-drawing characters and different sprite glyphs.

If you’d prefer to help Ghostty, please go to our sponsorship page.

The major focus of the roadmap continues to be libghostty performance,
stability, and portability. During the final launch cycle, I stated I aimed to
tag a libghostty launch. We have not finished that but, however I’m assured we are going to
accomplish that earlier than Ghostty 1.5.

libghostty is a undertaking that continues to be the tide that lifts all boats.
libghostty enhancements tie on to Ghostty GUI enhancements in addition to
dozens of different massive initiatives within the ecosystem. As extra massive initiatives undertake
libghostty, libghostty tends to get extra testing and a spotlight, and this
creates a cycle that yields essentially the most acquire for terminal emulators in every single place.

macOS and GTK builds of Ghostty have proficient, succesful maintainer groups that
are persevering with to enhance them, so they are not uncared for by any means!
As a undertaking, we have determined to drop any roadmap for Windows help within the
Ghostty GUI. libghostty absolutely helps Windows (and we check it in CI), and the
official stance now could be that downstream initiatives ought to use that.

Our launch cycle stays 6 months. This launch was delayed by one month,
however Ghostty 1.5 is deliberate for March 2027. libghostty could have a separate
launch cycle.



Source link