18375 Commits

Author SHA1 Message Date
Kovid Goyal
b15e047a47 version 0.47.3 v0.47.3 2026-06-12 09:57:55 +05:30
Kovid Goyal
8be4ea67ac Mark dnd protocol as stable
No significant feedback received post release of protocol in 0.47.0
almost a month ago.

Protocol can now only change in backward compatible ways, barring
security issues.

Fixes #9984
2026-06-12 09:50:41 +05:30
Kovid Goyal
a0457f6141 Update changelog 2026-06-12 09:47:35 +05:30
Kovid Goyal
cb1e64ffc5 Merge branch 'fix-tabs-mouse-handling-stuck' of https://github.com/ttys3/kitty 2026-06-12 09:46:23 +05:30
Kovid Goyal
d5f69fe853 Update openssl for CVEs 2026-06-12 07:29:08 +05:30
Kovid Goyal
8651e1fac5 Update changelog 2026-06-12 07:08:29 +05:30
Kovid Goyal
cf630f1699 ... 2026-06-11 06:00:16 +05:30
Kovid Goyal
4c3b96ca40 Update changelog 2026-06-10 19:02:54 +05:30
Kovid Goyal
8f2ad60f96 Merge branch 'fix/choose-fonts-color-race' of https://github.com/noctilust/kitty 2026-06-10 19:02:09 +05:30
Forrest
83677a2235 fix(choose-fonts): guard preview rendering against partial terminal color query
The choose-fonts kitten queries the terminal for the user's foreground and
background colors at startup by sending a DCS request. The terminal responds
with separate DCS response strings — one per field — which arrive
asynchronously through on_query_response.

The background handler unconditionally called draw_screen() after storing its
value. If the terminal's DCS response for "background" arrived before the
response for "foreground", draw_screen() fired with text_style.Foreground
still at its Go zero value ("").

The font list preview (list.go) only guarded against empty Background, not
empty Foreground, so it passed the check and sent a render_family_samples
command to the Python backend with foreground="". The backend's to_color('')
raised ValueError: Invalid color name: '', crashing the kitten.

The faces pane (faces.go) launched a render_family_samples goroutine
unconditionally when its preview cache was empty, with no guard at all.

Fix
---
1. ui.go — Only trigger draw_screen() from the foreground or background
   handler when the counterpart field is already populated, so the UI
   never renders with a partial TextStyle.

2. list.go — Require both Foreground and Background to be non-empty
   before rendering the font preview, not just Background alone.

3. faces.go — Skip the render_family_samples goroutine if either color
   field is still empty. The preview cache stays empty, so the next
   redraw (triggered when the counterpart query response arrives, or
   by on_wakeup) retries with full colors.
2026-06-10 02:18:18 -07:00
Kovid Goyal
901b6bd1ed Add kmv to integrations 2026-06-10 12:54:45 +05:30
Kovid Goyal
9b4c0281a2 Update changelog 2026-06-10 09:33:45 +05:30
ttyS3
dc36e21654 fix(tabs): mouse handling stuck after aborted tab drag on Wayland
A quick click-and-flick on a tab could leave all of kitty with mouse
input permanently redirected to the tab bar, making every window
unclickable and text selection impossible.

Starting a tab drag is asynchronous: the drag thumbnail is rendered on
the next frame before glfwStartDrag is called. If the button is
released in that window, wl_data_device_start_drag is sent with a stale
serial that no longer matches an active pointer implicit grab, so the
compositor silently ignores it. The wl_data_source then never receives
any event, on_drag_source_finished never runs, and the
tab_being_dragged state is stuck forever, hijacking all mouse events.

Fix in layers:
- glfw/Wayland: track the implicit grab (serial of the first button
  press and pressed-button count), use that serial for start_drag and
  refuse with EAGAIN when there is no active implicit grab instead of
  letting the compositor silently drop the request
- mouse.c: a left button release arriving while a tab drag is marked
  started but no system DND is active means the drag never launched
  (an active DND consumes the release on all platforms), so clear the
  drag state instead of waiting for DND events that will never come
