github code-yeongyu/oh-my-opencode v3.9.0

4 hours ago

oh-my-opencode v3.9.0

187 files changed. +7,046/−1,891 lines. 3,391 tests. 0 failures.


🔧 Worktree-Aware Planning

/start-work now accepts --worktree — Prometheus creates plans that know which worktree they belong to. Atlas picks up the worktree path in boulder continuation. Parallel feature branches without stepping on each other.

🧠 Smarter Model Routing

Gemini 3 → 3.1 Pro across the board. GPT model detection simplified to name-based matching — cleaner, faster, no more edge cases with o-series. Kimi added to writing category fallback. Hephaestus auto-commit behavior removed — agents no longer commit without your explicit request.

🛡️ Reliability Hardening

Every major control loop got hardened:

  • Ralph Loop: Completion detection scoped to messages since loop start. In-flight guard prevents infinite re-trigger. Race condition between session reset and TUI switch eliminated.
  • Todo Continuation: Blocked todos excluded from incomplete count — no more infinite loops on dependent tasks.
  • Background Agent: Notification queue for idle sessions. Pending notifications cleaned on session delete.
  • Token Limiter: Truncation now respects newline boundaries. No more mid-line cuts in delegated prompts.
  • Compaction: Timeout + cleanup prevents indefinite hangs during rate limiting.

📊 Hashline Edit Benchmarks

New benchmark suite (46 tests) for hashline-edit contributed by @minpeter. Deduplication and validation fixes. Diff context limited to 3 lines to prevent oversized hunks.

🖥️ Platform & Compatibility

