Commit Graph

17140 Commits

Author SHA1 Message Date
derVedro
278b4e2fc7 i18n(ru): refine Russian translation 2026-08-27 12:21:51 +02:00
derVedro
915977a484 i18n(ru): equalize splits 2026-08-26 23:37:42 +02:00
derVedro
84dff76b13 Update po/ru.po
Co-authored-by: TicClick <ya@ticclick.ch>
2026-08-26 19:15:58 +02:00
derVedro
6244458a11 Update po/ru.po
Co-authored-by: TicClick <ya@ticclick.ch>
2026-08-26 19:00:00 +02:00
derVedro
ba35746377 i18n(ru): improve Russian translation 2026-08-25 17:05:08 +02:00
derVedro
0a396b43dc i18n(ru): context menu fix in Russian translation 2026-08-24 20:22:47 +02:00
derVedro
32159b6fe6 i18n(ru): small fix in Russian translation 2026-08-24 07:25:56 +02:00
derVedro
3f87b2e581 i18n(ru): second part of Russian translation 2026-08-24 00:07:57 +02:00
derVedro
1dd31f9e94 i18n(ru): work in progress on Russian translation 2026-08-14 09:21:30 +02:00
derVedro
4bb135e2de i18n(ru): start updating Russian translation 2026-08-13 05:19:19 +02:00
Mitchell Hashimoto
b2fa2931b6 Expose semantic prompt state through libghostty-vt (#13767)
## Summary

- Add `GHOSTTY_TERMINAL_DATA_CURSOR_AT_PROMPT` to expose semantic prompt
state through `libghostty-vt`.
- Reuse `Terminal.cursorIsAtPrompt()` rather than introducing separate
prompt tracking.

## Motivation

Ghostty already tracks whether the cursor is at a semantic prompt
through `Terminal.cursorIsAtPrompt()`. Exposing this query through
`libghostty-vt` lets downstream terminal consumers use Ghostty's
existing semantic prompt state without introducing separate tracking.

The query returns false when semantic prompt information is unavailable
or the alternate screen is active.

Discussed in https://github.com/ghostty-org/ghostty/discussions/13755.

## Testing

- `zig build test-lib-vt`
- `zig build test-lib-vt -Dtest-filter="get cursor_at_prompt"`
- `zig build -Demit-lib-vt`

## AI disclosure

Codex assisted with adding the `libghostty-vt` query and test,
addressing review feedback, running validation, and drafting this
description. I reviewed and edited the final code and description,
reviewed the validation results, and understand how the change interacts
with Ghostty's semantic prompt state.
2026-08-12 14:11:26 -07:00
Vishal Kapur
c80c373627 Remove internal surface prompt query 2026-08-12 13:24:21 -07:00
Vishal Kapur
bdb566068e Expose semantic prompt state through C APIs 2026-08-12 12:20:04 -07:00
Mitchell Hashimoto
d2eeb734b0 github: remove the issue templates (#13765)
They're not needed anymore since the "New issue" button is now
inaccessible to non-maintainers anyway.
2026-08-12 12:08:52 -07:00
trag1c
4a516fa393 github: remove the issue templates 2026-08-12 20:36:26 +02:00
Mitchell Hashimoto
99b877ad22 terminal: move cursor home after formatting tabstops (#13763)
Home the cursor after serializing custom tab stops, since formatting VT
expects it to be there for new lines.
2026-08-12 10:35:07 -07:00
Mitchell Hashimoto
e523cf8104 terminal: move cursor home after formatting tabstops
Home the cursor after serializing custom tab stops, since formatting VT
expects it to be there for new lines.
2026-08-12 10:26:57 -07:00
Leah Amelia Chen
1eaf457b18 gtk: add window title renaming (#10999)
Fixes #10469 for GTK.
2026-08-13 01:11:12 +08:00
Mitchell Hashimoto
7e3ddc2c89 macOS: fix swift warnings (#13762)
Rework for #12764
2026-08-12 08:09:56 -07:00
Lukas
cb7eaa059d macOS: silent weak ownership difference warnings
UpdateViewModel doesn't own the Task, we don't actually need it here.
2026-08-12 15:34:55 +02:00
Lukas
c78226bfae macOS: fix Main actor-isolated static property 'find' warnings 2026-08-12 15:34:54 +02:00
Mitchell Hashimoto
51ed437cd1 libghostty: functions to detect and write until stream ground state (#13761)
This adds new functions to both C and Zig to write VT data until the VT
parser reaches a "ground" state. The ground state is when the
parser/stream is stateless: between all partial UTF-8, OSC, CSI, etc.

This lets embedders safely interleave custom VT sequences from multiple
sources. A practical example is a standard terminal reading from a pty
that is then doing custom APC or something mid-stream for their emulator
client.

The new function is anywhere from 1% to 5% slower than normal VT write,
but that should be acceptable due to its special case. Normal VT writes
are unchanged.
2026-08-12 06:34:09 -07:00
Lukas
97ae257497 macOS: fix warnings in showUserNotification 2026-08-12 15:26:31 +02:00
Lukas
da8b171265 macOS: fix Sendable warning for UnsafeMutablePointer
Swift explicitly [marked UnsafeMutablePointer as non sendable](0568dbf903). Moving from `@unchecked @retroactive` to `nonisolated(unsafe)` is safe for us as per the previous comments
2026-08-12 15:26:30 +02:00
Mitchell Hashimoto
a69a591af1 libghostty: functions to detect and write until stream ground state
This adds new functions to both C and Zig to write VT data until the
VT parser reaches a "ground" state. The ground state is when the
parser/stream is stateless: between all partial UTF-8, OSC, CSI, etc.

This lets embedders safely interleave custom VT sequences from multiple
sources. A practical example is a standard terminal reading from a pty
that is then doing custom APC or something mid-stream for their emulator
client.
2026-08-12 06:26:29 -07:00
Mitchell Hashimoto
396166ecbe build: stop building Ghostty.xcframework for iOS (#13760)
Depends on https://github.com/ghostty-org/ghostty/pull/13759.

**Removing iOS for `Ghostty.xcframework` will affect other
[awesome-libghostty](https://github.com/Uzaaft/awesome-libghostty)
projects**, so I separated it.


### AI Disclosure

Claude ran the check and did the changes, I reviewed it.
2026-08-12 06:21:44 -07:00
Lukas
7a171895dd build: stop building Ghostty.xcframework for iOS
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 15:11:33 +02:00
Mitchell Hashimoto
4f39c506ef macOS: remove iOS target and clean up cross platform checks (#13759)
As discussed in Discord: Ghostty internal support for iOS is not
important and we verify iOS compatibility for `libghostty-vt` through
compilation.

Diff is **BIG**, but it contains mostly cleanup and didn't touch macOS's
implementation (except for some renaming).

### AI Disclosure

Claude did batch removal for me, I manually reviewed them and ran
locally for macOS.
2026-08-12 06:10:11 -07:00
Lukas
b112f3954c build: stop building Ghostty for iOS
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 14:00:03 +02:00
Lukas
daab08ec01 macOS: drop the cross-platform check and abstraction
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 14:00:03 +02:00
Lukas
400be4cc1d macOS: adjust file tree 2026-08-12 14:00:02 +02:00
Lukas
3901168b16 macOS: remove iOS target 2026-08-12 14:00:02 +02:00
ghostty-vouch[bot]
9f9b8d1d05 Update VOUCHED list (#13756)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/13755#discussioncomment-17982722)
from @jcollie.

Vouch: @figelwump

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-12 01:20:06 +00:00
ghostty-vouch[bot]
fad7f854e8 Update VOUCHED list (#13754)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/13753#discussioncomment-17980814)
from @mitchellh.

Vouch: @shorsher

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-11 20:53:22 +00:00
Mitchell Hashimoto
b0b9fbc8d5 macOS: support decoding the surrogate pair with UnicodeHexInput (#13737)
Not yet a perfect fix for
https://github.com/ghostty-org/ghostty/discussions/13730
2026-08-11 11:03:01 -07:00
Mitchell Hashimoto
d1937d63e4 macOS: remove unused menu validations (#13726)
UpdateController isn't the target of any menu item, we don't need add
menu validation here.
2026-08-11 11:02:28 -07:00
Mitchell Hashimoto
8e4715b6ea terminal/kitty: use fixed table for control keys (#13729)
Swap out the hash map backed by an arena with a fixed array.
Measurements from poop:
CPU Cycles: 173M → 171M (−1.2%)
Instructions: 519M → 517M (−0.5%)
Peak RSS: 11.9 → 11.8 MB
Cache misses: 356K → 312K (−12.4%)
2026-08-11 11:02:13 -07:00
Mitchell Hashimoto
92cdfc748e issue-triage: add a documentation search checkbox (#13752) 2026-08-11 11:01:33 -07:00
trag1c
04d1939d5f issue-triage: add a documentation search checkbox 2026-08-11 19:54:52 +02:00
Uzair Aftab
5ce1fe1ff9 terminal/kitty: document the experiment variants that were considered 2026-08-11 19:17:37 +02:00
Uzair Aftab
f719af00c2 terminal/kitty: use fixed table for control keys
Graphics commands prev. stored parsed control fields in a hash map
backed that used an arena.
This added hashing and allocation to every command even though protocol
keys are single ASCII letters.

Store letter keys in a fixed array with a presence bitmap and remove the
now-unnecessary arena. Unknown non-letter keys remain ignored and are
covered by a regression test.
2026-08-11 19:17:37 +02:00
Mitchell Hashimoto
8c9fd7aa79 macos: normalize command paths as file URLs
#13319
#13748

Normalize command-line file arguments as file URLs internally while
keeping the AppKit and FileManager string boundaries unchanged.

This handles relative paths, URL-sensitive characters, and trailing
directory separators consistently when matching duplicate open-file
events.
2026-08-11 09:15:05 -07:00
Mitchell Hashimoto
a858bd4d35 macos: ignore -e arguments as open files (#13748)
Fixes #13319

AppKit treats existing positional arguments as documents, causing paths
passed to a child command after -e to open an extra terminal surface.

We now process args ourselves during openFile callbacks to ignore file
paths after `-e`. There isn't a way to avoid this I can find because
AppKit processes argc/argv from the main entrypoint and that can't be
overridden.
2026-08-11 09:04:38 -07:00
Mitchell Hashimoto
90154e2895 macos: ignore -e arguments as open files
Fixes #13319

AppKit treats existing positional arguments as documents, causing paths
passed to a child command after -e to open an extra terminal surface.

We now process args ourselves during openFile callbacks to ignore 
file paths after `-e`. There isn't a way to avoid this I can find
because AppKit processes argc/argv from the main entrypoint and that
can't be overridden.
2026-08-11 08:30:32 -07:00
ghostty-vouch[bot]
426386b857 Update VOUCHED list (#13747)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/13746#discussioncomment-17977627)
from @jcollie.

Vouch: @alex19EP

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-11 15:13:48 +00:00
Mitchell Hashimoto
046b8fcc2a macos: defer OSC52 clipboard read confirmations until focused (#13744)
Fixes #10077

Clipboard read confirmations would immediately show a sheet which
grabbed focus. This could be used for a bunch of dumb reasons, including
DoS attacks. But, it also caused focus/sheet loops for programs that did
OSC52 on focus changes (which was seen via some Neovim configs!).

Now, if a surface is unfocused, we bell the surface and show the
confirmation request on next focus. If the surface is not focused or
another request comes in, we cancel the prior one.

This also fixes some memory management issues around clipboard requests
that were likely small leaks (didn't verify the old bug, but verified
the new code, and eyeballed the old).

To implement this, I decided to reorient the whole clipboard
confirmation thing around state on SurfaceView (which simplifies memory
management) and using Combine on BaseTerminalController to get notified.
2026-08-11 06:55:25 -07:00
Mitchell Hashimoto
d695ffff3b macos: defer OSC52 clipboard read confirmations until focused
Fixes #10077

Clipboard read confirmations would immediately show a sheet which
grabbed focus. This could be used for a bunch of dumb reasons, including 
DoS attacks. But, it also caused focus/sheet loops for programs that did
OSC52 on focus changes (which was seen via some Neovim configs!).

Now, if a surface is unfocused, we bell the surface and show the confirmation
request on next focus. If the surface is not focused or another request
comes in, we cancel the prior one.

This also fixes some memory management issues around clipboard requests
that were likely small leaks (didn't verify the old bug, but verified
the new code, and eyeballed the old).
2026-08-11 06:44:23 -07:00
ghostty-vouch[bot]
94d775fefc Update VOUCHED list (#13743)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/13742#discussioncomment-17970277)
from @jcollie.

Vouch: @dave92082

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-11 02:51:56 +00:00
Mitchell Hashimoto
44f06d4e4f macOS: rework for #12712 and #13645 (#13717)
`needleSelection` was introduced in #12712 to select all texts when
syncing pasteboard, the crash happens most on macOS 15 in
`readPasteboardNeedle`. It seems that `objectWillChange` fires
differently there, and it's hard to reproduce on macOS 26/27. I think
guaranteeing from ourside is enough, I believe SwiftUI already as its
own when updating the binding.

**Confirmed with a simple example on macOS 15, it seems a SwiftUI
issue🫪. So I changed the minimal macOS version for text selection to
macOS 26. I don't see an elegant way to fix it.**

<img width="1352" height="849" alt="image"
src="https://github.com/user-attachments/assets/1dfef3f5-ceaa-41dd-bb91-c23dbc5e4ad3"
/>


```swift
struct ContentView: View {
    @State private var text = ""
    @State private var selection: TextSelection?
    var body: some View {
        TextField("Search", text: $text, selection: $selection)
    }
}
```
2026-08-10 18:08:42 -07:00
ghostty-vouch[bot]
09557e91dc Update VOUCHED list (#13739)
Triggered by [discussion
comment](https://github.com/ghostty-org/ghostty/discussions/13738#discussioncomment-17968662)
from @jcollie.

Vouch: @PRIHLOP

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-10 22:48:46 +00:00