Commit Graph

17931 Commits

Author SHA1 Message Date
Kovid Goyal
c630e1293e Fix #9827 2026-04-08 11:09:51 +05:30
Kovid Goyal
b198a45fe8 Merge branch 'master' of https://github.com/lxcode/kitty 2026-04-07 19:56:07 +05:30
Kovid Goyal
4a1fccfc32 Send OK on drag start 2026-04-07 19:50:58 +05:30
Kovid Goyal
7e5d4f8723 Update changelog 2026-04-07 19:43:25 +05:30
Kovid Goyal
a0958a05a9 Merge branch 'action_aliases_command_palette' of https://github.com/dmgerman/kitty 2026-04-07 19:40:55 +05:30
David Thiel
faed62e993 Make focus_follows_mouse only switch on window-boundary crossings
The previous implementation reverted any keyboard-driven window switch
on the next mouse motion event because it compared the hovered window
against the active window rather than against the previously hovered
window. Move the focus-follows-mouse trigger into
set_currently_hovered_window so it fires only when the hover ID
actually transitions, which also covers OS-window-entry.
2026-04-07 14:18:54 +01:00
Kovid Goyal
1c4097edde Remove unnecessary event pump when attaching top level drag surface 2026-04-07 17:25:18 +05:30
Kovid Goyal
5c104df8f3 Merge branch 'copilot/fix-triple-click-selection-issue' of https://github.com/kovidgoyal/kitty 2026-04-07 15:24:09 +05:30
copilot-swe-agent[bot]
18fb31b416 Fix double-click word selection not extending beyond viewport edges
Add continue_word_upwards_scrollback() and continue_word_downwards_offscreen()
to extend word selection beyond viewport boundaries, mirroring the line
selection fix. Add tests for word selection wrapping into scrollback and
below viewport.

Agent-Logs-Url: https://github.com/kovidgoyal/kitty/sessions/58191e45-d925-4996-b0d5-8b1bd4baa8d5

Co-authored-by: kovidgoyal <1308621+kovidgoyal@users.noreply.github.com>
2026-04-07 09:49:50 +00:00
copilot-swe-agent[bot]
82bf8923cc Fix triple-click line selection not extending wrapped lines beyond viewport bottom
Similar to commit 625e984 which fixed extending into scrollback (above viewport),
this fix extends line selection below the viewport when a wrapped line continues
past the bottom edge. Adds continue_line_downwards_offscreen() and applies it
in both the initial selection and extending selection code paths.

Agent-Logs-Url: https://github.com/kovidgoyal/kitty/sessions/e548ce84-fdb7-4fd1-b3df-e1166b45f5bd

Co-authored-by: kovidgoyal <1308621+kovidgoyal@users.noreply.github.com>
2026-04-07 09:31:17 +00:00
Kovid Goyal
114cd5cbc4 Handle drag source finished event arriving before drop event when doing self drops on some wayland compositors 2026-04-07 14:32:40 +05:30
Kovid Goyal
837f55fe21 ... 2026-04-07 13:47:47 +05:30
copilot-swe-agent[bot]
a90b8470ac Fix drag icon not visible under GNOME Wayland
Fixes #9823
2026-04-07 13:31:04 +05:30
Kovid Goyal
69f24c503f When leaving OS window clear it from drop state 2026-04-07 12:12:06 +05:30
Kovid Goyal
cd3860817b ... 2026-04-07 11:47:58 +05:30
Kovid Goyal
9fbb079ad6 Add logging for DnD events on Wayland 2026-04-07 11:32:12 +05:30
Kovid Goyal
c0647c8906 Merge branch 'document_command_palette' of https://github.com/dmgerman/kitty 2026-04-07 11:26:42 +05:30
Daniel M German
cb297c52c4 Document how command palette search computes candidates
Replace the brief Searching section with a structured user-facing
explanation covering: multi-word queries, per-word matching (exact,
prefix, and typo tolerance), compound names with delimiter characters,
and the five-level ranking order.
2026-04-06 22:42:47 -07:00
Kovid Goyal
dc55052f0c Wayland: set drop accepted operations 2026-04-07 10:40:14 +05:30
Kovid Goyal
7fd0475c20 Merge branch 'fix/fg-override-blue-channel' of https://github.com/z3rco/kitty 2026-04-07 06:56:40 +05:30
Daniel M German
640225315a Fix ruff E731: replace lambda assignment with def 2026-04-06 09:54:56 -07:00
z3rco
dc2bebd89e Fix blue channel ignored in fg_override contrast check
diff.g was used twice instead of diff.g + diff.b, causing the
same-color detection to miss blue-only differences. This meant
the HSLuv contrast override could skip adjustment for color pairs
differing primarily in blue.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:51:02 +01:00
Daniel M German
3d89cb267c Add alias and combine support to the command palette
Users who define action_alias or kitten_alias in kitty.conf had no way
to discover or trigger these custom commands from the command palette.
Aliased keybindings were miscategorized (landing in "Miscellaneous"
with no help text), and combine bindings had the same problem.

