Skip to content

Update VOUCHED list - #12442

Merged
ghostty-vouch[bot] merged 1 commit into
mainfrom
vouch/7d8caf3f-
Apr 25, 2026
Merged

ghostty-vouch[bot] merged 1 commit into
mainfrom
vouch/7d8caf3f-

Conversation

@ghostty-vouch

@ghostty-vouch ghostty-vouch Bot commented Apr 25, 2026

Copy link
Copy Markdown
Contributor

Triggered by comment from @mitchellh.

Vouch: @ZuBB

@ghostty-vouch
ghostty-vouch Bot merged commit 119f387 into main Apr 25, 2026
@ghostty-vouch
ghostty-vouch Bot deleted the vouch/7d8caf3f- branch April 25, 2026 16:26
saeedvaziry added a commit to muxy-app/ghostty that referenced this pull request Apr 29, 2026
* fix quick-terminal breaking when it is manually toggled while autohide is enabled

* flatpak: terminate session if Ghostty disconnects from bus

This makes sure that if Ghostty crashes, commands spawned are also
terminated automatically by the Flatpak Session Helper.

* surface: sync middle-click paste source with copy-on-select

Middle-click paste previously always read from the selection clipboard
(falling back to the standard clipboard on platforms without one).

Now the paste source follows copy-on-select:
- copy-on-select = true: paste from selection clipboard (unchanged)
- copy-on-select = clipboard: paste from system clipboard
- copy-on-select = false: paste from selection clipboard (unchanged)

Fixes ghostty-org#9788.

* config: use Config to check key binding instead of App

Previously `ghostty_app_key_is_binding` (unlike Surface) is just using `config.keybind` to check whether a KeyEvent is in the set or not.

After this, I can add unit tests for keybinding more easily, with dummy configs.

