600 Commits

Author SHA1 Message Date
Mitchell Hashimoto
5c1679209d macos: add hover styles to search buttons, cursor changes 2025-11-27 13:01:51 -08:00
Lukas
dc08d057fe macOS: use ConcentricRectangle on Tahoe 2025-11-26 21:00:14 +01:00
Lukas
cbcd52846c macOS: fix search dragging animation when corner is not changed 2025-11-26 21:00:14 +01:00
Qwerasd
4b01163c79 fix(macos): use strings' utf-8 lengths for libghostty calls
Swift conveniently converts strings to UTF-8 encoded cstrings when
passing them to external functions, however our libghostty functions
also take a length and we were using String.count for that, which
returns the number of _characters_ not the byte length, which caused
searches with multi-byte characters to get truncated.

I went ahead and changed _all_ invocations that pass a string length to
use the utf-8 byte length even if the string is comptime-known and all
ASCII, just so that it's proper and if someone copies one of the calls
in the future for user-inputted data they don't reproduce this bug.

ref:
https://developer.apple.com/documentation/swift/string/count
https://developer.apple.com/documentation/swift/stringprotocol/lengthofbytes(using:)
2025-11-26 12:00:58 -07:00
avarayr
f5b923573d macOS: move search result counter inside text field
Move the search result counter (e.g. "1/30") inside the search text
field using an overlay, preventing layout shift when results appear.

