Commit Graph
7289 Commits
Author SHA1 Message Date
can1357 b65d173dcd chore: bump version to 15.9.67 2026-06-06 16:03:53 +02:00
can1357 87718067e0 fix(release): uploaded LFS objects before atomic ref push
- Pushed LFS objects for main explicitly before tagging.
- Set GIT_LFS_SKIP_PUSH so the pre-push hook no-ops on the tag ref.
- Used explicit refspecs to avoid hook resolving tag refs to branches.
2026-06-06 16:03:39 +02:00
can1357 001a6ad564 tests: remove useless assertations 2026-06-06 16:00:31 +02:00
can1357 ac2f6ab7d5 fix(ai/ollama): mapped unsupported reasoning effort levels
- Mapped OMP's minimal/xhigh onto Ollama's accepted low/max.
- Prevented HTTP 400 invalid reasoning value on the turn.
2026-06-06 15:52:13 +02:00
can1357 6810c549a7 feat(coding-agent/modes): interleaved runnable commands into /copy tree
- Emitted per-command cmd:N targets after the assistant message that issued them.
- Carried commands from text-less messages to the next visible message.
- Replaced the single trailing "last command" leaf.
2026-06-06 15:45:59 +02:00
can1357 bcb48c4e43 fix(coding-agent/modes): enabled eager foreground rendering and suppressed duplicate error lines
- Updated EventController to keep foreground render mode active from agent_start through agent_end so live-region rebuild remains enabled during a turn.
- Pinned stop-reason assistant errors to the editor banner and suppressed the transcript's inline Error line while pinned, then restored it on the next agent_start.
- Added tests covering error-banner suppression/restoration and eager native scrollback rebuild ordering before loading animation.
2026-06-06 15:44:38 +02:00
can1357 00e7d7c4be fix(coding-agent): fixed write streaming preview to honor Ctrl+O expansion
- Updated write streaming content formatting to accept an expanded flag and show full output only when expansion is active.
- Passed the expanded state from the write renderer so in-flight write previews now lift the 12-line cap on Ctrl+O.
- Added streaming write preview tests to verify collapsed tail capping, expansion growth, and short-write behavior.
2026-06-06 15:40:56 +02:00
can1357 c1f481c7de fix(coding-agent/modes): allowed bracket-prefixed partial input to be handled as raw text
- Updated rawTextInputFromPartialJson to stop excluding values that start with '[' from raw text fallback detection.
- Preserved existing exclusions for inputs starting with '{' and '"' in partial JSON detection.
2026-06-06 15:40:32 +02:00
can1357 a237b921ef feat(tui): added Terminal.hasEagerEraseScrollbackRisk override
- Let custom/test terminals override the ED3-risk profile without mutating shared TERMINAL.
- Centralized risk checks behind a private helper falling back to TERMINAL.
2026-06-06 15:38:48 +02:00
can1357 860eef3f2f refactor(hashline): switched header syntax to bracketed [path#tag]
- Replaced `¶path#hash` prefix with `[path#hash]` delimiters across parser, tokenizer, and grammar.
- Updated prompts, docs, and recovery paths to the new bracketed form.
2026-06-06 15:38:08 +02:00
can1357 0f568ccf87 fix(tui): repainted correct tail row for deferred mutations
- Indexed newLines by row instead of always using the last line.
- Replaced terminal risk mutation helper with a getter spy in tests.
2026-06-06 15:31:58 +02:00
can1357 ecd80120a3 feat(coding-agent): added framed tool rendering with capped streaming previews
- Wrapped tool call/result renderers with framed block markers for full-width display.
- Added preview-line caps via capPreviewLines to bound multiline outputs with truncation hints.
- Added code-cell tail rendering so streaming output shows capped tail slices with markers.
- Added setPaddingX in Box and applied framed-inline padding adjustments for tight layouts.
2026-06-06 15:19:06 +02:00
can1357 126f4e8dcf feat(coding-agent): replaced /copy subcommands with picker tree
- Added a fullscreen /copy tree of recent assistant messages with nested code blocks and a live preview pane.
- Removed the /copy last|code|all|cmd subcommands in favor of tree selection.
- Extracted copy-target assembly into a testable util.
2026-06-06 15:15:54 +02:00
can1357 6d99f2e740 feat(model-selector): disabled models below current context size
- Dimmed models whose context window is smaller than current usage.
- Skipped disabled entries during navigation and selection.
- Showed context-limit suffix and warning for unselectable models.
2026-06-06 15:10:14 +02:00
can1357 4b36eb2da4 feat(tui): added deferred bottom-row repaint for unknown viewports
- Repainted only the active-grid tail row relative to the tracked hardware cursor so a scrolled reader's history stays intact.
- Let bottom-anchored spinner/status chrome advance while the real scrollback mutation stays deferred.
- Deferred completely instead of repainting when there is no direct input or eager streaming.
2026-06-06 15:06:06 +02:00
can1357 c281f817ac fix(tui): repainted unobservable viewport instead of deferring
- Treated an unknown viewport position as at-bottom so zero-byte frames no longer froze the spinner/footer.
- Repainted for liveness while keeping native scrollback dirty; known-scrolled readers stay deferred.
- Dropped the redundant deferredMutation branch in the append path.
2026-06-06 15:00:33 +02:00
can1357 8b077cde58 perf(coding-agent): memoized native syntax highlighting
- Cached (lang, code) highlight output via LRU, invalidated on theme change.
- Stopped re-tokenizing unchanged code through Rust FFI every render frame.
- Prevented TUI freeze from animated tool blocks overrunning the frame budget.
2026-06-06 15:00:33 +02:00
can1357 f4730a0530 fix(coding-agent): capped streaming eval call preview to max lines
- Stopped expanding the volatile tool block so a >100-line code arg no longer overflows the viewport.
- Kept streaming and resolved render shapes consistent at codeMaxLines.
2026-06-06 14:43:35 +02:00
can1357 0068918f42 fix(ai): dropped scope:global from CC system cache control
- Removed global scope field rejected by third-party Anthropic proxies.
- prompt-caching-scope only works against canonical api.anthropic.com.
2026-06-06 14:41:03 +02:00
can1357 b9b9830b2e fix(claude-trace): skipped background haiku warmup in trace capture
- Detected Claude Code's small-fast-model classification call by model name.
- Dropped it from the proxy so capture lands on the real user prompt.
2026-06-06 14:35:56 +02:00
can1357 d6b40bf4f2 fix(tui): preserved bottom anchor on ED3-risk autocomplete shrink
- Padded direct-input shrink frames to clear stale popup rows without re-exposing committed scrollback.
- Repainted live viewport when offscreen edits shift rows above the viewport top.
- Prevented diff-append from duplicating the prefix at the scrollback seam on transient UI growth.
- Added scroll-buffer assertions to the autocomplete viewport test.
2026-06-06 14:35:03 +02:00
can1357 2d0f62eb69 refactor(coding-agent): replaced list count indicators with ScrollView
- Wrapped selector and overlay list windows in ScrollView for proportional right-edge scrollbars.
- Dropped numeric position/count footers in favor of the scrollbar.
- Simplified SelectList status line to search hints only.
- Added ED3-risk autocomplete repaint test for POSIX terminals.
2026-06-06 14:20:41 +02:00
can1357 dafc6e9e50 docs(tui): documented core renderer invariants and failure modes
- Added tui-core-renderer.md covering yank/corruption/flash/width faults.
- Linked the new doc from runtime internals and the tui.ts header.
- Refreshed runtime-internals to match current boot and render-intent flow.
2026-06-06 14:13:26 +02:00
can1357 36b6f0e9b5 fix(tui): allowed direct-input frames to repaint ED3-risk viewport
- Permitted autocomplete/IME frames to repaint the live viewport in place.
- Prevented stale autocomplete rows from lingering until next checkpoint.
- Kept full deferral when neither direct input nor eager streaming is active.
2026-06-06 14:10:50 +02:00
can1357 76ca917bfd fix(coding-agent-eval): suspended idle timeout during delegated bridge calls
- Added timeout pause/resume control ops and helper to suspend idle timers during bridge work.
- Fixed TimeoutError on long delegated agent()/llm() calls by pausing timeout while silent.
- Updated IdleTimeout with reference-counted pauses, ignored checks while paused, and resumed fresh.
- Replaced heartbeat keepalives with timeout-control events in bridge paths and status routing.
2026-06-06 14:02:04 +02:00
Can BölükandGitHub 58918be827 Merge pull request #1969 from enieuwy/add-tui-scroll-view
Add ScrollView component
2026-06-06 13:51:03 +02:00
Can BölükandGitHub afd33ece97 Merge branch 'main' into add-tui-scroll-view 2026-06-06 13:50:52 +02:00
can1357 4c5b1eb41d test(coding-agent): raised async job manager singleton test timeouts
- Raised the timeout on four `sdk-async-job-manager-singleton` session tests to 60000ms to reduce flakes in parallel runs.
- Adjusted the asynchronous singleton cases to avoid timeout races between long session startup and teardown.
- Recorded the timeout stabilization in the package changelog entry.
2026-06-06 13:48:06 +02:00
Can BölükandGitHub cc1a13aab2 Merge pull request #1929 from metaphorics/fix/retry-model-fallback-toggle
fix(coding-agent): allow retry without model fallback
2026-06-06 13:47:39 +02:00
Can BölükandGitHub 7cc7282034 Merge branch 'main' into fix/retry-model-fallback-toggle 2026-06-06 13:47:25 +02:00
Can BölükandGitHub 305e748fe4 Merge pull request #1988 from QianYan-Art/fix/ttsr-enabled-1767
fix(coding-agent): honor ttsr.enabled: false in TtsrManager
2026-06-06 13:45:39 +02:00
Can BölükandGitHub e8f1cbb7d3 Merge branch 'main' into fix/ttsr-enabled-1767 2026-06-06 13:45:30 +02:00
can1357 84325d4536 chore: reformat 2026-06-06 13:39:50 +02:00
can1357 0a6caab81b Merge remote-tracking branch 'origin/farm/a9bf4256/edit-tool-allow-spaces-in-path' 2026-06-06 13:39:33 +02:00
can1357 52c1f62028 Merge remote-tracking branch 'origin/farm/75ea0bb0/fix-review-render-yield-non-array' 2026-06-06 13:38:59 +02:00
can1357 f7974e0f23 Merge remote-tracking branch 'origin/farm/f646bd45/fix-windows-ctrl-enter-followup' 2026-06-06 13:38:52 +02:00
can1357 195ccef969 Merge remote-tracking branch 'origin/farm/5e8523ec/bug-ci-cd-slash-autocomplete-viewport-te' 2026-06-06 13:38:46 +02:00
can1357 604cf9fae6 Merge remote-tracking branch 'origin/farm/fd5abf01/support-rust-analyzer' 2026-06-06 13:38:37 +02:00
can1357 28ee7f8872 Merge remote-tracking branch 'origin/farm/e838b822/tui-tmux-scrollback-rendering' 2026-06-06 13:38:32 +02:00
can1357 577b72b5a1 Merge remote-tracking branch 'origin/farm/7fc89500/resume-input-invisible' 2026-06-06 13:38:18 +02:00
can1357 050b5e9378 Merge remote-tracking branch 'origin/farm/801c5304/fix-llamacpp-parallel-tool-args' 2026-06-06 13:38:10 +02:00
can1357 68bca20f91 Merge remote-tracking branch 'origin/farm/3b6df793/fix-chat-render-lag' 2026-06-06 13:37:54 +02:00
can1357 a275459be6 Merge remote-tracking branch 'origin/farm/4014d045/fix-python-eval-windows-numpy-import-hang' 2026-06-06 13:37:32 +02:00
roboomp 1ffa6dc6fb fix(coding-agent): guarded task renderer against non-array yield slot
renderAgentResult and the live-progress sibling cast
extractedToolData?.yield to Array<{ data }> and called ?.map without
checking the actual runtime shape. Optional chaining only short-circuits
on null/undefined, so any stray non-array value (a single yield object
landing in the slot) made .map undefined and threw
TypeError: completeData?.map is not a function — taking down every
`review` task render.

Both sites now route through a new normalizeYieldData helper (next to
normalizeReportFindings) that returns an array of yield records: it
preserves arrays unchanged, wraps a single object as a 1-element array
so the verdict still renders, and drops primitives. Added a regression
test exercising the result branch, the progress branch, the primitive
fall-through, and the canonical array shape — all of the failing-branch
ones reproduce the crash on the pre-fix renderer.

Fixes #1987
2026-06-06 11:16:44 +00:00
QianYan-Art 55c4efec4e fix(coding-agent): honor ttsr.enabled: false in TtsrManager
`TtsrManager` previously ignored the `ttsr.enabled: false` toggle:
- `addRule()` still registered rules, so `bucketRules` demoted them
  to the TTSR bucket and dropped the rulebook/alwaysApply fallback
- `hasRules()` still returned true, so `AgentSession` entered the
  TTSR matching path on every message_update
- `checkDelta` / `checkSnapshot` (via `#matchBuffer`) still matched
  patterns and could abort the stream and inject system reminders

Gate all three public-ish entry points on `#settings.enabled` so
disabling TTSR short-circuits the whole path. Condition rules fall
through to the rulebook bucket in `bucketRules` instead of being
silently swallowed.

Closes #1767
2026-06-06 04:05:04 -07:00
roboomp 09c8bf0f9a fix(keybindings): ignored stale Ctrl+Q config claims
The Ctrl+Q follow-up fallback should only be removed when a recognized
keybinding action claims that chord. Unknown or stale config entries are
ignored by the keybinding manager and should not suppress a working
follow-up default.

Addresses code review on #1905.
2026-06-06 08:39:05 +00:00
roboomp b866cd8c71 test(tui): widened slash autocomplete settle slack past debounce jitter
The slash-autocomplete-viewport test's settle() slept only 120ms after
each keystroke — 20ms over Editor's 100ms autocomplete debounce. The
post-debounce flow is debounce timer + microtask + a 16ms throttled
render before the new (filtered) list lands, leaving ~4ms of headroom
once the debounce fires. macOS setTimeout jitter reliably consumed that
margin, so the stale unfiltered menu was still being painted at
getViewport() time and pushed the live editor row out of the 6-row
viewport, surfacing 'Expected to contain: "/m"' against the rendered
menu.

Sleep 250ms instead and document the budget so a future trim doesn't
quietly regress the slack.

Fixes #1979
2026-06-06 08:11:41 +00:00
roboomp 9c8a6d208f fix(lsp): handled workspace/workspaceFolders requests
Returned the current workspace folder list when a server queried workspace/workspaceFolders after initialization so advertising the capability no longer left late requests answered with -32601.
2026-06-06 06:38:27 +00:00
roboomp cdcf74bb07 fix(lsp): opened rust analyzer files before workspace wait
Ensured rust-analyzer textDocument/didOpen ran before workspace readiness polling so the server could discover the file's Cargo workspace, and skipped the readiness wait entirely for standalone .rs files outside any Cargo workspace ancestor.
2026-06-06 06:32:41 +00:00
roboomp 17089d1702 fix(lsp): retried rust analyzer status timeouts
Continued rust-analyzer workspace readiness polling across transient analyzerStatus request timeouts while preserving early exit for unsupported methods and server failures.
2026-06-06 06:23:00 +00:00