Commit Graph

1419 Commits

Author SHA1 Message Date
can1357 926dfdea39 fix(coding-agent): restored side-channel IRC auto-reply for busy recipients when async execution is disabled
A subagent's send await:true to Main during a blocking task spawn was a structural deadlock: deliverIrcMessage queues mid-turn messages as step-boundary asides, but Main's next boundary requires the sender's own batch to finish, so the sender always burned the full irc.timeoutMs. Awaited sends now pass expectsReply through IrcBus.send; a mid-turn recipient with async.enabled off generates an ephemeral no-tools reply via runEphemeralTurn, records an irc:autoreply aside in its own history, and delivers it back over the bus with replyTo threading so the sender's waiter resolves.
2026-06-11 18:12:22 +02:00
can1357 965c5d4000 Merge PR #2262: feat(rpc): expose slash command metadata 2026-06-11 17:59:40 +02:00
can1357 76e0b1b9a9 Merge PR #2308: Add external editor for Plan Review annotations 2026-06-11 17:59:08 +02:00
can1357 b2b213f394 Merge PR #2310: Avoid transient syntax highlight work 2026-06-11 17:54:23 +02:00
can1357 43238ce49a ux(coding-agent/modes): updated status line job indicator to use a dedicated icon
- Added a new `icon.job` symbol entry to all symbol sets and exposed it on the theme icon map.
- Updated the status line to render running background jobs with the new job icon and count instead of the previous text label.
- Reordered the job status segment insertion so the job indicator is added to the leading position in the right-side parts.
2026-06-11 16:58:49 +02:00
ben dd71790924 Merge remote-tracking branch 'origin/main' into fix/render-highlight-streaming 2026-06-11 22:48:01 +08:00
ben 8a55ce7b85 Use supplied theme for LSP hover highlighting 2026-06-11 22:41:06 +08:00
can1357 97862e660a feat(coding-agent): added streamed tool-arg reveal with UTF-16-safe incremental rendering
- Added smooth streaming reveal of streamed tool-call args and `{ input }` partial previews.
- Integrated ToolArgsRevealController in EventController to route partial and final args.
- Implemented UTF-16-safe slicing to prevent surrogate-pair splits during reveal boundaries.
- Implemented reveal lifecycle controls to flush or stop streamed arg frames at message boundaries.
- Added tests for monotonic reveal progression, non-smooth immediate output, and flush/stop behavior.
2026-06-11 16:29:33 +02:00
can1357 b25b7cc7c2 fix(coding-agent): fixed committed transcript rerendering after block finalization
- Added transcript and assistant block version tracking for finalized segments.
- Changed committed block reuse logic to require prior finalization and same version.
- Fixed rerendering of committed finalized blocks when version values changed.
2026-06-11 16:21:44 +02:00
can1357 b1338b8f57 feat(tui): added component-scoped rendering with partial compose reuse
- Added `TUI.requestComponentRender`, enabling component-scoped render requests.
- Implemented partial compose reuse by resolving and memoizing affected root segments.
- Fixed component-scoped updates to keep frame-seam rows continuous across partial renders.
- Added component-render and loader tests for reuse, downgrade, and call-count coverage.
2026-06-11 16:13:18 +02:00
Can Bölük aabf5118f7 Merge branch 'main' into fix/render-cpu-core 2026-06-11 16:06:53 +02:00
Can Bölük d35efd67e4 Merge branch 'main' into fix-mcp-oauth-resource 2026-06-11 15:53:15 +02:00
can1357 b0a5b8859d Merge remote-tracking branch 'origin/farm/ace32da7/tree-view-user-message-connectors' 2026-06-11 15:49:26 +02:00
ben 495758b517 Avoid transient syntax highlight work 2026-06-11 20:30:22 +08:00
ben 745c9a9df4 Fix render CPU thrash in long transcripts 2026-06-11 20:27:52 +08:00
Vu Anh Nguyen 026ff8d51a Add external editor for plan annotations 2026-06-11 18:31:59 +07:00
roboomp dcf93a2ee9 feat(tui): added statusLine.transparent setting for terminal-native background
Status line painted theme.statusLineBg across the bar, which renders as
visible dark/black blocks on terminals (Ghostty, transparent themes,
custom palettes) whose background does not match the theme's hardcoded
status-line color. Powerline end caps inherited the same fill so they
also stood out against the surrounding terminal.

