Commit Graph

16303 Commits (main)

Author SHA1 Message Date
Daniel Kinzler 93d1142ada small formatting changes 2026-05-15 17:20:57 +02:00
Jeffrey C. Ollie 0071971b57
Delete test_align (#12688)
Checked in to make sure that this wasn't added intentionally
🙂

Looks like it snuck in in #11868.
2026-05-14 22:50:26 -05:00
ghostty-vouch[bot] 84ad649128
Update VOUCHED list (#12689)
Triggered by
[comment](https://github.com/ghostty-org/ghostty/issues/12688#issuecomment-4456633108)
from @rhodes-b.

Vouch: @vancluever

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-15 03:28:40 +00:00
Chris Marchesi e9213bb1e7
Delete test_align
Checked in to make sure that this wasn't added intentionally 🙂

Looks like it snuck in in #11868.
2026-05-14 20:27:04 -07:00
Leah Amelia Chen 96848d792e
config: clear `command-palette-entry` like `keybind` (#12682)
After #1368, `command-palette-entry=` will no longer clear the entries
like the documentation says. Since i couldn't find an existing issue or
discussion about this, I assume no one is actually using it. So I put
1.4.0 here, lemme know if you want to change it to 1.3.2.

> I basically copied the `keybind` parsing code and doc.
2026-05-15 03:27:07 +09:00
Lukas 13ca032b1d
config: clear `command-palette-entry` like `keybind`
After #1368, `command-palette-entry=` will no longer clear the entries like the documentation says. Since i couldn't find an existing issue or discussion about this, I assume no one is actually using it. So I put 1.4.0 here, lemme know if you want to change it to 1.3.2.

> I basically copied the `keybind` parsing code and doc.
2026-05-14 19:43:08 +02:00
ghostty-vouch[bot] 47382f8dcb
Update VOUCHED list (#12680)
Triggered by
[comment](https://github.com/ghostty-org/ghostty/issues/12678#issuecomment-4452472142)
from @trag1c.

Denounce: @zaviro

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-14 16:15:46 +00:00
Daniel Kinzler 54a38e8134 Distinguish resize and manual update using a combination of
max-position and position properties. Listening to drag events directly
did not work that well.
2026-05-14 15:45:29 +02:00
ghostty-vouch[bot] b23d567cd8
Update VOUCHED list (#12675)
Triggered by
[comment](https://github.com/ghostty-org/ghostty/issues/12674#issuecomment-4445057781)
from @trag1c.

Vouch: @B1NAR10

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-13 20:43:34 +00:00
dependabot[bot] ee316e43c1
build(deps): bump actions/create-github-app-token from 3.1.1 to 3.2.0
Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/actions/create-github-app-token/releases)
- [Changelog](https://github.com/actions/create-github-app-token/blob/main/CHANGELOG.md)
- [Commits](1b10c78c78...bcd2ba4921)

---
updated-dependencies:
- dependency-name: actions/create-github-app-token
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-13 01:38:02 +00:00
Daniel Kinzler e59e27f8bd Fix nested splits disappearing and focus being lost.
The cause of these bugs is that GTK can initially allocate
a split/surface a width/height of 0 which causes it to
get unmapped and lose focus. Additionally the split ratio is
only set once but not accurately for tiny splits, which can keep
a surface invisible even when the split gets resized later.

To fix these problems the split ratio is always checked and
possibly corrected when a split gets resized. Changes in a split
ratio caused by the user dragging the divider are detected
separately using an event controller. If a surface loses focus
we restore it once the surface becomes mapped again.
2026-05-12 14:13:35 +02:00
Lukas 0226bcf034
macOS: update window appearance for About and ConfigurationErrors 2026-05-12 09:20:08 +02:00
Lukas 2c6dd59406
macOS: fix render_thread "stuck" after dragging surface to another tab within the same window
The reason the thread is stuck is because the surface's occlusion state is set to invisible after target tab's activate while dragging, since the dragged surface is still in previous tree before dropping, and after dropping the occlusion state of this surface is not updated to visible, which causing the surface is accepting input but not rendering.
2026-05-12 09:18:52 +02:00
Lukas 366c34831a
macOS: fix first responder after dragging a non-focused surface
This fixes a bug: after dragging a non-focused surface from window A to window B **quickly without making B the key window**, the focused surface in window A is not receiving `keyDown` events.
2026-05-12 09:18:51 +02:00
Hua Jiang 81af65766f feat: add +toggle-quick-terminal IPC command
Expose toggle-quick-terminal as a proper IPC action so it can be
triggered via 'ghostty +toggle-quick-terminal' from the command line,
instead of calling the raw D-Bus org.gtk.Actions.Activate interface.

This follows the same pattern as the existing +new-window IPC command:

  - Add toggle_quick_terminal to apprt.ipc.Action enum (Zig + C ABI)
  - Create apprt/gtk/ipc/toggle_quick_terminal.zig (GTK D-Bus handler)
  - Route .toggle_quick_terminal in apprt/gtk/App.zig performIpc
  - Register toggle-quick-terminal GAction in application.zig
  - Add +toggle-quick-terminal CLI handler in cli/
  - Register in cli/ghostty.zig Action enum, runMain, and options
  - Add stub in apprt/embedded.zig
  - Update include/ghostty.h C header enum

Usage:
  ghostty +toggle-quick-terminal

Closes: #12618
2026-05-12 09:03:14 +08:00
Mitchell Hashimoto b0f8276658
build(deps): bump cachix/cachix-action from 1eb2ef646ac0255473d23a5907ad7b04ce94065c to 5f2d7c5294214f71b873db4b969586b980625e71 (#12651)
Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action)
from 1eb2ef646ac0255473d23a5907ad7b04ce94065c to
5f2d7c5294214f71b873db4b969586b980625e71.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/cachix/cachix-action/blob/master/RELEASE.md">cachix/cachix-action's
changelog</a>.</em></p>
<blockquote>
<h1>Release</h1>
<ol>
<li>
<p>Create and push a new tag:</p>
<pre lang="console"><code>git tag v17
git push origin v17
</code></pre>
</li>
<li>
<p>Wait for CI to pass.</p>
</li>
<li>
<p><a href="https://github.com/cachix/cachix-action/releases/new">Create
a release</a> for the new tag.</p>
</li>
<li>
<p>Move the major version tag to the latest release:</p>
<pre lang="console"><code>git tag -fa v17
git push origin v17 --force
</code></pre>
</li>
</ol>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5f2d7c5294"><code>5f2d7c5</code></a>
fix: await main functions</li>
<li><a
href="4ee54539d7"><code>4ee5453</code></a>
rebuilt dist</li>
<li><a
href="9f82c7e332"><code>9f82c7e</code></a>
fix: ensure that the post-build hook never fails</li>
<li><a
href="a593539ec5"><code>a593539</code></a>
ci: add a workflow to auto-bump version in README</li>
<li><a
href="8d6d4b9006"><code>8d6d4b9</code></a>
docs: add release and contributing docs</li>
<li><a
href="6505427c13"><code>6505427</code></a>
Merge pull request <a
href="https://redirect.github.com/cachix/cachix-action/issues/213">#213</a>
from jleroux98/update-readme</li>
<li><a
href="5941c26199"><code>5941c26</code></a>
use regular tags</li>
<li><a
href="80a630b9fc"><code>80a630b</code></a>
update tags</li>
<li>See full diff in <a
href="1eb2ef646a...5f2d7c5294">compare
view</a></li>
</ul>
</details>
<br />


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>
2026-05-11 06:54:27 -07:00
ghostty-vouch[bot] 64131dcd41
Update VOUCHED list (#12656)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/12616#discussioncomment-16876564)
from @pluiedev.

Vouch: @00JCIV00

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-11 08:07:48 +00:00
ghostty-vouch[bot] 611525ac3f
Update VOUCHED list (#12655)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/12618#discussioncomment-16876561)
from @pluiedev.

Vouch: @thirstycrow

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-11 08:07:26 +00:00
ghostty-vouch[bot] 4c6859447c
Update VOUCHED list (#12654)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/12650#discussioncomment-16876487)
from @pluiedev.

Vouch: @athaapa

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-11 08:01:15 +00:00
Riccardo Mazzarini b771a3d4f1
libghostty-vt: preserve shell prompts on resize by default
This PR makes libghostty-vt preserve shell prompts across resize unless
the shell explicitly opts into prompt clearing/redraw with `redraw=1`.
2026-05-11 08:48:25 +02:00
dependabot[bot] b3c1f754ad
build(deps): bump cachix/cachix-action
Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from 1eb2ef646ac0255473d23a5907ad7b04ce94065c to 5f2d7c5294214f71b873db4b969586b980625e71.
- [Release notes](https://github.com/cachix/cachix-action/releases)
- [Changelog](https://github.com/cachix/cachix-action/blob/master/RELEASE.md)
- [Commits](1eb2ef646a...5f2d7c5294)

---
updated-dependencies:
- dependency-name: cachix/cachix-action
  dependency-version: 5f2d7c5294214f71b873db4b969586b980625e71
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 00:28:49 +00:00
ghostty-vouch[bot] ce6a00bfbf
Update VOUCHED list (#12647)
Triggered by
[comment](https://github.com/ghostty-org/ghostty/issues/12644#issuecomment-4415471290)
from @jcollie.

Denounce: @f1813483-netizen

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-10 14:02:12 +00:00
Jon Parise e3e9b51b79
macos: simplify workingDirectory setter (#12639)
This is a minor improvement to the computed property's `set` logic: we
can just use `.map {}` to unify the two optional paths.
2026-05-09 15:01:45 -04:00
Jon Parise 2b48045731 macos: simplify workingDirectory setter
This is a minor improvement to the computed property's `set` logic: we
can just use `.map {}` to unify the two optional paths.
2026-05-09 14:37:43 -04:00
kat a330ee93e8
i18n: add Basque (eu) translation (#12544)
Same as with icelandic (#12301) we may be even fewer than them but let's
have this translated into Basque.

I also volunteer for the basque translation team.
2026-05-09 16:12:57 +00:00
Mitchell Hashimoto 4bd8fa1e3e
macOS: normalize working directory paths with FilePath (#12614)
This fixes for
[Nushell](f342d8acfa/crates/nu-protocol/src/engine/engine_state.rs (L1012))
when opening Ghostty via Finder service and Shortcuts, also makes path
parsing more robust in AppleScript.

<img width="976" height="690" alt="image"
src="https://github.com/user-attachments/assets/d3c19481-39ce-4797-ba31-d431af16651d"
/>
2026-05-09 08:17:29 -07:00
Lukas 607152ec6d
macOS: normalize working directory paths with FilePath
This fixes for nuShell when opening Ghostty via Finder service and Shortcuts, also makes path parsing more robust in AppleScript.
2026-05-09 12:47:46 +02:00
Mikel Larreategi ec145bca9f
Fix translation errors in eu 2026-05-08 19:18:09 +02:00
ghostty-vouch[bot] 063ac3ecc5
Update VOUCHED list (#12613)
Triggered by
[comment](https://github.com/ghostty-org/ghostty/issues/12612#issuecomment-4395645191)
from @trag1c.

Vouch: @raphamorim

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-07 08:56:04 +00:00
ghostty-vouch[bot] 0deaac08ed
Update VOUCHED list (#12606)
Triggered by
[comment](https://github.com/ghostty-org/ghostty/issues/12604#issuecomment-4392933026)
from @jcollie.

Vouch: @mohshami

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-06 23:25:11 +00:00
Riccardo Mazzarini c44afa6250
fix: preserve active cursor position during reflow
This PR fixes an issue where reflowing could leave the active cursor
attached to a clipped trailing blank cell instead of following the
current write position.
2026-05-06 14:56:52 +02:00
Riccardo Mazzarini 3f11e695d0
fix: apply variation selectors to preceding codepoint
This fixes a bug where the variation selectors (VS15 & VS16) were
checked against the first codepoint in a cell instead of the previous
codepoint in the cell's grapheme cluster, causing them to be dropped if
the first codepoint was not a valid base.
2026-05-06 10:45:47 +02:00
Daniel Kinzler 57a9adce71 fix datastruct/SplitTree not calculating the correct new split ratio when resizing a split 2026-05-05 18:00:04 +02:00
Jon Parise ac103b8f75 nushell: replace ssh wrapper with ghostty +ssh
Replace the inline ssh integration with a thin wrapper that translates
GHOSTTY_SHELL_FEATURES into a `ghostty +ssh` command line. When no
ssh-* feature is enabled, the wrapper falls through to the real `ssh`
binary unchanged so nushell users without ssh integration get plain
ssh behavior.
2026-05-05 08:30:53 -04:00
Jon Parise e5378107eb elvish: replace ssh wrapper with ghostty +ssh
Replace the inline ssh integration with a thin wrapper that translates
GHOSTTY_SHELL_FEATURES into a `ghostty +ssh` command line.
2026-05-05 08:30:53 -04:00
Jon Parise 283dca130e fish: replace ssh wrapper with ghostty +ssh
Replace the inline ssh integration with a thin wrapper that translates
GHOSTTY_SHELL_FEATURES into a `ghostty +ssh` command line.
2026-05-05 08:30:52 -04:00
Jon Parise 2d112059a7 zsh: replace ssh wrapper with ghostty +ssh
Replace the inline ssh integration with a thin wrapper that translates
GHOSTTY_SHELL_FEATURES into a `ghostty +ssh` command line. The shell
wrapper no longer carries terminfo install, ControlMaster wiring, or
cache bookkeeping; it just maps the feature flags to flags on `+ssh`
and forwards everything else.
2026-05-05 08:30:52 -04:00
kat f9a9d33b3a
docs(input): add documentation for missing action parameters (#12579)
### AI Disclosure

Claude generated all the commits, I reviewed it and created this PR
2026-05-05 08:59:39 +00:00
Lukas 5874ce633c
Apply suggestions from code review
Co-authored-by: kat <65649991+00-kat@users.noreply.github.com>
Co-authored-by: Lukas <134181853+bo2themax@users.noreply.github.com>
2026-05-05 09:47:06 +02:00
Jeffrey C. Ollie ac48a9b15b
build(deps): bump cachix/install-nix-action from 31.10.5 to 31.10.6 (#12584)
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 -&gt; 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="8aa03977d8"><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="21d0b780f0"><code>21d0b78</code></a>
nix: 2.34.6 -&gt; 2.34.7</li>
<li>See full diff in <a
href="ab739621df...8aa03977d8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cachix/install-nix-action&package-manager=github_actions&previous-version=31.10.5&new-version=31.10.6)](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>
2026-05-04 23:10:07 -05:00
dependabot[bot] 81e399c412
build(deps): bump cachix/install-nix-action from 31.10.5 to 31.10.6
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](ab739621df...8aa03977d8)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-version: 31.10.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-05 03:08:21 +00:00
Jon Parise 484d6ec66b cli: add an ssh-wrapping +ssh action
Add a drop-in `ssh` wrapper that sets up the remote environment for
Ghostty. Anything not consumed as one of our own flags is forwarded to
the real, wrapped `ssh` binary. It can be used directly (`ghostty +ssh
user@host`), aliased (`alias ssh='ghostty +ssh --'`), or invoked through
Ghostty's shell integration.

Before exec'ing ssh, `+ssh`:

- Forwards Ghostty environment to the remote (`--forward-env`): sets
  TERM=xterm-256color and requests SendEnv forwarding of COLORTERM,
  TERM_PROGRAM, and TERM_PROGRAM_VERSION.
- Installs Ghostty's terminfo on the remote (`--terminfo`), informed by
  our existing `ssh-cache` system and using our internal xterm-ghostty
  terminfo representation.

A third flag, `--cache`, controls cache use; `--cache=false` bypasses
both read and write, which is useful for scripting and for debugging
install failures without polluting the cache.

For shell integration, this replaces the per-shell logic (which made up
roughly a third of our shell integration scripts) with a simple wrapper
function that translates GHOSTTY_SHELL_FEATURES into a `ghostty +ssh`
command line. This commit only migrates the bash integration; the other
shells will follow separately.
2026-05-04 20:21:45 -04:00
Mitchell Hashimoto 563b085a4d
Fix zero-width grapheme attachment during pending wrap (#12581)
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.
2026-05-04 14:37:31 -07:00
Mitchell Hashimoto c2c0901ed0
Update iTerm2 colorschemes (#12562)
Upstream release:
https://github.com/mbadolato/iTerm2-Color-Schemes/releases/tag/release-20260427-153600-5e4d1de
2026-05-04 14:17:29 -07:00
Riccardo Mazzarini c20fcfa1b4
Fix zero-width grapheme attachment during pending wrap
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.
2026-05-04 23:16:41 +02:00
Claude Opus 4.7 df44c6dd83
docs(input): document close_tab arguments 2026-05-04 18:39:02 +02:00
Claude Opus 4.7 b1b01741f6
docs(input): document navigate_search arguments 2026-05-04 16:57:56 +02:00
Claude Opus 4.7 248df8e7aa
docs(input): document copy_to_clipboard arguments 2026-05-04 16:57:37 +02:00
ghostty-vouch[bot] 1547dd667a
Update VOUCHED list (#12564)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/12563#discussioncomment-16793038)
from @jcollie.

Vouch: @agoodkind

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-03 02:02:22 +00:00
mitchellh 28767f62b1 deps: Update iTerm2 color schemes 2026-05-03 00:30:37 +00:00