Commit Graph
2459 Commits
Author SHA1 Message Date
can1357 7504d4c24d fix(coding-agent): kept setup wizard selection visible on short terminals
- Provider sign-in, theme, and web-search lists now shrink their visible row window to fit available height.
- Decorative chrome (sign-in hint, theme mock preview) yields to the list when space is tight.
- SelectList and OAuthSelector expose `setMaxVisible`/`setMaxHeight` so hosts can refit lists after construction.
2026-07-23 03:36:20 +02:00
can1357 52ad6516ef feat(diff): implemented native UTF-16 diff processing and removed jsdiff
- Implemented native UTF-16 text processing in Rust diff module with support for unpaired surrogates.
- Removed `similar` crate from Rust workspace and `diff` npm package from coding-agent, hashline, and natives.
- Removed jsdiff fallback wrappers and `isWellFormed()` guards from TypeScript diff implementations.
- Added comprehensive test suite for native diff functions covering random inputs and edge cases including surrogates and emoji.
- Renamed model `codex-auto-review` to `gpt-5.3-codex-spark` with updated pricing and context window.
2026-07-23 01:35:31 +02:00
can1357 9a0a154e53 Merge PR #6279: perf(coding-agent): compute edit and word diffs natively (@wolfiesch) 2026-07-22 21:13:23 +02:00
can1357 741aaa301d Merge PR #5895: feat(tui): allow re-answering a past ask from the session tree (@Mathews-Tom) 2026-07-22 21:13:23 +02:00
can1357 d4219e6d0b Merge PR #6207: fix(usage): align multi-account /usage columns across windows (@roboomp) 2026-07-22 21:13:19 +02:00
can1357 1a09f5cfd6 fix(auth): reject image smart-paste while a modal prompt owns focus
The new global smart-paste listener reused handleImagePaste(), whose
image branches insert [Image #N] into the hidden main editor when a
login/API-key prompt is focused. Mirror the enhanced-paste behavior:
show 'Image paste is not supported in this prompt' and skip image-path
detection so only clipboard text reaches the focused prompt.
2026-07-22 21:13:19 +02:00
can1357 829d2dcea9 Merge PR #6201: fix(auth): route smart paste into focused prompts (@roboomp) 2026-07-22 21:13:19 +02:00
can1357 680cb38436 Merge PR #6220: fix(tts): prioritize playback interruption on Esc (@roboomp) 2026-07-22 21:13:19 +02:00
can1357 5477e74bb3 Merge PR #6307: fix(coding-agent): align bundled task prewalk display (@roboomp) 2026-07-22 21:13:18 +02:00
can1357 1fecdb84fd Merge PR #6240: fix(tui): lock plan review overlay after a choice commits (@roboomp) 2026-07-22 21:13:18 +02:00
can1357 2393f3fd1e Merge PR #6217: fix(tui): surface provider errors above plan review (@roboomp) 2026-07-22 21:13:17 +02:00
can1357 e7f3fde12b fix(tui): prune settled-component cache to rendered messages on rebuild
Session entries keep AgentMessage objects strongly reachable for the whole
session, so WeakMap entries for compacted-away history pinned their
components' rendered layout caches forever. Rebuild now retains only
components for messages the new transcript context actually renders.
2026-07-22 21:13:17 +02:00
can1357 e1173b8aeb Merge PR #6199: fix(tui): reuse settled components after compaction (@roboomp) 2026-07-22 21:13:17 +02:00
can1357 6389f4628a Merge PR #6313: fix(tui): collapse synthetic advisor inputs in the transcript viewer (@roboomp) 2026-07-22 21:13:17 +02:00
can1357 d723de46f9 Merge PR #6206: fix(session): skip titles for local extension commands (@roboomp) 2026-07-22 21:13:16 +02:00
roboomp a2c90f5e5f fix(tui): collapsed synthetic advisor inputs in transcript viewer
Cold-opening a large read-only Advisor transcript froze the TUI for tens
of seconds: AgentTranscriptViewer.render() called the full
container.render() before ScrollView clipped, laying out every synthetic
`Session update` input as full Markdown. A 6.5 MiB __advisor.jsonl
blocked the first frame ~27s in a repro.

Synthetic (agent-attributed) inputs now render as a CollapsedSyntheticMessageComponent:
one dim summary row (heading, size, line count, ctrl+o hint) that builds
the heavy UserMessageComponent Markdown only on expand. Blocks above the
viewport never pay layout on cold open; the raw observability data in
__advisor.jsonl is untouched. Real user prompts stay fully rendered.

Fixes #6308
2026-07-22 18:12:24 +00:00
roboomp e2dc801d44 fix(coding-agent): aligned task prewalk dashboard state
Shared the bundled task prewalk default between runtime execution and the Agent Control Center. Added dashboard regression coverage for task.prewalk.

Fixes #6306
2026-07-22 17:14:36 +00:00
Wolfgang Schoenberger 8f17a0300d fix(natives): reject ill-formed UTF-16 in native diff and fall back to jsdiff 2026-07-22 04:32:46 -07:00
Wolfgang Schoenberger 9ce37050d6 style(coding-agent): sort native diff imports 2026-07-22 01:58:26 -07:00
Wolfgang Schoenberger 2b7707e6d7 perf(coding-agent): use native diff for edit diffs, intra-line word diff, and hashline recovery 2026-07-22 01:24:43 -07:00
roboomp 27b0d1722b fix(tui): locked plan review overlay after a choice commits
The fullscreen Plan Review overlay stayed mounted, focused, and fully
interactive after a choice was picked. showPlanReview's finish() resolves
the choice promise but deliberately defers the hide until #approvePlan
(guarded for #5688/#5319/#5689), so during slow async approval work — e.g.
context compaction — arrow keys still moved the cursor and repeat
Enter/Esc were silently swallowed by the settle guard, with the
fullscreen buffer masking all progress underneath. Users on Ghostty and
macOS Terminal read this as "/plan is frozen".

The overlay now flips to a committed state the moment a choice fires:
handleInput is a no-op, and the render shows a "<choice> — submitting…"
indicator plus an "applying your selection" footer. The deferred-hide
timing is untouched, so the existing stale-buffer and focus guards stay
intact.

Fixes #5926
2026-07-21 22:21:35 +00:00
roboomp 013f70c7d7 fix(tts): prioritized playback interruption on escape
- Moved active playback cancellation ahead of ongoing loop and stream interruption.

- Added an overlapping TTS and agent-turn regression.

Fixes #6118
2026-07-21 21:13:45 +00:00
roboomp 1cf4831c9c fix(tui): surfaced provider errors above plan review
- Dismissed the fullscreen plan review and settled its pending choice when a turn-ending provider error is pinned.
- Added regression coverage for restored editor focus and visible error presentation.

Fixes #6086
2026-07-21 21:09:17 +00:00
roboomp 4fd9dd5722 fix(usage): align multi-account /usage columns across windows
The TUI /usage matrix sorted each quota window's account columns
independently by used fraction, so the positional `account N` labels
denoted different credentials on each row. An account exhausted on one
window but light on another (e.g. a Kimi Code account's 5h limit)
rendered its exhausted bar under a sibling that still had quota, making
the section `% free` and capacity numbers look wrong.

Order account columns once per provider (worst-first) and hold that
order stable across every window row.

Fixes #6067
2026-07-21 20:48:12 +00:00
roboomp c87ee802b1 fix(session): skipped titles for local extension commands
- Classified registered extension commands before automatic title generation while preserving normal and prompt-producing slash command titles.
- Added regression coverage for one-shot local handling, unnamed-session preservation, and forwarded prompt eligibility.

Fixes #6061
2026-07-21 20:44:29 +00:00
roboomp 0d8a9d2f07 fix(auth): routed smart paste into focused prompts
- Intercepted the configured smart-paste shortcut while a paste-capable modal owns focus.
- Added regression coverage for Ctrl+V API-key entry and documented the fix.

Fixes #6057
2026-07-21 20:33:16 +00:00
roboomp 13039b7bdf fix(tui): reused settled components after compaction
Preserved settled user and assistant component instances during compaction-only transcript rebuilds so warmed Markdown and layout caches remain valid.

Covered both manual and automatic compaction paths with focused regression tests.

Fixes #6033
2026-07-21 20:25:35 +00:00
Mathews-Tom d7f6ce5e04 Merge remote-tracking branch 'upstream/main' into feat/tree-ask-reanswer 2026-07-21 19:25:33 +05:30
can1357 89d6a8f6d1 fix(coding-agent): gate print-mode plan arming on settings before session context
- runPrintMode dereferenced session.sessionManager before checking whether
  plan.defaultOnStartup was even enabled, crashing partial-session harnesses;
  the settings check now short-circuits first.
- Extended the print-mode session fakes with the settings/sessionManager
  members every real session provides.
- Scoped the rpc-stdin-lock stderr assertion to non-load-notice lines: the
  adversarial fixture's load failure is now legitimately surfaced (#4954)
  and mentions the locked stream by design.
2026-07-21 00:16:45 +02:00
can1357 51dbe05364 fix(setup): stopped re-running the wizard on existing installs
- Reverted the CURRENT_SETUP_VERSION bump (2 -> 1) introduced with the
  default-model setup step (#5982): the new scene now only runs for fresh
  installs instead of re-prompting every upgraded install once.
- Installs that already advanced to setupVersion 2 stay non-stale under
  the cold-launch gate, so no repeat prompt either way.
2026-07-20 23:45:02 +02:00
can1357 d8e137abdd Merge PR #6079: fix(status-line): aggregate vibe worker tok/s into the status-line badge (@oldschoola) 2026-07-20 22:50:06 +02:00
can1357 f9826dc2b3 Merge PR #5977: fix(coding-agent): bound RPC output and reap failed workers (@wolfiesch) 2026-07-20 22:50:05 +02:00
can1357 3c6ade647b Merge PR #4784: fix(coding-agent): persist bash shortcut cwd changes (@jeffscottward) 2026-07-20 22:50:05 +02:00
can1357 60cbcc8c9d Merge PR #5055: feat(coding-agent): add timestamp to per-turn token-usage row (@zommiommy) 2026-07-20 22:50:05 +02:00
can1357 7e49a95d41 Merge PR #5982: fix(setup): add default model selection (@roboomp) 2026-07-20 22:50:05 +02:00
can1357 29f25f537e Merge PR #6020: fix(coding-agent): enable plan mode for print prompts (@roboomp) 2026-07-20 22:50:04 +02:00
can1357 936fdbe4a7 Merge PR #6013: fix(coding-agent): preserve plan exit rollback state (@any-victor) 2026-07-20 22:50:03 +02:00
oldschoola 4a065e3d89 fix(status-line): aggregate vibe worker tok/s into the status-line badge
In /vibe mode the director is often idle while workers stream, so the
status-line tok/s badge showed a stale/zero rate even while parallel
workers were actively generating tokens. The badge now aggregates the
main session's live tok/s with every live vibe worker's tok/s, and
falls back to the main session's own cached rate when no workers are
streaming.

- Extract calculateTokensPerSecond to utils/token-rate.ts (neutral
  location) so vibe/runtime.ts can depend on it without the render
  layer depending on the heavy vibe/task graph.
- Add aggregateVibeWorkerTokensPerSecond to vibe/runtime.ts: sums
  each live worker's rate via the shared calculator, returns null
  when no workers are streaming so the main rate shines through.
- StatusLineComponent takes the aggregator via an injected
  setVibeWorkerTokenRateProvider callback (wired in interactive-mode)
  keeping the render layer off the vibe/task dependency graph.
- #getTokensPerSecond splits into #getMainSessionTokensPerSecond
  (preserves the sticky per-assistant-message cache) plus the
  worker-aggregation path, so the director-idle case no longer
  short-circuits to null.
2026-07-19 13:03:38 -07:00
Victor Araújo 7f10e13bbe fix(coding-agent): preserve plan tool presentation 2026-07-19 14:45:41 -03:00
Victor Araújo 8a8ff498b3 fix(coding-agent): preserve plan exit rollback state 2026-07-19 14:45:41 -03:00
Mathews-Tom ab1d7db7d1 Merge remote-tracking branch 'upstream/main' into feat/tree-ask-reanswer
# Conflicts:
#	packages/coding-agent/src/modes/controllers/selector-controller.ts
2026-07-19 15:02:33 +05:30
Wolfgang Schoenberger e0712265f2 fix(coding-agent): reconstruct compacted RPC prompt histories 2026-07-18 15:13:09 -07:00
Wolfgang Schoenberger f8cc72ff36 fix(coding-agent): preserve small RPC terminal frames 2026-07-18 15:13:09 -07:00
Wolfgang Schoenberger 63c8cc189a fix(coding-agent): retain active RPC run snapshots 2026-07-18 15:13:09 -07:00
Wolfgang Schoenberger 627a697e05 fix(coding-agent): bound terminal RPC frames 2026-07-18 15:13:09 -07:00
Wolfgang Schoenberger 7e6a9f5d5d fix(coding-agent): await RPC worker reaping 2026-07-18 15:13:08 -07:00
Wolfgang Schoenberger 2e90458a79 fix(coding-agent): bound RPC output and reap failed workers 2026-07-18 15:13:08 -07:00
roboomp 3f67489a9f fix(coding-agent): preserved model on plan resume
Plan-mode reconciliation now keeps the model restored from the session journal instead of reapplying the current plan role.

Fixes #6015
2026-07-18 22:07:22 +00:00
roboomp c4053918fe fix(coding-agent): handled headless plan proposals
Installed the normal plan proposal handler in print mode, persisted the resolved plan artifact, and silently stopped the completed planning turn for later review.

Shared plan proposal validation with interactive mode and added regression coverage.

Fixes #6017
2026-07-18 21:46:03 +00:00
roboomp a5ff9f9a30 fix(coding-agent): enabled plan mode for print prompts
Applied the startup plan default before headless prompts and persisted the mode for later interactive review.

Added regression coverage for the exact -p startup path.

Fixes #6017
2026-07-18 21:34:30 +00:00