Commit Graph
1617 Commits
Author SHA1 Message Date
can1357 24341e4abf chore: bump version to 16.2.2 2026-06-27 13:24:46 +02:00
can1357 d738329485 chore: bump version to 16.2.1 2026-06-27 06:35:42 +02:00
can1357 7463818a32 chore: bump version to 16.2.0 2026-06-27 04:39:59 +02:00
can1357 6fc29d9643 test(coding-agent): extended test harnesses and modernize async patterns
- Update `acp-builtins.test.ts` to support interactive session movement and path session file testing.
- Clarify `/move` command routing in `/move` slash command tests.
- Rename internal `search` references to `grep` to align with product definitions.
- Refactor TUI render tests to use `Promise.withResolvers` for cleaner flow control.
2026-06-27 04:38:43 +02:00
can1357 26b3a22186 test: updated test suites and fix rendering test flakiness
- Update `umans-provider` test to remove references to deprecated GLM 5.1 model.
- Rename search tool reference to `grep` in `advisor` test.
- Improve test stability in TUI components by explicitly draining `setImmediate` queues before flushing terminal state.
2026-06-27 04:28:39 +02:00
can1357 5a044dc0da feat: consolidated and automate changelog management
- Added `rewrite-changelog.ts` and `fix-changelogs.ts` utilities to automate the consolidation of release notes using LLM-assisted processing.
- Updated multiple internal changelog files by consolidating redundant entries and improving phrasing for readability.
- Implemented `previewLine` utility in `coding-agent` to prevent visual spillover in status rows by managing text truncation and whitespace.
- Updated `package.json` with new workflow scripts for managing package-level change histories and documentation indexes.
2026-06-27 03:08:52 +02:00
can1357 667319adb4 fix(types): add os import, drop invalid id fields in tests after #3416/#3510 drop 2026-06-27 02:10:41 +02:00
can1357 adcb951d5d feat(ai): add system message schema and include it in messageSchema union 2026-06-27 02:08:00 +02:00
can1357 9ee8a582ed fix(tui): widen env record for Warp capability test (#3472) 2026-06-27 02:06:39 +02:00
can1357 577d2a8eb8 style: biome format/organize-imports across integrated PRs 2026-06-27 02:06:38 +02:00
can1357 f366e7bea8 Merge PR #3402: Shared TUI mouse-routing helpers and overlay selector migration (@wolfiesch)
# Conflicts:
#	packages/coding-agent/src/modes/components/settings-selector.ts
2026-06-27 01:40:11 +02:00
can1357 cf8ac5b2f1 Merge PR #3496: fix(tui): guard streaming Esc cancellation (@roboomp) 2026-06-27 01:39:35 +02:00
can1357 b76fb2be1f Merge PR #3472: feat(tui): recognize Warp as a first-class terminal (@metaphorics)
# Conflicts:
#	packages/tui/src/terminal-capabilities.ts
#	packages/tui/test/terminal-capabilities.test.ts
2026-06-27 01:39:35 +02:00
can1357 eec44769cc docs: normalize changelogs for merge sweep + add #2805 entry 2026-06-26 23:45:24 +02:00
can1357 a427449d69 feat(tui): extended markdown rendering with html component support
- Added support for `<code>`, `<hr>`, and `<blockquote>` tags to the markdown renderer.
- Improved HTML entity decoding and tag handling logic for consistent terminal output.
- Refactored internal block parsing methods to facilitate specialized styling for new HTML elements.
- Verified new rendering behaviors and entity handling through updated test suites.
2026-06-26 22:45:01 +02:00
can1357 011f036ef5 chore: bump version to 16.1.23 2026-06-26 18:29:01 +02:00
can1357 ff759ed850 chore: bump version to 16.1.22 2026-06-26 09:19:53 +02:00
can1357 018a9638c0 chore: bump version to 16.1.21 2026-06-26 07:39:22 +02:00
can1357 0fc6d136c3 chore: bump version to 16.1.20 2026-06-25 22:45:00 +02:00
can1357 7690dfe7fb chore: update changelogs 2026-06-25 22:44:19 +02:00
Can BölükandGitHub 4e56e8bd37 Merge pull request #3465 from cexll/local-build-pr-3428
fix(tui): keep interrupts ahead of repaint
2026-06-25 22:41:21 +02:00
roboomp a538cddd33 fix(tui): guarded streaming escape cancel
Added a two-step Esc guard for active streaming responses and deferred ordinary render scheduling behind queued input so Esc delivery stays responsive under streaming load.

Fixes #3493
2026-06-25 18:52:09 +00:00
can1357 201b91199f fix(tui): corrected ellipsis type check in truncateToWidth
- Adjusted the conditional check to correctly identify string-based ellipsis inputs.
- Resolved logic for applying default ellipsis behavior when invalid or empty types are provided.

Fixes #3492
2026-06-25 20:51:20 +02:00
roboomp 1ab1838587 fix(tui): treated warp wsl host as windows for kitty
Bun reports process.platform as 'linux' inside WSL even when the rendering Warp is the Windows build, which lacks Kitty support and prints APC sequences as visible garbage. Detected WSL via WSL_DISTRO_NAME/WSL_INTEROP and disabled the Kitty image protocol in that case.

Refs #3471
2026-06-25 15:22:32 +00:00
roboomp 4ab1f25503 fix(tui): recognized warp terminal capabilities
Detected Warp via TERM_PROGRAM=WarpTerminal and mapped its platform-specific image and hyperlink capabilities.

Fixes #3471
2026-06-25 15:15:04 +00:00
metaphorics 405222014c feat(tui): recognize Warp as a first-class terminal
Add warp to the TerminalId union and KNOWN_TERMINALS, detected via TERM_PROGRAM=WarpTerminal. Inline images negotiate the Kitty graphics protocol on macOS/Linux and are dropped on Windows (resolveWarpImageProtocol), since Warp ships Kitty on Mac/Linux only. True color is enabled; OSC 8 hyperlinks stay off because Warp renders the escape as literal text rather than a clickable link (override with PI_FORCE_HYPERLINKS=1); synchronized output is left to the runtime DECRQM probe.

Closes #3471
2026-06-26 00:09:10 +09:00
ben d3060f9491 fix(tui): keep interrupts ahead of repaint 2026-06-25 20:01:06 +08:00
can1357 451af61280 chore: bump version to 16.1.19 2026-06-25 13:14:44 +02:00
can1357 76c0f14b4e Merge remote-tracking branch 'origin/farm/f80f626f/tui-fullwidth-cursor-drift' 2026-06-25 06:46:07 +02:00
roboomp 040846336d fix(tui): shrunk bordered Editor right chrome by cursor overflow cells, not a 1-cell boolean
When the end-of-line cursor glyph lands past a wide trailing grapheme
(CJK comma ',', emoji, etc.), the inverse-video cursor extends past
'lineContentWidth' by the full overflow. Prior cursorInPadding logic
dropped exactly one space of right padding but always re-emitted '─'
before '╯', so 'paddingX=1' overflow=1 stayed 1 cell too wide and
'paddingX=2' overflow=2 stayed 2 cells too wide. In the user's
terminal the '╯' wrapped to a new row, looking like the editor box
collapsed onto two lines.

Replaced the boolean with the actual overflow cell count and recomputed
the right chrome budget (padding + optional '─' + corner) from
'paddingX + 1 - overflow', floored at 1 so the corner/vertical bar
survives. The else branch (non-last lines) follows the same budget for
symmetry.

Fixes #3431
2026-06-25 03:34:24 +00:00
can1357 1a89d784e7 chore: bump version to 16.1.18 2026-06-25 05:17:47 +02:00
Wolfgang Schoenberger b9b509b059 test(tui): replace SgrMouseEvent cast with null guard
Addresses review feedback: the repo bans type casts in new code. Use a
real null guard that throws if the handler never received an event, so
the test keeps the handler contract type-checked.
2026-06-24 20:09:48 -07:00
Wolfgang Schoenberger e5e29219fe feat(tui): add shared SGR mouse-routing helpers and SelectList.routeMouse
Add routeSgrMouseInput() and routeSelectListMouse() to centralize the
repeated SGR parse + SelectList hit-test/hover/wheel/click patterns, and
make SelectList implement MouseRoutable via routeMouse(). The structural
SelectListMouseTarget interface keeps mouse.ts free of component imports.

Extend the emergency-restore tests to assert mouse-off sequences
(1006l/1003l/1000l) are emitted while keeping the alt-screen 1049 gating.
2026-06-24 20:09:48 -07:00
can1357 8d60776a6f chore: bump version to 16.1.17 2026-06-24 21:11:31 +02:00
can1357 23838ba80b chore: update changelogs 2026-06-24 21:03:29 +02:00
can1357 45ade3ef9d Merge remote-tracking branch 'origin/farm/d5c3021f/tmux-notification-bell-passthrough' 2026-06-24 21:00:19 +02:00
roboomp d8d037e8ac style: bun run fix 2026-06-24 18:07:25 +00:00
roboomp 28e1caec69 fix(tui): deliver notifications under tmux via DCS passthrough + BEL fallback
When the inner-terminal env markers (KITTY_WINDOW_ID, GHOSTTY_RESOURCES_DIR,
WEZTERM_PANE, ITERM_SESSION_ID) leak into a tmux session, TERMINAL_ID
resolves to the inner terminal and notifyProtocol becomes OSC 9 / OSC 99.
sendNotification() wrote that raw OSC straight to stdout, but tmux does not
forward bare OSC 9/99 to the outer terminal and the bare sequence does not
flag tmux's own monitor-bell / monitor-activity — so a backgrounded omp pane
under the common tmux + kitty/ghostty/wezterm/iTerm2 stack had no signal at
all for completion or 'ask' blockage.

Under TMUX, OSC-protocol notifications are now wrapped in tmux's
\x1bPtmux;…\x1b\\ DCS passthrough envelope (so users with
allow-passthrough on still get the real desktop toast) and followed by a
\x07 BEL (so monitor-bell flags the window otherwise — the standard
'needs attention' workflow). The OSC 99 capability probe is wrapped the
same way so rich notifications keep working across tmux. Bell-protocol
paths are unchanged.

Fixes #3395
2026-06-24 18:07:14 +00:00
can1357 ff2280e6ee chore(changelog): normalize [Unreleased] after merge sweep (fix-changelogs --since baseline; dedup #3258) 2026-06-24 18:46:00 +02:00
can1357 7b619400fd Merge PR #1800: fix(tui): runtime Hangul Compatibility Jamo width override + Ghostty detection (@ZergRocks) 2026-06-24 18:43:01 +02:00
can1357 ee57c07371 Merge PR #3377: fix(settings): prevent numeric config values from crashing settings UI (@roboomp) 2026-06-24 18:26:18 +02:00
can1357 b56a7524af Merge PR #3385: fix(coding-agent): restore TUI focus to live editor-slot owner when a fullscreen overlay closes (@roboomp) 2026-06-24 18:26:18 +02:00
omp-evalandcan1357 df44e55797 test(tui): add POSIX-catchable backslash @-path regression test
The PR's absolute-path tests pass identically on baseline and head on
POSIX CI (they use a /-prefixed outsideDir), so they do not protect the
Windows fix on Ubuntu. This adds a relative @..\\ backslash-prefix test
that fails on the pre-fix code (empty results on POSIX) and passes after
the backslash-normalization fix, giving CI real regression coverage.
2026-06-24 18:23:50 +02:00
can1357 a34f4fc129 Merge PR #3345: fix(tui): @-path autocomplete on Windows for paths outside cwd (@oldschoola) 2026-06-24 18:23:50 +02:00
can1357 4d71beb0df Merge PR #3344: fix(tui): stop OSC 11 poll from wiping text selection (@oldschoola) 2026-06-24 18:23:49 +02:00
roboomp 1b24e0044a fix(coding-agent): restore focus to the live editor-slot owner when a fullscreen overlay closes
When /settings (or the Extensions/Agents dashboard) is open and a tool
approval prompt fires, ExtensionUiController.showHookSelector swaps the
editor out of editorContainer for the HookSelectorComponent. On exit,
the overlay's done() called overlayHandle.hide() + setFocus(editor),
both pointing at the editor captured as preFocus when the overlay
opened — now no longer mounted. The visible approval prompt then sat
unreachable: Up/Down/Enter/Esc routed to the unmounted editor and only
Ctrl+C escaped (issue #3349).

SelectorController now exposes focusActiveEditorArea(), which restores
focus to editorContainer.children[0] (the live slot owner) or falls
back to the editor. Wired into showSettingsSelector, showExtensionsDashboard,
and showAgentsDashboard close paths after overlay.hide().

Tests: unit test verifying focusActiveEditorArea picks the live slot
owner; TUI overlay-focus regression pinning the post-fix contract plus
a 'pre-fix snapshot' test pinning the broken pre-fix behavior so the
restore-from-preFocus assumption can't silently change.

Fixes #3349
2026-06-24 14:24:15 +00:00
roboomp e261848293 fix(settings): coerced rendered settings values
Coerced malformed YAML-derived settings values to strings before they reach settings row truncation. Added regression coverage for numeric enum display values.

Fixes #3338
2026-06-24 13:53:06 +00:00
can1357 c58ec21242 fix(tui/utils): corrected state restoration for TTY and environment variables
- Corrected TTY property restoration to properly delete injected properties instead of redefining them as truthy values.
- Updated environment restoration to modify process.env keys individually to prevent breaking environment object reference bindings.
- Prevented pollution of TTY-gated code and environment variable state across test suites.
2026-06-24 15:30:29 +02:00
changhee.an 82ef6c0a04 feat(tui): runtime Hangul Compatibility Jamo width override + Ghostty detection
Replace the compile-time cfg!(target_os = "macos") jamo-width heuristic
with a runtime override (process-global AtomicU8 in pi-natives, mirrored in
the TS width engine) plus terminal-identity detection: Ghostty renders
Hangul Compatibility Jamo (U+3131..U+318E) at 2 cells, so it is forced wide;
every other terminal keeps the platform default (macOS narrow, otherwise
UAX#11), making the override a no-op outside Ghostty.

Fixes doubled/ghosted jamo during Korean IME composition on Ghostty, where
the hardware cursor landed inside the typed text and the IME candidate window
drifted from the glyph. The width is resolved synchronously before the first
paint, so no stdin/CPR probe or async cache invalidation is needed.

A runtime DSR/CPR probe that auto-detects the width on unknown terminals is
tracked in a follow-up.
2026-06-24 10:27:17 +09:00
oldschoola c96e6b7083 fix: preserve bare ~ as home-directory prefix in autocomplete root check
Address codex P2 review: after #expandHomePath rewrites ~ to the actual
home path (e.g. /home/me), the expandedPrefix === '~' and '~/' checks
became unreachable. When a user types @~, the code fell into the
partial-leaf branch and offered wrong suggestions.

Capture preExpand before home expansion and use it for root-prefix
checks so bare ~ and ~/ are correctly detected as root prefixes.
2026-06-23 15:39:02 -07:00