Commit Graph

5176 Commits

Author SHA1 Message Date
YeonGyu-Kim e303feefd2 feat(team-mode): add team-layout-tmux for focus+grid pane visualization
Introduce a dedicated module that builds the two-window tmux layout team-mode relies on:
- "focus" window uses main-vertical for the lead-centric view
- "grid" window uses tiled so every member pane is visible at once

createTeamLayout spawns omo-team-<teamRunId>, registers pane titles with
color-coded labels, and returns the focus/grid window IDs plus a
pane-by-member map. removeTeamLayout tears the session down idempotently.
canVisualize short-circuits when TMUX is unset so callers degrade
gracefully outside a tmux context.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 18:33:58 +09:00
YeonGyu-Kim bf7fd7ce67 Merge pull request #3501 from code-yeongyu/fix/perf-omo-in-tree
perf(plugin-init): de-slop in-tree launch — cold init 1.2s → 29ms (43× faster)
2026-04-18 17:35:09 +09:00
Sisyphus 0a808de6a2 fix(auto-update-checker): trigger deferred startup on session.created with parentID guard 2026-04-18 17:23:50 +09:00
YeonGyu-Kim 91848057ea fix(background-agent): fire promptAsync before tmux callback
Awaiting the tmux callback blocked the prompt for up to 10s (waitForSessionReady downstream). During that window the spawned pane ran 'opencode attach' against an empty session and rendered a blank TUI. Users saw 'pane created but attach not working'.

Start promptWithModelSuggestionRetry immediately after session.create, then invoke the tmux callback as fire-and-forget. The session becomes active before the attach client connects.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 17:22:11 +09:00
YeonGyu-Kim c9c1c58c2c fix(tmux-subagent): track pane without blocking on session readiness
waitForSessionReady polled session.status for up to 10s before the pane was registered, but session.status only becomes visible after promptAsync starts. Blocking pane tracking on that signal caused the attach client to see an empty session and render a blank TUI.

Track the pane immediately after spawn, and run the readiness probe in the background purely for observability.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 17:22:01 +09:00
Sisyphus a6a5a08b56 fix(tools/skill): invalidate skill cache at session boundary 2026-04-18 17:21:09 +09:00
Sisyphus a8504be70c test(auto-update-checker): cover session.created trigger with parentID guard 2026-04-18 17:19:18 +09:00
Sisyphus 1d187097f3 test(tools/skill): cover per-session skill cache invalidation 2026-04-18 17:17:23 +09:00
YeonGyu-Kim bd1529825c fix(test): isolate skill factory discovery in ci
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 15:24:19 +09:00
Sisyphus e766354e22 test(auto-update-checker): align zauc-mocks-hook with deferred idle check
The zauc-mocks-hook variant previously asserted that session.created synchronously
ran the startup checks. After auto-update-checker was refactored to defer work to
the first session.idle via scheduleDeferredIdleCheck (5s timer), those assertions
never fired.

Mirror the mock+capture pattern from hook.test.ts so the test drives the deferred
callback synchronously, preserving the original invariants (hasChecked guard,
localDev toast, sisyphus wording) without waiting on real timers.
2026-04-18 15:05:30 +09:00
Sisyphus 8e3f4cc63c fix(tools/skill): harden description pipeline against empty skill list after lazy factory 2026-04-18 14:57:44 +09:00
Sisyphus 0e1a946c1d test(skill-tool): isolate skill discovery spies from other suites 2026-04-18 14:57:30 +09:00
Sisyphus 10b1905f60 test(skill-loader): reset shared skill cache in async resolver tests 2026-04-18 14:57:23 +09:00
Sisyphus 14868430bc test(auto-update-checker): align test triggers with deferred idle check 2026-04-18 14:55:51 +09:00
Sisyphus 61675adbf1 test(slashcommand): isolate command-loader cache between tests 2026-04-18 14:53:14 +09:00
Sisyphus 0ca571e74d Merge branch 'fix/perf-d03' into fix/perf-omo-in-tree 2026-04-18 14:43:55 +09:00
Sisyphus 1fd678f5ad Merge branch 'fix/perf-d02' into fix/perf-omo-in-tree 2026-04-18 14:43:48 +09:00
Sisyphus 85e4f5ecab Merge branch 'fix/perf-q11' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus e47a6aa7f6 Merge branch 'fix/perf-q10' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus b60cad0eb0 Merge branch 'fix/perf-q09' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus d9cea93101 Merge branch 'fix/perf-q08' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus 9f15a09595 Merge branch 'fix/perf-q06' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus c5268af087 Merge branch 'fix/perf-q05' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus 4857666a89 Merge branch 'fix/perf-q04' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus 5faba8d572 Merge branch 'fix/perf-q03' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus 38990ec76f Merge branch 'fix/perf-q02' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus 56d2d2543b Merge branch 'fix/perf-d10' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus 5a20e4060f Merge branch 'fix/perf-d09' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus 36ebafda8c Merge branch 'fix/perf-d08' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus 82ddc9c6f7 Merge branch 'fix/perf-d07' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus 1db481eb9c Merge branch 'fix/perf-d06' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus a227821d27 Merge branch 'fix/perf-d05' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus dc0d64d5f1 Merge branch 'fix/perf-d04' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
Sisyphus b6b898d061 Merge branch 'fix/perf-d01' into fix/perf-omo-in-tree 2026-04-18 14:43:37 +09:00
YeonGyu-Kim edcc9a1e64 fix(todo-continuation-enforcer): defer prune interval to first idle event
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 14:16:40 +09:00
YeonGyu-Kim 1be1cd6e53 fix(tools/skill): make factory pure and stop defeating skill-loader cache 2026-04-18 14:15:14 +09:00
YeonGyu-Kim a068915dc4 test(perf): add plugin init regression budget
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 14:14:55 +09:00
YeonGyu-Kim 40bd3e02d2 test(tools/skill): cover factory laziness and skill-cache invariants 2026-04-18 14:14:00 +09:00
Sisyphus 52512f226a fix(rules-injector): cache directory scan results per session 2026-04-18 14:13:51 +09:00
Sisyphus ed6ac7ea96 fix(session-notification): defer platform detection and background checks 2026-04-18 14:13:12 +09:00
YeonGyu-Kim 89d394ed3e fix(claude-code-command-loader): skip EXCLUDED_DIRS and memoize per directory
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 14:13:12 +09:00
Sisyphus 439957c4cd test(session-notification): cover lazy platform detect and scheduler startup 2026-04-18 14:13:07 +09:00
YeonGyu-Kim 6dc2234d89 fix(shared): memoize detectPluginConfigFile per process
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 14:12:55 +09:00
YeonGyu-Kim 948343ab66 test(shared): cover detectPluginConfigFile memoization
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 14:12:50 +09:00
YeonGyu-Kim 76e8508fa4 fix(runtime-fallback): inject pluginConfig and defer cleanup interval to first event
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 14:12:41 +09:00
YeonGyu-Kim 3d4299445e fix(auto-update-checker): defer npm registry check until first idle
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 14:12:37 +09:00
YeonGyu-Kim 4f59e91d2d test(todo-continuation-enforcer): cover lazy prune interval
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 14:11:50 +09:00
YeonGyu-Kim 443891fdfd test(rules-injector): cover per-session cache isolation and invalidation
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 14:11:39 +09:00
Sisyphus 79eb6c738f fix(shared/project-discovery-dirs): memoize detectWorktreePath per process 2026-04-18 14:11:24 +09:00
YeonGyu-Kim a03faaa278 test(auto-update-checker): cover deferred update check
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-18 14:11:17 +09:00