- tabs.py: handle OSError from start_drag_with_data for tab drags the
  same way window drags already do; clear the potential-drag state when
  the release lands on the new-tab button or empty tab bar area
- tabs.py/boss.py: clear drag state on drag finish/drop even when the
  dragged tab has already been closed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 03:43:25 +00:00
Kovid Goyal
dbf52d4870 Mark matrix as not required in the fontconfig typeddict as the C code adds it only when the pattern contains a matrix 2026-06-10 08:32:14 +05:30
Kovid Goyal
949a1e1fb1 Merge branch 'fix/focus-follows-mouse-desktop-switch-v2' of https://github.com/lxcode/kitty 2026-06-10 08:05:57 +05:30
Kovid Goyal
11c2ccf00f Add tests for splits layout serialization 2026-06-10 07:41:02 +05:30
Kovid Goyal
238573e799 Fix splits layout options serialization
Fixes #10124
2026-06-10 07:34:47 +05:30
Kovid Goyal
c126e227d3 Bump dep version 2026-06-09 06:23:34 +05:30
Kovid Goyal
424fe9991b Sanitise color control responses for shells that still dont use the kitty keyboard protocol 2026-06-09 06:21:15 +05:30
David Thiel
1cc1a445e3 Fix focus_follows_mouse switching active window on desktop/space return
When focus_follows_mouse is enabled, returning to a desktop/space fired an
enter event that switched the active window to whichever one was under the
cursor, even though the mouse had not crossed a window boundary.

