Tip
Subscribe to Releases: In GitHub, use Watch -> Custom -> Releases for this repository
to get a daily notification with the previous day's Ghostty tip changes.
Note
This changelog summarizes Ghostty tip nightly builds. It is auto-updated every 3 hours by GitHub Actions and shows a rolling 7-day window by default.
Entries are grouped by UTC day and combine commits across all successful runs for each day.
Last updated: May 6, 2026 at 15:46 UTC.
Runs: 1, 2
Summary: 2 runs • 7 commits • 5 authors
248df8edocs(input): document copy_to_clipboard arguments (@claude)b1b0174docs(input): document navigate_search arguments (@claude)df44c6ddocs(input): document close_tab arguments (@claude)5874ce6Apply suggestions from code review (@bo2themax)f9a9d33docs(input): add documentation for missing action parameters (#12579) (@00-kat)### AI Disclosure Claude generated all the commits, I reviewed it and created this PR81e399cbuild(deps): bump cachix/install-nix-action from 31.10.5 to 31.10.6 (@dependabot[bot])Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 31.10.5 to 31.10.6. - [Release notes](https://github.com/cachix/install-nix-action/releases) - [Changelog](https://github.com/cachix/install-nix-action/blob/master/RELEASE.md) - [Commits](https://github.com/cachix/install-nix-action/compare/ab739621df7a23f52766f9ccc97f38da6b7af14f...8aa03977d8d733052d78f4e008a241fd1dbf36b3) --- updated-dependencies: - dependency-name: cachix/install-nix-action dependency-version: 31.10.6 dependency-type: direct:production update-type: version-update:semver-patch ...ac48a9bbuild(deps): bump cachix/install-nix-action from 31.10.5 to 31.10.6 (#12584) (@jcollie)Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 31.10.5 to 31.10.6. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/cachix/install-nix-action/releases">cachix/install-nix-action's releases</a>.</em></p> <blockquote> <h2>v31.10.6</h2> <h2>What's Changed</h2> <ul> <li>nix: 2.34.6 -> 2.34.7 by <a href="https://github.com/github-actions"><code>@github-actions</code></a>[bot] in <a href="https://redirect.github.com/cachix/install-nix-action/pull/275">cachix/install-nix-action#275</a> <strong><a href="https://github.com/NixOS/nix/security/advisories/GHSA-vh5x-56v6-4368">GHSA-vh5x-56v6-4368</a></strong>: Fixes a coroutine stack-to-heap overflow via unbounded recursion in the NAR directory parser. <strong>Severity: High.</strong> <strong><a href="https://github.com/NixOS/nix/security/advisories/GHSA-gr92-w2r5-qw5p">GHSA-gr92-w2r5-qw5p</a></strong>: Fixes an absolute path traversal vulnerability when unpacking archives to disk. Severity: Moderate.</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/cachix/install-nix-action/compare/v31...v31.10.6">https://github.com/cachix/install-nix-action/compare/v31...v31.10.6</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/cachix/install-nix-action/commit/8aa03977d8d733052d78f4e008a241fd1dbf36b3"><code>8aa0397</code></a> Merge pull request <a href="https://redirect.github.com/cachix/install-nix-action/issues/275">#275</a> from cachix/create-pull-request/patch</li> <li><a href="https://github.com/cachix/install-nix-action/commit/21d0b780f08a47ae2baf9814c722ef3884db92aa"><code>21d0b78</code></a> nix: 2.34.6 -> 2.34.7</li> <li>See full diff in <a href="https://github.com/cachix/install-nix-action/compare/ab739621df7a23f52766f9ccc97f38da6b7af14f...8aa03977d8d733052d78f4e008a241fd1dbf36b3">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Runs: 1
Summary: 1 runs • 4 commits • 2 authors
28767f6deps: Update iTerm2 color schemes (@mitchellh)c20fcfaFix zero-width grapheme attachment during pending wrap (@noib3)This PR fixes an issue where a zero-width combining mark could attach to the wrong cell when the preceding character was written in the final column and the cursor had a pending wrap.c2c0901Update iTerm2 colorschemes (#12562) (@mitchellh)Upstream release: https://github.com/mbadolato/iTerm2-Color-Schemes/releases/tag/release-20260427-153600-5e4d1de563b085Fix zero-width grapheme attachment during pending wrap (#12581) (@mitchellh)This PR fixes an issue where a zero-width combining mark could attach to the wrong cell when the preceding character was written in the final column and the cursor had a pending wrap. The test I added used to fail before the fix, but it passes now.
Runs: 1
Summary: 1 runs • 1 commits • 1 authors
1547dd6Update VOUCHED list (#12564) (@ghostty-vouch[bot])Triggered by [discussion comment](https://github.com/ghostty-org/ghostty/discussions/12563#discussioncomment-16793038) from @jcollie. Vouch: @agoodkind
Runs: 1, 2
Summary: 2 runs • 8 commits • 4 authors
d60a16cmacos: avoid replaying keys that commit preedit (@knu)Refs #10460 Related: #12518 When an input method commits all or part of marked text during keyDown, AppKit returns the committed text through insertText. Treat that as text committed by the input method instead of replaying the original key event to the terminal. Previously this path only handled arrow-key commits specially. A control-key shortcut that commits preedit text could still be encoded as the original control input after composition, such as ctrl+j becoming LF. Send committed preedit text as a text-only event for any key that causes the commit. Only replay arrow navigation keys that the existing Korean IME handling expects, and keep plain left-arrow suppressed because AppKit already leaves the caret in place. AI usage: OpenAI Codex helped investigate, implement, test, and refine this change. I reviewed and tested the resulting code.a971bf1libghostty-vt: support building nix derivation on darwin (@sandydoo)9df670cbuild: skip unnecessary steps for libghostty-vt (@sandydoo)d17e551libghostty-vt: fix dependency path resolution errors (@sandydoo)Zigs build infra computes relatives paths to build-time executables that use `setCwd.` The logic is purely lexical and doesn't take into account symlinks, unlike `chdir` that follows symlinks. If the `cwd` resolves to a different depth, then the relative path becomes incorrect.7123bddlibghostty-vt: fix linker tests for darwin (@sandydoo)058d054libghostty-vt: support building on macOS with Nix (#12548) (@mitchellh)Adds support for building libghostty-vt on macOS with Nix. Tested on aarch64-darwin. Tests pass as well. _Claude used to speed up debugging process. All comments, commit messages, and final code authored by me._f0bb6edmacos: avoid replaying keys that commit preedit (#12547) (@mitchellh)Refs #10460 Related: #12518 When an input method commits all or part of marked text during keyDown, AppKit returns the committed text through insertText. Treat that as text committed by the input method instead of replaying the original key event to the terminal. Previously this path only handled arrow-key commits specially. A control-key shortcut that commits preedit text could still be encoded as the original control input after composition, such as ctrl+j becoming LF. Send committed preedit text as a text-only event for any key that causes the commit. Only replay arrow navigation keys that the existing Korean IME handling expects, and keep plain left-arrow suppressed because AppKit already leaves the caret in place. Before: <img width="375" height="375" alt="before" src="https://github.com/user-attachments/assets/1073b93f-625a-4881-8f95-67adefe9d3da" /> After: <img width="375" height="375" alt="after" src="https://github.com/user-attachments/assets/3e4be2a5-4df9-4cdd-bc95-e178ca44c7e7" /> AI usage: OpenAI Codex helped investigate, implement, test, and refine this change. I reviewed and tested the resulting code.f27aa86Update VOUCHED list (#12552) (@ghostty-vouch[bot])Triggered by [discussion comment](https://github.com/ghostty-org/ghostty/discussions/12542#discussioncomment-16785276) from @00-kat. Denounce: @MorgenGeluk
Runs: 1
Summary: 1 runs • 1 commits • 1 authors
35c0e25Update VOUCHED list (#12545) (@ghostty-vouch[bot])Triggered by [comment](https://github.com/ghostty-org/ghostty/issues/12544#issuecomment-4359105411) from @trag1c. Vouch: @erral
Runs: 1, 2
Summary: 2 runs • 11 commits • 5 authors
a43cc02macos: suppress control-char input while composing (@knu)When AppKit delivers a single C0 control character during marked-text composition, Ghostty should treat it as input consumed by the composing state instead of forwarding it to the terminal. This prevents control-key IME actions, such as Japanese input shortcuts like ctrl+h/j/m/n, from leaking into the terminal while composition is still active. Printable text and non-composing control input continue through the normal key path. AI usage: OpenAI Codex helped investigate, implement, test, and refine this change. I reviewed and tested the resulting code.dbffe99chore: remove Ghostty.xctestplan in project tree. (@bo2themax)`lastKnownFileType = file` will change to `text` if you checking out branches with Xcode opened. But this was generated by Xcode in the first place. Anyway we don't need it to be in the project tree to run the tests, and you can still open the test plan in scheme editor.6fdca6bmacOS: enable copy only when there’s actual selected text (@bo2themax)61595b5macOS: fix focus state when toggling command palette from inline title editor (@bo2themax)f8f3b6fFall back to Zig-bundled Darwin headers when an SDK can't be found (@Samasaur1)Currently, cross to Darwin uses the Darwin headers bundled with Zig. However, if you're running a build _on_ Darwin, an error is thrown if the SDK can't be found, even though the bundled headers are still available. Now, we continue to search for and prefer the installed SDK, but if it can't be found, we fall back to the bundled headers rather than failing the build.83ae471Fall back to Zig-bundled Darwin headers when an SDK can't be found (#12534) (@mitchellh)Currently, cross to Darwin uses the Darwin headers bundled with Zig. However, if you're running a build _on_ Darwin, an error is thrown if the SDK can't be found, even though the bundled headers are still available. Now, we continue to search for and prefer the installed SDK, but if it can't be found, we fall back to the bundled headers rather than failing the build.25cd206chore(macOS): remove Ghostty.xctestplan in project tree. (#12520) (@mitchellh)`lastKnownFileType = file` will change to `text` if you checking out branches with Xcode opened. But this was generated by Xcode in the first place. Anyway we don't need it to be in the project tree to run the tests, and you can still open the test plan in scheme editor.1623dafmacOS: enable copy only when there’s actual selected text (#12521) (@mitchellh)This matches the `peformable` definition and the default behaviors of text editing on macOS.95b56ebmacOS: fix focus state when toggling command palette from inline title editor (#12524) (@mitchellh)A bug found while recording that menu fix. > ~~Will link to an open issue if there is one.~~ When toggling the command palette from the inline title editor, the first responder state of the surface is changed quickly from true to false. `makeFirstResponder:` is called by the title editor when finishing, but it happens **after** the command palette is shown, so the `focused` is set to `true` while the command palette is shown. (Could be an AppKit issue as well, since the resign is not called after but the command palette is receiving `keyDown`.) Since `performKeyEquivalent(with:)` is called on all of the subviews until one of the return `true` so the paste action is consumed by the surface instead of the first responder (command palette).4dcb09amacos: suppress control-char input while composing (#12518) (@mitchellh)macos: suppress control-char input while composing When AppKit delivers a single C0 control character during marked-text composition, Ghostty should treat it as input consumed by the composing state instead of forwarding it to the terminal. This prevents control-key IME actions, such as Japanese input shortcuts like ctrl+h/j/m/n, from leaking into the terminal while composition is still active. Printable text and non-composing control input continue through the normal key path. Refs #10460 Related: #2628, #4539 Vouched in #12169 Testing: - xcodebuild test -scheme Ghostty -destination platform=macOS -only-testing:GhosttyTests/SurfaceViewAppKitTests - Manually tested Japanese IME control-key shortcuts on macOS AI usage: - OpenAI Codex helped investigate, implement, test, and refine this change. I reviewed and tested the resulting code.f5664cdUpdate VOUCHED list (#12533) (@ghostty-vouch[bot])Triggered by [discussion comment](https://github.com/ghostty-org/ghostty/discussions/12530#discussioncomment-16765566) from @jcollie. Vouch: @Samasaur1