Mitchell Hashimoto
37f467c023
terminal/tmux: docs
2025-12-10 10:37:52 -08:00
Mitchell Hashimoto
b3e7c92263
fmt
2025-12-10 10:34:37 -08:00
Mitchell Hashimoto
29bb18d8cd
terminal/tmux: grab tmux version on startup
2025-12-10 10:34:30 -08:00
Mitchell Hashimoto
58000f5821
terminal/tmux: build up pane states
2025-12-10 10:12:51 -08:00
Mitchell Hashimoto
d7883fbde2
build(deps): bump peter-evans/create-pull-request from 7.0.11 to 8.0.0 ( #9855 )
...
Bumps
[peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request )
from 7.0.11 to 8.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/peter-evans/create-pull-request/releases ">peter-evans/create-pull-request's
releases</a>.</em></p>
<blockquote>
<h2>Create Pull Request v8.0.0</h2>
<h2>What's new in v8</h2>
<ul>
<li>Requires <a
href="https://github.com/actions/runner/releases/tag/v2.327.1 ">Actions
Runner v2.327.1</a> or later if you are using a self-hosted runner for
Node 24 support.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>chore: Update checkout action version to v6 by <a
href="https://github.com/yonas "><code>@yonas</code></a> in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4258 ">peter-evans/create-pull-request#4258</a></li>
<li>Update actions/checkout references to <a
href="https://github.com/v6 "><code>@v6</code></a> in docs by <a
href="https://github.com/Copilot "><code>@Copilot</code></a> in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4259 ">peter-evans/create-pull-request#4259</a></li>
<li>feat: v8 by <a
href="https://github.com/peter-evans "><code>@peter-evans</code></a> in
<a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4260 ">peter-evans/create-pull-request#4260</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/yonas "><code>@yonas</code></a> made
their first contribution in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4258 ">peter-evans/create-pull-request#4258</a></li>
<li><a href="https://github.com/Copilot "><code>@Copilot</code></a> made
their first contribution in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4259 ">peter-evans/create-pull-request#4259</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v7.0.11...v8.0.0 ">https://github.com/peter-evans/create-pull-request/compare/v7.0.11...v8.0.0 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="98357b18bf "><code>98357b1</code></a>
feat: v8 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4260 ">#4260</a>)</li>
<li><a
href="41c0e4b789 "><code>41c0e4b</code></a>
Update actions/checkout references to <a
href="https://github.com/v6 "><code>@v6</code></a> in docs (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4259 ">#4259</a>)</li>
<li><a
href="994332de4c "><code>994332d</code></a>
chore: Update checkout action version to v6 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4258 ">#4258</a>)</li>
<li>See full diff in <a
href="22a9089034...98357b18bf ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
2025-12-10 09:23:40 -08:00
Mitchell Hashimoto
bf46c4ebe7
terminal/tmux: many more output formats
2025-12-09 21:10:46 -08:00
Mitchell Hashimoto
4c30c5aa76
terminal/tmux: cleanup command queue logic
2025-12-09 20:31:51 -08:00
Mitchell Hashimoto
582ea5d84b
terminal/tmux: window add
2025-12-09 20:07:08 -08:00
Mitchell Hashimoto
1a2b3c165a
terminal/tmux: layoutChanged handling
2025-12-09 17:09:57 -08:00
dependabot[bot]
5df95ba210
build(deps): bump peter-evans/create-pull-request from 7.0.11 to 8.0.0
...
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request ) from 7.0.11 to 8.0.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases )
- [Commits](22a9089034...98357b18bf )
---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
dependency-version: 8.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-10 00:07:05 +00:00
Mitchell Hashimoto
071070faa3
terminal/tmux: handle session_changed inside command loop
2025-12-09 14:21:07 -08:00
Mitchell Hashimoto
64ef640127
terminal/tmux: exhaustive switch for command
2025-12-09 13:56:16 -08:00
Mitchell Hashimoto
938e419e04
terminal/tmux: handle output events
2025-12-09 13:13:52 -08:00
Mitchell Hashimoto
50ac848672
terminal/tmux: capture both primary/alt screen
2025-12-09 13:00:40 -08:00
Mitchell Hashimoto
a3e01581be
terminal/tmux: history capture clears active area
2025-12-09 11:33:06 -08:00
Mitchell Hashimoto
b7fe9a926d
terminal/tmux: capture visible area after history
2025-12-09 11:22:14 -08:00
Mitchell Hashimoto
41bf541005
terminal/tmux: test helper
2025-12-09 10:53:52 -08:00
Mitchell Hashimoto
e1e2791fb7
terminal/tmux: pane_history replays it into terminal
2025-12-09 10:00:43 -08:00
Mitchell Hashimoto
f02a2d5eed
terminal/tmux: capture pane
2025-12-09 09:25:55 -08:00
Leah Amelia Chen
cf06417b7d
gtk: fix xkb mapping not working in Linux ( #9454 )
2025-12-09 12:58:44 +08:00
Mitchell Hashimoto
766c306e04
terminal/tmux: pane history
2025-12-08 20:15:20 -08:00
Mitchell Hashimoto
ea09d257a1
terminal/tmux: initialize panes
2025-12-08 11:54:48 -08:00
Mitchell Hashimoto
86cd489701
terminal/tmux: introduce command queue for viewer
2025-12-08 09:00:38 -08:00
Mitchell Hashimoto
ec5a60a119
terminal/tmux: make sure we always have space for one action
2025-12-08 07:27:37 -08:00
Mitchell Hashimoto
b26c42f4a6
terminal/tmux: better formatting for notifications and actions
2025-12-08 07:00:44 -08:00
Mitchell Hashimoto
52dbca3d26
termio: hook up tmux viewer
2025-12-08 07:00:43 -08:00
Mitchell Hashimoto
3cbc232e31
terminal/tmux: return allocated list of actions
2025-12-08 07:00:43 -08:00
Mitchell Hashimoto
c1d686534e
terminal/tmux: list windows
2025-12-08 07:00:43 -08:00
Mitchell Hashimoto
4c3ef8fa13
terminal/tmux: viewer list windows state
2025-12-08 07:00:43 -08:00
Mitchell Hashimoto
0d75a78747
terminal/tmux: start viewer state machine
2025-12-08 07:00:43 -08:00
Mitchell Hashimoto
af3a11b546
terminal/tmux: output has format/comptimeFormat
2025-12-08 07:00:43 -08:00
Mitchell Hashimoto
049b8826f6
macos: make QuickTerminalSize config C ABI compatible ( #9837 )
...
Hello! I did read `CONTRIBUTING.md`. I understand that the preference is
to receive pull requests for existing open issues and acknowledge that
I'm skipping a step wrt the preferred workflow since there aren't any
open issues yet for #8419 . Living dangerously and hoping for the best
here. I hope you'll see that I'm acting in good faith 🤞 .
In my attempts to debug why `quick-terminal-size` config wasn't working
reliably for me, I discovered that the
[`ghostty_config_quick_terminal_size_s`](08c9661683/include/ghostty.h (L460-L480) )
struct used to initialize `QuickTerminalSize` in Swift-land, more often
than not, didn't match what I had in my config file (e.g.
`quick-terminal-size = 75%, 50%`)
<details>
08c9661683/include/ghostty.h (L460-L480)
08c9661683/macos/Sources/Ghostty/Ghostty.Config.swift (L507-L510)
</details>
Almost all mismatches seemed to be downstream of `tag` (for `primary`
and/or `secondary` `Size`) being an unexpected value for the
`ghostty_quick_terminal_size_tag_e` enum type, which led runtime
execution to fall into the `default` branch in this `switch` control
flow.
08c9661683/macos/Sources/Features/QuickTerminal/QuickTerminalSize.swift (L27-L38)
Looking at `src/config/CApi.zig`, `src/config/c_get.zig`,
`src/config/Config.zig`, and [Zig documentation for `extern
enum`](https://ziglang.org/documentation/master/#extern-enum ), led me to
conclude that the crux of the issue is lack of guaranteed C ABI
compatibility for `Tag`
08c9661683/src/config/Config.zig (L7986-L7990)
08c9661683/include/ghostty.h (L461-L465)
Further research revealed that based on C language spec alone, one
cannot assume a fixed width for `enum` and that the behaviour is
compiler dependant. But given how the Zig documentation suggests using
`enum(c_int)` for C-ABI-compatible enums and extern enums + comments
elsewhere in `Config.zig` suggesting that `enum(c_int)` was chosen for
extern compatibility,
08c9661683/src/config/Config.zig (L4877)
I think that this fix (changing `enum(u8)` to `enum(c_int)`) is likely
the most straightforward and appropriate one.
2025-12-08 07:00:16 -08:00
Mitchell Hashimoto
cad96134fc
build(deps): bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 ( #9839 )
...
Bumps
[peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request )
from 7.0.9 to 7.0.11.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/peter-evans/create-pull-request/releases ">peter-evans/create-pull-request's
releases</a>.</em></p>
<blockquote>
<h2>Create Pull Request v7.0.11</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: restrict remote prune to self-hosted runners by <a
href="https://github.com/peter-evans "><code>@peter-evans</code></a> in
<a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4250 ">peter-evans/create-pull-request#4250</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v7.0.10...v7.0.11 ">https://github.com/peter-evans/create-pull-request/compare/v7.0.10...v7.0.11 </a></p>
<h2>Create Pull Request v7.0.10</h2>
<p>⚙️ Fixes an issue where updating a pull request failed when targeting
a forked repository with the same owner as its parent.</p>
<h2>What's Changed</h2>
<ul>
<li>build(deps): bump the github-actions group with 2 updates by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4235 ">peter-evans/create-pull-request#4235</a></li>
<li>build(deps-dev): bump prettier from 3.6.2 to 3.7.3 in the npm group
by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4240 ">peter-evans/create-pull-request#4240</a></li>
<li>fix: provider list pulls fallback for multi fork same owner by <a
href="https://github.com/peter-evans "><code>@peter-evans</code></a> in
<a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4245 ">peter-evans/create-pull-request#4245</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/obnyis "><code>@obnyis</code></a> made
their first contribution in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4064 ">peter-evans/create-pull-request#4064</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v7.0.9...v7.0.10 ">https://github.com/peter-evans/create-pull-request/compare/v7.0.9...v7.0.10 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="22a9089034 "><code>22a9089</code></a>
fix: restrict remote prune to self-hosted runners (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4250 ">#4250</a>)</li>
<li><a
href="d4f3be6ce6 "><code>d4f3be6</code></a>
fix: provider list pulls fallback for multi fork same owner (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4245 ">#4245</a>)</li>
<li><a
href="bc8a47f565 "><code>bc8a47f</code></a>
build(deps-dev): bump prettier from 3.6.2 to 3.7.3 in the npm group (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4240 ">#4240</a>)</li>
<li><a
href="a67ef28ca5 "><code>a67ef28</code></a>
build(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4235 ">#4235</a>)</li>
<li>See full diff in <a
href="84ae59a2cd...22a9089034 ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
2025-12-08 06:55:48 -08:00
Mitchell Hashimoto
bb49537a05
CONTRIBUTING: various improvements and clarifications ( #9835 )
...
Despite the existence of #6937 it seems that there are still quite a few
people who aren't sure of the norms surrounding how to use Ghostty's
discussion spaces, so I chose to spell it all out here.
Regarding AI policy I also added a section heavily discouraging AI
responses within PRs and contributing to platforms one can't test on. I
don't understand what is wrong with vibecoders on macOS who just think
that the GTK side will somehow Just Work, despite us being pretty much
the only major piece of software using zig-gobject that I know of.
2025-12-08 06:53:42 -08:00
Mitchell Hashimoto
6c33bf1f5e
Update iTerm2 colorschemes ( #9832 )
...
Upstream release:
https://github.com/mbadolato/iTerm2-Color-Schemes/releases/tag/release-20251201-150531-bfb3ee1
2025-12-08 06:52:49 -08:00
Mitchell Hashimoto
9cd96e4b64
quirks: remove type signature for inlineAssert ( #9843 )
...
Functions with different calling conventions are not compatible with
each other
Fixes all release builds + CI
2025-12-07 21:57:48 -08:00
Leah Amelia Chen
2ac9e03c52
quirks: remove type signature for inlineAssert
...
Functions with different calling conventions are not compatible with
each other
Fixes all release builds + CI
2025-12-08 13:19:16 +08:00
Mitchell Hashimoto
0bbd7c8f9a
os: fix off-by-one error in ShellEscapeWriter ( #9842 )
...
I am truly not sure why the tests never caught this, but I just fell for
the oldest trick in the book
Fixes a crash on GTK when a file is dragged then dropped into the
terminal - should not impact 1.2 as this is a casualty of the Zig 0.15
port
2025-12-07 21:17:12 -08:00
Leah Amelia Chen
6da2f0e3e7
os/shell: actually run tests
2025-12-08 13:04:20 +08:00
Leah Amelia Chen
ed1d77d518
os: fix off-by-one error in ShellEscapeWriter
...
I am truly not sure why the tests never caught this, but I just fell for
the oldest trick in the book
2025-12-08 12:42:35 +08:00
dependabot[bot]
5131998eda
build(deps): bump peter-evans/create-pull-request from 7.0.9 to 7.0.11
...
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request ) from 7.0.9 to 7.0.11.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases )
- [Commits](84ae59a2cd...22a9089034 )
---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
dependency-version: 7.0.11
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-08 00:06:17 +00:00
Mitchell Hashimoto
ddca4a8412
make our quirks assert use std.debug.assert in debug builds ( #9838 )
...
This fixes an issue I have on both macOS and Linux (ARM and x86_64)
where stack traces are broken for inlined functions. They don't point to
the proper location in the source code, making debugging difficult.
Release builds use the same previous function.
cc @qwerasd205
2025-12-07 14:17:30 -08:00
Mitchell Hashimoto
9d4f96381a
make our quirks assert use std.debug.assert in debug builds
...
This fixes an issue I have on both macOS and Linux (ARM and x86_64)
where stack traces are broken for inlined functions. They don't point to
the proper location in the source code, making debugging difficult.
Release builds use the same previous function.
2025-12-07 14:15:06 -08:00
Lars
0c9082eb72
macOS: fix theme reloading
...
### Background
After #9344 , the Ghostty theme won't change after switching systems', and reverting #9344 will bring back the issue it fixed.
The reason these two issues are related is because the scheme change is based on changes of `effectiveAppearance`, which is also affected by setting the window's `appearance` or changing `NSAppearance.currentDrawing()`.
### Changes
Instead of observing `effectiveAppearance`, we now explicitly update the color scheme of surfaces, so that we can control when it happens to avoid callback loops and redundant updates.
### Regression Tests
- [x] #8282
- [x] Reloading with `window-theme = light` should update Ghostty with the default dark theme with a dark window theme (break before [#83104ff](83104ff27a ))
- [x] `window-theme = light \n macos-titlebar-style = native` should update Ghostty with the default dark theme with a light window theme
- [x] Reloading from the default config to `theme=light:3024 Day,dark:3024 Night \n window-theme = light`, should update Ghostty with the theme `3024 Day` with a light window theme (break on [#d39cc6d](d39cc6d478 ))
- [x] Using `theme=light:3024 Day,dark:3024 Night`; Switching the system's appearance should change Ghostty's appearance (break on [#d39cc6d](d39cc6d478 ))
- [x] Reloading from `theme=light:3024 Day,dark:3024 Night` with a light window theme to the default config, should update Ghostty with the default dark theme with a dark window theme
- [x] Reloading from the default config to `theme=light:3024 Day,dark:3024 Night \n window-theme=dark`, should update Ghostty with the theme `3024 Night` with a dark window theme
- [x] Reloading from `theme=light:3024 Day,dark:3024 Night \n window-theme=dark` to `theme=light:3024 Day,dark:3024 Night` with light system appearance, should update Ghostty from dark to light
- [x] Reload with quick terminal open
# Conflicts:
# macos/Sources/Features/Terminal/BaseTerminalController.swift
2025-12-07 09:18:45 +01:00
Leah Amelia Chen
c9655eefe5
CONTRIBUTING: clarify discussion categories & discord channels
2025-12-07 13:08:42 +08:00
Leah Amelia Chen
90ab794457
CONTRIBUTING: tighten AI assistance disclosure requirements
2025-12-07 13:00:06 +08:00
voideanvalue
aa504b2784
add assertionFailure for unexpected QuickTerminalSize tag
2025-12-07 00:51:37 +00:00
mitchellh
6e081b2c81
deps: Update iTerm2 color schemes
2025-12-07 00:15:51 +00:00
voideanvalue
aa0afa2d02
fix C ABI compat for ghostty_quick_terminal_size_tag_e
2025-12-06 22:17:33 +00:00
Mitchell Hashimoto
08c9661683
ci: cancel prior test runs for the same git ref ( #9819 )
...
This should save on CI quite a bit. This will cancel our GHA runs when
you push to the same ref, except for `main`, where I want to make sure
every commit is tested.
2025-12-05 08:44:10 -08:00