Commit Graph

14267 Commits

Author SHA1 Message Date
Jon Parise
d0b403304d bash: use PROMPT_COMMAND array form in bash 5.1+
PROMPT_COMMAND array support for introduced in bash 5.1, and it's the
preferred format moving forward. Using the string form is also fine, but
it's easy to be a modern bash citizen here, so let's do so.
2026-02-08 09:40:05 -05:00
Jon Parise
5425569a19 bash: remove dependency on bash-preexec for bash 4.4+
bash-preexec implements support for its "precmd" and "preexec" hooks
using a combination of PROMPT_COMMAND and a DEBUG trap. The latter is
unfortunately quick slow (in a relative sense), and the overall system
is a bit more generalized than what we need for our shell integration
(e.g. supporting multiple function hooks, subshells, etc.).

Bash 4.4 introduced the PS0 variable, which is expanded and displayed by
interactive shells after reading a complete command but before executing
it. This is all we need to implement our own shell integration hooks.

In Bash 5.1, PROMPT_COMMAND can be an array variable, each element of
which can contain a command to be executed like a string PROMPT_COMMAND
variable. When adding our hook to PROMPT_COMMAND, we preserve its type
(string or array) to be minimally intrusive. This also matches direnv's
approach.

Bash 5.3 introduced support for function substitution, which is an even
more efficient way to run code from PS0, so we use that when available.
Otherwise, we use the more traditional command substitution approach.

Earlier versions of bash (such as 3.2, which still ships with macOS)
continue to use the bash-preexec path. This gives us two code paths to
maintain, but I think that's preferable to fully maintaining our own
DEBUG trap-based system for older bash versions given that bash-preexec
has proven to work reliably in those environments. We also wouldn't
unlock any other user benefits aside from removing the bash-preexec
script dependency.