Windows: windowsHide on all Bun.spawn calls — no more stray terminal windows. Legacy hardware: baseline CPU variant binaries added. Config: existing user settings preserved when writing new defaults. Formatter config no longer silently dropped.


  • bdd86b1 fix(hephaestus): remove auto-commit policy to prevent surprise commits
  • 76cba9b Merge pull request #2159 from code-yeongyu/fix/ralph-loop-completion-scoping
  • 2955dc8 Merge pull request #2158 from code-yeongyu/fix/hashline-diff-format-compat
  • 3ab4b7f Merge pull request #2157 from code-yeongyu/fix/token-limiter-safe-truncation
  • 3540d1c Merge pull request #2156 from code-yeongyu/fix/background-pending-notif-leak
  • 9bc9dca Merge pull request #2155 from code-yeongyu/fix/ultrawork-thinking-db-write
  • f2a1412 test(ralph-loop): harden completion detector PluginInput mock
  • 190c699 fix(ralph-loop): persist session message count at loop start
  • e17a00a fix(ralph-loop): scope completion detection to messages since loop start
  • c8aa1bb test(hashline-edit): add diff format compatibility tests
  • 911710e fix(token-limiter): truncate at newline boundaries instead of raw slice
  • 050b93b fix(background-agent): clean pendingNotifications on session.deleted
  • 2ffa803 fix(ultrawork-db): write $.thinking alongside $.variant in deferred model override
  • cf97494 Merge pull request #2154 from minpeter/feat/hashline-benchmark
  • 8fb5949 fix(benchmarks): address review feedback on error handling and validation
  • 04f50ba feat(benchmarks): add hashline-edit test suites (46 tests)
  • d1a0a66 feat(benchmarks): add hashline-edit benchmark agent and deps
  • b1203b9 Fix hashline-edit deduplication and validation
  • 5820122 Merge pull request #2093 from code-yeongyu/fix/issue-1966-ultrawork-variant
  • 4efad49 Merge pull request #2149 from code-yeongyu/fix/issue-1815-1733-prompt-token-count
  • 4df69c5 fix(keyword-detector): respect ultrawork config variant instead of hardcoding "max"
  • 2ece7c3 Merge pull request #1963 from MoerAI/fix/multi-issue-1888-1693-1891
  • decff31 Merge pull request #2145 from code-yeongyu/fix/issue-1915-windows-spawn-hide
  • 0526bac Merge pull request #2148 from code-yeongyu/fix/issue-2121-legacy-hardware-baseline
  • 0c62656 Merge pull request #2146 from code-yeongyu/fix/issue-2065-1968-model-updates
  • aff43bf Merge pull request #2143 from code-yeongyu/fix/issue-2017-stop-continuation-cancel
  • 6865cee Merge pull request #2141 from code-yeongyu/fix/issue-2084-ralph-loop-inflight
  • 8721ba4 Merge pull request #2140 from code-yeongyu/fix/issue-2025-blocked-todo-continuation
  • 96d27ff Merge pull request #2134 from code-yeongyu/fix/issue-2064-config-overwrite
  • 017c18c Merge pull request #2138 from code-yeongyu/fix/issue-2062-compaction-timeout
  • fb194fc Merge pull request #2147 from code-yeongyu/fix/issue-2117-preserve-formatter-config
  • 10c25d1 Merge pull request #2144 from code-yeongyu/fix/issue-2087-look-at-hang
  • 86fcade Merge pull request #2142 from code-yeongyu/fix/issue-1922-retain-agent-keys
  • 5bc3a9e Merge pull request #2137 from code-yeongyu/fix/issue-2051-diff-context-limit
  • 810ebec Merge pull request #2136 from code-yeongyu/fix/issue-2044-atlas-task-tool
  • 8f7ed29 Merge pull request #2135 from code-yeongyu/fix/issue-2115-background-output-block
  • 7ff8352 fix(config): preserve formatter config from opencode settings
  • d425f9b fix(models): update Gemini 3 to 3.1 Pro and add Kimi to writing category fallback
  • cc5e9d1 fix(ci): add baseline CPU variant binaries for legacy hardware support
  • 269f37a fix(windows): add windowsHide to Bun.spawn calls to prevent stray terminal windows
  • 1e060e9 fix(look-at): add timeout to sync model retry to prevent process hang
  • ccb789e fix(stop-continuation): wire backgroundManager to cancel running tasks on stop
  • a6617d9 fix(ralph-loop): add inFlight guard and improve completion detection to prevent infinite loops
  • 2295161 fix(ralph-loop): add inFlight guard and improve completion detection to prevent infinite loops
  • 0516f2f fix(todo-continuation): exclude blocked todos from incomplete count to prevent infinite loops
  • df02c73 fix(agents): retain original agent keys in remapAgentKeysToDisplayNames to prevent crash
  • 52658ac fix(config): preserve existing user config when writing new defaults
  • fab820e fix(compaction): add timeout and ensure cleanup to prevent indefinite hangs on rate limit
  • 6f54404 fix(hephaestus): add explicit auto-commit instructions to agent prompt
  • a3169c9 fix(hashline-edit): limit diff context to 3 lines to prevent oversized hunks
  • 0639ce8 fix(atlas): allow task and call_omo_agent tools for subagent dispatch
  • 685b802 fix(background-task): make background_output block=true actually wait for task completion
  • 07e8d96 fix(atlas): allow task and call_omo_agent tools for subagent dispatch
  • c505989 Merge pull request #2095 from code-yeongyu/fix/issue-1934-exit-code-130-timeout
  • 088984a fix: remove Current date from env context since OpenCode already provides it
  • 0b69a6c fix(atlas): replace permanent failure lockout with 5-minute backoff
  • 5fe1640 fix(boulder): count indented checkboxes in plan progress
  • ad01f60 fix: remove seconds-precision time from env context to stop breaking token cache
  • 87d6b2b feat(agents): simplify GPT detection to name-based check, add hephaestus providers (venice uses gpt-5.3-codex)
  • b7b6721 refactor(think-mode): migrate hook from chat.params to chat.message and remove thinking config injection
  • 0c59d2d refactor(ultrawork): remove thinking config injection from model override
  • 52d366e feat(start-work): update template with --worktree flag documentation
  • 9cd6fc6 feat(atlas): inject worktree_path into boulder continuation
  • f872f5e feat(start-work): add --worktree flag support in hook
  • f500fb0 feat(start-work): add --worktree flag parsing from user request
  • 9a94e12 feat(start-work): add worktree path detection
  • 808a50d feat(boulder-state): add worktree_path field to BoulderState
  • a263188 @maou-shonen has signed the CLA in #2131
  • 155ed52 @imwxc has signed the CLA in #2129
  • ed5a2fe @spacecowboy0416 has signed the CLA in #2126
  • cd504a2 @zhzy0077 has signed the CLA in #2125
  • e556c4a @SupenBysz has signed the CLA in #2119
  • be7f408 @east-shine has signed the CLA in #2113
  • 2ab4012 Merge pull request #2111 from code-yeongyu/fix/background-notification-idle-queue
  • 840c612 fix(background-agent): queue notifications for idle parent sessions
  • 235bb58 Merge pull request #2110 from code-yeongyu/fix/boulder-continuation-agent-check
  • ace1790 test(atlas): update agent check tests to match fixed behavior
  • 31eb7f5 Merge pull request #2108 from code-yeongyu/fix/issue-2100-reset-strategy-race-condition
  • 6b5622c Merge pull request #2107 from code-yeongyu/fix/issue-2054-hephaestus-model-opt-out
  • cf0d157 Merge pull request #2106 from code-yeongyu/fix/issue-2049-ultrawork-thinking-config
  • adf6226 fix(agents/utils.test): correct hephaestus github-copilot provider test expectation
  • 9f64e2a fix(agents/utils.test): correct hephaestus github-copilot provider test expectation
  • e00f461 fix(agents/utils.test): correct hephaestus github-copilot provider test expectation
  • da6c54e Revert "fix(model-requirements): add github-copilot to hephaestus requiresProvider"
  • 1d99fdf Revert "fix(model-requirements): add github-copilot to hephaestus requiresProvider"
  • de70c3a Revert "fix(model-requirements): add github-copilot to hephaestus requiresProvider"
  • 5e07dfe fix(atlas): allow Sisyphus as last agent when boulder targets atlas explicitly
  • 2acf6fa fix(model-requirements): add github-copilot to hephaestus requiresProvider
  • 7e58729 fix(model-requirements): add github-copilot to hephaestus requiresProvider
  • 6458fe9 fix(model-requirements): add github-copilot to hephaestus requiresProvider
  • 640d9fb Merge pull request #2109 from code-yeongyu/fix/issue-1815-1733-prompt-token-count
  • fc1b6e4 fix(delegate-task): add token counting and truncation to prevent context overflow
  • a0e57c1 fix(ralph-loop): prevent race condition in reset strategy between session ID update and TUI switch
  • 997db0e fix(no-hephaestus-non-gpt): add allow_non_gpt_model config opt-out
  • 565ab8c fix(ultrawork-model-override): set thinking config object instead of variant string
  • 15519b9 @Pantoria has signed the CLA in #1983
  • b174513 Merge pull request #2099 from code-yeongyu/fix/gpt-5-3-codex-github-copilot-provider
  • 465f5e1 fix: remove github-copilot from gpt-5.3-codex provider list
  • 73453a7 docs(agents): update hook counts 44→46, add hashline-edit documentation
  • fcb90d9 refactor(hashline-edit): replace custom diff with diff library
  • ddf426c @PHP-Expert has signed the CLA in #2098
  • dab2f90 test(run): make completion metadata timing assertion deterministic
  • 99f4c7e fix(hooks): stabilize session notification checks in parallel tests
  • 54d0dcd fix: address code review feedback on PR #1988
  • 159ade0 fix(run): add event watchdog and secondary timeout for hasReceivedMeaningfulWork
  • 7188842 fix: resolve issues #1888, #1693, #1891

Thank you to 3 community contributors:

  • @MoerAI:
  • @CloudWaddie:
    • fix(run): add event watchdog and secondary timeout for hasReceivedMeaningfulWork
    • fix: address code review feedback on PR #1988
  • @minpeter:
    • Fix hashline-edit deduplication and validation
    • feat(benchmarks): add hashline-edit benchmark agent and deps
    • feat(benchmarks): add hashline-edit test suites (46 tests)
    • fix(benchmarks): address review feedback on error handling and validation

Don't miss a new oh-my-opencode release

NewReleases is sending notifications on new releases.