Commit Graph

9801 Commits

Author SHA1 Message Date
zhang17-24 ec0253effd fix(coding-agent): signalled fallback commits with a non-zero exit code 2026-08-06 23:03:25 +08:00
Vinh Nguyen ed4cfeec99 fix(coding-agent): prefer proxy-reported model name over bundled catalog name 2026-08-06 21:57:03 +07:00
roboomp 42322041c4 fix(tui): make ctrl+o expand tool output regardless of focus
app.tools.expand (Ctrl+O) was wired only through the editor's input path,
so when a tool-approval prompt or other selection dialog took keyboard
focus the key was delivered to that component and never reached the expand
handler — a large truncated edit could not be expanded while the user was
deciding whether to approve or deny it.

Promote the shortcut to a global TUI input listener (matching the existing
debug and branch/copy shortcuts) so it fires regardless of focus. It defers
when the main transcript is not the active surface (a fullscreen/anchored
overlay: agent hub, transcript viewer, log viewer, model picker) or when the
focused component rebinds Ctrl+O for its own use (the tree selector's filter
cycle). The editor-scoped handler is removed as a clean cutover.

Fixes #7837
2026-08-06 13:55:34 +00:00
roboomp 8ca2230675 fix(commit): report hook refusals cleanly and honor --push on a clean tree
git.commit() was awaited without a try in both agentic commit routes and the legacy pipeline, so a refusing pre-commit/commit-msg hook escaped as an uncaught GitCommandError. In a bundled build Bun renders that as kilobytes of minified source. The split loop also threw out of its order loop, reporting no progress.

The empty-staged-tree early return fired before args.push was read, so 'omp commit --push' on a clean tree exited 0 without pushing.

Route commit/push failures through a shared execute helper: abortOnGitFailure prints the hook's own message (plus split-plan progress) and throws a CommitAbortedError the command maps to exit 1; pushOrAbort pushes existing commits when the tree is clean and reports refused pushes cleanly.