This PR was authored with Claude Code.
2025-11-26 13:04:05 -05:00
Mitchell Hashimoto
5b4394d211 macos: end_search for ending search 2025-11-26 08:57:24 -08:00
Mitchell Hashimoto
c51170da9c add end_search binding 2025-11-26 08:50:06 -08:00
Mitchell Hashimoto
f7b14a0142 macos: debounce search requests with length less than 3 2025-11-26 08:50:06 -08:00
Mitchell Hashimoto
339abf97f7 macos: can allow single char searches now 2025-11-26 08:50:06 -08:00
Mitchell Hashimoto
1bb2d4f1c2 macos: only end search if we previously had one 2025-11-26 08:50:05 -08:00
Mitchell Hashimoto
93656fca5a macos: show progerss correctly for search 2025-11-26 08:50:05 -08:00
Mitchell Hashimoto
0e974f85ed macos: fix iOS build 2025-11-26 08:50:05 -08:00
Mitchell Hashimoto
c20af77f98 macos: handle search progress/total apprt actions 2025-11-26 08:50:05 -08:00
Mitchell Hashimoto
d4a2f3db71 macos: search overlay shows search progress 2025-11-26 08:50:05 -08:00
Mitchell Hashimoto
7835ad0ea4 macos: more menu items 2025-11-26 08:50:05 -08:00
Mitchell Hashimoto
3f7cfca4b4 macos: add find menu item 2025-11-26 08:50:05 -08:00
Mitchell Hashimoto
949a8ea53f macos: dummy search state for iOS 2025-11-26 08:50:05 -08:00
Mitchell Hashimoto
cfbc219f5c macos: enter and shift+enter move the results 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto
efc05523e0 macos: enter goes to next result 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto
3ce19a02ba macos: hook up the next/prev search buttons 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto
ad8a6e0642 search thread needs to take an allocated needle 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto
5ee000f58f macos: search input starts the search up 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto
081d73d850 macos: changes to SearchState trigger calls to internals 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto
56d4a7f58e macos: start_search refocuses the search input 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto
c61d28a3a4 macos: esc returns focus back to surface 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto
b7e70ce534 apprt: end_search 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto
bc44b187d6 macos: hook up start_search apprt action to open search 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto
b87d57f029 macos: search overlay 2025-11-26 08:50:03 -08:00
Lukas
2f1427f529 macOS: match scroller’s appearance with surface’s background 2025-11-17 18:20:24 +01:00
Lukas
011fc77caa macOS: Fix dictation icon's position while speaking 2025-11-16 12:17:31 +01:00
Daniel Wennberg
49bf73458b don't autohide scrollers 2025-11-14 07:40:51 -08:00
Daniel Wennberg
d48f855a48 macOS: set scrollbar size to .small 2025-11-14 07:36:54 -08:00
Lukas
1486be0cdf macOS: add more cursor style and fixes #8409 2025-11-13 18:20:09 +01:00
Lukas
f5bddb346c macOS: support close_all_windows action 2025-11-10 17:54:46 +01:00
Lukas
7ca858d404 macOS: move focus if command palette is not showing 2025-11-10 10:11:34 +01:00
Lukas
84082c2b96 macOS: equalize splits when double tapping on SplitView divider (#9524)
Resolves Issue #8357 

### Implementation

Following the existing `onResize` callback pattern in
`TerminalSplitTreeView`, I added an `onEqualize` callback to
`SplitView`. When a divider is double-tapped, the callback retrieves a
surface from that `TerminalView`'s `SplitTree` and calls `splitEqualize`
to equalize the entire tree.

### Context

There is an existing PR #8364 that implements this feature but uses
`focusedSurface`, which doesn't work for unfocused windows. Since that
PR has been inactive for a few months after requested changes, I've
implemented this alternative approach.

Credit to @liby for that initial implementation!

### AI Usage

I chatted with Claude Code in Plan mode to understand the relationship
between surfaces and the split tree/split views, but I wrote all the
code myself.

### Screenshot


https://github.com/user-attachments/assets/0efd70ef-c90e-4b50-b853-b05e2ca2be67
2025-11-09 09:07:09 +01:00
Daniel Wennberg
e3ff49e653 macOS: Update core surface size when config changes 2025-11-08 23:34:56 -08:00
Sean Kelly
e298620828 macOS: equalize splits when double tapping on SplitView divider 2025-11-08 23:16:16 -08:00
Daniel Wennberg
5845a7bd29 macOS: Update core surface size when scroller style changes 2025-11-08 22:41:59 -08:00
Daniel Wennberg
3142c5aa60 macOS: Don't clip surfaceView to contentView
Fixes #9248
2025-11-08 09:34:02 -08:00
Mitchell Hashimoto
12c8b6c1aa macOS: Refactor scrollview to preserve state across split tree changes (#9446)
Fixes #9444
2025-11-07 15:10:45 -08:00
Mitchell Hashimoto
f54c3d9209 macOS: set the macos-icon from a separate thread (#9485)
Closes #8793
2025-11-06 09:55:57 -07:00
Lars
98ae1dbd10 macOS: fix Dictation icon starting above the text, not below
Partially fixes #8493.

After dictating some texts, the icon still appears above, but it will return to its right position after resizing or `\n` (saying newline, not hitting enter).

This behaviour is better than before, where the icon always appeared above.

### Reference:

9e905357bb/src/nsterm.m (L7426)
2025-11-05 18:22:08 +01:00
Lars
7472fb7732 macOS: set the macos-icon from a separate thread 2025-11-05 12:27:35 +01:00
Daniel Wennberg
afc64f6285 Refactor scrollview to preserve state across split tree changes 2025-11-04 00:02:21 -08:00
Daniel Wennberg
9002c5dbd2 Preserve surface content size across backing updates 2025-11-04 00:02:21 -08:00
Daniel Wennberg
d678e2e305 Use notifications to deal with NSScrollPocket 2025-11-04 00:02:21 -08:00
Mitchell Hashimoto
901708e8da input: write_*_file actions take an optional format
Fixes #9398
2025-10-31 09:49:59 -07:00
Daniel Wennberg
951374cd1c Fix documentView padding calculations 2025-10-31 00:39:03 -07:00
Mitchell Hashimoto
5c1f036613 macos: assert only one text-plain gets written to clipboard 2025-10-30 15:16:15 -07:00