Distinguish genuine mouse motion into a window from a window reappearing
under a stationary cursor by checking, in cursor_enter_callback, whether the
cursor position actually changed. focus_follows_mouse now switches focus only
when the cursor moved, so motion into a window still switches focus while a
stationary reappearance does not.
2026-06-08 14:46:40 +01:00
Kovid Goyal
79a768ed55 Merge branch 'followup-b-cairo-matrix' of https://github.com/Strykar/kitty 2026-06-08 12:26:06 +05:30
Kovid Goyal
55425e2e75 Show secure input indicator on active tab 2026-06-08 11:22:54 +05:30
Kovid Goyal
4ca6a20c7d Merge branch 'dependabot/github_actions/actions-e6ee9d7de3' of https://github.com/kovidgoyal/kitty 2026-06-08 09:41:39 +05:30
Kovid Goyal
07ccc19533 Merge branch 'dependabot/go_modules/all-go-deps-44a001e8d2' of https://github.com/kovidgoyal/kitty 2026-06-08 09:41:18 +05:30
dependabot[bot]
d9334a6149 Bump actions/checkout from 6 to 6.0.2 in the actions group
Bumps the actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 6 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v6.0.2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-08 03:44:39 +00:00
dependabot[bot]
60c31ba2ab Bump the all-go-deps group with 2 updates
Bumps the all-go-deps group with 2 updates: [github.com/alecthomas/chroma/v2](https://github.com/alecthomas/chroma) and [github.com/shirou/gopsutil/v4](https://github.com/shirou/gopsutil).


Updates `github.com/alecthomas/chroma/v2` from 2.24.1 to 2.26.1
- [Release notes](https://github.com/alecthomas/chroma/releases)
- [Commits](https://github.com/alecthomas/chroma/compare/v2.24.1...v2.26.1)

Updates `github.com/shirou/gopsutil/v4` from 4.26.4 to 4.26.5
- [Release notes](https://github.com/shirou/gopsutil/releases)
- [Commits](https://github.com/shirou/gopsutil/compare/v4.26.4...v4.26.5)

---
updated-dependencies:
- dependency-name: github.com/alecthomas/chroma/v2
  dependency-version: 2.26.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-go-deps
- dependency-name: github.com/shirou/gopsutil/v4
  dependency-version: 4.26.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-08 03:42:55 +00:00
Kovid Goyal
d20fe4d4b5 version 0.47.2 v0.47.2 2026-06-07 09:37:24 +05:30
Kovid Goyal
314899b9aa Update changelog 2026-06-07 09:22:28 +05:30
Kovid Goyal
45bd3a0f14 Add a note about interaction of --reload-in and auto reload 2026-06-07 08:55:48 +05:30
Kovid Goyal
470a70db57 Remind user to not transfer files from machines they dont trust 2026-06-07 06:52:27 +05:30
Kovid Goyal
72c1ff6085 Ignore inapplicable CVE 2026-06-06 18:53:13 +05:30
Kovid Goyal
40ed8cfd3c fontconfig: ignore failure to return FC_INDEX assume its zero
Sigh. The number of creative ways Linux systems can be broken.
See #10112
2026-06-06 18:46:15 +05:30
Kovid Goyal
6839281277 Fix #10113 2026-06-06 18:36:29 +05:30
Kovid Goyal
2d9e243847 Ignore inappplicable CVE 2026-06-06 06:12:03 +05:30
Kovid Goyal
522555a5b6 ... 2026-06-05 06:31:08 +05:30
Kovid Goyal
b2d70c899d Merge branch 'master' of https://github.com/Mobinshahidi/kitty 2026-06-04 21:12:59 +05:30
Mobin shahidi
3bd18be320 docs: add kitty-search to integrations 2026-06-04 18:56:41 +03:30
Kovid Goyal
8996aa798c dnd kitten: Create regular files with O_EXCL to avoid symlink attacks
This is not really needed as the terminal emulator should be de
duplicating directory entries anyway but no harm in defense in depth.
2026-06-03 12:17:38 +05:30
Kovid Goyal
4aa4a5c056 File transfer protocol: use O_NOFOLLOW when opening regular files 2026-06-03 06:18:31 +05:30
Kovid Goyal
9b89031a7f Bump Go toolchain version for CVEs 2026-06-03 05:58:36 +05:30
Kovid Goyal
e6e5524f67 diff kitten: Strip suid/sgid bits from extracted files 2026-06-03 05:45:04 +05:30
Kovid Goyal
cb0f05c4e4 Fix parsing of config set aborting on non-existent files 2026-06-02 21:19:04 +05:30
Kovid Goyal
54ecc67339 Update changelog
Fixes #10102
2026-06-02 21:08:28 +05:30
Kovid Goyal
3684838188 Merge branch 'copilot/modify-watch-for-config-changes' of https://github.com/kovidgoyal/kitty 2026-06-02 21:06:58 +05:30
copilot-swe-agent[bot]
bff5af7052 address review: fix comment wording and rename burst_actions variable 2026-06-02 12:46:10 +00:00
copilot-swe-agent[bot]
d80fd1c23d consolidate watch tests and add include-in-included-file test
- Merge TestWatchForConfigChangesIncludeAdded and
  TestWatchForConfigChangesIncludeRemoved into the main
  TestWatchForConfigChanges function, which now starts the watcher
  once and shares it across all integration subtests.
- Add prime_watcher helper that retries writes until an action fires,
  replacing the blind time.Sleep(200ms) watcher-startup wait.
- Add new subtest "include added to already-included file adds its
  parent dir": writes an include directive into sub/included.conf
  (itself included from kitty.conf), then verifies that changes to
  the newly referenced file trigger the action, confirming its parent
  directory was added to the watch set.
- Fix TestWatchForConfigChangesDebounce to use prime_watcher instead
  of time.Sleep for startup; capture before_burst baseline before the
  burst loop so the burst-action count is computed correctly.
2026-06-02 12:45:00 +00:00
copilot-swe-agent[bot]
7e96373515 watch: non-recursive config file watching with dynamic include tracking 2026-06-02 08:23:05 +00:00
Kovid Goyal
6c586934f4 ... 2026-06-02 13:31:14 +05:30
Kovid Goyal
4043e99b75 Merge branch 'copilot/show-secure-input-in-menubar' of https://github.com/kovidgoyal/kitty 2026-06-01 13:11:30 +05:30
Kovid Goyal
26d255b27d Merge branch 'dependabot/github_actions/actions-754f0868f5' of https://github.com/kovidgoyal/kitty 2026-06-01 13:04:24 +05:30