Commit Graph

1593 Commits

Author SHA1 Message Date
Mitchell Hashimoto
6730afe312 macOS: Add GhosttyUITests (Drafting to save some ci checks) (#9185)
### Background

~~I was trying to add a few UI test cases for
`macOS-titlebar-style`[Already in this PR]~~. In order to do this, I
need a way from `GhosttyKit` to load a temporary configuration without
messing around with users'.

### Changes

- Add `ghostty_config_load_file` using the existing
[`loadFile`](dafb9e89a3/src/config/Config.zig (L3399))
- Use `xcbeautify` to format test&build errors
**Couldn't find a way to do this in `GhosttyXcodebuild`, if you have a
better approach please let me know!**
- Add GhosttyUITests target and test cases for
`GhosttyTitlebarTabsUITests`(#2349) and `GhosttyThemeTests`(#9360)

### NOTE

Running UI tests on the runner could be **very** slow and I couldn't
find a way to guarantee success, so I made these only runnable by
manually testing in Xcode.

Better to squash this🤪

> > Some of the test cases could fail when testing all the cases
together; a rerun would succeed.
2026-01-20 09:30:39 -08:00
Lars
3fda31a66a skip checking config file 2026-01-20 09:15:14 -08:00
Lars
bfe5a4be8f move config loading to Config 2026-01-20 09:15:14 -08:00
Lukas
32562e0c98 Update macos/Sources/Ghostty/Ghostty.App.swift
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-20 09:15:14 -08:00
Lars
35b2e820ce typo fix 2026-01-20 09:15:14 -08:00
Lars
4154a730ee Fix some edge cases 2026-01-20 09:15:14 -08:00
Lars
27729bf8a7 only run ui tests manually with xcode 2026-01-20 09:15:14 -08:00
Lars
85da70c98d Add more theme test cases from #9360 2026-01-20 09:15:14 -08:00
Lars
4aabd94716 add theme tests 2026-01-20 09:15:14 -08:00
Lars
d9ed325818 update config explicitly 2026-01-20 09:15:14 -08:00
Lars
6ada9c7844 test: add test for mergeAllWindows 2026-01-20 09:15:14 -08:00
Lars
f52013787e test: using XCTAssertEqual to get more information 2026-01-20 09:15:14 -08:00
Lars
f088ce38d9 test: read config before launching XCUIApplication 2026-01-20 09:15:14 -08:00
Lars
f7608d0b95 macOS: reduce press duration 2026-01-20 09:15:14 -08:00
Lars
b1290dc47b macOS: add titlebar tabs tests 2026-01-20 09:15:14 -08:00
Lars
bcf42dde6c build: change deployment target 2026-01-20 09:15:14 -08:00
Lars
a94a6e4b36 build: fix Ghostty-iOS compiling 2026-01-20 09:15:14 -08:00
Lars
4f667520fa macOS: GhosttyUITests 2026-01-20 09:15:14 -08:00
Mitchell Hashimoto
2db80e278e feat(macos): if the search box is empty directly close the box (#10384)
referring to the discussion:
https://github.com/ghostty-org/ghostty/discussions/9814

This is a very small change addressing the behavior for closing the
search bar. This removes an extra step when closing the search bar if
the query is empty
2026-01-20 08:33:43 -08:00
Tim Culverhouse
5ee56409c7 macos: support mouse buttons 8/9 (back/forward)
Add support for mouse buttons 4-11 in the macOS app. Previously only
left, right, and middle buttons were handled. Now otherMouseDown/Up
events properly map NSEvent.buttonNumber to the corresponding Ghostty
mouse button, enabling back/forward button support.

Fixes: https://github.com/ghostty-org/ghostty/issues/2425
Amp-Thread-ID: https://ampcode.com/threads/T-019bd74e-6b2b-731d-b43a-ac73b3460c32
Co-authored-by: Amp <amp@ampcode.com>
2026-01-19 11:59:50 -06:00
Nishant Joshi
c8f56ddaf8 feat(macos): if the search box is empty directly close the box 2026-01-18 10:08:51 -08:00
Jon Parise
1537590a5f macos: cycle through our icons in the About view
Clicking on the icon immediately advances to the next one. Hovering on
the icon pauses the automatic cycling, and the "help" tooltip displays
the icon's configuration name (for `macos-icon`).
2026-01-12 15:20:14 -05:00
Mitchell Hashimoto
f34c69147a macos: use the new binding flags information value to trigger menu 2026-01-09 07:13:14 -08:00
Mitchell Hashimoto
5a7fdf735e macos: custom tab title shows bell if active
Fixes #10210
2026-01-07 13:32:58 -08:00
Mitchell Hashimoto
323d362bc1 macos: dragging last window out of quick terminal works 2026-01-07 09:33:37 -08:00
Lukas
a265462aa6 macOS: moving a focused split to another tab should also update the previous tab 2026-01-07 09:18:41 -08:00
Lukas
02fc0f502f macOS: rename function to avoid mutating misunderstanding 2026-01-07 09:18:17 -08:00
Leah Amelia Chen
c559a1dbba Allow for default or inherited CWD in new window, tab and split surfaces (redone for GTK-NG) (#9158) 2026-01-07 20:45:06 +08:00
Mitchell Hashimoto
7d0157e69a macOS: add Cmd+J "Jump to Selection" menu item and default binding
This matches other built-in macOS apps like Terminal, Notes, Safari. We
already had the binding, just needed to create the menu.

https://ampcode.com/threads/T-019b956a-f4e6-71b4-87fa-4162258d33ff
2026-01-06 14:30:11 -08:00
Mitchell Hashimoto
05a41c7772 macos: clean up menu 2026-01-06 14:20:34 -08:00
Mitchell Hashimoto
f07d600e43 macos: start_search with needle changes needle 2026-01-06 14:14:22 -08:00
Mitchell Hashimoto
8e28f58b42 rename the selection search binding, unify into start_search action 2026-01-06 14:10:42 -08:00
Aaron Ruan
9b6a3be993 macOS: Selection for Find feature
Adds the `selection_for_search` action, with Cmd+E keybind by default.
This action inputs the currently selected text into the search
field without changing focus, matching standard macOS behavior.
2026-01-06 22:21:55 +08:00
Peter Guy
b119bc6089 consolidated enums 2026-01-05 16:47:04 -08:00
Peter Guy
d660799723 Consolidate the several ghostty_surface_inherited_config
functions back into a single function with a second parameter for the source context.
2026-01-05 16:47:04 -08:00
Peter Guy
c035fb5385 Add an enum type for the C API 2026-01-05 16:47:04 -08:00
Peter Guy
496f5b3ed7 Add the context to the Swift layer.
- Define NewSurfaceContext to match the Zig enum name and avoid magic numbers.
2026-01-05 16:47:04 -08:00
Peter Guy
dba0ff5339 Add C API function to handle new surfaces of different types 2026-01-05 16:47:04 -08:00
Martin Emde
c384cd050e Fix Mac window becomes unmovable after pane rearrangement
After rearranging panes, the window becomes permanently unmovable.
Grab handles temporarily set `window.isMovable = false` on hover to prevent
window dragging from interfering with pane dragging.

Override `viewWillMove(toWindow:)` to catch when the view is being removed from
the window. This lifecycle method is called before the window reference
becomes nil, allowing us to restore `window.isMovable`.
2026-01-01 15:56:25 -08:00
Ivan Buiko
c89627fe75 macOS: Add menu shortcut handling in macOS key event processing
Allow menu bar to flash for shortcuts and handle key equivalents before
checking for Ghostty key bindings
2026-01-01 12:47:16 -08:00
Mitchell Hashimoto
b3fbf11b0c macOS: temporarily disable window.isMovable to fix #10110 (#10125)
Fixes #10110
2026-01-01 12:45:08 -08:00
Jon Parise
12024ed831 macos: simplify .keyDown guard condition
This condition is more naturally expressed as a `guard`.
2026-01-01 10:17:48 -05:00
Lukas
1249f3b88c macOS: temporarily disable window.isMovable to fix #10110 2026-01-01 14:37:08 +01:00
Lukas
74fc48682a macOS: remove unused file 2026-01-01 14:31:11 +01:00
Mitchell Hashimoto
18abcaa797 macos: remove tab hover event, seems native handles it 2025-12-31 06:15:04 -08:00
Mitchell Hashimoto
d4ba0fa27e macos: last surface should close tab immediately not window 2025-12-30 15:07:28 -08:00
Mitchell Hashimoto
3e399a3d35 macos: detect surface tab bar hovers and focus them 2025-12-30 15:07:27 -08:00
Mitchell Hashimoto
f32d54bedb macos: make surface grab handle visible in light mode (#10111) 2025-12-30 13:14:49 -08:00
Mitchell Hashimoto
c34bb5976a macos: Ghostty.Command must copy string values
We were previously storing the C struct which contained pointers into
ephemeral memory that could cause segfaults later on.
2025-12-30 13:09:20 -08:00
Mitchell Hashimoto
43c7277a60 macos: make surface grab handle visible in light mode 2025-12-30 13:06:55 -08:00