Changes:

- Resolve aliases via opts.alias_map to get correct action names,
  categories, and help text for aliased keybindings
- Add dedicated "Action aliases" and "Kitten aliases" sections that
  list all user-defined aliases, with bound aliases showing their key
  and unbound aliases browsable as unmapped entries
- Add a "Combined actions" section for combine keybindings
- Make alias names searchable in the Go TUI so users can find
  bindings by typing the alias name
- Fix action column highlight positions to match the scored text,
  preventing visual corruption when searching for alias names

Also refactors collect_keys_data into focused single-responsibility
functions and reduces nesting depth across both Python and Go.
2026-04-06 09:45:39 -07:00
Kovid Goyal
aceaef8a1d ... 2026-04-06 11:39:18 +05:30
Kovid Goyal
7036b10326 Padding at the sides of rendered dragged URL 2026-04-06 11:37:10 +05:30
Kovid Goyal
de3eda67d3 Merge branch 'copilot/update-draw-single-line-text-function' of https://github.com/kovidgoyal/kitty 2026-04-06 11:36:32 +05:30
Kovid Goyal
e8e227aa42 ... 2026-04-06 11:35:45 +05:30
copilot-swe-agent[bot]
9a878c9edc Accept keyword arguments in draw_single_line_of_text, use max_width=True in window.py, remove changelog entry
Agent-Logs-Url: https://github.com/kovidgoyal/kitty/sessions/9a89a6c8-4bc2-4f11-9947-55b713b15348

Co-authored-by: kovidgoyal <1308621+kovidgoyal@users.noreply.github.com>
2026-04-06 06:01:59 +00:00
Kovid Goyal
6206d0b1df Update changelog entry generation instructions 2026-04-06 11:30:44 +05:30
Kovid Goyal
27114c9703 DRYer 2026-04-06 11:28:12 +05:30
copilot-swe-agent[bot]
398fb8d156 Move text width calculation into draw_window_title to avoid double CSI stripping
Refactored so text_width_for_single_line is called inside draw_window_title
after CSI stripping, avoiding stripping the same text twice. The standalone
text_width_for_single_line wrapper is removed; draw_window_title now accepts
a size_t *actual_width output parameter that, when non-NULL, triggers text
width calculation and width reduction.

Agent-Logs-Url: https://github.com/kovidgoyal/kitty/sessions/a70cccb9-332a-4f7b-81f8-8cbeb7ed2c26

Co-authored-by: kovidgoyal <1308621+kovidgoyal@users.noreply.github.com>
2026-04-06 05:43:04 +00:00
copilot-swe-agent[bot]
969562a999 Add changelog entry and fix size_t comparison in draw_single_line_of_text
Agent-Logs-Url: https://github.com/kovidgoyal/kitty/sessions/508483db-ffcd-4d43-a8ee-83fcd3ec9c01

Co-authored-by: kovidgoyal <1308621+kovidgoyal@users.noreply.github.com>
2026-04-06 05:30:05 +00:00
copilot-swe-agent[bot]
4bcfafa945 Improve draw_single_line_of_text to support max_width and return (pixels, width) tuple
- Add freetype_text_width_for_single_line() in freetype_render_ui_text.c
- Add cocoa_text_width_for_single_line() in core_text.m
- Add text_width_for_single_line() wrapper in glfw.c for both platforms
- Modify draw_single_line_of_text() to accept optional max_width parameter
- Return (pixels, width) tuple instead of just pixels
- Update all Python call sites in tabs.py and window.py

Agent-Logs-Url: https://github.com/kovidgoyal/kitty/sessions/508483db-ffcd-4d43-a8ee-83fcd3ec9c01

Co-authored-by: kovidgoyal <1308621+kovidgoyal@users.noreply.github.com>
2026-04-06 05:25:38 +00:00
Kovid Goyal
c88adfba98 Allow optionally dragging URLs with the mouse
Fixes #9804
2026-04-06 10:40:11 +05:30
Kovid Goyal
69e4158259 Merge branch 'dependabot/go_modules/all-go-deps-2b207f902f' of https://github.com/kovidgoyal/kitty 2026-04-06 09:24:12 +05:30
dependabot[bot]
941a4cbcd5 Bump github.com/shirou/gopsutil/v4 in the all-go-deps group
Bumps the all-go-deps group with 1 update: [github.com/shirou/gopsutil/v4](https://github.com/shirou/gopsutil).


Updates `github.com/shirou/gopsutil/v4` from 4.26.2 to 4.26.3
- [Release notes](https://github.com/shirou/gopsutil/releases)
- [Commits](https://github.com/shirou/gopsutil/compare/v4.26.2...v4.26.3)

---
updated-dependencies:
- dependency-name: github.com/shirou/gopsutil/v4
  dependency-version: 4.26.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-06 03:43:13 +00:00
Kovid Goyal
79cadf4a5f ... 2026-04-05 18:25:05 +05:30
Kovid Goyal
a29b9387fa More work on DnD protocol implementation 2026-04-04 14:27:03 +05:30
Kovid Goyal
ce041fab84 More work on DnD protocol implementation 2026-04-04 13:32:18 +05:30
Kovid Goyal
9666cf83ad Merge branch 'pr/kitty-rc-background-layouts' of https://github.com/oxysoft/kitty 2026-04-04 12:49:00 +05:30
nuck
e530a6f46b feat(rc): add cscaled and centered to set-background-image layout choices
These layout values were valid in kitty.conf but missing from remote control validation.
2026-04-04 03:01:32 -04:00
Kovid Goyal
9c8a4ad540 ... 2026-04-04 11:47:08 +05:30
Kovid Goyal
8bf1bd479b edit-in-kitty: Ignore environment variables as some editors execute code present in env vars 2026-04-04 08:42:06 +05:30
Kovid Goyal
4aa7739bdd ... 2026-04-03 23:26:39 +05:30
Kovid Goyal
0fcbd265b6 Accumulate DnD image data 2026-04-03 23:18:07 +05:30
Kovid Goyal
950497ac0c Cleanup previous PR 2026-04-03 22:25:05 +05:30
Kovid Goyal
d8f2d703d7 Merge branch 'security-hardening' of https://github.com/z3rco/kitty 2026-04-03 21:24:26 +05:30
Kovid Goyal
281cff0b60 base64 decode present dnd source data 2026-04-03 21:13:41 +05:30
z3rco
b39f88c6a2 Fix multiple security vulnerabilities across C, Python, and Go code
Timing-safe comparisons:
- crypto.c: Replace memcmp with CRYPTO_memcmp for Secret equality,
  require equal lengths before comparing
- remote_control.py: Constant-time password lookup to avoid leaking
  valid passwords via dict hash timing
- file_transmission.py: Use hmac.compare_digest for bypass token
  comparison instead of ==

Memory safety:
- child-monitor.c: Fix inverted condition in write_to_peer that
  prevented memmove from ever executing on partial writes
- ibus_glfw.c: Null-terminate IBUS_ADDRESS copy to prevent string
  overread when strlen >= PATH_MAX
- x11_window.c: Add NULL checks after realloc in clipboard/DnD
  data handling (two sites)
- dnd.c: Cap accepted_mimes at 1MB to prevent unbounded growth,
  fix realloc to not lose the original pointer on failure
- png-reader.c: Cast to size_t before multiplication to prevent
  integer overflow on 32-bit platforms

Secrets hygiene:
- disk-cache.c: Zero encryption_key with explicit_bzero before free

Tar extraction hardening:
- tar.go: Validate hardlink targets against destination prefix to
  prevent writing outside extraction directory
- tar.go: Strip setuid/setgid/sticky bits from extracted files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 16:10:46 +01:00
Kovid Goyal
0619c7e435 More work on DnD protocol 2026-04-03 19:58:59 +05:30