See: #3724, #7734
2026-02-07 15:29:04 -05:00
Jeffrey C. Ollie
6c0e02d113 fix fish shell integration when cancelling a command (#10602)
Cancelling a command should not send `OSC 133;A` as that starts a new
line.

Fixes #10544
2026-02-06 10:20:04 -06:00
Jeffrey C. Ollie
290ad05ea6 fix fish shell integration when cancelling a command
Cancelling a command should not send `OSC 133;A` as that starts a new
line.

Fixes #10544
2026-02-06 09:49:13 -06:00
Mitchell Hashimoto
3cc01155bf build(deps): bump namespacelabs/nscloud-cache-action from 1.3.0 to 1.4.0 (#10573)
Bumps
[namespacelabs/nscloud-cache-action](https://github.com/namespacelabs/nscloud-cache-action)
from 1.3.0 to 1.4.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.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Migrate to <code>@​namespacelabs/actions-toolkit/</code>spacectl by
<a href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/82">namespacelabs/nscloud-cache-action#82</a></li>
<li>Remove spacectl-enabled option and legacy code path by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/83">namespacelabs/nscloud-cache-action#83</a></li>
<li>Bump ruby/setup-ruby from 1.286.0 to 1.287.0 in the
minor-actions-dependencies group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/72">namespacelabs/nscloud-cache-action#72</a></li>
<li>Bump cachix/install-nix-action from
bec50b45a8bb06017c42af46702a3f502adcfa9e to
4e002c8ec80594ecd40e759629461e26c8abed15 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/73">namespacelabs/nscloud-cache-action#73</a></li>
<li>Bump actions/upload-artifact from 4.6.2 to 6.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/76">namespacelabs/nscloud-cache-action#76</a></li>
<li>Remove obsolete cache metadata step by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/84">namespacelabs/nscloud-cache-action#84</a></li>
<li>Bump actions/download-artifact from 4.3.0 to 7.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/74">namespacelabs/nscloud-cache-action#74</a></li>
<li>Bump shivammathur/setup-php from
d59004228537ca90c8dca680592a08a675bf52b6 to
44454db4f0199b8b9685a5d763dc37cbf79108e1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/75">namespacelabs/nscloud-cache-action#75</a></li>
<li>Bump the minor-npm-dependencies group with 4 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/77">namespacelabs/nscloud-cache-action#77</a></li>
<li>Rebuild dist by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/85">namespacelabs/nscloud-cache-action#85</a></li>
<li>Bump <code>@​actions/core</code> from 2.0.2 to 3.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/79">namespacelabs/nscloud-cache-action#79</a></li>
<li>Bump <code>@​actions/io</code> from 2.0.0 to 3.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/80">namespacelabs/nscloud-cache-action#80</a></li>
<li>Bump <code>@​actions/exec</code> from 2.0.0 to 3.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/81">namespacelabs/nscloud-cache-action#81</a></li>
<li>fix: remove leftover spacectl-enabled references from workflow by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/86">namespacelabs/nscloud-cache-action#86</a></li>
<li>Bump pnpm/action-setup from c5ba7f7862a0f64c1b1a05fbac13e0b8e86ba08c
to 41ff72655975bd51cab0327fa583b6e92b6d3061 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/87">namespacelabs/nscloud-cache-action#87</a></li>
<li>Bump browser-actions/setup-chrome from
d2811ded0d087168641bbf52f388afe459d02892 to
b94431e051d1c52dcbe9a7092a4f10f827795416 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/88">namespacelabs/nscloud-cache-action#88</a></li>
<li>chore: update <code>@​namespacelabs/actions-toolkit</code> to 0.2.1
by <a href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/89">namespacelabs/nscloud-cache-action#89</a></li>
<li>fix: preserve NSC_POWERTOYS_DIR when not overriding by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/92">namespacelabs/nscloud-cache-action#92</a></li>
<li>chore(deps): update <code>@​namespacelabs/actions-toolkit</code> to
0.2.2 by <a href="https://github.com/rcrowe"><code>@​rcrowe</code></a>
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/93">namespacelabs/nscloud-cache-action#93</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/namespacelabs/nscloud-cache-action/compare/v1...v1.4.0">https://github.com/namespacelabs/nscloud-cache-action/compare/v1...v1.4.0</a></p>
<h2>What's Changed</h2>
<ul>
<li>Migrate to <code>@​namespacelabs/actions-toolkit/</code>spacectl by
<a href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/82">namespacelabs/nscloud-cache-action#82</a></li>
<li>Remove spacectl-enabled option and legacy code path by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/83">namespacelabs/nscloud-cache-action#83</a></li>
<li>Bump ruby/setup-ruby from 1.286.0 to 1.287.0 in the
minor-actions-dependencies group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/72">namespacelabs/nscloud-cache-action#72</a></li>
<li>Bump cachix/install-nix-action from
bec50b45a8bb06017c42af46702a3f502adcfa9e to
4e002c8ec80594ecd40e759629461e26c8abed15 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/73">namespacelabs/nscloud-cache-action#73</a></li>
<li>Bump actions/upload-artifact from 4.6.2 to 6.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/76">namespacelabs/nscloud-cache-action#76</a></li>
<li>Remove obsolete cache metadata step by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/84">namespacelabs/nscloud-cache-action#84</a></li>
<li>Bump actions/download-artifact from 4.3.0 to 7.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/74">namespacelabs/nscloud-cache-action#74</a></li>
<li>Bump shivammathur/setup-php from
d59004228537ca90c8dca680592a08a675bf52b6 to
44454db4f0199b8b9685a5d763dc37cbf79108e1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/75">namespacelabs/nscloud-cache-action#75</a></li>
<li>Bump the minor-npm-dependencies group with 4 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/77">namespacelabs/nscloud-cache-action#77</a></li>
<li>Rebuild dist by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/85">namespacelabs/nscloud-cache-action#85</a></li>
<li>Bump <code>@​actions/core</code> from 2.0.2 to 3.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/79">namespacelabs/nscloud-cache-action#79</a></li>
<li>Bump <code>@​actions/io</code> from 2.0.0 to 3.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/80">namespacelabs/nscloud-cache-action#80</a></li>
<li>Bump <code>@​actions/exec</code> from 2.0.0 to 3.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/81">namespacelabs/nscloud-cache-action#81</a></li>
<li>fix: remove leftover spacectl-enabled references from workflow by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/86">namespacelabs/nscloud-cache-action#86</a></li>
<li>Bump pnpm/action-setup from c5ba7f7862a0f64c1b1a05fbac13e0b8e86ba08c
to 41ff72655975bd51cab0327fa583b6e92b6d3061 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/87">namespacelabs/nscloud-cache-action#87</a></li>
<li>Bump browser-actions/setup-chrome from
d2811ded0d087168641bbf52f388afe459d02892 to
b94431e051d1c52dcbe9a7092a4f10f827795416 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/88">namespacelabs/nscloud-cache-action#88</a></li>
<li>chore: update <code>@​namespacelabs/actions-toolkit</code> to 0.2.1
by <a href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/89">namespacelabs/nscloud-cache-action#89</a></li>
<li>fix: preserve NSC_POWERTOYS_DIR when not overriding by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/92">namespacelabs/nscloud-cache-action#92</a></li>
<li>chore(deps): update <code>@​namespacelabs/actions-toolkit</code> to
0.2.2 by <a href="https://github.com/rcrowe"><code>@​rcrowe</code></a>
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/93">namespacelabs/nscloud-cache-action#93</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/namespacelabs/nscloud-cache-action/compare/v1.3.0...v1.4.0">https://github.com/namespacelabs/nscloud-cache-action/compare/v1.3.0...v1.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d985186ac2"><code>d985186</code></a>
chore(deps): update <code>@​namespacelabs/actions-toolkit</code> to
0.2.2 (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/93">#93</a>)</li>
<li><a
href="f187f9f6bd"><code>f187f9f</code></a>
fix: preserve NSC_POWERTOYS_DIR when not overriding (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/92">#92</a>)</li>
<li><a
href="7d05b16be1"><code>7d05b16</code></a>
chore: update <code>@​namespacelabs/actions-toolkit</code> to 0.2.1 (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/89">#89</a>)</li>
<li><a
href="9807a2bc3b"><code>9807a2b</code></a>
Bump browser-actions/setup-chrome (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/88">#88</a>)</li>
<li><a
href="0d1978cbe9"><code>0d1978c</code></a>
Bump pnpm/action-setup (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/87">#87</a>)</li>
<li><a
href="7c5c353ae2"><code>7c5c353</code></a>
fix: remove leftover spacectl-enabled references from workflow (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/86">#86</a>)</li>
<li><a
href="f91c7ae719"><code>f91c7ae</code></a>
Bump <code>@​actions/exec</code> from 2.0.0 to 3.0.0 (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/81">#81</a>)</li>
<li><a
href="b51ae6300a"><code>b51ae63</code></a>
Bump <code>@​actions/io</code> from 2.0.0 to 3.0.2 (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/80">#80</a>)</li>
<li><a
href="0901ed851b"><code>0901ed8</code></a>
Bump <code>@​actions/core</code> from 2.0.2 to 3.0.0 (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/79">#79</a>)</li>
<li><a
href="88504b7130"><code>88504b7</code></a>
Rebuild dist (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/85">#85</a>)</li>
<li>Additional commits viewable in <a
href="a4cc4697b9...d985186ac2">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.3.0&new-version=1.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-02-05 11:27:57 -08:00
Jeffrey C. Ollie
ca07f8c3f7 gtk: add two-finger left/right scroll to switch tab pages (#10575)
This adds the ability to use two fingers on a touchpad to scroll left or
right on a Ghostty window to change tab pages. Uses the same basic
machinery as scrolling up and down the scrollback buffer. Scrolling
pages does not wrap around at the start or end of the tabs.
2026-02-05 09:02:37 -06:00
Jon Parise
a9e79ae74f macos: quote input strings used for shell commands (#10583)
When we're building an input string that's explicitly meant to be used
as a shell command, quote it using the same logic as Python's
`shlex.quote` function.

This specifically addresses issues we've seen when open(1)'ing Ghostty
with filename arguments that contain spaces.

See #2633, #3030
2026-02-05 09:45:00 -05:00
Mitchell Hashimoto
6d3c7ba49d 👻 : Add Support For Use of Apple's New API - Core Audio Tap API CATap (#10577)
#### [Core Audio Tap API](https://github.com/insidegui/AudioCap)

There's a new NS permission needed for macos (>14.x) to capture system
audio with the `Core Audio Tap API`. Previously desktop-audio capture
was handled by a different permissions API with GUI & preferences. Both
APIs continue to exist but this newer one has a NS permission we should
include. The "geniuses" have spoken and this API doesn't have public
methods for querying the permissions state. As a strong side-effect of
this "feature", failures due to lack of NS permissions are likely to be
handled poorly by software makers.

---

I've spent [the last 5
days](https://github.com/electron/electron/issues/49607) reviewing
C++/Objective-C Chromium source to hone in on why my DesktopAudioCapture
broke on an electron version update. It is in-fact chromium [started
using](source.chromium.org/chromium/chromium/src/+/ad17e8f8b93d5f34891b06085d373a668918255e)
this new `Core Audio Tap API` and has no fallback to the old API if the
new one fails.

Should be your easiest code-review of the week. Shoutout to the
maintainers/creator, big fan of this Zig based terminal with good shader
support.
2026-02-05 06:37:31 -08:00
Jon Parise
1ff0dd821f macos: quote input strings used for shell commands
When we're building an input string that's explicitly meant to be used
as a shell command, quote (escape) it using the same logic as Python's
shlex.quote function.

This specifically addresses issues we've seen when open(1)'ing Ghostty
with filename arguments that contain spaces.
2026-02-05 09:21:37 -05:00
Bug-Reaper
8a87378f00 👻 : Add Support For Apple's New API - Core Audio Tap API CATap
[Reference](https://github.com/insidegui/AudioCap). This is Apple's latest system for allowing apps to access loopback audio streams eg: Desktop-Audio, Window-Audio, etc...
2026-02-05 00:37:24 -05:00
Jeffrey C. Ollie
dd14ce6752 gtk: add two-finger left/right scroll to switch tab pages
This adds the ability to use two fingers on a touchpad to scroll left
or right on a Ghostty window to change tab pages. Uses the same basic
machinery as scrolling up and down the scrollback buffer. Scrolling
pages does not wrap around at the start or end of the tabs.
2026-02-04 20:23:50 -06:00
dependabot[bot]
4d91e9fcc5 build(deps): bump namespacelabs/nscloud-cache-action from 1.3.0 to 1.4.0
Bumps [namespacelabs/nscloud-cache-action](https://github.com/namespacelabs/nscloud-cache-action) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/namespacelabs/nscloud-cache-action/releases)
- [Commits](a4cc4697b9...d985186ac2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-05 00:13:58 +00:00
Mitchell Hashimoto
b30456d9a8 ci(release-tip): track optional triggering PRs and retain URLs (#10565)
Based on some prior private discussion -- this is needed for the GitHub
bot to correctly dispatch, track, and collect workflow runs based on the
triggering PR.

I'm not sure if covering only `build-macos` is enough and if outputs
from other jobs (like `build-macos-debug-slow`) are also useful here. I
went with just `build-macos` since it's the only one to also link a DMG
(and it sounds the most basic of course).
2026-02-04 14:07:57 -08:00
Mitchell Hashimoto
4878669052 Fix clicking bare relative file paths (#10570)
Related to #1972

The URL regex for file path detection requires paths to start with
`../`, `./`, or `/`. For bare relative paths like
`"src/config/url.zig"`, the regex could only match starting at the first
`/`, producing `"/config/url.zig"` as a result — always dropping the
first part of the path.

Fix: added a third top-level alternative to the regex. This matches bare
relative paths where:

1. The first component is word characters (possibly with dots/dashes):
   `[\w][\w\-.]*\/`
2. The remaining path must contain a dot (via positive lookahead) — this
   requires a file extension to avoid false positives on text like
   `"input/output"`
3. Add a `(?<!\w)\/` instead of `\/` in the existing prefix group — the
   standalone `/` prefix now requires that `/` is not preceded by a word
   character. This prevents `"input/output"` from falsely matching
   `"/output"`

Test cases added:
- src/config/url.zig → matches fully
- app/folder/file.rb:1 → matches with line number
- modified:   src/config/url.zig → matches only the path part
- lib/ghostty/terminal.zig:42:10 → matches with line:col
- some-pkg/src/file.txt more text → stops before trailing text
- input/output and foo/bar → correctly do not match (no file extension)

The issue was nailed down here:

https://github.com/ghostty-org/ghostty/issues/1972#issuecomment-3845717672
2026-02-04 14:07:28 -08:00
Ben Kircher
6c0a17cccf Fix clicking bare relative file paths
Related to #1972

The URL regex for file path detection requires paths to start with
`../`, `./`, or `/`. For bare relative paths like
`"src/config/url.zig"`, the regex could only match starting at the first
`/`, producing `"/config/url.zig"` as a result — always dropping the
first part of the path.

Fix: added a third top-level alternative to the regex. This matches bare
relative paths where:

1. The first component is word characters (possibly with dots/dashes):
   `[\w][\w\-.]*\/`
2. The remaining path must contain a dot (via positive lookahead) — this
   requires a file extension to avoid false positives on text like
   input/output
3. Add a `(?<!\w)\/` instead of `\/` in the existing prefix group — the
   standalone `/` prefix now requires that `/` is not preceded by a word
   character. This prevents `"input/output"` from falsely matching
   `"/output"`

Test cases added:
- src/config/url.zig → matches fully
- app/folder/file.rb:1 → matches with line number
- modified:   src/config/url.zig → matches only the path part
- lib/ghostty/terminal.zig:42:10 → matches with line:col
- some-pkg/src/file.txt more text → stops before trailing text
- input/output and foo/bar → correctly do not match (no file extension)

The issue was nailed down here:
https://github.com/ghostty-org/ghostty/issues/1972#issuecomment-3845717672
2026-02-04 15:17:46 +01:00
trag1c
2cffe24698 retain release URLs as artifacts
needed for the future GitHub bot to collect
the URLs with artifacts identified by their
triggering PR (0 if none)
2026-02-03 23:19:33 +01:00
trag1c
91b77e55d6 add an optional PR number input for manual tip releases
needed for the future GitHub bot to track
comment-triggered PR builds
2026-02-03 23:12:43 +01:00
Mitchell Hashimoto
51897c0cd5 elvish: simplify XDG_DATA_DIRS cleanup (#10546)
We always add GHOSTTY_SHELL_INTEGRATION_XDG_DIR to XDG_DATA_DIRS with a
tailing colon (via our prependEnv routine), so we can greatly simplify
this cleanup code with a single str:replace call.
2026-02-02 20:02:24 -08:00
Mitchell Hashimoto
6e2d59f8e5 Don't reset click count on prompt move so we can still double click 2026-02-02 19:53:53 -08:00
Jon Parise
6a04662303 elvish: simplify XDG_DATA_DIRS cleanup
We always add GHOSTTY_SHELL_INTEGRATION_XDG_DIR to XDG_DATA_DIRS with a
tailing colon (via our prependEnv routine), so we can greatly simplify
this cleanup code with a single str:replace call.
2026-02-02 20:24:25 -05:00
Mitchell Hashimoto
e06742b36e Add support for OSC133 cl=line, bash and zsh support (#10542)
Related to #1966

This adds support for OSC133 `cl=line` (single line movement with
left/right arrow keys) and modifies our bash and zsh shell integration
to advertise support for it. With this, bash and zsh both support click
to move at the prompt without any modifiers:


https://github.com/user-attachments/assets/7f6cb0b8-390c-4136-8c25-059b21b138c5

This also removes our legacy `promptPath` and related functionality
(pressing alt) since this is superior and there's no reason to keep that
around.
2026-02-02 17:12:08 -08:00
Mitchell Hashimoto
00567ff427 remove obsolete impossible test scenario 2026-02-02 15:20:36 -08:00
Mitchell Hashimoto
e478f3bf76 remove legacy promptPath 2026-02-02 15:18:09 -08:00
Mitchell Hashimoto
8595558653 shell-integration/zsh: support cl=line 2026-02-02 15:13:37 -08:00
Mitchell Hashimoto
e60806942e terminal: when clicking right beyond the prompt line, move one more
This moves the cursor to the end properly.
2026-02-02 15:11:24 -08:00
Mitchell Hashimoto
2fa9eff0ef shell-integration/bash: advertise cl=line support 2026-02-02 13:36:29 -08:00
Mitchell Hashimoto
7af49f6cc6 Surface respects cl by using single arrow keys within a single line 2026-02-02 13:36:24 -08:00
Mitchell Hashimoto
4a1f02043a terminal: Screen.promptClickMove for cl handling 2026-02-02 13:36:24 -08:00
Mitchell Hashimoto
f5b02f5ab8 renderer: reset overlay anytime sizing changes (#10537)
Fixes #10522

This also fixes possible runtime safety crashes. Whenever the underlying
size information doesn't match what our renderer or grid see, then we
should deinit and reinit.
2026-02-02 11:34:05 -08:00
Mitchell Hashimoto
4ce1310371 renderer: reset overlay anytime sizing changes
Fixes #10522

This also fixes possible runtime safety crashes. Whenever the underlying
size information doesn't match what our renderer or grid see, then we
should deinit and reinit.
2026-02-02 11:29:14 -08:00
Mitchell Hashimoto
608d312651 Support OSC133 click_events Kitty extension (supported by Fish) (#10536)
This adds support for the `OSC 133 A click_events=1` extension
introduced by Kitty and supported by Fish.[^1]

**What this means:** If the shell advertises `click_events=1` support,
Ghostty will _unconditionally_ (no modifier required) send mouse events
to the shell for clicks on a prompt line, delegating to the supporting
shell to move the cursor as needed. For Fish 4.1+ this means that
clicking on the prompt line moves the cursor (see demo video below).

This PR also contains:

* A minor fix in `cl` parsing but we don't yet implement the logic there
* Updated inspector to show the semantic prompt click mode

## Demo


https://github.com/user-attachments/assets/03ef8975-7ad9-441f-aaa2-9d0eb5c5e36d

## Implementation Details

`click_events` is wildly underspecified, so here are the details the
best I understand them. This itself is not a specification (I omit
details) but adds some more context to it.

The `click_events=1` option can be specified with `OSC 133 A` (Ghostty
also allows it on OSC 133 N). When that is specified, it flags for all
future prompts that the screen supports click events for semantic
prompts. If both `click_events` and `cl` are specified, `click_events`
takes priority if true. If `click_events=0` (disable), then any set `cl`
will take priority.

When a mouse click comes in, we check for the following conditions:

1. The screen supports click events
2. The screen cursor is currently at a prompt
3. The mouse click was at or below the starting prompt line of the
current prompt

If those are met, we encode an SGR mouse event with: left button, press,
coordinates of click. It is up to the shell after that to handle it. Out
of prompt bounds SGR events are possible (specifically below). The shell
should robustly handle this.

[^1]: I don't know any other terminal or shell that supports it at the
moment.
2026-02-02 10:57:30 -08:00
Mitchell Hashimoto
e20a8ee797 shell-integration: fish sets click_events=1 for Fish >= 4.1 2026-02-02 10:44:35 -08:00
Mitchell Hashimoto
80d6e71aec inspector: show more semantic prompt state for screen 2026-02-02 10:44:35 -08:00
Mitchell Hashimoto
25b6423e7b Handle Kitty click_events OSC133 extension 2026-02-02 10:44:35 -08:00
Jeffrey C. Ollie
93f12b675c elvish: improve shell integration instructions (#10534)
Wrapping `use ghostty-integration` in a `try .. catch` here makes this
suggestion more resilient to environments where we didn't inject our
resource directory into XDG_DATA_DIRS (but are still running Ghostty).
2026-02-02 11:40:41 -06:00
Mitchell Hashimoto
b827e587d9 terminal: set semantic_prompt.click based on OSC133A options 2026-02-02 09:28:55 -08:00
Mitchell Hashimoto
e9b6fea11c terminal: move semantic prompt state into its own field in screen 2026-02-02 09:19:18 -08:00
Mitchell Hashimoto
9ff9298707 terminal: parse OSC 133 cl values correctly 2026-02-02 09:01:01 -08:00
Mitchell Hashimoto
8bc3cdcf7d nushell: refactor ssh wrapper for clarity (#10490)
The ssh wrapper previously used a separate set_ssh_terminfo function
that returned a record to be merged, which result in some redundant
control flow and TERM assignments.

This inlines the terminfo logic and builds env/opts incrementally based
on feature flags. TERM is set to a fallback early and only overridden on
success, which simplifies our error handling and avoids mutable variable
capture issues in closures.

Lastly, warnings are now consistently written to stderr, and I made
various other control flow and syntax improvements.
2026-02-02 08:37:47 -08:00
Jon Parise
95c6fca0a7 elvish: improve shell integration instructions
Wrapping `use ghostty-integration` in a `try .. catch` here makes this
suggestion more resilient to environments where we didn't inject our
resource directory into XDG_DATA_DIRS (but are still running Ghostty).
2026-02-02 11:33:40 -05:00
Jon Parise
8bd02df5f6 elvish: always report current directory changes (#10533)
This reporting shouldn't have been tied to the 'title' shell features.
That's a different feature where we change the window title (icon) to
reflect the current command using OSC 2.
2026-02-02 11:32:56 -05:00
Jon Parise
37a534b747 elvish: always report current directory changes
This reporting shouldn't have been tied to the 'title' shell features.
That's a different feature where we change the window title (icon) to
reflect the current command using OSC 2.
2026-02-02 11:06:47 -05:00
Mitchell Hashimoto
1b7a15899a build(deps): bump namespacelabs/nscloud-cache-action from 1.2.21 to 1.3.0 (#10527)
Bumps
[namespacelabs/nscloud-cache-action](https://github.com/namespacelabs/nscloud-cache-action)
from 1.2.21 to 1.3.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.3.0</h2>
<h2>What's Changed</h2>
<p>We've increased the number of cache modes, see our docs for the full
list.
<a
href="https://namespace.so/docs/reference/github-actions/nscloud-cache-action#cache">https://namespace.so/docs/reference/github-actions/nscloud-cache-action#cache</a></p>
<p><strong>Changes:</strong></p>
<ul>
<li>🧑‍🚀 backs action with space cli by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/48">namespacelabs/nscloud-cache-action#48</a></li>
<li>Handle debug logs &amp; JSON response by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/50">namespacelabs/nscloud-cache-action#50</a></li>
<li>bump package versions for <code>@​actions/core</code>,
<code>@​actions/exec</code> and <code>@​actions/io</code> by <a
href="https://github.com/annervisser"><code>@​annervisser</code></a> in
<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/51">namespacelabs/nscloud-cache-action#51</a></li>
<li>support <code>pre-release</code> for space version by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/52">namespacelabs/nscloud-cache-action#52</a></li>
<li>ci: Enable dependabot by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/53">namespacelabs/nscloud-cache-action#53</a></li>
<li>ci: setup formatting &amp; linting by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/58">namespacelabs/nscloud-cache-action#58</a></li>
<li>ci: basic checks in merge group by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/59">namespacelabs/nscloud-cache-action#59</a></li>
<li>Bump actions/setup-node from 4 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/55">namespacelabs/nscloud-cache-action#55</a></li>
<li>Bump <code>@​types/node</code> from 24.10.9 to 25.0.10 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/56">namespacelabs/nscloud-cache-action#56</a></li>
<li>Bump vitest from 4.0.17 to 4.0.18 in the minor-npm-dependencies
group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/54">namespacelabs/nscloud-cache-action#54</a></li>
<li>Bump actions/checkout from 4 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/57">namespacelabs/nscloud-cache-action#57</a></li>
<li>Install latest dev release by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/62">namespacelabs/nscloud-cache-action#62</a></li>
<li>Bump prettier from 2.8.8 to 3.8.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/60">namespacelabs/nscloud-cache-action#60</a></li>
<li>Bump eslint from 8.57.1 to 9.39.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/61">namespacelabs/nscloud-cache-action#61</a></li>
<li>ci: verify across space versions by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/63">namespacelabs/nscloud-cache-action#63</a></li>
<li>Capture JSON error messages from space binary by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/65">namespacelabs/nscloud-cache-action#65</a></li>
<li>fixed existing files when mounting by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/66">namespacelabs/nscloud-cache-action#66</a></li>
<li>ci: trigger errors by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/68">namespacelabs/nscloud-cache-action#68</a></li>
<li>ci: fix job name by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/70">namespacelabs/nscloud-cache-action#70</a></li>
<li>fix: revert <code>cache</code> input deprecation by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/69">namespacelabs/nscloud-cache-action#69</a></li>
<li>Switch to space as the default by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/71">namespacelabs/nscloud-cache-action#71</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
made their first contribution in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/55">namespacelabs/nscloud-cache-action#55</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/namespacelabs/nscloud-cache-action/compare/v1.2.21...v1.3.0">https://github.com/namespacelabs/nscloud-cache-action/compare/v1.2.21...v1.3.0</a></p>
<h2>v1.3.0-beta.4</h2>
<h2>What's Changed</h2>
<ul>
<li>ci: verify across space versions by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/63">namespacelabs/nscloud-cache-action#63</a></li>
<li>Capture JSON error messages from space binary by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/65">namespacelabs/nscloud-cache-action#65</a></li>
<li>fixed existing files when mounting by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/66">namespacelabs/nscloud-cache-action#66</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/namespacelabs/nscloud-cache-action/compare/v1.3.0-beta.3...v1.3.0-beta.4">https://github.com/namespacelabs/nscloud-cache-action/compare/v1.3.0-beta.3...v1.3.0-beta.4</a></p>
<h2>v1.3.0-beta.3</h2>
<h2>What's Changed</h2>
<ul>
<li>bump package versions for <code>@​actions/core</code>,
<code>@​actions/exec</code> and <code>@​actions/io</code> by <a
href="https://github.com/annervisser"><code>@​annervisser</code></a> in
<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/51">namespacelabs/nscloud-cache-action#51</a></li>
<li><del>support <code>pre-release</code> for space version by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/52">namespacelabs/nscloud-cache-action#52</a></del></li>
<li>ci: Enable dependabot by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/53">namespacelabs/nscloud-cache-action#53</a></li>
<li>ci: setup formatting &amp; linting by <a
href="https://github.com/rcrowe"><code>@​rcrowe</code></a> in <a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/pull/58">namespacelabs/nscloud-cache-action#58</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a4cc4697b9"><code>a4cc469</code></a>
Switch to space as the default (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/71">#71</a>)</li>
<li><a
href="8ade02dc35"><code>8ade02d</code></a>
fix: revert <code>cache</code> input deprecation (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/69">#69</a>)</li>
<li><a
href="d200aa41f3"><code>d200aa4</code></a>
ci: fix job name (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/70">#70</a>)</li>
<li><a
href="57a17a7677"><code>57a17a7</code></a>
ci: trigger errors (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/68">#68</a>)</li>
<li><a
href="5036d7df7d"><code>5036d7d</code></a>
fixed existing files when mounting (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/66">#66</a>)</li>
<li><a
href="ed34f8f280"><code>ed34f8f</code></a>
Capture JSON error messages from space binary (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/65">#65</a>)</li>
<li><a
href="fb9650da43"><code>fb9650d</code></a>
ci: verify across space versions (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/63">#63</a>)</li>
<li><a
href="04eee14069"><code>04eee14</code></a>
Bump eslint from 8.57.1 to 9.39.2 (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/61">#61</a>)</li>
<li><a
href="6e05bb96f0"><code>6e05bb9</code></a>
Bump prettier from 2.8.8 to 3.8.1 (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/60">#60</a>)</li>
<li><a
href="a4c5fbec31"><code>a4c5fbe</code></a>
Install latest dev release (<a
href="https://redirect.github.com/namespacelabs/nscloud-cache-action/issues/62">#62</a>)</li>
<li>Additional commits viewable in <a
href="446d8f3905...a4cc4697b9">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.2.21&new-version=1.3.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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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-02-01 19:49:24 -08:00
Mitchell Hashimoto
8c3833aeb1 build(deps): bump namespacelabs/nscloud-setup-buildx-action from 0.0.21 to 0.0.22 (#10528)
Bumps
[namespacelabs/nscloud-setup-buildx-action](https://github.com/namespacelabs/nscloud-setup-buildx-action)
from 0.0.21 to 0.0.22.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f5814dcf37"><code>f5814dc</code></a>
Add tag input for named builder selection (<a
href="https://redirect.github.com/namespacelabs/nscloud-setup-buildx-action/issues/14">#14</a>)</li>
<li><a
href="a204134a6b"><code>a204134</code></a>
build(deps): bump lodash from 4.17.21 to 4.17.23 (<a
href="https://redirect.github.com/namespacelabs/nscloud-setup-buildx-action/issues/13">#13</a>)</li>
<li>See full diff in <a
href="a7e5254161...f5814dcf37">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=namespacelabs/nscloud-setup-buildx-action&package-manager=github_actions&previous-version=0.0.21&new-version=0.0.22)](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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-02-01 19:49:12 -08:00
dependabot[bot]
c87db66631 build(deps): bump namespacelabs/nscloud-setup-buildx-action
Bumps [namespacelabs/nscloud-setup-buildx-action](https://github.com/namespacelabs/nscloud-setup-buildx-action) from 0.0.21 to 0.0.22.
- [Release notes](https://github.com/namespacelabs/nscloud-setup-buildx-action/releases)
- [Commits](a7e5254161...f5814dcf37)

---
updated-dependencies:
- dependency-name: namespacelabs/nscloud-setup-buildx-action
  dependency-version: 0.0.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 00:22:09 +00:00
dependabot[bot]
8714db8ea7 build(deps): bump namespacelabs/nscloud-cache-action
Bumps [namespacelabs/nscloud-cache-action](https://github.com/namespacelabs/nscloud-cache-action) from 1.2.21 to 1.3.0.
- [Release notes](https://github.com/namespacelabs/nscloud-cache-action/releases)
- [Commits](446d8f3905...a4cc4697b9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 00:22:00 +00:00
Mitchell Hashimoto
769fff5dfb inspector: redraw on timed updates rather than on-demand (#10526)
Fixes #10524 

This changes our inspector from being renderer-change driven to being
FPS driven. Both macOS and GTK now draw the inspector at most at 30 FPS
on a timer. Details between platforms are slightly different and covered
later.

The motivation for this is that triggering an inspector redraw on frame
update was causing _too many_ draws, leading to high CPU usage. Further,
terminal change isn't a good proxy for all the state that the inspector
shows, and tracking changes to all those to trigger a redraw is just a
lot of complexity.

Instead, moving to a standard, game-like framerate driven redraw
simplifies a lot. It does cost some CPU when idle, but actually lowers
our CPU under normal usage since it's rendering less often (30 FPS isn't
much for what we're doing).

**For macOS,** this uses CADisplayLink, so the refresh rate is variable.
I've seen macOS drop it to 1fps when there isn't much happening, which
is nice. We also setup an occlusion event so when the window is fully
occluded we stop rendering entirely.

**For GTK,** the tools to control this are limited. We do a standard
max-30 FPS tick redraw but can't support occlusion beyond what the
window server supports. For Wayland, I believe we get it for free
(occluded windows aren't drawn).
2026-02-01 14:40:46 -08:00
Mitchell Hashimoto
2d02e4bb54 remove redraw_inspector message 2026-02-01 14:32:37 -08:00
Mitchell Hashimoto
63f9d4aaf7 apprt/gtk: move imgui widget to frame timer redraw 2026-02-01 14:30:53 -08:00
Mitchell Hashimoto
020fe35c48 macos: render inspectors on timed updates, pause when occluded 2026-02-01 14:22:10 -08:00