* Update VOUCHED list (ghostty-org#12418)

Triggered by
[comment](ghostty-org#11461 (comment))
from @jcollie.

Vouch: @seyoungjeong

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* libghostty: enable cross-compiling macOS from Linux/Windows

This allows libghostty-vt to be cross-compiled for macOS from non-macOS
platforms. I've updated pkg/apple-sdk to fallback to Zig's embedded
macOS headers if the macOS SDK is not found.

Additionally, CombineArchivesStep has been updated to use Linux
tooling on Linux.

* build: respect config.emit_xcframework for building libghostty-vt.xcframework on Darwin

This fixes a hardcoded build issue on macOS where Zig unconditionally forces xcodebuild -create-xcframework to run during compilation, even when the caller explicitly specifies that they only want the raw standard C objects/headers (-Demit-lib-vt).

The Bug:
Around line 155 in build.zig, the libghostty-vt xcframework was being packaged unconditionally for Darwin builds. This caused developers (and wrappers like go-libghostty) attempting to natively build the vt library locally using only the minimal macOS Command Line Tools to experience an immediate crash, as xcodebuild -create-xcframework strictly demands a full Xcode application installation.

The Fix:
Guarded the GhosttyLibVt xcframework creation step with config.emit_xcframework. Because src/build/Config.zig intuitively forces emit_xcframework to default to false whenever emit_lib_vt is invoked, this structurally allows lightweight macOS builds to safely skip the xcodebuild invocation while still correctly compiling the standard .a object library files.

* build: make libghostty-vt xcframework emission explicit via -Demit-lib-vt-xcframework

* chore(fmt): zig fmt build.zig to pass test

* build: gate lib-vt xcframework on emit-xcframework with xcodebuild detection

* cleanups

* ci: fix

* Update VOUCHED list (ghostty-org#12425)

Triggered by [discussion
comment](ghostty-org#12308 (comment))
from @jcollie.

Vouch: @alaviss

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* flatpak: update runtime to GNOME 50

* surface: respect semantic prompt boundaries for links

Link detection currently expands the clicked location to a full line
before running the configured regexes. When semantic prompt markers
are present, this can cause prompt text and neighboring content to be
matched together even though they are distinct semantic regions.

Use semantic prompt boundaries when selecting the text to inspect for
link matching. This keeps prompt text separate from the content beside
it and avoids folding prompt text into double-click link/path
selection.

Add a regression test that models a prompt and command on the same
line and verifies the prompt region and input region remain separate.

* core: Acquire renderer state mutex before calling processLinks

Holding the renderer state mutex is a documented precondition of
`processLinks`, but `mouseButtonCallback` previously called
the function without the mutex.

This creates a race with the I/O thread's `processOutput`, which can
prune scrollback pages while `processLinks` is reading them, resulting
in a use-after-free segfault.  See
ghostty-org#12409 (Linux: crash
while selecting text).

https://github.com/ghostty-org/ghostty/blob/57b5e1e2507cd65ab8197d39baa4ce2505185510/src/Surface.zig#L4354-L4355

https://github.com/ghostty-org/ghostty/blob/57b5e1e2507cd65ab8197d39baa4ce2505185510/src/Surface.zig#L3822-L3824

995e4e3 (os: open) changed the body of `processLinks` to be
non-trivial and documented the precondition, but the lock was not held
at the call site.

* Update VOUCHED list (ghostty-org#12436)

Triggered by [discussion
comment](ghostty-org#12409 (reply in thread))
from @00-kat.

Vouch: @jmr

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Fix Korean IME committed text handling for arrow keys

* gtk/SurfaceScrolledWindow: wrap root child with another Adw.Bin

Due to a known Gtk issue, the scrolled_window at the root of the
template is free-ed twice on dispose. This causes crashes when used with
GNOME 49 platform (Gtk 4.20, libadwaita 1.8.5).

Workaround this issue by wrapping the root child in another Adw.Bin,
similar to widgets like ResizeOverlay.

LLM was used to perform discovery against a manually recorded Valgrind
trace, and helped tracking down known fixes for this problem.

Fixes ghostty-org#12306

Assisted-by: OpenAI GPT-5.4

* Update VOUCHED list (ghostty-org#12437)

Triggered by [discussion
comment](ghostty-org#12295 (comment))
from @mitchellh.

Vouch: @dobbylee

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12438)

Triggered by [discussion
comment](ghostty-org#12354 (comment))
from @mitchellh.

Vouch: @007hacky007

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12439)

Triggered by [discussion
comment](ghostty-org#12347 (comment))
from @mitchellh.

Vouch: @rjwittams

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12440)

Triggered by [discussion
comment](ghostty-org#11632 (comment))
from @mitchellh.

Vouch: @ajiblock

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12441)

Triggered by [discussion
comment](ghostty-org#11987 (comment))
from @mitchellh.

Vouch: @nouritsu

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12442)

Triggered by
[comment](ghostty-org#12435 (comment))
from @mitchellh.

Vouch: @ZuBB

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12444)

Triggered by [discussion
comment](ghostty-org#12305 (comment))
from @mitchellh.

Vouch: @aaron-ang

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list

ghostty-org#12263 (comment)

* Update VOUCHED list (ghostty-org#12446)

Triggered by [discussion
comment](ghostty-org#12272 (comment))
from @mitchellh.

Vouch: @dkinzler

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12448)

Triggered by [discussion
comment](ghostty-org#12169 (comment))
from @mitchellh.

Vouch: @knu

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12449)

Triggered by [discussion
comment](ghostty-org#12141 (comment))
from @mitchellh.

Vouch: @AkimioJR

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12450)

Triggered by [discussion
comment](ghostty-org#12108 (comment))
from @mitchellh.

Vouch: @lebdron

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12451)

Triggered by [discussion
comment](ghostty-org#11993 (comment))
from @mitchellh.

Vouch: @VoidNV

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12452)

Triggered by [discussion
comment](ghostty-org#11975 (comment))
from @mitchellh.

Vouch: @rightaditya

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12453)

Triggered by [discussion
comment](ghostty-org#11882 (comment))
from @mitchellh.

Vouch: @mpatankar6

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12454)

Triggered by [discussion
comment](ghostty-org#11858 (comment))
from @mitchellh.

Vouch: @enzowilliam

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12455)

Triggered by [discussion
comment](ghostty-org#11795 (comment))
from @mitchellh.

Vouch: @bch

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#12456)

Triggered by [discussion
comment](ghostty-org#11685 (comment))
from @mitchellh.

Denounce: @enkr1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* feat: add default GTK keybinds for move_tab

Reassign jump_to_prompt from Ctrl+Shift+PageUp/PageDown to
Ctrl+Shift+Arrow Up/Down on GTK, freeing the idiomatic Linux
keybinds (Ctrl+Shift+PageUp/PageDown) for move_tab.

This matches the tab-moving keybinds used by Firefox, GNOME Terminal,
and VSCode. The new jump_to_prompt binding mirrors the macOS pattern
(Cmd+Shift+Arrow Up/Down).

Closes ghostty-org#4998

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update VOUCHED list (ghostty-org#12457)

Triggered by [discussion
comment](ghostty-org#11628 (comment))
from @mitchellh.

Denounce: @4RH1T3CT0R7

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix: remove test as has been suggested in comment

* macOS: make tab color optional

* macOS: make terminal restorable state compatible with 1.2.3(v5)

* macOS: add InternalState to cover migrations

* macOS: add window restoration tests

* macOS: move the restoration logs

* macOS: remove manual invalidateRestorableState()

* os: add randomTmpPath for allocating temp paths

Factor TempDir's name generation into a reusable `randomBasename` (16
random bytes, url-safe base64) and add `randomTmpPath` on top, which
composes `allocTmpDir` + `randomBasename` into a single allocated path
in the form `{TMPDIR}/{prefix}{random}` (mktemp(1)-ish).

This is convenient for callers who want a unique path under TMPDIR (for
a temporary file, socket, etc.) without having to think about basename
buffer sizing or path joining.

Also, use `std.base64.url_safe_no_pad.Encoder` instead of the custom
base64 alphabet, which is exactly equivalent.

* os: RANDOM_BASENAME_LEN -> random_basename_len

* flatpak: don't assume c_uint to be u32

Thanks pluie for the pointer.

* os: use GetTempPathW for allocTmpDir on Windows

`allocTmpDir` previously read `%TMP%` via `getenvW` and returned `null`
if the variable wasn't set, requiring each caller to to deal with the
nullable. Unfortunately, there isn't a platform-neutral default value
that makes sense for those cases (i.e. `/tmp` is POSIX-y).

We now use `GetTempPathW` on Windows, which is the official way to get
this directory: `TMP` → `TEMP` → `USERPROFILE` → `GetWindowsDirectoryW`.

With a real system call behind it, the function no longer needs to be
nullable: the only remaining failure modes are OOM (propagated) and the
syscall itself failing or returning data we can't decode. In those later
cases, we use `C:\Windows\Temp` as a fallback, similar to how we use
`/tmp` in the POSIX case.

The Windows path always allocates so it still must be paired with
`freeTmpDir`, which matches the existing contract.

* test: only change themes in theme tests

* test: always use temporary config when running ui tests

* test: add test plan and override default config when running tests

* feat: add middle-click action configuration

* renderer: fix preedit range width

* Update VOUCHED list (ghostty-org#12485)

Triggered by [discussion
comment](ghostty-org#12484 (comment))
from @jcollie.

Vouch: @kylesower

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix: update Se terminfo entry to reset cursor to configured default

* input: remove translated in capi

Follow up for a3462dd

* macOS: update keybind for end_search

* macOS: fix ending search in menu bar does focus on surface

* update zon2nix to 0.5.0

fix hash outputs for flatpak
build with Zig 0.16 from nixpkgs
(which required fixing prettier reference in devShell.nix)

* switch back to older nixpkgs

* Fix speedy high-resolution scrolling on Linux

Enforcing an absolute minimum of 1 for scroll events causes differing
scroll speeds between high-resolution and standard scroll wheels on
Linux. Since this was added to handle MacOS's precision scrolling
emulation, this patch alters the behaviour so that the absolute minimum
is only enforced on MacOS.

Fixes ghostty-org#11648.

* zig-fmt cleanup

---------

Co-authored-by: Daniel Kinzler <kinzler.daniel@gmail.com>
Co-authored-by: Leorize <leorize+oss@disroot.org>
Co-authored-by: 007hacky007 <007hacky007@users.noreply.github.com>
Co-authored-by: Lukas <134181853+bo2themax@users.noreply.github.com>
Co-authored-by: ghostty-vouch[bot] <262049992+ghostty-vouch[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Mitchell Hashimoto <m@mitchellh.com>
Co-authored-by: 0xDVC <neilohene@gmail>
Co-authored-by: N E I L   O H E N E <54632119+0xDVC@users.noreply.github.com>
Co-authored-by: Vasyl Zuziak <vasyl.zuziak@tietoevry.com>
Co-authored-by: Jesse Rosenstock <jmr@google.com>
Co-authored-by: dobbylee <leekw1245@gmail.com>
Co-authored-by: Enzo William <enzowilliam99@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Jon Parise <jon@indelible.org>
Co-authored-by: Andrei Lebedev <14347159+lebdron@users.noreply.github.com>
Co-authored-by: Kyle Sower <50718101+kylesower@users.noreply.github.com>
Co-authored-by: Jeffrey C. Ollie <jeff@ocjtech.us>
Co-authored-by: Aditya Bhargava <rightaditya@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants