| Age | Commit message (Collapse) | Author |
|
* feat: support multiple prefix keys
keys.prefix accepts an array in addition to a single string so one
config can define several prefix keys. Every configured prefix enters
the same prefix mode, and the help panel lists them all.
Published keybinding profiles keep the primary prefix as a scalar and
carry the rest in an optional extra_prefixes field so older clients
keep working with the primary prefix.
* fix: reject an empty prefix list on reload
An explicitly empty keys.prefix array now stays empty through config
parsing so validation rejects it and a reload keeps the current
keybindings instead of silently falling back to ctrl+b.
|
|
Panes whose app has not enabled the kitty keyboard protocol received
ctrl+shift+letter as the same C0 byte as ctrl+letter. Encode the chord as
CSI-u instead, matching Ghostty's legacy encoder.
refs #4581
Co-authored-by: ain3sh <ainesh.chatterjee@gmail.com>
|
|
|
|
refs #3295
|
|
Terminals such as foot send F1-F4 as parameterized CSI-tilde sequences (for
example F3 as `\x1b[13;1:1~`). `parse_xterm_modified_special_sequence` mapped
codes 15-24 but not 11-14, so these presses were dropped before keybindings
saw them. Map 11-14 to F1-F4, matching the unmodified `\x1b[11~`..`\x1b[14~`
aliases already accepted.
refs #1809
|
|
Codepoints 57364-57375 (F1-F12) were missing from the kitty-protocol codepoint table, so terminals that send function keys as full CSI-u sequences (e.g. Ghostty, which enables the kitty keyboard protocol by default) had those keys silently dropped. Confirmed live against a running herdr session: injecting the raw F3/F4 codepoint sequences did nothing before this fix and correctly triggered previous_tab/next_tab after.
refs #1809
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
|
|
refs #3710
Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
|
|
refs #3948
Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
|
|
* fix(input): accept WezTerm control key reports
refs #3589
* fix(input): preserve WezTerm tab and escape reports
refs #3589
---------
Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
|
|
refs #2954
|
|
refs #3546
Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
|
|
|
|
* feat: add opt-in client-rendered shell
* feat: add client-owned shell mouse controls
* feat: complete client-owned shell chrome
* feat: add client-owned shell settings and notifications
* feat: run client shell custom commands
* feat: render popup terminals in client shell
* feat: add client-owned scrollback and copy mode
* fix: preserve client worktree trust defaults
* feat: render startup diagnostics in client shell
* feat: render onboarding in client shell
* feat: render product announcements in client shell
* feat: render release notes in client shell
* feat: render mobile switcher in client shell
* feat: render kitty graphics in client shell
* fix: preserve client shell lifecycle coherence
* refactor: route client shell commands through endpoint connections
* refactor: make the client-rendered shell the default
* refactor: remove monolithic launch mode
* refactor: complete client-rendered shell cutover
* perf: retain client pane surface updates
* perf: scale retained pane surface updates
* perf: remove remote pane input latency
* test: make client shell checks platform-independent
* fix: prevent client timer starvation
* test: fix client shell platform gates
* test: accept retained surfaces in cross-area checks
* test: make client mode assertions platform-neutral
* fix: badge only outdated integrations
|
|
refs #3328
|
|
* fix(windows): preserve non-us shifted text
refs #3045
* fix(windows): retain shifted key repeat lifecycle
refs #3045
|
|
* fix(perf): eliminate redundant terminal wake work
* fix(perf): harden release benchmark gate
* test(perf): strengthen performance guardrails
|
|
|
|
refs #2514
|
|
* feat(graphics): add direct pane frame streaming
* feat(graphics): expose pane visibility
* test(graphics): preserve legacy terminal image output
* fix(graphics): harden streaming lifecycle
* fix(input): preserve mouse releases outside panes
|
|
refs #2435
|
|
* fix(input): decode 0x1f as Ctrl+_ not Ctrl+- per ASCII standard
refs #2164
* fix(input): update control-byte matrix test for 0x1f -> Ctrl+_
|
|
refs #2077
Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
|
|
refs #2020
Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
|
|
* fix: support non-us shifted keybindings
refs #1870
* docs: require current pull request base
|
|
refs #1746
|
|
refs #1404
Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
|
|
refs #1105
|
|
refs #1088
Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
|
|
refs #1066
Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
|
|
refs #907
refs #920
|
|
refs #847
|
|
refs #792
|
|
refs #769
|
|
refs #570
|
|
refs #574
|
|
refs #493
|
|
|
|
|
|
|
|
refs #168
|
|
refs #155
Co-authored-by: kangal-bot <kangal-bot@users.noreply.github.com>
|
|
tilde sequences
|
|
|
|
|
|
Make herdr persistent by default.
Launching herdr now starts or reattaches to a background session
server. Clients can detach and reattach while panes and agent
processes keep running. Session mode now supports multi-client attach,
auto-detect startup, and a thin-client/headless-server split.
This also refactors the large app, ui, input, pane, config,
workspace, and persistence modules into smaller focused submodules,
while preserving behavior and colocating tests with the code they
exercise.
Upgrade notes:
- persistence mode is now the default
- in-app quit detaches the current client instead of stopping the server
- use `herdr server stop` to stop the background session
- use `--no-session` for the old single-process behavior
- default socket paths now live under the config directory
|
|
|
|
|
|
fix: support IME input for Chinese and other UTF-8 characters
|
|
Phase 1: UTF-8 encoding support
- Modified encode_text_input() to handle characters without modifiers
- Added unit tests for Chinese character encoding
Phase 2: IME composition support
- Removed REPORT_ALL_KEYS_AS_ESCAPE_CODES keyboard flag
- Prevents keyboard protocol from interfering with IME
- Allows digit keys to be captured by input method for candidate selection
Fixes issue where IME input was not working properly.
Supports Chinese, Japanese, Korean, and other UTF-8 input methods.
Maintains compatibility with all existing features.
Tested:
- All 388 unit tests pass
- Chinese IME input with pinyin works correctly
- All navigate mode shortcuts work normally
- All terminal applications work normally
|
|
|