Skip to content

v4.18.2

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Jul 08:49
23cb030

oh-my-opencode v4.18.2 — Stability & Waiting-Discipline Patch

A stability-focused patch across both editions (OpenCode Ultimate + Codex Light / lazycodex). No config changes, no new flags — upgrade in place.

⏱️ GPT-5.6 stops burning time on empty polls

Long GPT-5.6 sessions were spending real model rounds on nothing — one recent run logged 91 empty stdin polls at ~134k tokens each, plus full re-validation of every criterion on every increment. Ultrawork, ulw-loop, and Hephaestus now carry a waiting discipline: a status poll replays the accumulated context so a long command finishes in one sized call, validation re-runs only when its inputs actually changed (with one final full pass), and subagent spawns require an explicit STOP condition. Applied to both editions.

🔁 Continuation no longer re-arms after you interrupt

Interrupting an agent mid-task could silently re-arm the todo-continuation enforcer and resume against your intent. Continuation boundaries and interruption provenance are now tracked, so an intentional interruption stays interrupted (#6109).

🧩 Plan agents inherit their fallback models

The plan agent now inherits fallback_models from Prometheus, so a planning session degrades to the same backup chain as the rest of your agents instead of dropping fallback entirely. Custom provider fallback priority is also preserved.

📝 Prose @tokens stay intact in skills and commands

Literal tokens like @ts-ignore, @latest, or (@path) in skill/command bodies were being mangled into [file not found: ...] fragments. The resolver now leaves any @token that isn't a real file untouched, while real @file references still inline (#5978).

🧹 Category-skill reminders no longer corrupt tool output

The category+skill reminder was appended to tool.execute.after output, leaking reminder text into Read/Bash/edit results the model saw. It's now delivered as a single synthetic message part (#6001).

🔌 LSP / MCP startup is bounded and cancellable

The LSP proxy, per-user daemon, and codegraph stdio bridge now bound their startup, cancel pending acquisitions on parent close, and propagate closed-stdio errors instead of hanging or swallowing them. Codex's final Boulder gate is enforced and review lanes are bound to the full commit SHA.

🪟 Plugin discovery respects XDG_CONFIG_HOME

loadOpencodePlugins now reuses the shared config-dir resolver, so plugin discovery honors XDG_CONFIG_HOME and treats OPENCODE_CONFIG_DIR additively (custom wins over default) across Linux, WSL, and Windows.

🛠️ Also in this release

  • Hephaestus delegation-table contract aligned; GPT-5.6 Copilot capability + OpenAI fast-tier alias handling.
  • Windows port-probe test flake stabilized.
  • Test-suite hardening: hook dependencies are now injected instead of relying on process-global module mocks, removing cross-file bun test pollution that could produce order-dependent failures.

Minor Compatibility and Stability Release

This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.

  • Rename transition updates across package detection, plugin/config compatibility, and install surfaces.

Commit Summary

  • 23cb030 Merge pull request #6156 from code-yeongyu/release/v4.18.2-source-state
  • d87596e Merge pull request #6114 from code-yeongyu/code-yeongyu/fix-windows-port-utils-flake
  • 64a069b test(utils): stabilize port probe sequence
  • b9d4488 Merge pull request #6155 from code-yeongyu/fix/test-mock-pollution-publish-gate
  • 4a33c1e Merge pull request #6082 from H-TTTTT/feat/6032-copilot-gpt-5-6
  • fb2d5d9 Merge pull request #6152 from code-yeongyu/code-yeongyu/fix-6087-hephaestus-delegation-contract
  • 3962c91 test(models): refresh GPT-5.6 fallback QA
  • c21e8ed test(hooks): make mock.module victims order-independent under single-process bun test
  • 82bf7be fix(hephaestus): align delegation table contract
  • 896ac48 test(models): publish GPT-5.6 fallback QA
  • b7a2e33 Merge pull request #6091 from FNDEVVE/fix/openai-fast-capability-alias
  • 97d45a6 Merge branch 'dev' into fix/openai-fast-capability-alias
  • 400463b Merge pull request #6150 from code-yeongyu/docs/codemode-prompt-orchestration
  • 2704556 fix(models): preserve custom provider fallback priority
  • c75c47e Merge remote-tracking branch 'origin/dev' into sweep/pr-6091-review
  • 4635c0c Merge pull request #5988 from MoerAI/fix/start-work-wrapper-at-path-5978
  • 5201f54 Merge remote-tracking branch 'origin/dev' into sweep/pr-6091-review
  • 0e83e42 Merge pull request #6151 from code-yeongyu/fix/hephaestus-gpt56-waiting-discipline
  • 0478042 Merge pull request #6149 from code-yeongyu/code-yeongyu/fix-6109-continuation-rearm
  • 82bb52a Merge pull request #6095 from c436zhan/fix/plan-fallback-models
  • 8755932 Merge pull request #6084 from Zeno2019/fix/migrate-plural-config-dirs-pattern-a
  • 9c8d1a2 docs(prompts): emphasize code-mode orchestration
  • a5b0080 docs(prompts): sharpen Hephaestus discovery
  • 293065b fix(hephaestus): add GPT-5.6 waiting discipline and bounded re-validation to both editions
  • 3ec4afb Merge pull request #6147 from code-yeongyu/code-yeongyu/fix-6112-final-gate-ledger
  • 425c371 fix(opencode): stop continuation rearming
  • b3dff9c fix(opencode): preserve interruption provenance
  • 1e8013f fix(opencode): track continuation boundaries
  • 714d6cd test(config): isolate plural config directory tests
  • 469702b fix(opencode): wire inherited plan fallbacks
  • 43ea85f Merge pull request #6083 from H-TTTTT/fix/6001-clean-category-skill-reminder
  • 2e5fc71 Merge remote-tracking branch 'origin/dev' into fix/openai-fast-capability-alias
  • 8357bad fix(model-core): restrict gateway alias hosts
  • f2ae890 fix(codex): sync durable review evidence rules
  • bf5f9d6 fix(codex): bind loop review lanes to full SHA
  • ba0383d fix(codex): persist review lane SHA records
  • 40a3981 fix(codex): defer completed plans to final gate
  • 05faacf fix(codex): enforce final Boulder gate
  • a1ceb88 Merge pull request #6146 from code-yeongyu/fix/ultrawork-gpt56-waiting-discipline
  • fb5f2ef Merge remote-tracking branch 'origin/dev' into fix/ultrawork-gpt56-waiting-discipline
  • 9c49524 fix(ultrawork): teach codex directive GPT-5.6 waiting discipline and bounded re-validation
  • 520813e Merge pull request #6144 from code-yeongyu/code-yeongyu/fix-lsp-mcp-startup-timeout
  • 9a00d78 fix(codex): bound component LSP startup
  • 91e8a74 fix(codex): bound aggregate LSP startup
  • 6aa73b8 fix(lsp): bound MCP proxy startup
  • 42f5078 fix(hooks): deliver category-skill reminder as a synthetic text part
  • 99758f1 chore(evidence): re-encode #5978 QA artifacts from UTF-16 to UTF-8 so they render in the PR diff
  • 04d11b0 fix(models): resolve transformed warm-cache models
  • f726545 fix(models): preserve Vercel GPT-5.6 resolution
  • 001b333 feat(models): add GitHub Copilot GPT-5.6 fallbacks
  • b5f385c test(file-reference-resolver): add real-OpenCode QA proving #5978 fix
  • dec381e Merge pull request #6117 from code-yeongyu/code-yeongyu/lsp-daemon-migration-residual
  • 6dde357 fix(codex): preserve final bridge output errors
  • 35bba7c fix(codex): terminate codegraph on bridge failure
  • 1f9d7f0 fix(mcp): release failed-write listeners
  • 61ce4dc fix(mcp): propagate nonterminal stdio errors
  • ed57011 fix(codex): await codegraph stdio writes
  • de0cf88 fix(mcp): handle closed stdio output
  • e1f081c fix(lsp): cancel diagnostic client acquisition
  • 6b3838c test(lsp): keep reuse probe input open
  • 6e9b77a fix(lsp): clean up proxy lifecycle
  • 044bad0 fix(lsp): cancel pending daemon startup
  • 682efe4 Merge pull request #6113 from code-yeongyu/docs/init-deep-20260714
  • 176bfbc test(lsp): label captured QA artifacts
  • 5dcd206 test(lsp): fail smoke on output errors
  • 6977a05 fix(lsp): own proxy cancellation lifecycle
  • 5f20b08 docs(agents): document adapter support edges
  • c0e000b test(lsp): exit cancellation smoke after cleanup
  • 3066ebb test(lsp): trace cancellation smoke cleanup
  • c03123d docs(agents): correct layering boundaries
  • c14acd5 test(lsp): allow bounded Windows smoke teardown
  • ca9b566 test(lsp): use production endpoint in cancellation QA
  • bc482ef docs(agents): sync release and launcher facts
  • 19cb0ad Merge branch 'dev' into docs/init-deep-20260714
  • 1a01f74 test(lsp): stabilize diagnostics freshness timing
  • 8bc8e48 docs(agents): reconcile hierarchy guidance
  • c7f3c68 test(lsp): make cancellation QA clone-safe
  • ba4aa8c test(lsp): track cancellation contract probes
  • be8e34b fix(lsp): cancel proxy requests on parent close
  • 71aa48b fix(hashline): isolate environment parser
  • dc8c11f docs(agents): clarify source snapshot and launchers
  • 3921729 fix(hashline): require explicit test credentials
  • d927c9d docs(agents): correct repository map drift
  • a211ba5 docs(agents): refresh repository knowledge map
  • 7bad050 fix(opencode): inherit plan fallback models
  • 9f38f5c fix(model-core): accept gateway OpenAI fast aliases
  • bfff7d6 test(omo-opencode): cover GPT-5.6 fast routing
  • 8bd1804 test(model-core): pin OpenAI fast snapshot inheritance
  • 622131c fix(model-core): scope GPT-5.6 fast aliases to OpenAI
  • d0f238a fix(plugin-loader): reuse getOpenCodeConfigDirs in loadOpencodePlugins
  • ffcb970 fix(cc-hooks): migrate config-loader to plural config dirs
  • 805be79 fix(skills): migrate skills reader to plural config dirs
  • 85c90e1 fix(agents): migrate agents reader to plural config dirs
  • 6d7ce96 test(config): add contract tests for getOpenCodeConfigDirs additive semantics
  • ba40721 fix(file-reference-resolver): leave unresolved @tokens untouched

Thank you to 4 community contributors:

  • @MoerAI:
    • fix(file-reference-resolver): leave unresolved @tokens untouched
    • test(file-reference-resolver): add real-OpenCode QA proving #5978 fix
    • chore(evidence): re-encode #5978 QA artifacts from UTF-16 to UTF-8 so they render in the PR diff
  • @Zeno2019:
    • test(config): add contract tests for getOpenCodeConfigDirs additive semantics
    • fix(agents): migrate agents reader to plural config dirs
    • fix(skills): migrate skills reader to plural config dirs
    • fix(cc-hooks): migrate config-loader to plural config dirs
    • fix(plugin-loader): reuse getOpenCodeConfigDirs in loadOpencodePlugins
  • @FNDEVVE:
    • fix(model-core): scope GPT-5.6 fast aliases to OpenAI
    • test(model-core): pin OpenAI fast snapshot inheritance
    • test(omo-opencode): cover GPT-5.6 fast routing
    • fix(model-core): accept gateway OpenAI fast aliases
  • @H-TTTTT:
    • fix(models): resolve transformed warm-cache models