Commit Graph

8592 Commits

Author SHA1 Message Date
Mitchell Hashimoto
fdbe4343c2 remove some unused files 2026-01-31 08:47:14 -08:00
Mitchell Hashimoto
b37ac8b287 inspector: screen cursor info 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
5c867bf1d7 inspector: move style to widgets dir 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
82dd9021bf inspector: starting screen 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
28086a7adc inspector: terminal migrate content 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
7cfac87fc4 inspector: trying new stuff 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
38aae2325d inspector: trying new logic layout 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
7073fb88f4 inspector: remove cursor helper, move it to screen, style helper 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
bdd0295e0e inspector: add style file for style widgets 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
1fa74b19e8 inspector: grid section lets you pick a cell 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
f23e67388d inspector: add grid section to screen 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
4992212ecd inspector: add more cursor state 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
e5a03a103c inspector: show warning if inactive screen being viewed 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
0b3f4ae340 inspector: move screens to terminal section 2026-01-31 08:47:13 -08:00
Mitchell Hashimoto
4c5af7073e inspector: move screen window to dedicated file 2026-01-31 08:47:12 -08:00
Mitchell Hashimoto
4c2ea6a9d8 inspector: fix up detachable headers to dock 2026-01-31 08:47:12 -08:00
Mitchell Hashimoto
1d7def0d2e inspector: move modes out to separate header 2026-01-31 08:47:12 -08:00
Mitchell Hashimoto
86af16b081 inspector: move surface window out to its own file 2026-01-31 08:47:12 -08:00
Mitchell Hashimoto
ff14938389 inspector: detachable collapsing headers 2026-01-31 08:47:12 -08:00
Mitchell Hashimoto
d58703a245 update AGENTS.md 2026-01-31 08:47:12 -08:00
Mitchell Hashimoto
061730ef97 inspector: terminal mouse section 2026-01-31 08:47:12 -08:00
Mitchell Hashimoto
03f012f567 inspector: terminal colors 2026-01-31 08:47:12 -08:00
Mitchell Hashimoto
41b5dc4928 inspector: terminal tab 2026-01-31 08:47:12 -08:00
Mitchell Hashimoto
377c6d7700 inspector: add AGENTS.md 2026-01-31 08:47:12 -08:00
Mitchell Hashimoto
d3e1b1bc19 disable debug 2026-01-30 20:47:19 -08:00
Mitchell Hashimoto
693035eaaf renderer: turn off AA and turn on hairline 2026-01-30 20:39:20 -08:00
Mitchell Hashimoto
d4f7c11a38 renderer: cache the overlay between calls 2026-01-30 20:33:28 -08:00
Mitchell Hashimoto
daed17c58a renderer: make overlay features configurable 2026-01-30 15:28:07 -08:00
Mitchell Hashimoto
fa06849dcc renderer: overlay explicit error sets 2026-01-30 15:11:16 -08:00
Mitchell Hashimoto
ed7f190fff renderer: overlay doesn't need to account for padding 2026-01-30 15:04:06 -08:00
Mitchell Hashimoto
f5c652a488 renderer: image can draw overlays 2026-01-30 14:58:26 -08:00
Mitchell Hashimoto
3931c45c6a renderer: image state supports overlay 2026-01-30 14:21:50 -08:00
Mitchell Hashimoto
f176342537 renderer: overlay system 2026-01-30 14:18:57 -08:00
Mitchell Hashimoto
89d3ad2bf3 renderer: generalize and extract image renderer state (#10501)
This extracts all our image renderer state into a separate struct,
blandly named `renderer.image.State`. This structure owns all the
storage of images and placements and exposes a limited public API to
manage them.

One motivation was to limit state access by our Kitty graphics functions
within the generic renderer. Another was to limit our own generic
renderer from getting our image system into an incoherent state. This is
prevented now on both sides due to some encapsulation.

This currently only supports Kitty images, since that's the only image
protocol we support. But I intend to add additional image types to this,
namely the ability to add overlay images for debug information. **There
are no plans to add new image protocols to the terminal,** the
extraction is purely to support some internal features. But, it could be
used for other protocols one day.
2026-01-30 14:18:40 -08:00
Mitchell Hashimoto
025885aa25 renderer: generalize and extract image renderer state
This extracts all our image renderer state into a separate struct,
blandly named `renderer.image.State`. This structure owns all the 
storage of images and placements and exposes a limited public API
to manage them.

One motivation was to limit state access by our Kitty graphics functions
within the generic renderer. Another was to limit our own generic
renderer from getting our image system into an incoherent state. This is
prevented now on both sides due to some encapsulation.

This currently only supports Kitty images, since that's the only image
protocol we support. But I intend to add additional image types to this,
namely the ability to add overlay images for debug information. 
**There are no plans to add new image protocols to the terminal,** the
extraction is purely to support some internal features. But, it could be
used for other protocols one day.
2026-01-30 14:10:03 -08:00
Jeffrey C. Ollie
9df9374e90 core: ensure comptime evaluation 2026-01-29 13:31:48 -06:00
Jeffrey C. Ollie
8bf03ff64a core: guard app message logging to ensure it's optimized away in release builds 2026-01-29 13:18:13 -06:00
Jeffrey C. Ollie
f04ac78624 core: use 0.15 native tag name conversion 2026-01-29 13:14:11 -06:00
Jeffrey C. Ollie
0ed63dffd3 core: don't log redraw_surface or redraw_inspector app messages
They are _very_ verbose and make other debug logs difficult to read.
2026-01-29 13:10:00 -06:00
Mitchell Hashimoto
bdfb45bca7 imgui delta time needs to use float math
Our prior math converted to float after int which made our delta time
wrong making hovers and stuff not work.
2026-01-27 09:35:38 -08:00
Mitchell Hashimoto
f85653414c renderer: keep a draw timer on when we have an inspector 2026-01-27 09:08:45 -08:00
Mitchell Hashimoto
32f5677a94 macos: slow down inspector trackpad (precision) scrolling 2026-01-27 08:34:35 -08:00
Mitchell Hashimoto
7feb30a836 inspector: mode rows need a unique ID 2026-01-27 08:28:39 -08:00
Mitchell Hashimoto
01ea3744c5 font/shaper/harfbuzz: Update position logic to match recent CoreText changes (#10332)
This PR incorporates the recent changes made to CoreText in the
following PRs:

* https://github.com/ghostty-org/ghostty/pull/9883
* https://github.com/ghostty-org/ghostty/pull/10179
* https://github.com/ghostty-org/ghostty/pull/10295

Tests have been added verifying the behavior. Below are all the changes
in shaping from the above PRs but now using HarfBuzz.

## Tai Tham vowels (https://github.com/ghostty-org/ghostty/pull/9883)

Browser:

ᨯᩰ

Before:

(Note that this worked correctly with the old logic for HarfBuzz in
contrast to CoreText)

<img width="498" height="96" alt="CleanShot 2026-01-15 at 09 50 50@2x"
src="https://github.com/user-attachments/assets/a87abb4e-7829-4df0-9cb6-9fc254c10ba2"
/>

After:

<img width="496" height="96" alt="CleanShot 2026-01-15 at 09 51 07@2x"
src="https://github.com/user-attachments/assets/64cb8b12-0b99-4e9f-8189-d793469048f6"
/>


## Tibetan characters (discussion
https://github.com/ghostty-org/ghostty/discussions/8054)

Browser:

ༀ

Before (with Noto Serif Tibetan):

<img width="586" height="154" alt="CleanShot 2026-01-16 at 09 28 32@2x"
src="https://github.com/user-attachments/assets/5b7df9c1-13ff-45fd-977e-9e152063517c"
/>

After:

<img width="604" height="202" alt="CleanShot 2026-01-16 at 09 28 46@2x"
src="https://github.com/user-attachments/assets/3832b8b0-1ce6-448d-a063-622127cfb213"
/>


## Tai Tham ligature (https://github.com/ghostty-org/ghostty/pull/10179
and https://github.com/ghostty-org/ghostty/pull/10295)

Browser:

ᩉ᩠ᨿᩩ

Before:

<img width="860" height="144" alt="CleanShot 2026-01-15 at 09 57 30@2x"
src="https://github.com/user-attachments/assets/56c85a06-1853-4f88-992b-568b7f1d4b4e"
/>

After:

<img width="860" height="108" alt="CleanShot 2026-01-15 at 09 57 44@2x"
src="https://github.com/user-attachments/assets/fe236aad-ac2c-4665-aef4-bc996e3b2938"
/>

## Javanese ligature (https://github.com/ghostty-org/ghostty/pull/10295)

Browser:

ᩉ᩠ᨿᩩ

Before:

<img width="856" height="128" alt="CleanShot 2026-01-15 at 09 59 04@2x"
src="https://github.com/user-attachments/assets/73c60445-a80d-4003-ae2b-c8d53f3c9cf9"
/>

After:

<img width="866" height="114" alt="CleanShot 2026-01-15 at 09 59 23@2x"
src="https://github.com/user-attachments/assets/fce80429-096a-455e-aabd-00bf33fdae54"
/>

## Chakma ligature (https://github.com/ghostty-org/ghostty/pull/10295)

Browser:
𑄝𑄖𑄳𑄠𑄬

Before:

<img width="1298" height="104" alt="CleanShot 2026-01-15 at 10 00 31@2x"
src="https://github.com/user-attachments/assets/72e2be85-fb4b-4ca0-98d7-30279fd2613f"
/>

After:

<img width="1310" height="84" alt="CleanShot 2026-01-15 at 10 00 52@2x"
src="https://github.com/user-attachments/assets/a5e2a89c-7f1e-474c-9d61-b90c6a6ffedd"
/>

## Bengali ligature (https://github.com/ghostty-org/ghostty/pull/10295)

Browser:
রাষ্ট্রে

Before:
<img width="1268" height="94" alt="CleanShot 2026-01-15 at 10 02 16@2x"
src="https://github.com/user-attachments/assets/2946701c-a41b-45c5-b442-915dad45d380"
/>

After:
<img width="1274" height="110" alt="CleanShot 2026-01-15 at 10 02 32@2x"
src="https://github.com/user-attachments/assets/c1684149-cca4-43a7-b384-13e3d4854765"
/>

## Devanagari string (test changed in
https://github.com/ghostty-org/ghostty/pull/10295)

Browser:
अपार्टमेंट

Before:

<img width="560" height="98" alt="CleanShot 2026-01-16 at 09 31 45@2x"
src="https://github.com/user-attachments/assets/8df36427-c1fe-4f3c-9e2a-7e9b798411b4"
/>

After:

<img width="570" height="88" alt="CleanShot 2026-01-16 at 09 32 06@2x"
src="https://github.com/user-attachments/assets/972ed525-f341-400b-a09c-29b0a9135502"
/>


## AI disclaimer

I used Amp to copy the logic from CoreText, but had to help it along. I
took over after I noticed the different behavior with HarfBuzz's default
cluster level.

[Adopt CoreText changes to HarfBuzz
shaper](https://ampcode.com/threads/T-019bbccd-74d3-76c8-add4-6270f0f5375f)
[Rename debug_codepoints, explore HarfBuzz
alternatives](https://ampcode.com/threads/T-019bbce3-bed6-70fa-9eec-b0d1ee448ee9)
[Fix cluster indexing in codepoints
array](https://ampcode.com/threads/T-019bbced-d67b-7239-b507-9b3bd027faeb)
2026-01-26 20:20:26 -08:00
Jon Parise
4e17eee5de nushell: provide shell ssh integration (#9604)
Closes #7877. 

Small disclaimer: First Ghostty PR and Zig PR, but looking forward to
contributing to the project.

This PR supports shell-integration-features `ssh-env` and `ssh-terminfo`
as per other shells, but not the rest as this is what the issue states.

That being said, with this PR, then you would see this:
- `warning(io_exec): shell could not be detected, no automatic shell
integration will be injected`, but given that the default mode is
`detect` it will pick up the executable and if ssh features are enabled
it will integrate it. This might be confusing for users.
- I decided to not add `nu` to `pub const Shell` because if we do so,
then from what I understand from the code, then the code flow would
imply that "shell integration will be injected" but it will only do so
if those `ssh-*` features are enabled, which may be misleading. But on
the other hand, providing `ssh` shell integration but returning `null`
for `?!ShellIntegration` does not seem very correct either.

- I dont like that I added `features` argument to `setupshell`, just to
check them if `nu` was used. The reasoning is because the way Nushell
works, if we autoload the `nushell` directory (by `setupXdgDatadirs()`)
even if no `ssh` features were present, it will wrap the `ssh` function
and I think that is not desirable, even if we end up just forwarding the
arguments.

Sorry for the long wall of text, but I think it was worth to add some of
the doubts I have had myself, plus the ones that you folks may add. I am
very happy to iterate on this, even if its a very "Easy" one, so I much
welcome the feedback.

> [!NOTE]
>
> Used `GPT` for helping with nushell variable naming
verification/improvement
> Used `Gemini` for helping with understanding the `Zsh` ssh integration
so that I could replicate the logic with nushell. Just because I find
`zsh` language very difficult to understand in detail.
2026-01-26 19:20:27 -05:00
David Matos
675fa34e66 unnecesary bind 2026-01-27 00:59:39 +01:00
David Matos
d70eef69f9 address changes 2026-01-27 00:51:50 +01:00
Jeffrey C. Ollie
9172f6c538 build: include comments on why '/' is removed 2026-01-26 14:43:54 -06:00
Jeffrey C. Ollie
7123877c9c build: don't allow / in branch names
This should fix CI failures like in PRs #10449 and #10450 that use
long automatically-generated branch names.
2026-01-26 14:36:31 -06:00
Jacob Sandlund
44aa761733 skip testShaperWithDiscoveredFont if discovery is not available 2026-01-26 11:00:15 -05:00