The new statusLine.transparent appearance setting (default off) routes
the bar to the terminal's default background via the existing empty-bg
sentinel (\x1b[49m) and drops the powerline end caps, which need a
contrasting fill to bridge into the terminal.

Theme authors can opt in per-theme by setting statusLineBg to '' — the
existing empty-string sentinel already resolves to the same ANSI escape
the new toggle uses.

Fixes #2306
2026-06-11 10:49:32 +00:00
roboomp 5e6f5bf66d fix(tui): scoped chain gutter extension to nearest branch
Only chain rows should force their nearest connector gutter back to vertical.
Inherited gutters from older last-sibling ancestors must stay suppressed so
linear continuations under nested branched grandchildren do not draw floating
vertical lines below unrelated branch connectors.

Updated the TUI renderer, mirrored the HTML export renderer, regenerated the
HTML template, and extended the #2298 regression to cover nested branched
grandchildren with linear continuations.

Fixes #2298
2026-06-11 10:26:20 +00:00
roboomp dca4da87f1 fix(tui): extended chain gutter past last-sibling branches in tree view
The /tree selector and HTML session export rendered chain rows (flattened
user/assistant turns) with bare spaces when their nearest branched ancestor
was the last sibling, breaking the visual connection back to the branch
parent.

Cause: tree-selector.ts and export/html/template.js propagated
`show: !isLast` to descendant gutters, so any chain row under a `└─`
ancestor rendered the gutter as space instead of `│`. Branched
grandchildren correctly need that space to keep standard tree drawing, but
chain-flattened conversation rows lost their anchor.

Fix: at render time, when the row has no connector of its own (chain row),
force the gutter to `│` regardless of the ancestor's `show` flag. Rows
with their own connector still respect the `show` flag so a `│` never
floats below an unrelated `└─` for branched descendants.

Applied identically in tree-selector.ts (TUI) and export/html/template.js
(HTML export, regenerated into template.generated.ts).

Fixes #2298
2026-06-11 10:20:56 +00:00
can1357 681479c8c9 feat(coding-agent): removed startup input buffering and simplified interactive initialization
- Removed `StartupInput` pre-TUI buffering and replay, and read startup input directly each loop.
- Removed pre-startup model/provider/LSP discovery and startup handoff into session setup.
- Updated `WelcomeComponent` to use per-instance tips and show `No recent sessions` when empty.
- Documented task option removals and startup splash/input behavior changes in `CHANGELOG.md`.
2026-06-10 23:42:39 +02:00
can1357 8e237183d6 feat(coding-agent): unified IRC transcript rendering through shared card helper
- Added an exported `createIrcMessageCard` renderer to `tools/irc.ts` for incoming and relay IRC traffic.
- Updated IRC message rendering in `UiHelpers` to use the shared card component instead of manual transcript block construction.
- Included `replyTo` and timestamp-derived age metadata in the IRC transcript card output.
2026-06-10 23:40:38 +02:00
can1357 ad1c17fffd ux(coding-agent): combined ttsr rule notifications into one block 2026-06-10 23:15:40 +02:00
can1357 6ac73655c8 feat(coding-agent): removed resume support and switched task execution to spawn-only
- Removed `resume` from task params and schema, requiring agent and assignment inputs.
- Dropped resume continuation paths in task execution and call rendering, always spawning a new agent.
- Removed the `irc.enabled` setting and computed IRC availability by task-depth rules.
- Updated task follow-up guidance to use IRC messaging/history links instead of `task(resume:)`.
2026-06-10 23:00:03 +02:00
Clark Tomlinson 12732ef07e Merge branch 'main' of github.com:can1357/oh-my-pi into fix-mcp-oauth-resource 2026-06-10 16:03:48 -04:00
Clark Tomlinson df97002df9 fix: include MCP OAuth resource indicator 2026-06-10 15:58:25 -04:00
can1357 9df951d667 Merge remote-tracking branch 'origin/farm/232e592f/fix-thinking-autopending-icon' 2026-06-10 21:50:38 +02:00
roboomp dab23f76a4 fix(tui): replaced thinking.autoPending question-mark glyphs with loading indicators
The status-bar auto-thinking pending indicator used `?`-bearing symbols
in all three presets (`▣?` Unicode, nf-md-help_box Nerd Font, `[?]`
ASCII), which is visually indistinguishable from a terminal missing-
glyph fallback. Users assumed the icon was broken and toggled presets
to no effect.

Replaced each preset with an unambiguous loading indicator:
- Unicode: `⟳` (Clockwise Open Circle Arrow)
- Nerd Font: `\uf1ce` (fa-circle-o-notch)
- ASCII: `[~]`

Fixes #2267
2026-06-10 19:27:19 +00:00
danzaio 32d1142c47 fix(rpc): complete available command lifecycle 2026-06-10 15:33:46 -03:00
danzaio 600117ef65 fix(rpc): route command update frames 2026-06-10 14:43:58 -03:00
danzaio 1f2fcff15f feat(rpc): expose slash command metadata 2026-06-10 14:10:02 -03:00
can1357 0f4f301a02 feat(coding-agent): made waiting job polls displaceable in the TUI
A job poll whose watched jobs are all still running and nothing was cancelled is pure 'still waiting' noise once a newer block exists. ToolExecutionComponent now detects isWaitingPollDetails on the result, leaves the block displaceable, and keeps its rows out of scrollback. EventController tracks the most recent displaceable poll and resolves it (sealing the block) on every event that proves another tool now owns the live region: a new tool call/result, a streaming arg start, an end-of-turn signal, or another job result that itself isn't displaceable. UiHelpers' transcript rebuild applies the same rule. Docs and the new job-poll-displacement test pin the behavior.
2026-06-10 17:53:07 +02:00
can1357 2b28816010 feat(coding-agent): replaced session observer with Agent Hub and inline compaction divider
The session-observer overlay is gone. The Agent Hub (ctrl+s, alt+a, or double-tap left arrow on an empty editor) presents one overlay with two views: a live registry table (status, unread irc count, current task, last activity; j/k to navigate, r to revive, x to abort/release) and per-agent chat (transcript + input line) — submitting revives a parked agent and steers it via the normal prompt path. Main is the ambient chat and stays out of the table.\n\nrenderInitialMessages no longer takes a prebuilt context: every redraw now reaches for AgentSession.buildTranscriptSessionContext() (full-history transcript with each compaction emitted inline at the point it fired, snapcompact frames re-attached on rebuild). UiHelpers drops the deferred-compaction render and the IRC autoreply branch that the new mailbox bus deprecated. CompactionSummaryMessage renders as a slim divider (── 📷 compacted · ctrl+o ──), expanding to the summary + snapcompact frame count. session-manager.buildSessionContext gains a { transcript: true } mode; an exported buildSessionContextFromFile() reads a session file without taking the writer lock so the hub chat view can tail any agent (parked or live). Theme picks up icon.camera + tool.irc symbol entries.
2026-06-10 17:51:42 +02:00
can1357 70fc147d3f feat(coding-agent): enabled startup input capture with queued replay and async submit handling
- Added pre-TUI startup input capture that queued non-empty Enter submissions.
- Replayed queued startup submissions after initialization and injected startup editor text into InteractiveMode.
- Handled startup Ctrl+C to clear typed text and Ctrl+D to exit, with detach restoring terminal state.
- Extended TUI Editor `onSubmit` to accept `void | Promise<void>` for async handlers.
2026-06-10 11:20:26 +02:00
can1357 316722397a Merge pull request #1896: fix(coding-agent): respect user shell for ! shortcuts 2026-06-10 09:52:28 +02:00
can1357 9f7e8551ee fix(coding-agent): guard RPC subagent registry against stale and cross-owner updates 2026-06-10 09:51:47 +02:00
can1357 c67dd4c034 fix(coding-agent): claim MCP OAuth manual input atomically and clear only the owned claim 2026-06-10 09:51:47 +02:00
can1357 280f8be352 fix(coding-agent): cache status-line branch by cwd instead of re-resolving HEAD per render 2026-06-10 09:51:46 +02:00
can1357 da9088964c fix(acp): drain extension prompts before end_turn and fail queued prompts on closed sessions 2026-06-10 09:51:46 +02:00
can1357 ffe3b6afd4 fix(coding-agent): rehome TITLE_SYSTEM.md discovery and reload it on cwd change 2026-06-10 09:51:46 +02:00
can1357 1696047d8e fix(coding-agent): reserve all builtin slash-command names against extension commands 2026-06-10 09:51:46 +02:00
handlecusion 8b9c4fa1b9 fix(coding-agent): respect user shell for shortcuts 2026-06-10 16:07:59 +09:00
can1357 7205289ece Merge pull request #2201: feat(coding-agent): add title system prompt override 2026-06-10 08:32:10 +02:00
can1357 719875ac9a Merge pull request #2163: fix(tui): omit hidden thinking placeholder 2026-06-10 08:32:10 +02:00
danzaio d16b49efdf fix(tui): omit hidden thinking placeholder 2026-06-10 08:31:35 +02:00
Adryel Dearo 10a7bd0b6d refactor(interactive-mode): use MCPManager type import in signatures 2026-06-10 08:31:32 +02:00
Adryel Dearo ecbc2a3c15 feat(coding-agent): add configurable title system prompt for sessions
- add discovery of `TITLE_SYSTEM.md` and pass it through interactive startup context
- route custom title prompts to online and local tiny title generators via protocol
- update session-title docs and changelog with override behavior
- add tests for prompt discovery, forwarding, and fallback to bundled title prompts
2026-06-10 08:31:32 +02:00
can1357 37a5e8a53e Merge pull request #2214: feat: add RPC subagent subscriptions 2026-06-10 08:27:00 +02:00
can1357 1c69483241 Merge pull request #2186: fix(acp): auto-cancel in-flight turn when new prompt arrives mid-flight 2026-06-10 08:26:59 +02:00
can1357 7916c7b909 Merge pull request #2164: fix(plan): skip confirm for empty plan exit 2026-06-10 08:26:58 +02:00
can1357 9fae4fb64d Merge pull request #2160: fix(mcp): accept manual OAuth redirect input 2026-06-10 08:26:58 +02:00