Skip to content

Commit 9a02f7b

Browse files
committed
update 1.2.0 release notes
1 parent fe8e514 commit 9a02f7b

File tree

1 file changed

+366
-1
lines changed

1 file changed

+366
-1
lines changed

docs/install/release-notes/1-2-0.mdx

Lines changed: 366 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,369 @@ description: |-
44
Release notes for Ghostty 1.2.0, presently unreleased.
55
---
66

7-
Coming soon.
7+
<Note>
8+
This page is still a **work-in-progress.** 1.2.0 is still unreleased and this
9+
page is missing a lot of content. We're slowly filling in the blanks as we
10+
near the release.
11+
</Note>
12+
13+
Ghostty 1.2.0 features **6 months of work** with changes from
14+
**142 contributors** over **2,520 commits**. This release contains major
15+
improvements to every part of Ghostty, including hundreds of bug fixes.
16+
17+
## Highlights
18+
19+
Potential list:
20+
21+
- terminal background image GH-3645
22+
- quick terminal on linux GH-4624
23+
- quick terminal size GH-2384
24+
- linux bell features GH-5326
25+
- linux localization
26+
- command palette GH-7153 GH-7156
27+
- w3c key input GH-7320
28+
- macOS undo/redo GH-7535
29+
- ssh shell integration GH-7608
30+
- big renderer rework GH-7620
31+
- macOS App Intents GH-7634
32+
- Custom cursor shaders GH-7648
33+
34+
## Breaking Changes
35+
36+
- GTK: libadwaita is now required. We've
37+
[warned that this was coming](/docs/install/release-notes/1-1-0#gtk:-forcing-a-dependency-on-libadwaita)
38+
since the 1.1.0 release notes and our motivations are well explained in
39+
the prior link. Please read that carefully before reacting! We put out a
40+
call for feedback from the community and discussed this decision at length.
41+
We shipped features addressing those concerns such as our SSD support, first
42+
class CSS styling, and more.
43+
- GTK: The minimum required OpenGL version is now 4.3. This was required
44+
to improve performance, fix some rendering bugs more easily, and make our
45+
OpenGL backend more maintainable. OpenGL 4.3 was released in 2012, so this is
46+
still over a decade old. GH-7620
47+
48+
### Deprecations
49+
50+
The list below contains deprecations that will be removed in the future,
51+
but remain compatible today:
52+
53+
- `selection-invert-fg-bg` should be replaced with
54+
`selection-foreground=cell-background` and
55+
`selection-background=cell-foreground`. GH-5219
56+
- `cursor-invert-fg-bg` should be replaced with
57+
`cursor-color=cell-foreground` and
58+
`cursor-text=cell-background`. GH-5219
59+
60+
## Full Changelog
61+
62+
[Full list of closed issues on GitHub](https://github.com/ghostty-org/ghostty/milestone/5?closed=1).
63+
64+
In each section, we try to sort improvements before bug fixes.
65+
66+
- Commands through `-e` no longer are run wrapped with `/bin/sh`
67+
and instead are executed directly. GH-7032
68+
- Add a new command palette feature to macOS and GTK that allows
69+
executing most keybind actions even if they aren't bound. GH-7153 GH-7156
70+
- Directional `goto_split` on both macOS and GTK navigates to the nearest
71+
split in that direction from the top-left corner of the current split.
72+
We call this "spatial navigation" and it results in more intuitive split
73+
navigation. GH-574
74+
- New opt-in shell integration features `ssh-terminfo` and `ssh-env`
75+
improve the experience of using Ghostty over SSH. GH-7608
76+
- Cursor information is now available to custom shaders, enabling custom
77+
shaders to do things such as draw cool animations for cursor movement.
78+
GH-7648
79+
- Add a new keybind `prompt_surface_title` that can be used to change
80+
the title of a terminal manually. GH-2509 GH-5769
81+
- Add a new keybind `scroll_to_selection` which scrolls the viewport
82+
to the top-left of the current selection, if it exists. GH-7265
83+
- config: `command` value can be prefixed with `shell:` or `direct:`
84+
to execute a command via the shell (default) or directly via
85+
`exec`. GH-7032
86+
- config: copy on right click with `right-click-action = copy`. GH-4404
87+
- config: `background-image` can be used to set a background image for
88+
the terminal. This currently applies to each terminal, not to windows.
89+
GH-3645
90+
- config: `env` can be used to specify environment variables to set
91+
in the terminal environment. GH-5257
92+
- config: `quick-terminal-size` can be used to customize the
93+
size of the quick terminal. GH-2384
94+
- config: `font-shaping-break` configures when a ligature should be
95+
broken (split). GH-4515
96+
- config: new values `cell-foreground` and `cell-background` can be used
97+
with `selection-foreground`, `selection-background`, and `cursor-color`
98+
to set their color values to the dynamic cell colors. GH-5219
99+
- config: new `bold-color` option to specify a custom color for bold to
100+
make it easier to read. GH-7168
101+
- config: new `selection-clear-on-typing` option to clear selection
102+
when typing. GH-7394
103+
- cli: pressing `enter` in `+list-themes` now shows help text on
104+
how to configure the theme. GH-4731
105+
- cli: `+list-themes` now has a flag to filter light and dark themes. GH-7235
106+
- custom shaders can now be reloaded at runtime. GH-7620
107+
- custom shaders blend properly with the background color. GH-7620
108+
- holding the mouse above or below the window while clicking now
109+
scrolls the viewport without having to jiggle the mouse. GH-4422
110+
- shell-integration: now uses a single `GHOSTTY_SHELL_INTEGRATION_FEATURES`
111+
env var to specify enabled features instead of multiple env vars. GH-6871
112+
- shell-integration/elvish: use the `kitty-shell-cwd://` scheme for OSC 7
113+
reporting so we don't have to encode it. GH-7033
114+
- fix crash that could happen with certain `font-family` flags provided
115+
specifically to the CLI. GH-7481
116+
- Resolve issue when pressing `backspace` with preedit text (such as
117+
when using an IME). GH-5728
118+
- config: `keybind=` (blank) restores default keybindings, behaving
119+
like other `<key>=` blank values. GH-5936
120+
- config: `palette` configuration now supporst whitespace between
121+
the palette number and color. GH-5921
122+
- config: All configurations that take a list of colors (e.g.
123+
`macos-icon-ghost-color`) support spaces after commas. GH-5918
124+
- the `copy_url_to_clipboard` keybind action works properly with OSC 8
125+
hyperlinks. GH-7499
126+
- font: U+25E4 and U+25E2 (geometric shapes) are now rasterized
127+
with the built-in sprite font. GH-3344
128+
- font: corner pieces of Geometric Shapes are now rasterized with
129+
the built-in sprite font. GH-7562
130+
- input: mouse scrollwheel mapping to mouse events was modified to
131+
better match other terminal emulators. GH-6052
132+
- input: `ctrl+<ASCII>` works across a wider variety of keyboard layouts.
133+
GH-7309
134+
- input: mouse dragging while clicking cancels any mouse link actions. GH-7080
135+
- fix some rounding errors for Octant rendering which caused Octants to not
136+
line up in some scenarios. GH-7479
137+
- fix some mouse selection logic which sometimes caused Ghostty to incorrectly
138+
select an extra line or character. GH-7444
139+
- fix file path regular expression to require at least one slash. GH-7355
140+
- fix a crash when reflowing a grapheme with a spacer head in a specific
141+
location. GH-7537
142+
- Images rendered using the Kitty image protocol now use correct gamma
143+
blending. GH-7368
144+
- shell-integration/bash: no longer depends on a valid `GHOSTTY_RESOURCES_DIR`
145+
env var. GH-7611
146+
- vt: `XTGETTCAP` works properly for lowercase hex characters. GH-7229
147+
- vt: Kitty image protocol supports delete by range operations. GH-5957
148+
- vt: Fix aspect ratio issues with some images using the Kitty image
149+
protocol. GH-6673
150+
- vt: Kitty image protocol should accept commands with no control data. GH-7023
151+
- vt: don't force Kitty images to a grid size. GH-7367
152+
- vt: OSC 4/104 allow multiple color specifications. GH-7402
153+
- vt: add support for mode 47. GH-7443
154+
- vt: add support for mode 1048. GH-7473
155+
- vt: fix a variety of alt screen edge cases for mode 47, 1047, and 1049 to
156+
better match xterm behavior. I don't know any real programs that exercised
157+
these bugs, but its good hygiene. GH-7471
158+
- vt: clear hyperlink state when switching between normal and alt screen.
159+
GH-7471
160+
- vt: `ctrl+esc` now produces the proper Kitty keyboard encoding. GH-7000
161+
- vt: clear correct row on index (`\n`) operation in certain edge cases.
162+
This fixes a misrender that could happen with the vim status line
163+
in certain scenarios. GH-7093
164+
- vt: clicking on an unfocused window no longer encodes a mouse event. GH-2595
165+
- contrib/vim: fix syntax highlighting of the config in scratch buffers. GH-7119
166+
167+
### macOS
168+
169+
- macOS: Support macOS 26 (Tahoe).
170+
- macOS: You can now undo and redo closing any type of terminal (window, tab,
171+
or split). We keep recently closed terminals in memory for a configurable
172+
amount of time (default 10 seconds) so you can recover them if you close
173+
them by accident. GH-7535
174+
- macOS: Read-only accessibility API integration allows screen readers
175+
to read Ghostty's structure and contents. This is also useful for AI software
176+
to read Ghostty's contents. This requires accessibility permissions, so it is
177+
opt-in. GH-7601
178+
- macOS: Integration with App Intents enables Ghostty to be automated with
179+
Apple Shortcuts. GH-7634
180+
- macOS: Bell implementation. By default, the bell will bounce the dock icon
181+
and put a bell emoji in the title. This is cleared when the terminal is
182+
focused or on any input. The bell does not make any audio sounds. These
183+
can all be disabled with `bell-features`. GH-7099
184+
- macOS: Scripts executed from Finder or dropped onto the dock now execute
185+
via the login shell and sending `<filepath>; exit` via stdin. This is how
186+
the built-in Terminal and other terminals work to allow loading your
187+
login scripts. GH-7647
188+
- macOS: Add `bring_all_to_front` keybind action to bring all
189+
Ghostty windows to the front. GH-4704
190+
- macOS: Add `reset_window_size` keybind action to reset the window
191+
size to its initial configured size. GH-6038
192+
- macOS: Add `check_for_update` keybind action. GH-7235
193+
- macOS: Add "Return to Default Size" menu item. GH-1328
194+
- macOS: `macos-hidden` configuration will hide Ghostty from the
195+
dock and tab menu. GH-4538
196+
- macOS: Clicking links now uses the `NSWorkspace` API rather than
197+
the `open` command. This preserves the source application (Ghostty)
198+
which other programs can now use to change their behavior if
199+
desired. GH-5256
200+
- macOS: New config `macos-window-buttons` to hide the traffic light
201+
buttons. GH-7504
202+
- macOS: New option `padded-notch` for the existing `macos-non-native-fullscreen`
203+
configuration to put the non-native fullscreen window below the notch
204+
but still hide the menu bar. GH-5750
205+
- macOS: New keybind action and menu item `toggle_window_float_on_top` to
206+
have a specific terminal widnow float above all other windows even when
207+
unfocused. GH-7237
208+
- macOS: Equalize splits now works in the quick terminal. GH-7480
209+
- macOS: The reset zoom button for splits is now visible with titlebar tabs
210+
and a single tab. GH-7502
211+
- macOS: `Cmd+h` (macOS hide window) no longer sends `h` if attempting to
212+
hide the last visible window. GH-5929
213+
- macOS: `maximize` configuration now works on macOS. GH-5928
214+
- macOS: Improve key input handling speed by about 10x. GH-7121
215+
- macOS: Differentiate between closing a tab vs a window when pressing the
216+
red traffic light. GH-7618
217+
- macOS: Title text is vertically centered with `macos-titlebar-style=tabs`.
218+
GH-5777
219+
- macOS: focus no longer goes to the first split when toggling
220+
non-native fullscreen. GH-6999
221+
- macOS: `cmd+.` can now be bound. GH-6909
222+
- macOS: font glyphs constrained to a terminal cell now appear sharper. GH-6914
223+
- macOS: the `close_window` keybind action now works. GH-7003
224+
- macOS: quick terminal can appear and disappear more reliably
225+
on fullscreen spaces. GH-7070
226+
- macOS: selection off the left edge of the window no longer
227+
scrolls up by one line. GH-7071
228+
- macOS: New windows created with `macos-titlebar-style=hidden` now cascade
229+
their position like other windows. GH-7567
230+
- macOS: Key input that clears preedit without text shouldn't encode to pty.
231+
GH-7226
232+
- macOS: keyboard shortcuts now work properly with the "Dvorak - QWERTY
233+
⌘" macOS keyboard layout. GH-7315
234+
- macOS: Round up fractional mouse scroll events, making mice with scroll
235+
wheels feel more usable. GH-7185
236+
- macOS: All split directions are now available in the menubar and
237+
context menus. GH-5807
238+
- macOS: Setting the pwd with OSC 7 now works with macOS's "Private Wi-Fi
239+
Address" feature. GH-7029
240+
- macOS: Resize overlay now uses language-neutral `w x h` format
241+
and omits units. GH-7142
242+
- macOS: "Services -> New Ghostty Window/Tab Here" now works with files.
243+
GH-7286
244+
- macOS: Reliably retain focus when using non-native fullscreen. GH-7279
245+
- macOS: Fix memory leak that would retain memory of the last closed
246+
surface (only one at a time). GH-7507
247+
- macOS: Fix crash that would occur if non-native fullscreen and
248+
`fullscreen = true` were both set. GH-7277
249+
- macOS: If `title` is set, the title is set on the window on load,
250+
allowing window managers to see the title sooner. GH-6056
251+
- macOS: Any keypress with `cmd` pressed is not encoded for legacy
252+
key encoding. GH-6057
253+
- macOS: Invoking `new_tab` in anyway within the quick terminal now
254+
shows a helpful error rather than creating a new window. Tabs in the
255+
quick terminal will be supported in a future release. GH-5939
256+
- macOS: Closing non-native fullscreen windows no properly restores
257+
the menu bar. GH-7525
258+
- macOS: Dismiss any notifications on window focus. GH-7531
259+
- macOS: Dismiss any notifications on window close. GH-7531
260+
- macOS: Dismiss any notifications of an already-focused window after
261+
a few seconds. GH-7531
262+
- font/coretext: improve font search sorting to be more consistent. GH-7483
263+
- man pages now mention macOS-specific configuration path. GH-5938
264+
265+
### GTK (Linux, FreeBSD)
266+
267+
- GTK: Support for FreeBSD. This work was all driven by a single community
268+
member and we are very grateful for their contributions. GH-7606
269+
- GTK: The quick terminal now works on Linux under Wayland and the
270+
`wlr-layer-shell` protocol. GH-4624
271+
- GTK: `global:` keybinds now work whenever XDG desktop portal
272+
is available (almost all desktop environments). GH-6051
273+
- GTK: Audio bell support (default off) can be enabled with
274+
`bell-features=audio` and setting `bell-audio-path` and
275+
`bell-audio-volume`. GH-5326
276+
- GTK: Install DBus and Systemd activation services for faster startup. GH-7433
277+
- GTK: OpenGL renderer now supports linear blending for more correct
278+
color blending. GH-7620
279+
- GTK: Dynamically choose between `io_uring` and `epoll` for the
280+
async API on Linux. Previously, this was hardcoded to `io_uring`
281+
and epoll-only systems had to build from source. GH-5916
282+
- GTK: New config `async-backend` can be set to `epoll` to force using
283+
epoll instead of io_uring on Linux. This can be useful on kernels where
284+
iowait reporting is broken. GH-5916
285+
- GTK: New config `window-show-tab-bar` customizes when the tab bar
286+
is visible. GH-5590
287+
- GTK: New config `quick-terminal-keyboard-interactivity` to specifically
288+
customize the keyboard interactivity setting on Wayland. GH-7477
289+
- GTK: New keybind action `show_gtk_inspector` to show the GTK inspector
290+
since terminal keybinds usually clobber the GTK default. GH-7468
291+
- GTK: The new tab button now has a dropdown menu to create new splits. GH-7127
292+
- GTK: A new "remember choice" toggle is added to the clipboard confirmation
293+
dialog. GH-6783
294+
- GTK: Escape `(` and `)` when dropping filepaths onto the terminal. GH-6922
295+
- GTK: `copy-on-select=clipboard` no longer causes toast spam while
296+
selecting. The copy only happens when the mouse is released. GH-4800
297+
- GTK: All split directions are now available in the menubar and
298+
context menus. GH-5779
299+
- GTK: Windows do not request close confirmation for `wait-after-command`.
300+
GH-7500
301+
- GTK: Fix an issue where the window would sometimes become blank
302+
and not close after the last tab was closd. GH-5837
303+
- GTK: Resize overlay now uses language-neutral `w x h` format
304+
and omits units. GH-6013
305+
- GTK: Clean up surface cgroup properly on close. GH-6766
306+
- GTK: Reduce flickering/stretching on resize for OpenGL. GH-7155
307+
- GTK: Detect `GHOSTTY_RESOURCES_DIR` in more installation environments.
308+
GH-6814
309+
GTK/X11: Fix blur regions when using > 200% scaling. GH-6978
310+
- font/freetype: error when loading SVG glyphs, since we don't support them
311+
anyways. GH-6824
312+
- font/freetype: fix data races that could cause crashes in rare scenarios.
313+
GH-7238
314+
- packaging: experimental snap packaging is now tested in CI. The
315+
published snap image is maintained by an external maintainer for now.
316+
GH-3931
317+
318+
### Changes for Package Maintainers
319+
320+
- We now generate source tarballs with some preprocessed files as is
321+
standard with many source tarballs (e.g. convertig parser `.y` to `.c`).
322+
For Ghostty, we preprocess Blueprint `ui` to `xml` files, translations,
323+
and GTK resource files. This allows Ghostty to built on older platforms
324+
without access to newer build tools. **Packagers should use the source
325+
tarball, not the Git checkout. The `PACKAGING.md` documentation has been
326+
updated with this information.** GH-6800
327+
328+
## Roadmap
329+
330+
Ghostty 1.3 will continue the focus of making Ghostty the
331+
["best existing terminal emulator"](https://mitchellh.com/writing/ghostty-1-0-reflection)
332+
by shipping the last remaining major missing features to achieve
333+
parity with other popular terminal emulators. Namely, we plan on shipping
334+
scrollback search and scrollbars for 1.3, at a minimum.[^1]
335+
336+
The primary focus of Ghostty 1.3 will be on desktop application features
337+
(of which scrollback search and scrollbars are a part). The core terminal
338+
emulation features of Ghostty have already proven to be very feature
339+
rich and stable. However, we plan on continuing to expand our VT feature
340+
support, such as adopting new experimental protocols that have been recently
341+
released into the ecosystem by others.
342+
343+
To answer common requests, **Windows** and **libghostty as a
344+
standalone library** are not planned for Ghostty 1.3. These remain part
345+
of the long term roadmap, but we want to focus on our existing platforms
346+
and desktop applications first.
347+
348+
### Moving to a March/September Release Cycle
349+
350+
Ghostty will move to a 6-month release cycle for major/minor releases,
351+
with the next minor release (1.3.0) planned for March 2026. A March/September
352+
release cycle aligns well with many major Linux distibutions and macOS.
353+
Patch releases (e.g. 1.2.1) will be made as needed on an unscheduled basis.
354+
355+
This is a relatively long release cycle for modern applications, but
356+
let's the development team focus on large, impactful features with enough
357+
time to stabilize in tip releases. For packagers, it avoids the churn of
358+
packaging new releases frequently. And the alignment with major OS releases
359+
let's us ensure we ship major releases that work well on new OS versions.
360+
361+
For users who are interested in more frequent updates, we recommend using
362+
the [`tip` release channel](/docs/config/reference#auto-update-channel) on macOS or
363+
[building from source](/docs/install/release-notes/1-1-0#roadmap) frequently on Linux.
364+
We have thousands of nightly users (thank you for testing!) and the entire
365+
maintainer team works hard to keep tip releases stable. For the entire 1.1
366+
to 1.2 development cycle, I can't remember tip releases ever being broken
367+
for daily use.
368+
369+
[^1]:
370+
"Parity" here is used loosely to describe the most popular, frequently
371+
used features of other terminal emulators. There is a long tail of features
372+
we'll likely never fully implement (and vice versa for our features).

0 commit comments

Comments
 (0)