Commit Graph

17877 Commits

Author SHA1 Message Date
Mitchell Hashimoto
85bfc983a5 gtk,opengl: cleanup & fixes for #14052 (#14279)
Fixes most issues mentioned in #14243, #14254 and elsewhere e.g. on
Discord. Will add more fixes if they can be solidly reproduced.

Please review each commit individually.
2026-09-18 06:28:05 -07:00
Mitchell Hashimoto
d3f5910cc4 font: import Constraint from Glyph.zig in nerd-font codegen (#14282)
1c0aac54b moved RenderOptions.Constraint from face.zig to Glyph.zig and
updated nerd_font_attributes.zig. This does the matching change to the
generator.
2026-09-18 06:27:34 -07:00
Mitchell Hashimoto
89efb129b8 build(deps): bump docker/build-push-action from 7.3.0 to 7.4.0 (#14284)
Bumps
[docker/build-push-action](https://github.com/docker/build-push-action)
from 7.3.0 to 7.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/build-push-action/releases">docker/build-push-action's
releases</a>.</em></p>
<blockquote>
<h2>v7.4.0</h2>
<ul>
<li>Use the shared error helper for Buildx commands by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1620">docker/build-push-action#1620</a></li>
<li>Prevent workflow command injection in metadata logs by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1617">docker/build-push-action#1617</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.92.0 to 0.100.0 in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1614">docker/build-push-action#1614</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1618">docker/build-push-action#1618</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1621">docker/build-push-action#1621</a></li>
<li>Bump <code>@​humanfs/node</code> from 0.16.7 to 0.16.8 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1609">docker/build-push-action#1609</a></li>
<li>Bump brace-expansion from 1.1.13 to 1.1.18 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1592">docker/build-push-action#1592</a></li>
<li>Bump csv-parse from 7.0.0 to 7.0.2 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1613">docker/build-push-action#1613</a></li>
<li>Bump js-yaml from 4.3.0 to 4.3.2 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1605">docker/build-push-action#1605</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1615">docker/build-push-action#1615</a></li>
<li>Bump nanoid from 3.3.16 to 3.3.18 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1611">docker/build-push-action#1611</a></li>
<li>Bump postcss from 8.5.10 to 8.5.25 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1590">docker/build-push-action#1590</a></li>
<li>Bump postcss-selector-parser from 7.1.1 to 7.1.5 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1606">docker/build-push-action#1606</a></li>
<li>Bump sigstore from 4.1.0 to 4.1.1 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1577">docker/build-push-action#1577</a></li>
<li>Bump undici from 6.27.0 to 6.28.0 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1594">docker/build-push-action#1594</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v7.3.0...v7.4.0">https://github.com/docker/build-push-action/compare/v7.3.0...v7.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c3c9e263c2"><code>c3c9e26</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1621">#1621</a>
from docker/dependabot/npm_and_yarn/docker/actions-t...</li>
<li><a
href="459b674183"><code>459b674</code></a>
[dependabot skip] chore: update generated content</li>
<li><a
href="4dedcb23c9"><code>4dedcb2</code></a>
chore(deps): Bump <code>@​docker/actions-toolkit</code> from 0.99.0 to
0.100.0</li>
<li><a
href="379bf63a97"><code>379bf63</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1620">#1620</a>
from crazy-max/buildx-error-message</li>
<li><a
href="9877975c9e"><code>9877975</code></a>
chore: update generated content</li>
<li><a
href="7ed0556ffa"><code>7ed0556</code></a>
use the shared Buildx error summary helper</li>
<li><a
href="91670ba5a4"><code>91670ba</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1618">#1618</a>
from docker/dependabot/npm_and_yarn/docker/actions-t...</li>
<li><a
href="80dbc8614a"><code>80dbc86</code></a>
[dependabot skip] chore: update generated content</li>
<li><a
href="50cac3a3b6"><code>50cac3a</code></a>
chore(deps): Bump <code>@​docker/actions-toolkit</code> from 0.98.0 to
0.99.0</li>
<li><a
href="03b4d6cac0"><code>03b4d6c</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1617">#1617</a>
from crazy-max/fix-metadata-workflow-commands</li>
<li>Additional commits viewable in <a
href="53b7df96c9...c3c9e263c2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docker/build-push-action&package-manager=github_actions&previous-version=7.3.0&new-version=7.4.0)](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-09-18 06:27:16 -07:00
Mitchell Hashimoto
1bd494cf95 build(deps): bump namespacelabs/nscloud-cache-action from 1.6.1 to 1.7.0 (#14285)
Bumps
[namespacelabs/nscloud-cache-action](https://github.com/namespacelabs/nscloud-cache-action)
from 1.6.1 to 1.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/namespacelabs/nscloud-cache-action/releases">namespacelabs/nscloud-cache-action's
releases</a>.</em></p>
<blockquote>
<h2>v1.7.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: Stabilize Brew and Maven cache mode tests by <a
href="https://github.com/sebawita"><code>@​sebawita</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/170">namespacelabs/nscloud-cache-action#170</a></li>
<li>fix: update actions toolkit to 0.5.0 by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/175">namespacelabs/nscloud-cache-action#175</a></li>
<li>Add cache miss documentation hint by <a
href="https://github.com/sebawita"><code>@​sebawita</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/169">namespacelabs/nscloud-cache-action#169</a></li>
<li>fix: update vulnerable transitive dependencies by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/176">namespacelabs/nscloud-cache-action#176</a></li>
<li>test: move Vitest mocks to module scope by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/177">namespacelabs/nscloud-cache-action#177</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/sebawita"><code>@​sebawita</code></a>
made their first contribution in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/170">namespacelabs/nscloud-cache-action#170</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/namespacelabs/nscloud-cache-action/compare/v1.6.1...v1.7.0">https://github.com/namespacelabs/nscloud-cache-action/compare/v1.6.1...v1.7.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1124a6f3ce"><code>1124a6f</code></a>
test: move Vitest mocks to module scope (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/177">#177</a>)</li>
<li><a
href="e40c60c47e"><code>e40c60c</code></a>
fix: update vulnerable transitive dependencies (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/176">#176</a>)</li>
<li><a
href="7db012f73e"><code>7db012f</code></a>
Add cache miss documentation hint (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/169">#169</a>)</li>
<li><a
href="3199dcd520"><code>3199dcd</code></a>
fix: update actions toolkit to 0.5.0 (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/175">#175</a>)</li>
<li><a
href="ac29750009"><code>ac29750</code></a>
Stabilize Brew and Maven cache mode tests (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/170">#170</a>)</li>
<li>See full diff in <a
href="c5f8dab756...1124a6f3ce">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=namespacelabs/nscloud-cache-action&package-manager=github_actions&previous-version=1.6.1&new-version=1.7.0)](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-09-18 06:27:07 -07:00
ghostty-vouch[bot]
86f449013e Update VOUCHED list (#14292)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/14291#discussioncomment-18500537)
from @pluiedev.

Vouch: @KonstantinHudyakov

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-18 12:44:27 +00:00
trag1c
cb7db2490b Update the Norwegian translation (#14289)
These are mostly nitpicky changes that focuses on the following:

- Consistent langauge (marker, last inn, tøm)
- Grammatical fixes
- Language flow improvements

There are still a few things that could be changed, but I felt these
changes are the most impactful and makes the language better.
2026-09-18 13:01:35 +02:00
Christoffer Tønnessen
87b60655bf Update the Norwegian translation
These are mostly nitpicky changes that focuses on the following:

- Consistent langauge (marker, last inn, tøm)
- Grammatical fixes
- Language flow improvements

There are still a few things that could be changed, but I felt these
changes are the most impactful and makes the language better.
2026-09-18 12:24:22 +02:00
ghostty-vouch[bot]
e842d763ce Update VOUCHED list (#14290)
Triggered by
[comment](https://github.com/ghostty-org/ghostty/issues/14289#issuecomment-5728440286)
from @trag1c.

Vouch: @cristeahub

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-18 10:03:27 +00:00
dependabot[bot]
98f2e3e6dc build(deps): bump namespacelabs/nscloud-cache-action from 1.6.1 to 1.7.0
Bumps [namespacelabs/nscloud-cache-action](https://github.com/namespacelabs/nscloud-cache-action) from 1.6.1 to 1.7.0.
- [Release notes](https://github.com/namespacelabs/nscloud-cache-action/releases)
- [Commits](c5f8dab756...1124a6f3ce)

---
updated-dependencies:
- dependency-name: namespacelabs/nscloud-cache-action
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-18 00:13:11 +00:00
dependabot[bot]
cd8daf9eb6 build(deps): bump docker/build-push-action from 7.3.0 to 7.4.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](53b7df96c9...c3c9e263c2)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 7.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-18 00:12:55 +00:00
kat
5de703a1b6 i18n: refine Russian translation (#14257)
We had a small conversation in the last Russian translation PR #13809,
and @korikhin made a good point about how the translation could be
improved, something everyone had overlooked until then.
2026-09-17 19:39:31 +00:00
derVedro
57bdb8c443 i18n(ru): small fixes
хорошо!

Co-authored-by: TicClick <ya@ticclick.ch>
2026-09-17 21:04:04 +02:00
Jesse Miller
f5c056d304 font: import Constraint from Glyph.zig in nerd-font codegen
1c0aac54b moved RenderOptions.Constraint from face.zig to Glyph.zig
and updated nerd_font_attributes.zig. This does the matching change to
the generator.
2026-09-17 12:40:45 -06:00
Leah Amelia Chen
590ab157f4 opengl/Sampler: handle enum parameters correctly
I'm so dumb like honestly, always double check if your unreachables
are *comptime*. Whether the value being switched on is comptime or not
does not matter
2026-09-18 00:29:19 +08:00
Leah Amelia Chen
0fca3d34a5 gtk/imgui_widget: remove direct call to glClearColor
Since the refactor to move our OpenGL context off-thread there is no more
GLAD context loaded on the main thread for this widget, so calling ANY
OpenGL function will crash the entire app.

I don't think the call even worked as intended? I at least can't seem to
tell any difference when the clear commands are simply removed.
Maybe they were useful before.
2026-09-18 00:29:18 +08:00
Leah Amelia Chen
851cd4dc13 gtk: disable Vulkan again, remove old version gates
Vulkan is causing problems again...

Also our minimum GTK version requirement is 4.18 now, so we can nuke all
the old checks
2026-09-18 00:29:18 +08:00
Leah Amelia Chen
c15e2f7992 opengl: EGLattrib arrays need no explicit sentinel
Array literals automagically gain the sentinel when assigned the correct
type. Neat, huh?

See https://ziglang.org/documentation/0.16.0/#Sentinel-Terminated-Arrays
2026-09-18 00:29:18 +08:00
Leah Amelia Chen
ab34b8b131 opengl: explicitly set EGL_SURFACE_TYPE
Co-authored-by: Daniel Kinzler <kinzler.daniel@gmail.com>
2026-09-18 00:29:18 +08:00
derVedro
494e41374e i18n(ru): refine Russian translation 2026-09-16 17:55:29 +02:00
ghostty-vouch[bot]
f9a3f24a56 Update VOUCHED list (#14256)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/14249#discussioncomment-18467661)
from @mitchellh.

Vouch: @MisterTea

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-16 15:31:23 +00:00
Mitchell Hashimoto
8fff9d6e98 build: fully transition away from cImport/addTranslateC (#14246)
This migrates all remaining uses of `cImport` (and `addTranslateC` for
good measure) to using translate-c for C translation, ensuring that we
are ready for when `cImport` is removed from the language, and also that
all sources of C translation are using the same snapshot of the external
package (when can then be updated when we need to fix something).

A couple of notes:

* A few options have been added to support the new translations, namely
the ability to link libraries (passed through to `linkLibrary` on the
Translator side) and whether or not to initialize default values (looks
like `cImport` did this without a way to control it, but translate-c
does not do it by default).

* Using the new library linking option actually simplifies the process
of translating a number of the C packages as we have been shipping the
necessary headers for these packages already with the applicable
libraries. For some of the more complex translation processes though, we
still include the appropriate directories directly.
2026-09-16 08:30:21 -07:00
Mitchell Hashimoto
8482d5454e bash: fix OSC 133;D status always zero (#14250)
The Bash 4.4+ prompt hook saves the command status before doing its own
work and passes it to __ghostty_precmd. The function ignored that
argument and instead read the hook invocation status, causing command
end markers to report zero.

Also, existing scalar PROMPT_COMMAND entries can overwrite the last
command's status before Ghostty's appended hook runs. Capture and
restore the status before those commands, then consume the saved value
in the final hook.

Fixes #14247
2026-09-16 08:30:09 -07:00
Jon Parise
591ccacbdf bash: preserve exit status across prompt commands
Existing scalar PROMPT_COMMAND entries can overwrite the last command's
status before Ghostty's appended hook runs. Capture and restore the
status before those commands, then consume the saved value in the final
hook.

Keep array hooks as independent entries because Bash 5.1 and newer
restore the original status for each entry. Preserve the existing
PROMPT_COMMAND type and safely handle inherited prompt commands where
Ghostty's function definitions are absent.

This retains the fast Bash 4.4+ PS0 integration rather than using
bash-preexec's DEBUG trap.

See #14247
2026-09-15 21:44:32 -04:00
Jon Parise
ed7f046ee4 bash: recognize attributed prompt command arrays
Bash includes additional variable attributes in declare output, so an
exported indexed array is reported with an -ax prefix instead of -a.
Match the indexed-array prefix without requiring a following space so
these values continue through the array-preserving path.
2026-09-15 20:43:59 -04:00
Jon Parise
4dfa44ecd9 bash: use passed exit status in precmd
The Bash 4.4+ prompt hook saves the command status before doing its own
work and passes it to __ghostty_precmd. The function ignored that
argument and instead read the hook invocation status, causing command
end markers to report zero.

Use the explicit argument when present while retaining the current
status fallback required by the older bash-preexec path.

See #14247
2026-09-15 20:37:12 -04:00
Chris Marchesi
fe9cf6a266 build: fully transition away from cImport/addTranslateC
This migrates all remaining uses of cImport (and addTranslateC for good
measure) to using translate-c for C translation, ensuring that we are
ready for when cImport is removed from the language, and also that all
sources of C translation are using the same snapshot of the external
package (when can then be updated when we need to fix something).

A couple of notes:

* A few options have been added to support the new translations, namely
  the ability to link libraries (passed through to linkLibrary on the
  Translator side) and whether or not to initialize default values
  (looks like cImport did this without a way to control it, but
  translate-c does not do it by default).

* Using the new library linking option actually simplifies the process
  of translating a number of the C packages as we have been shipping the
  necessary headers for these packages already with the applicable
  libraries. For some of the more complex translation processes though,
  we still include the appropriate directories directly.
2026-09-15 11:01:24 -07:00
ghostty-vouch[bot]
d4c88d8069 Update VOUCHED list (#14241)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/14240#discussioncomment-18444371)
from @jcollie.

Vouch: @JuaniRaggio

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-15 05:37:44 +00:00
trag1c
661e1e77f4 i18n: update Lithuanian translation for v1.4 (#13777)
Updates the Lithuanian translation for v1.4 and fills all 181 missing
strings, including the command palette entries.

Related to #13766.

Validation:
- Manually reviewed all translated strings
- `msgfmt --check --check-compatibility --check-accelerators` passes
- `msgcmp` against the translation template passes

AI usage: I used Pi with OpenAI Codex (gpt-5.6-sol) to draft the
translations and run gettext checks. I manually reviewed all
translations before submitting.
2026-09-14 22:39:47 +02:00
Mitchell Hashimoto
148681e0aa terminal: decrqm don't truncate 16-bit mode requests (#14237)
DECRQM requests can use a full 16-bit number but we truncated to 15-bits
for the reply (cause thats all we know about). Preserve, the full
16-bits for requests so we give the proper response.
2026-09-14 12:58:39 -07:00
Mitchell Hashimoto
1f225ebb58 terminal: answer ANSI DECRQM queries (#14236)
#14225

Handle the ANSI form of DECRQM (`CSI Ps $ p`), as specified by the VT510
reference [1] and xterm [2]. Previously, only the DEC private form
reached the mode query handler.

[1] https://vt100.net/docs/vt510-rm/DECRQM.html
[2] https://invisible-island.net/xterm/ctlseqs/ctlseqs.txt
2026-09-14 12:58:17 -07:00
Mitchell Hashimoto
88abb77b17 renderer: apply font-thicken to IME preedit text (#14230)
Fixes #13758

### Problem

With `font-thicken = true` on macOS, IME preedit (composing) text
renders noticeably thinner than committed text.

### Cause & Fix
Committed and preedit text diverge in `src/renderer/generic.zig`:

```text
Committed: Shaper -> addGlyph -> renderGlyph(..., { .thicken = config.font_thicken, ... })
Preedit: State -> addPreeditCell -> renderCodepoint(..., { .grid_metrics })
```

Fix: Pass `self.config.font_thicken` and
`self.config.font_thicken_strength` in `addPreeditCell`.

### Testing

- Verified on macOS with `font-thicken = true`.
- Verified with `zig fmt --check`.

### AI Disclosure

AI (gemini-3.8-flash) assisted in tracing the call path; manually
verified and tested.
2026-09-14 12:48:34 -07:00
Mitchell Hashimoto
3beb6d717a terminal: decrqm don't truncate 16-bit mode requests
DECRQM requests can use a full 16-bit number but we truncated to 15-bits
for the reply (cause thats all we know about). Preserve, the full
16-bits for requests so we give the proper response.
2026-09-14 12:33:42 -07:00
Mitchell Hashimoto
ec98864737 gtk: remove unused blueprint using statement (#14235) 2026-09-14 12:27:55 -07:00
Mitchell Hashimoto
9dc0d974e6 terminal: answer ANSI DECRQM queries
#14225

Handle the ANSI form of DECRQM (`CSI Ps $ p`), as specified by the
VT510 reference [1] and xterm [2]. Previously, only the DEC private
form reached the mode query handler.

[1] https://vt100.net/docs/vt510-rm/DECRQM.html
[2] https://invisible-island.net/xterm/ctlseqs/ctlseqs.txt
2026-09-14 12:24:15 -07:00
Tristan Partin
6ab34cad2d gtk: remove unused blueprint using statement
Signed-off-by: Tristan Partin <tristan@partin.io>
2026-09-14 14:15:48 -05:00
kat
b38394ae34 i18n: it_IT translations for 1.4 (#13996) 2026-09-14 19:09:46 +00:00
Mitchell Hashimoto
49b95d8466 gtk,opengl: free us from the clutches of GtkGLArea (#14052)
GtkGLArea had numerous downsides that forced us to invent unsightly
hacks in our renderer to work around them, most chiefly the fact that it
holds its own GdkGLContext on the main thread (GL contexts are not at
all thread-safe), forcing us to keep our GL calls on the main thread. It
also does not interact well with triple-buffering and initialization is
forced to be this sort of deferred song-and-dance since we need to wait
for the GLArea to initialize its GL context before we can initialize the
renderer, the core surface, and then most things in the GTK surface.

We instead invent our own custom widget named RenderSurface that takes
simple DMABUFs and displays them. The task of obtaining a GL context
falls to manual EGL bindings, since we also need EGL to export OpenGL
textures into DMABUFs. We keep the EGL context solely on the render
thread meaning that the main thread never concerns itself with rendering
except when being notified that the renderer has pushed a new frame.
    
What makes this extra significant is that now the entire GTK apprt no
longer depends on OpenGL in any way, shape or form. As long as it is
being fed DMABUFs, it can render from whichever graphics API you want.
This means we can add more backends based on OpenGL ES or more likely
Vulkan rather painlessly in the future.

**AI disclosure**: I came up with the idea and let Pi implement most of
the nitty-gritty details around EGL, as well as replumbing the renderer
and cleaning up all the GTK-specific workarounds there. I then carefully
vetted every line of code and spent roughly as much time reviewing as
coding. Most of the documentation and all commit messages are in my own
words.
2026-09-14 12:07:05 -07:00
Mitchell Hashimoto
d30379c5b9 nix: update zon2nix to 0.7.0 (#14192)
1. Speeds up runs by ~3x for projects with a large number of
dependencies by downloading in parallel (~55s → 16s on my workstation).

2. Adds some workarounds for Zig 0.16's package management. The changes
don't affect Ghostty itself, but do affect downstream projects that
embed libghostty-vt and want to create Nix packages of their own.

AI disclosure: Claude was used to diagnose CI failures and suggest
fixes.
2026-09-14 12:06:42 -07:00
Mitchell Hashimoto
1ab2501e79 gtk/build: speed up repeated builds by letting the Zig build cache work (#14212)
Repeated builds were penalized for three reasons:

1. The gresource XML embedded the absolute cache paths of the compiled
.ui files. It now uses relative paths, resolved against a `--sourcedir`
passed to glib-compile-resources.

2. Blueprints were compiled through a small Zig wrapper, and a Run step
hashes the bytes of the executable it runs. A Zig binary does not relink
to the same bytes, so after a branch switch that touched the wrapper
every .ui moved, the gresource compiler re-ran and the whole app
recompiled for identical output. blueprint-compiler is now run directly
and the wrapper is reduced to a single version check whose output
nothing reads.

3. The gresource pipeline was built once per artifact. It is now
memoized on the *std.Build.

Cold builds and builds after real blueprint changes are unaffected. A
build after the wrapper relinks goes from ~43s to ~7s on my system.

AI disclosure: Claude Opus 5 was used to pinpoint the source of the
cache poisoning and to prepare a patch. Claude Fable 5.1 measured it,
traced the remaining churn to the wrapper's relinks, and replaced a
custom build step with stock ones. The commit message is human-written
based on the author's understanding of the changes.
2026-09-14 12:06:29 -07:00
Mitchell Hashimoto
962a060c86 macOS: fix title bar clipping custom font (#14217)
Fixes https://github.com/ghostty-org/ghostty/issues/14135.

<img width="1398" height="652" alt="image"
src="https://github.com/user-attachments/assets/6901a05e-9d23-4e25-89a7-c16c1694a0f9"
/>


> The #9168 fix is no longer needed, since the frame is now higher than
the actual glyph.

The frame change observation only affects those who have a custom window
title font set in their config. I asked Claude to run some main thread
benchmarking compared to `main`; it will gain some delays for rapid
title changes and window resizing. The additional cost is brought by the
frequent frame updates which are done by AppKit. But that's necessary
for updating the title to the correct style.

> I tried to do some diffing and removing duplicates, but it will add
too many changes too, and I didn't think it's worth doing so.

The amount looks ok to me.

### `window-title-font-family = PT Mono`

| Phase | Metric | base | branch | Δ | ratio |
|---|---|---:|---:|---:|---:|
| Idle, 3 s | main-thread CPU | 2.8 ms | 2.8 ms | -0.0 | 1.00 |
|  | process CPU | 11.3 ms | 11.2 ms | -0.1 | 0.99 |
| Paced title updates, 150 × 100 ms | main-thread CPU | 878.5 ms |
**946.7 ms** | **+68.3** | **1.08** |
|  | process CPU | 1219.9 ms | 1335.0 ms | +115.1 | 1.09 |
|  | wall | 17.24 s | 17.34 s | +0.1 | 1.01 |
| Title burst, 5000 back-to-back | main-thread CPU | 180.7 ms | 181.4 ms
| +0.7 | 1.00 |
|  | process CPU | 254.2 ms | 254.8 ms | +0.6 | 1.00 |
|  | wall | 2.31 s | 2.32 s | +0.0 | 1.00 |
| `toggle_maximize` × 16 (animated resize) | main-thread CPU | 1947.8 ms
| **2178.0 ms** | **+230.2** | **1.12** |
|  | process CPU | 4166.8 ms | 4403.2 ms | +236.4 | 1.06 |
|  | wall | 16.68 s | 16.72 s | +0.0 | 1.00 |
| Native fullscreen enter/exit × 2 | main-thread CPU | 196.8 ms | 195.9
ms | -0.9 | 1.00 |
|  | process CPU | 360.8 ms | 361.5 ms | +0.7 | 1.00 |
|  | wall | 8.47 s | 8.47 s | +0.0 | 1.00 |

### AI Disclosure

Asked Claude to generate the harness to run the benchmark and review my
changes. I did the changes myself.
2026-09-14 12:05:47 -07:00
Giacomo Bettini
45058d7689 Review feedback 2026-09-14 20:33:04 +02:00
kat
d5eba8d169 i18n: update de_DE translations (#13846)
Part of #13766.
2026-09-14 12:48:00 +00:00
helium7
5beb94c162 renderer: apply font-thicken to IME preedit text
IME preedit text was rendered with unthickened glyphs because
addPreeditCell omitted font_thicken options when calling
renderCodepoint, leaving them at their default false values.

Fixes #13758
2026-09-14 11:46:19 +08:00
ghostty-vouch[bot]
0c2a290d3a Sync CODEOWNERS vouch list (#14229)
Sync CODEOWNERS owners with vouch list.

## Added Users

- @ibaios

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-14 00:01:26 +00:00
Giacomo Bettini
55c3e8cc0d First review feedback 2026-09-13 23:16:13 +02:00
Lukas
7aab0a0392 macOS: implement move_tab_to_new_window (#14216)
Closes #2630 for macOS. #13621 added the `move_tab_to_new_window` action
and the GTK side; this does the same on macOS with AppKit.

With native tabs a tab is already a window, so the action forwards to
AppKit's own `moveTabToNewWindow:`. It's a no-op when the window is
alone in its tab group, same as the Window menu item. The "only
implemented on Linux" note comes off the doc comment in `Binding.zig`.
Tested on macOS 26, from a keybind and from the command palette. I have
no macOS 13-15 machine.

Full disclosure, written with Claude Code, I directed it, read every
line, and tested the result.
2026-09-13 17:46:00 +02:00
ghostty-vouch[bot]
09a2724c23 Update VOUCHED list (#14223)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/14221#discussioncomment-18420862)
from @jcollie.

Vouch: @helium777

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-13 11:35:10 +00:00
Jeffrey C. Ollie
ef7edc4a24 gtk/build: speed up repeated builds by letting the Zig build cache work
Repeated builds were penalized for three reasons:

1. The gresource XML embedded the absolute cache paths of the compiled
.ui files. It now uses relative paths, resolved against a `--sourcedir`
passed to glib-compile-resources.

2. Blueprints were compiled through a small Zig wrapper, and a Run step
hashes the bytes of the executable it runs. A Zig binary does not relink
to the same bytes, so after a branch switch that touched the wrapper
every .ui moved, the gresource compiler re-ran and the whole app
recompiled for identical output. blueprint-compiler is now run directly
and the wrapper is reduced to a single version check whose output
nothing reads.

3. The gresource pipeline was built once per artifact. It is now
memoized on the *std.Build.

Cold builds and builds after real blueprint changes are unaffected. A
build after the wrapper relinks goes from ~43s to ~7s on my system.

AI disclosure: Claude Opus 5 was used to pinpoint the source of the
cache poisoning and to prepare a patch. Claude Fable 5.1 measured it,
traced the remaining churn to the wrapper's relinks, and replaced a
custom build step with stock ones. The commit message is human-written
based on the author's understanding of the changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RsfB3eoSTLfnKa6zi25teN
2026-09-12 23:12:19 -05:00
Leah Amelia Chen
5252b193cf po/zh_CN: add missing translations (#14218) 2026-09-13 11:49:39 +08:00
Lukas
6a64b1c86a po/zh_CN: add missing translations 2026-09-13 10:51:17 +08:00