Commit Graph

414 Commits

Author SHA1 Message Date
Jian Zhang b57eafaadb fix(tui): ensure cursor moves to end of content on exit to prevent visual artifacts 2026-01-11 17:25:26 +01:00
Mario Zechner 016a24e9a1 Add [Unreleased] section for next cycle 2026-01-11 04:11:34 +01:00
Mario Zechner 31fe16f2e7 Release v0.42.5 2026-01-11 04:10:49 +01:00
Mario Zechner 178a3a563f fix(tui): handle split Shift+Enter in VS Code 2026-01-11 04:03:42 +01:00
Ogulcan Celik eb15f326c1 fix(tui): skip key release/repeat check for bracketed paste content
Pasted content containing Kitty key release patterns (e.g., :3F in bluetooth
MAC addresses) was incorrectly detected as a key release event and dropped.

The fix checks for bracketed paste markers before running pattern checks.
Also applied to isKeyRepeat() for consistency.

Closes #623
2026-01-11 03:14:59 +01:00
Ogulcan Celik df3a220d6b fix(tui): reduce flicker by only re-rendering changed lines (#617) 2026-01-11 03:02:35 +01:00
Mario Zechner 3bb115a39c fix(tui): cursor position tracking when content shrinks with unchanged lines 2026-01-11 03:00:23 +01:00
Mario Zechner d7394eb109 Fix TUI rendering with wrong dimensions after suspend/resume
- Send SIGWINCH to self on terminal start to refresh stale dimensions (Unix only)
- Change requestRender(true) to set previousWidth = -1 to trigger widthChanged
- Update first render condition to skip when widthChanged is true

Fixes #599
2026-01-11 02:47:28 +01:00
Mario Zechner c95b132fcc Add [Unreleased] section for next cycle 2026-01-10 13:56:55 +01:00
Mario Zechner 345de59833 Release v0.42.4 2026-01-10 13:56:11 +01:00
Mario Zechner 3743ebc03d Add [Unreleased] section for next cycle 2026-01-10 13:28:10 +01:00
Mario Zechner 2a04b0fb28 Release v0.42.3 2026-01-10 13:27:28 +01:00
Mario Zechner 11dd2f476b Add [Unreleased] section for next cycle 2026-01-10 01:43:32 +01:00
Mario Zechner 0c02f5c053 Release v0.42.2 2026-01-10 01:42:46 +01:00
Mario Zechner 60f5a03576 Add [Unreleased] section for next cycle 2026-01-09 20:24:50 +01:00
Mario Zechner d856bb097c Release v0.42.1 2026-01-09 20:24:10 +01:00
Mario Zechner 5eb53cdb9e Add [Unreleased] section for next cycle 2026-01-09 07:00:09 +01:00
Mario Zechner 0752995424 Release v0.42.0 2026-01-09 06:59:26 +01:00
Mario Zechner 98b25baf4d Add [Unreleased] section for next cycle 2026-01-09 06:07:35 +01:00
Mario Zechner ec9def84ef Release v0.41.0 2026-01-09 06:06:54 +01:00
Mario Zechner 439385afbc Add [Unreleased] section for next cycle 2026-01-09 05:12:52 +01:00
Mario Zechner ebd661fe13 Release v0.40.1 2026-01-09 05:11:49 +01:00
Mario Zechner 0cf4e1dbf9 Add [Unreleased] section for next cycle 2026-01-09 00:44:14 +01:00
Mario Zechner 070ef9c771 Release v0.40.0 2026-01-09 00:43:32 +01:00
Mario Zechner 36fbce85c2 Add [Unreleased] section for next cycle 2026-01-09 00:34:20 +01:00
Mario Zechner 39bfbb125c Release v0.39.1 2026-01-09 00:33:39 +01:00
Mario Zechner 307f9b4169 Add [Unreleased] section for next cycle 2026-01-09 00:10:41 +01:00
Mario Zechner c25f1eab64 Release v0.39.0 2026-01-09 00:10:00 +01:00
Mario Zechner ec1ee7ddc6 docs: add overlay documentation, mark as experimental 2026-01-08 22:44:12 +01:00
Mario Zechner f9064c2f69 feat(tui): add overlay compositing for ctx.ui.custom() (#558)
Adds overlay rendering capability to the TUI, enabling floating modal
components that render on top of existing content without clearing the screen.

- Add showOverlay(), hideOverlay(), hasOverlay() methods to TUI
- Implement ANSI-aware line compositing via extractSegments()
- Support overlay stack (multiple overlays, later on top)
- Add { overlay: true } option to ctx.ui.custom()
- Add overlay-test.ts example extension

Also fixes pre-existing bug where bash tool output cached visual lines
at fixed terminal width, causing crashes on terminal resize.

Co-authored-by: Nico Bailon <nico.bailon@gmail.com>
2026-01-08 22:40:42 +01:00
Mario Zechner cfa63c255d Add [Unreleased] section for next cycle 2026-01-08 04:53:51 +01:00
Mario Zechner 4b084d0f9d Release v0.38.0 2026-01-08 04:52:55 +01:00
Mario Zechner f3b7b0b179 fix(tui): handle batched input over SSH with StdinBuffer
Adds StdinBuffer class (adapted from OpenTUI, MIT license) to split
batched stdin into individual sequences before they reach components.

This fixes key presses being dropped when batched with release events,
which commonly occurs over SSH due to network buffering.

- Each handleInput() call now receives a single event
- matchesKey() and isKeyRelease() work correctly without batching awareness
- Properly buffers incomplete escape sequences across chunks
- Handles bracketed paste mode

Addresses #538
2026-01-07 17:50:06 +01:00
Mario Zechner 09471ebc7d feat(coding-agent): add ctx.ui.setEditorComponent() extension API
- Add setEditorComponent() to ctx.ui for custom editor components
- Add CustomEditor base class for extensions (handles app keybindings)
- Add keybindings parameter to ctx.ui.custom() factory (breaking change)
- Add modal-editor.ts example (vim-like modes)
- Add rainbow-editor.ts example (animated text highlighting)
- Update docs: extensions.md, tui.md Pattern 7
- Clean up terminal on TUI render errors
2026-01-07 16:11:49 +01:00
Mario Zechner fcb3b4aa72 Add [Unreleased] section for next cycle 2026-01-07 01:33:34 +01:00
Mario Zechner 5514d4ffdb Release v0.37.8 2026-01-07 01:32:53 +01:00
Mario Zechner 41fe329cdd fix(tui): filter key release events by default
Components must set wantsKeyRelease=true to receive release events.
Fixes double-processing of keys in editors when Kitty protocol flag 2 is enabled.
2026-01-07 01:31:24 +01:00
Mario Zechner 7508a51599 Add [Unreleased] section for next cycle 2026-01-07 01:02:34 +01:00
Mario Zechner a4f2bb5c27 Release v0.37.7 2026-01-07 01:01:55 +01:00
Mario Zechner 62919fc1d4 docs(tui): add changelog entry for matchesKey fix 2026-01-07 00:57:28 +01:00
Mario Zechner 7a44cf0db0 fix(tui): matchesKey now matches Kitty sequences for unmodified letter keys
Needed for key release events which come as CSI sequences even for plain letters.
2026-01-07 00:57:10 +01:00
Mario Zechner 9330f5a10a Add [Unreleased] section for next cycle 2026-01-07 00:43:25 +01:00
Mario Zechner befbeb30e4 Release v0.37.6 2026-01-07 00:42:45 +01:00
Mario Zechner a2f032a426 feat(tui): add Kitty keyboard protocol flag 2 support for key release events
- Enable flag 2 in Kitty protocol for event type reporting
- Add isKeyRelease() and isKeyRepeat() functions
- Parse event type suffix (:1/:2/:3) in Kitty sequences
- Export KeyEventType type
2026-01-07 00:41:44 +01:00
Mario Zechner a00322175f Add [Unreleased] section for next cycle 2026-01-06 23:25:53 +01:00
Mario Zechner fe95983dcf Release v0.37.5 2026-01-06 23:25:12 +01:00
Mario Zechner f87fb0a38a Add [Unreleased] section for next cycle 2026-01-06 21:29:03 +01:00
Mario Zechner b08a6b22ce Release v0.37.4 2026-01-06 21:28:24 +01:00
Mario Zechner a236e62025 Add [Unreleased] section for next cycle 2026-01-06 13:44:28 +01:00
Mario Zechner 86fea6379c Release v0.37.3 2026-01-06 13:43:47 +01:00