Fixes #7834
2026-08-06 13:26:58 +00:00
can1357 d9d911a58d fix(coding-agent): kept mid-turn command deferral silent
- Reverted the status-line acknowledgment added for deferred panel
  commands: showStatus mounts a Spacer+Text into the transcript, and any
  mid-turn transcript mount re-renders rows below the growing live block,
  duplicating them in native scrollback (issues #4806/#6767).
- The queue still flushes at every settle, terminal or not.
2026-08-06 14:18:50 +02:00
can1357 52ec788afb fix(coding-agent): enforce exact trusted extension paths 2026-08-06 13:24:29 +02:00
can1357 9628c2e2e6 Merge PR #7754: feat(omp): load only explicitly trusted extensions (@oleksoleksoleks) 2026-08-06 13:24:29 +02:00
kimp 103791f14b fix(coding-agent/tools): preserve native JSON Schema containers 2026-08-06 15:50:22 +07:00
Chess Luo 54bd5cd452 fix(coding-agent): clean up legacy Exa and computer settings 2026-08-06 16:36:04 +08:00
roboomp 181f63ebc0 fix(coding-agent): detect non-English questions in todo reminder guard
The isAwaitingUserAnswer guard that suppresses the todo completion reminder while the agent waits on a user question only recognized English question words and pronouns. A '?'/'?'-terminated Chinese, Japanese, Korean, or Spanish prompt went undetected, so the <system-reminder> interrupted the pause and the model misread it as the user's answer.

isQuestionPromptLine now also treats a question-mark-terminated line containing any non-ASCII character as a pending user question.

Fixes #7803
2026-08-06 06:47:27 +00:00
roboomp bfd1e64bf6 fix(read): normalized recovery paths
Used the resolved cwd-relative path in summary recovery selectors, PDF image handles, and notebook diagnostics.

Fixes #7788
2026-08-06 03:40:10 +00:00
ParadaCarleton ecaefd54d7 fix(tree): stop rendering bookkeeping entries as empty rows
Seven session entry types — title_change, credential_pin, mode_change,
service_tier_change, ttsr_injection, reset_boundary and session_init —
fell through #getEntryDisplayText's default branch to the empty string,
and none of them were in the default view's hidden set. Each one drew as
a bare bullet: a row you cannot read, cannot identify and cannot explain
the gap it leaves in the thread.

Hide them in the default and no-tools views, alongside the settings
entries they resemble, and give every one of them a label for `all`
mode. The default branch now falls back to the entry type rather than
the empty string, so a type added later degrades to a dull row instead
of an invisible one. Service tier renders its per-family map, and says
"(default)" when the tier was cleared instead of printing null.
2026-08-05 19:08:54 -07:00
roboomp 07bb0ac51f fix(acp): resolve session/load across legacy session directories
session/load and session/resume resolved a session only within the
directory re-derived from cwd (SessionManager.list(cwd)), so sessions
stored under the legacy/hashed project-directory scheme (17.2.5+,
reverted in #7656) were unreachable and threw "ACP session not found"
despite existing on disk.

#findStoredSession now falls back to a global by-id scan (listAll,
already used by the fork path) when the cwd-scoped lookup misses. The
session id is globally unique and #openStoredSession reopens the file
with the request cwd, so no directory-scheme knowledge is needed.

Fixes #7779
2026-08-06 02:08:49 +00:00
roboomp 931f61867c fix(tui): gated built-in renderers by tool provenance
- Routed session tool provenance through live and rebuilt transcript render paths.
- Kept same-named extension tools on the generic renderer while preserving native tool rendering.
- Added regression coverage for an external recall result collision.

Fixes #7770
2026-08-06 01:36:25 +00:00
roboomp f5f7b09dd7 fix(vault): pass vault= as top-level obsidian cli option
The vault=<name> argument was appended after the subcommand
(obsidian bases vault=Work), but the Obsidian CLI only honors it as a
top-level option before the subcommand. Placed after, the subcommand
consumed/ignored it and the command bound to whichever vault had window
focus, so vault://<name>?op=... silently queried the wrong vault.

Prepend the vault arg in #runCli and #vaultInfo so it precedes the
subcommand (obsidian vault=Work bases), matching the CLI's documented
top-level-option semantics.

Fixes #7771
2026-08-06 01:36:01 +00:00
roboomp f6c5a43a1f fix(session): handled subscription-cap retry exhaustion
- Classified subscription and plan rate caps as credential-rotatable usage limits while preserving transient per-minute throttles.

- Applied reason-specific backoff to transient rate limits and collapsed exhausted retry attempts behind one budget-labeled terminal error.

- Covered classification, delay selection, persisted transcript aggregation, and retry event propagation.

Fixes #7767
2026-08-06 01:31:22 +00:00
Franklin Castillo 3381b4305a docs(coding-agent): correct js-debug runtime + extraction path per review
Two wording fixes for PR #7759 review:
- debug.md no longer requires `node` on PATH; documents that the adapter
  runs under node if available, else the omp Bun host, matching
  resolveDefaultJsDebugAdapter()'s process.execPath fallback.
- The unavailable message and CHANGELOG now say "extract under
  ~/.local/opt" (not "to ~/.local/opt/js-debug/"), so the archive's
  js-debug/src/dapDebugServer.js lands at the auto-discovered path
  instead of one directory too deep.

Refs #7757.
2026-08-05 18:28:28 -04:00
Franklin Castillo 3afc87926b docs(coding-agent): clarify js-debug-adapter install is not an npm package
The "js-debug-adapter not available" message and the debug doc only
mentioned Mason and JS_DEBUG_DAP_SERVER, leaving users to try
`npm i -g js-debug-adapter`, which 404s: js-debug-adapter is the omp
adapter id, not an installable package. Surface the supported installs
(Mason; the standalone vscode-js-debug release tarball extracted to
~/.local/opt/js-debug/, which resolveJsDebugServerPath already
auto-discovers; or JS_DEBUG_DAP_SERVER) in both the error message and
docs/tools/debug.md.

Refs #7757.
2026-08-05 17:59:59 -04:00
roboomp 3df56506c7 fix(coding-agent): preserve before_agent_start prompt override across base rebuilds
The per-turn systemPrompt returned by before_agent_start was applied only to the agent state, so any base-prompt rebuild firing in the prompt window (context-overflow compaction/promotion, memory promotion, MCP/RPC tool refresh, hindsight MM-TTL refresh) re-pushed the rebuilt base via setSystemPrompt and silently dropped the override before the request.

SessionTools now tracks the active per-turn override and re-applies it on every base rebuild during the turn, clearing it when the turn ends.

Fixes #7755
2026-08-05 21:28:37 +00:00
Alexander Kirilin 9154c56a69 feat(omp): load only explicitly trusted extensions
Co-authored-by: Eric Singer <singer.ericm@gmail.com>
2026-08-05 16:32:45 -04:00
can1357 1d181161b0 style: formatted legacy-pi shim changes with biome 2026-08-05 22:18:05 +02:00
can1357 cac0887fee Merge PR #7708: fix(coding-agent): preserve shell quoting in POSIX $EDITOR commands (@metaphorics) 2026-08-05 22:16:29 +02:00
can1357 a6918d3397 Merge PR #7669: fix(catalog): exposed low effort tier for deepseek-v4-flash (@roboomp) 2026-08-05 22:16:29 +02:00
can1357 ae84aff853 Merge PR #7675: fix(memory): hide disabled memory protocol (@roboomp) 2026-08-05 22:16:28 +02:00
can1357 0474e797da Merge PR #7678: fix(session): migrate hashed session dirs back to legacy names (@roboomp) 2026-08-05 22:16:28 +02:00
can1357 1e3419ebac Merge PR #7688: fix(tui): detach plan approval dispatch from serialized event chain (@roboomp) 2026-08-05 22:16:28 +02:00
can1357 65132b3373 fix(computer): correct Wayland recovery guidance 2026-08-05 22:15:47 +02:00
can1357 21a7a32eb6 fix(plugins): only rewrite imported createRequire calls 2026-08-05 22:15:47 +02:00
can1357 c20d95fecc Merge PR #7730: fix(plugins): resolve createRequire deps in legacy-pi shim (@roboomp) 2026-08-05 22:15:47 +02:00
can1357 677b6f10f5 Merge PR #7735: fix(coding-agent): return ToolInfo[] from getAllTools extension API (@roboomp) 2026-08-05 22:15:46 +02:00
can1357 fa8922b40c Merge PR #7667: fix(web-search): keep GPT-5.6 hosted tools top-level (@roboomp) 2026-08-05 21:50:25 +02:00
can1357 c01d18eb57 Merge PR #7657: fix(read): split semicolon-delimited internal URLs (@revofusion) 2026-08-05 21:50:25 +02:00
can1357 dd1035fe98 Merge PR #7665: fix(model-hub): separate status glyph from role label (@jamesarch) 2026-08-05 21:50:25 +02:00
can1357 f37b06eb3b Merge PR #7680: fix(coding-agent): stringify Bash preview env values (@GratefulDave) 2026-08-05 21:50:24 +02:00
can1357 e6ebfd4d49 Merge PR #7705: fix(coding-agent): validate Linux browser executables before launch (@metaphorics) 2026-08-05 21:50:24 +02:00
can1357 7ef3822de9 Merge PR #7706: fix(coding-agent): fall back to xsel for Linux X11 clipboard reads (@metaphorics) 2026-08-05 21:50:24 +02:00
can1357 07af58df93 Merge PR #7694: fix(task): inherit the aliased role's retry fallback chain for subagents (@enieuwy) 2026-08-05 21:50:24 +02:00
can1357 5fee38bdf8 Merge PR #7696: fix(coding-agent): stop Python eval shell children inheriting the runner control channel; resolve Git Bash on Windows (@metaphorics) 2026-08-05 21:50:24 +02:00
can1357 8b8452d62a Merge PR #7698: fix(coding-agent): build WSL mount fallback paths with POSIX semantics (@metaphorics) 2026-08-05 21:50:24 +02:00
can1357 8e53c6bb50 Merge PR #7699: fix(coding-agent): cancelled stale mcp oauth reauthorization (@brymko) 2026-08-05 21:50:23 +02:00
can1357 3de6dabf98 Merge PR #7740: fix(session): isolate rewind reports by checkpoint cycle (@roboomp) 2026-08-05 21:50:23 +02:00
can1357 6d1bd624df fix(advisor): reset completed refusal cascades 2026-08-05 21:50:23 +02:00
can1357 a11eacc9d6 fix(advisor): drop unreachable status guard 2026-08-05 21:50:23 +02:00
can1357 c19665ef90 Merge PR #7745: fix(advisor): fail a refusal over to the model fallback chain (@mvid) 2026-08-05 21:50:23 +02:00
can1357 b42de04b2a Merge PR #7752: fix(coding-agent): enabled multiline matching in ts-no-tiny-functions condition (@zhang17-24) 2026-08-05 21:50:22 +02:00
can1357 0d243ea425 Merge PR #7746: fix(tui): surface deferred command output instead of failing silently (@mvid) 2026-08-05 21:50:01 +02:00
Mantas Vidutis ebdda043b8 Merge upstream/main into fix/deferred-command-output-feedback 2026-08-05 11:43:17 -07:00
Mantas Vidutis a650938d3f Merge upstream/main into fix/advisor-refusal-fallback 2026-08-05 11:43:16 -07:00
Mantas Vidutis 006933ef06 docs(coding-agent): align presentCommandOutput doc with settle-time flush 2026-08-05 11:13:27 -07:00
zhang17-24 9e62597387 fix(coding-agent): enabled multiline matching in ts-no-tiny-functions condition 2026-08-06 01:59:47 +08:00