Releases: code-yeongyu/oh-my-openagent
PR attachments
GitHub-hosted pull request attachment assets. Not a product release.
v4.13.0
oh-my-openagent / LazyCodex v4.13.0 - Insane Search, Ultraresearch, and Keep-Building Stability
This release is centered on making agents better at finding truth on the open web and staying useful when the environment gets hostile: blocked pages, flaky providers, stale session wakes, platform packaging edge cases, and distribution channels that wobble at exactly the wrong moment.
Insane Search / Ultimate Browsing
Ultimate Browsing is now part of the shared skill bundle. It brings a layered Insane Search ladder: API and metadata probes first, archive/cache fallbacks, Jina and RSS routes, Naver and media-specific paths, Playwright escalation, TLS impersonation guidance, WAF profiling, and cookie-aware extraction for pages that ordinary fetches cannot reach.
Ultraresearch / Ultrasearch
Ultraresearch now has a claim-ledger verification gate for non-code research. The point is simple: do not just collect links, make claims auditable. Research work can deduplicate hypotheses, escalate blocked sources through Ultimate Browsing, and keep a clearer trail from source to conclusion.
This release is also a shoutout to fivetaku's insane-search / insane-research work and the spirit behind it. Ultraresearch's verification gate is inspired by the insane-research idea; no third-party source is vendored.
Stability Under Pressure
The release hardens parent wake recovery, provider-exhaustion fallback, runtime fallback timing, Codex CodeGraph packaging, LazyCodex install/update behavior, Team Mode worktrees, cleanup safety, Windows test reliability, and release packaging. It also fixes the LazyCodex publish payload path so lazycodex-ai@4.13.0 can ship cleanly alongside oh-my-openagent@4.13.0.
Even when accounts get banned or distribution channels wobble, the building continues. Follow the note here: https://x.com/justsisyphus/status/2068835687311536436?s=20
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.
- Task and tool behavior updates, including delegate-task contract and runtime registration behavior.
- Install and publish workflow hardening, including safer release sequencing and package/install fixes.
Commit Summary
- 7ea3a0b Merge pull request #5515 from code-yeongyu/fix-lazycodex-publish-size-20260622
- 6d1de02 fix(release): keep lazycodex package below npm limit
- c841eb3 Merge pull request #5514 from code-yeongyu/release/v4.13.0-source-state
- 4316044 Merge pull request #5513 from code-yeongyu/code-yeongyu/fix-release-gate-test-slop-20260622
- 9576954 Merge pull request #5512 from code-yeongyu/code-yeongyu/fix-opencode-parent-wake-marker-release-20260622
- 7130090 fix(opencode): release stale parent wake marker
- 552ef20 Merge pull request #5511 from code-yeongyu/code-yeongyu/fix-codex-teammode-duplicate-member-name-20260622
- 92d3629 fix(codex): reject duplicate persisted thread titles
- e46694c Merge pull request #5510 from code-yeongyu/code-yeongyu/fix-ultimate-browsing-insane-search-latest
- 8e84e83 fix(codex): validate persisted team member names
- 27c0712 fix(codex): reject duplicate teammode member names
- b4e91bf shared-skills: update ultimate browsing runtime pins
- 7d6ae82 Merge pull request #5508 from code-yeongyu/code-yeongyu/fix-3886-provider-exhaustion-fallback
- 39f3d45 Merge pull request #5359 from 0804sally/fix/sisyphus-runtime-prompt-family-v2
- 582406a Merge pull request #5377 from niStee/fix/windows-telemetry-tests
- b2e298c Merge pull request #5299 from dongguri-jun/fix/team-delete-approved-active-task
- 40907c7 Merge pull request #5482 from sjawhar/fix/skill-mcp-runtime-config
- f30c3be Merge pull request #5485 from MoerAI/fix/docs-kimi-k2.7-code-model-id
- 3b923b0 Merge pull request #5319 from EvangelosMoschou/fix/5301-call-omo-agent-default-model
- 6bb186e Merge pull request #5468 from EvangelosMoschou/fix/5465-look-at-empty-array
- 84045d7 fix(opencode): retry background provider exhaustion
- e4ac8c1 delegate-task: retry sync poll provider exhaustion
- ce1054b model-core: add provider exhaustion fallback policy
- 85627a2 Merge pull request #5506 from code-yeongyu/code-yeongyu/fix-ultimate-browsing-cookie-domain
- ae0d205 Stabilize Codex cache layout test on Windows
- 77b012c fix(sisyphus): rebuild whole prompt for runtime model family (#5297)
- 5d3e9df Fix Codex Python inventory for cookie domain helper
- c2a4db6 Merge pull request #5501 from code-yeongyu/code-yeongyu/fix-4721-run-json-parent-wake
- fb3aedf Remove ultimate browsing Python type suppressions
- 3b326c7 Fix ultimate browsing cookie domain matching
- 991363b fix(opencode): refresh run marker after wake requeues
- 48c58e6 Merge pull request #5503 from code-yeongyu/code-yeongyu/fix-ultimate-browsing-template-catches
- 1209335 Merge pull request #5502 from code-yeongyu/worktree-teammode-worktree-plan-leader
- 3e8e573 fix(codex): teammode worktree-add idempotency robust on Windows 8.3 paths
- 45c62ee test(codex): classify generated browsing template test
- 1718c5b fix(ultimate-browsing): fail closed on forged optional modules
- e88741a test(codex): make teammode worktree tests cross-platform
- 838d1fe test(ultimate-browsing): cover template warning fallbacks
- 13638ef Merge pull request #5500 from code-yeongyu/code-yeongyu/fix-sparkshell-guidance-misuse
- e6c32c3 fix(codex): teammode integrate surfaces git's real error, not a fake conflict
- 10a702b fix(opencode): refresh run marker after scheduled wakes
- 279e53f fix(ultimate-browsing): report template best-effort failures
- 5822467 test(codex): assert sparkshell guidance contracts
- e25b068 docs(codex): teammode leader orchestrates, plus worktree + ulw-plan guidance
- 7e1fac8 feat(codex): automate teammode worktrees with merge-commit integration
- 4f4b939 fix(opencode): keep run marker active for parent wakes
- 3456810 fix(codex-ultrawork): make sparkshell-first guidance explicit
- 5b739fe fix(codex-rules): clarify sparkshell command guidance
- 8652c68 Merge pull request #5498 from code-yeongyu/code-yeongyu/fix-ultimate-browsing-cookie-path-types-20260622
- 8a13d95 fix(shared-skills): type cookie browser metadata
- d89716b Backfill verified CLA signature for open PR
- d4dab4a Backfill remaining verified CLA signatures
- ea5612e Merge pull request #5493 from code-yeongyu/code-yeongyu/fix-codex-hook-state-toml-quoting-20260622
- ef87103 Merge pull request #5494 from code-yeongyu/code-yeongyu/fix-lazycodex-doctor-routing-20260622
- 2968433 Restore CLA signatures and backfill verified signers
- 9f6b264 Merge pull request #5495 from code-yeongyu/code-yeongyu/fix-lazycodex-cleanup-safety-20260622
- 1ff245c Backfill verified CLA signatures from blocked PRs
- 13d833e Merge pull request #5497 from code-yeongyu/code-yeongyu/fix-tui-opentui-solid-types-20260622
- 174a6a6 @PaoloC68 has signed the CLA in #5462
- 9ec5556 Merge pull request #5496 from code-yeongyu/feature/codegraph-cross-platform-bundle
- b63a950 fix(codex): clean quoted hook state tables
- e4aafc1 fix(codex): harden lazycodex doctor delegation
- 671b5df fix(tui): declare optional OpenTUI solid runtime
- 51b23f7 test(codex): smoke codegraph mcp initialize
- cbac5fe fix(opencode): report skipped cleanup targets
- 0b86ce5 fix(codex): guard cleanup removal targets
- 44211ef Merge pull request #5489 from code-yeongyu/feature/codegraph-cross-platform-bundle
- cd5392f fix(codex): route lazycodex doctor to lcx
- 8a19722 fix(codex): match equivalent TOML hook state headers
- c8a21bc Merge pull request #5492 from code-yeongyu/code-yeongyu/fix-ultimate-browsing-release-blockers-20260622
- 154a585 Merge pull request #5491 from code-yeongyu/code-yeongyu/fix-runtime-fallback-timeout-awaiting-20260622
- bf689fc Merge pull request #5490 from code-yeongyu/code-yeongyu/fix-release-diff-check-whitespace-20260622
- 5484425 test(codex): relax cache install timeout on windows
- 318b028 fix(codex): clean codegraph node runtime notice whitespace
- 557ad1e fix(codex): ship codegraph node runtime notices
- 4c3f221 test(codex): split codegraph worker coverage
- bb7da14 test(codex): split codegraph trust boundary coverage
- 4e1db88 fix(ultimate-browsing): close cookie export review gaps
- 15931c9 fix(codex): harden codegraph runtime packaging
- 4767c22 Merge pull request #5488 from code-yeongyu/code-yeongyu/fix-subagent-wake-main
- 5bd5864 fix(delegate-task): bound silent parent wake retry
- 7425d8a test(codex): inventory ultimate-browsing python split
- a72b60b refactor(ultimate-browsing): split fetch chain modules
- 1c59b01 fix(ultimate-browsing): harden cookie handling
- deaefaf fix(runtime-fallback): rearm timeout after blocked escalation
- bb90c46 fix(shared-skills): remove release diff whitespace
- 6929e97 docs(ultimate-browsing): clarify stealth and cookie handling
- 9d04ce3 build(codex): refresh codegraph cli bundle
- b00947f fix(codex): share codegraph provisioning locks
- 1798485 fix(codex): ship codegraph runtime metadata
- 6ca3468 fix(codex): keep codegraph mcp handshake alive
- f174c0c fix(delegate-task): requeue parent wake after silent no-output turn
- f7536d7 Merge pull request #5487 from code-yeongyu/feature/teammode-default-frequent-comms
- eec3b88 test(codex): lock teammode constant-communication protocol contract
- e4eb4cb feat(codex): make teammode members push constant updates by default
- e88e4b4 fix(docs): use opencode-go/kimi-k2.7-code in recommended model stacks (fix...
v4.12.1
CodeGraph Starts Cleaner
CodeGraph now handles fresh or uninitialized workspaces with better guidance instead of leaving users staring at a missing-index failure. LazyCodex also provisions the CodeGraph runtime before MCP serve, including the Node 26 path, so Codex sessions can recover more gracefully when the binary is not already in place.
Quieter Codex Session Hygiene
LazyCodex now nudges thread titles without creating noisy or overlong session names, and title-hook failures are surfaced instead of disappearing silently. The new teammode hook wiring keeps those checks isolated and testable.
Less Background-Task Confusion
Background task launch paths no longer tell users to poll background_output when that instruction is not actionable. Delegated and background agent flows now produce cleaner handoffs with less misleading follow-up text.
Ultraresearch Team Coordination
Ultraresearch now prefers a cooperating team shape when the harness supports it, and its raise-law guidance tells workers to broadcast leads immediately. That makes broad research runs less likely to hide useful findings inside isolated worker context.
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- Task and tool behavior updates, including delegate-task contract and runtime registration behavior.
Commit Summary
- d0dc6f6 Merge pull request #5452 from code-yeongyu/release/v4.12.1-source-state
- 6a949f0 Merge pull request #5450 from code-yeongyu/code-yeongyu/shorten-codex-thread-title-nudge-20260620
- 0e5e78d fix(codex): shorten thread title nudge
- 6ebbda9 Merge pull request #5449 from code-yeongyu/feature/ultraresearch-teammode-broadcast
- 5fa28fe feat(ultraresearch): prefer cooperating team + raise-law broadcast
- aeb6ab1 Merge pull request #5447 from code-yeongyu/code-yeongyu/fix-codex-thread-title-hook-20260620
- e8b5b14 Merge pull request #5448 from code-yeongyu/code-yeongyu/fix-codex-codegraph-bootstrap-node26
- d3db64d fix(codex): surface thread title hook failures
- c9360fc fix(codex): handle pending thread creation titles
- 789ea46 test(codex): split CodeGraph node support cases
- a34b85d fix(codex): nudge thread titles after create_thread
- 0fc4811 fix(codex): provision CodeGraph bootstrap on Node 26
- 5b187e1 Merge pull request #5443 from code-yeongyu/code-yeongyu/codegraph-init-guidance
- dc167b3 test(codegraph): allow Windows drive prefixes
- 1f3d21e test(codegraph): normalize guidance path assertions
- f2072db fix(codex): register codegraph guidance hook
- 785d0f3 fix(codex): emit codegraph post-tool guidance
- 264e28c fix(opencode): append codegraph init guidance
- c0e9889 fix(utils): guide uninitialized codegraph workspaces
- 13a4172 Merge pull request #5406 from LilMGenius/lazycodex/fix-codegraph-missing-binary
- fe7864b Merge pull request #5253 from EvangelosMoschou/fix/5221-kimi-k2-background-polling
- 1620618 Merge pull request #5442 from code-yeongyu/fix/restore-ultraresearch-skill
- a692400 chore(codex): refresh plugin lockfile version
- ca21009 fix(codex-installer): sync packaged skills during cache install
- cecaa00 fix(omo-codex): provision CodeGraph during MCP serve
- 97d5b22 fix(background-task): remove background_output polling CTA from all launch paths
Thank you to 3 community contributors:
- @EvangelosMoschou:
- fix(background-task): remove background_output polling CTA from all launch paths
- @LilMGenius:
- fix(omo-codex): provision CodeGraph during MCP serve
- @MoerAI:
v4.12.0
Codex Has Teams Now
Codex can now work as a coordinated team, not just as one session plus isolated helpers. LazyCodex ships a Codex-only teammode skill that creates a named group of durable Codex threads under the current session as leader, records the team in .omo/teams, gives each member a concrete ownership area or perspective, and keeps shared artifacts on disk so the work can be inspected, resumed, archived, or deleted cleanly.
Team members are real Codex threads created through codex_app.create_thread, not ephemeral spawned agents. The bundled controller script owns team.json, guide.md, member bindings, status updates, artifacts, optional worktree paths, and cleanup. That makes team work useful for jobs where multiple perspectives need to coordinate with each other: code areas that overlap, release reviews, adversarial audits, broad investigations, and long-running parallel work where the leader still needs a durable control plane.
Team Mode Demos
GitHub usually plays the GIF previews inline. If your client freezes large GIFs, use the MP4 originals below; they preserve the source video quality and open in the browser's native video player.
Demo 1
Demo 2
Safer LazyCodex Installs and Marketplace Payloads
LazyCodex installation is stricter about what it activates. Hook command targets are validated, Windows hook paths are covered, marketplace installs preserve their update and re-approval boundary, Bun global installs are detected more reliably, and Codex plugin hooks are now shipped as split per-hook manifests with display metadata that is easier to inspect.
Team Mode Guardrails
The team workflow now rejects weak or unsafe composition: single-member teams, duplicate member focus after trimming, spawn_agent substitutes, symlink writes into team guides, symlink-based delete escapes, and unresolved state paths. Members are also instructed to communicate frequently with small status updates, which makes the leader session much less blind during parallel work.
More Reliable OpenCode Runtime Wakes
OpenCode-side parent wake handling and delegate-task polling were hardened around stale sessions, live-route probes, placeholder sleep waits, terminal errors, background output polling, and plugin component reloads. The practical effect is fewer silent stalls when background work finishes or internal wakes race with session state.
Release Operations Now Fail Earlier
The publish workflow now gates npm publication on the release source-state PR landing first. If protected-branch checks or branch rules block that PR, publishing stops before packages are pushed to npm, preventing a repeat of the half-published v4.12.0 failure mode.
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- Task and tool behavior updates, including delegate-task contract and runtime registration behavior.
- Install and publish workflow hardening, including safer release sequencing and package/install fixes.
Commit Summary
- 197dcbe Merge pull request #5441 from code-yeongyu/release/v4.12.0-source-state-20260620
- eae7cff test(publish): cover release state gate dependencies
- 3354198 fix(publish): gate npm publish on release state merge
- 6544c2d Merge pull request #5440 from code-yeongyu/release/v4.12.0-source-state-20260620
- f7ccce7 Merge pull request #5436 from code-yeongyu/code-yeongyu/fix-codex-qa-app-server-empty-catch-20260619
- 837a433 fix(opencode): surface terminal errors after internal wakes
- 69efd37 fix(opencode): reload plugin components per config call
- 8fa2432 fix(codex-installer): validate Windows hook command targets
- 1a7db73 test(codex): split teammode safety fixtures
- b8bb8f2 fix(codex-qa): report app-server cleanup errors
- 9bd10f3 Merge pull request #5433 from code-yeongyu/code-yeongyu/fix-opencode-plugin-components-retry-20260619
- ef90216 Merge pull request #5432 from code-yeongyu/code-yeongyu/fix-codex-teammode-composition-20260619
- 5b36860 fix(opencode): avoid caching fallback plugin agents
- 9d54872 fix(opencode): retry plugin component load failures
- 4dd556d fix(codex): enforce teammode composition invariants
- 9ccd57c Merge pull request #5431 from code-yeongyu/code-yeongyu/fix-codex-hook-manifest-publish-20260619
- 9b451ac test(publish): avoid catch helper in validator pin
- 0936bb2 fix(publish): stage split codex hook manifests
- c6b2286 Merge pull request #5430 from code-yeongyu/code-yeongyu/fix-opencode-wake-probe-wait-live-dispatch
- 9cc9242 test(qa): cover wake probe usage errors
- 46860f9 test(qa): harden opencode wake split verdict
- e12a08f Merge pull request #5429 from code-yeongyu/code-yeongyu/fix-codex-qa-hook-false-green
- 8bc5a40 test(qa): fail release probes on hidden hook regressions
- 54cb8f0 Merge pull request #5428 from code-yeongyu/code-yeongyu/fix-codex-installer-release-blockers
- 282cbd5 Merge pull request #5427 from code-yeongyu/code-yeongyu/fix-codex-teammode-delete-symlink
- 076494b fix(codex-installer): validate hook targets during activation
- eb62bc3 fix(codex): guard teammode delete symlink paths
- fdffe50 Merge pull request #5426 from code-yeongyu/code-yeongyu/fix-opencode-wake-split-qa
- eb3d74c Merge pull request #5425 from code-yeongyu/code-yeongyu/fix-codex-start-work-boulder-parity
- 03016b0 Merge pull request #5424 from code-yeongyu/code-yeongyu/fix-codex-teammode-safety
- 2dce46f Merge pull request #5423 from code-yeongyu/code-yeongyu/fix-lazycodex-bun-global-update
- fe327c3 fix(codex): trust resolved teammode state paths
- 6a1b784 test(opencode-qa): clarify wake split probe metrics
- a634dde fix(codex-installer): detect bun global lazycodex updates
- cc48c8f fix(codex-start-work): align boulder reader parity
- 137dd3b fix(codex): reject trimmed duplicate teammode members
- 6e199bc fix(codex): refuse teammode guide symlink writes
- bf97ec7 Merge pull request #5422 from code-yeongyu/feat/work-with-pr-auto-merge
- 815fa4a docs(work-with-pr): default to auto-merge and wait until actually merged
- 0c1a18f Merge pull request #5421 from code-yeongyu/feat/codex-teammode-frequent-comms
- f891995 feat(codex): teammode members over-communicate; drop the teammode tests
- b5b9058 Merge pull request #5420 from code-yeongyu/code-yeongyu/fix-ci-background-output-poll
- bbed944 test(omo-opencode): relax background output poll timing
- ee529e2 Merge pull request #5419 from code-yeongyu/fix/codex-teammode-symlink-exec
- 67ff48b Merge pull request #5418 from code-yeongyu/code-yeongyu/fix-codegraph-node26-binary
- eb03216 fix(codex): make teammode team.mjs runnable through a symlinked install
- fa1af86 build(codex): refresh codegraph wrappers
- 0b4b580 fix(codex): prefer node support hint for codegraph
- a73ce99 Merge pull request #5417 from code-yeongyu/feat/codex-teammode-min-members
- 82ede97 fix(codex): require codex_app.create_thread for every member, forbid spawn_agent
- 7ff14a3 docs(codex): require 2+ members, aspect-split responsibility, and disband
- 45fd3a3 feat(codex): flag a teammode team with fewer than two members
- 3351820 Merge pull request #5416 from code-yeongyu/feat/codex-teammode-script-v2
- 52a2826 test(codex): skip the teammode symlink test when symlinks are unavailable
- 1607f14 Merge pull request #5412 from code-yeongyu/code-yeongyu/fix-5401-stale-parent-wake
- 830d25f refactor(codex): rewrite teammode skill to the script-driven v2 model
- e6bcead feat(codex): add cross-platform teammode controller script
- b8bb874 fix(opencode): probe live route health endpoint
- 2c68798 fix(background-agent): recheck parent wake safety
- 4483530 Merge pull request #5410 from code-yeongyu/code-yeongyu/fix-5397-agent-config-hot-path
- 5d4e79c Merge pull request #5415 from code-yeongyu/code-yeongyu/fix-lazycodex-issues-59-60
- 9afc426 Merge pull request #5411 from code-yeongyu/code-yeongyu/fix-5389-sync-poller-all-complete
- dcc6c6e Merge pull request #5413 from code-yeongyu/code-yeongyu/fix-5391-sisyphus-sleep-loop
- ef426b1 test(omo-opencode): split config cache coverage
- 0ebae5f Merge pull request #5414 from code-yeongyu/codex-teammode-skill
- ab5e8ae fix(opencode): guard placeholder sleeps during pending wakes
- b283de2 fix(delegate-task): harden sync poller wake completion
- 2ed4af0 fix(background-agent): release stale unknown parent wake deferrals
- 7222115 feat(codex): add teammode skill
- 795b65c Merge pull request #5409 from code-yeongyu/code-yeongyu/fix-5183-bun-global-trust
- 5f3c9bc fix(omo-opencode): cover config cache dependencies
- 17258d6 Merge pull request #5098 from sjawhar/fix/anthropic-fable-mythos-adaptive-thinking
- 7644821 fix(opencode): block placeholder sleep waits after delegation
- 6108611 fix(delegate-task): complete sync poller after internal wake
- 195b1b3 fix(omo-opencode): cache resolved config agents
- 4095df8 fix(codex): handle bun global lazycodex trust
- a343af7 Merge pull request #5407 from code-yeongyu/fix/ulw-plan-interview-honor-explicit-ask
- 9eaa5c0 fix(codex): bundle start-work stop cli
- 69a2562 fix(codex): trust provisioned codegraph launcher
- 4e5639f fix(ulw-plan): align the routing summary with the owner-decision term
- ac421c9 fix(ulw-plan): mirror the interview fix to the OpenCode edition (shared-skills)...
v4.11.1
GPT/Codex Release Hardening
v4.11.1 keeps the 4.11 line installable and safe after the release-gate fixes. GPT 5.3 Codex now stays on the native Sisyphus path, LazyCodex marketplace installs keep the marketplace upgrade and hook re-approval boundary, and CodeGraph MCP paths are normalized before the first Codex session can load them.
Safer Agent and Skill Behavior
Shared model detection now handles recent provider naming variants more reliably, and the programming skill again treats files over 250 pure LOC as a hard architecture defect instead of a soft smell. This keeps generated agent behavior aligned with the release gate.
Verified Harness Surfaces
Before publish, the release gate re-ran Codex live app-server hook proof, Codex install verification, Codex hook-unit probe, Codex TUI smoke, OpenCode TUI smoke, test:codex, typecheck, and focused agent/shared-skill tests.
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
- b251180 Merge pull request #5390 from code-yeongyu/release-v4.11.1-state
- 0de6bd5 Merge pull request #5387 from code-yeongyu/fix-codex-marketplace-auto-update
- 6c21a96 Merge pull request #5388 from code-yeongyu/fix-codex-codegraph-mcp-prebootstrap
- 366ce49 Merge pull request #5386 from code-yeongyu/release-gate-programming-skill-loc-policy-154230
- 72fda24 fix(codex): normalize codegraph mcp path before bootstrap
- f910e15 Merge pull request #5385 from code-yeongyu/fix-gpt53-codex-sisyphus
- d11ac81 fix(codex): preserve marketplace auto-update boundary
- 86ed9eb fix(programming-skill): restore hard LOC gate
- a83ae13 fix(agents): route gpt-5.3-codex as native Sisyphus
- 5d6ed84 Merge pull request #5384 from code-yeongyu/code-yeongyu/main-dirty-cleanup-tests
- 5d5db24 test(atlas): reset prompt reservations between cases
- cca7140 fix(model-core): normalize non-Claude model version separators
- 9a856a4 Merge pull request #5382 from code-yeongyu/code-yeongyu/fix-lazycodex-56-codegraph-mcp-path
- 40be76f Merge pull request #5381 from code-yeongyu/feat/glm-prompts-codex-version-sync
- cb36172 fix(codex): stamp codegraph MCP path during bootstrap
- 30d36a8 fix(agents): route ultrawork GLM prompt
- a249402 feat(agents): add GLM prompt variants
- 9952f97 chore(codex): sync generated installer version
- bae5484 Merge pull request #5380 from code-yeongyu/refactor/programming-skill-code-smells
- b9ab1fa refactor(programming-skill): replace absolute 250 LOC rule with code-smell review triggers
- 3606eea Merge pull request #5379 from code-yeongyu/fix/codex-codegraph-startup-hook-output-valid
- 47af76f fix(codex): make codegraph startup hook output valid
- 229a367 Merge pull request #5376 from code-yeongyu/worktree-init-deep-lsp-codegraph
- 28eab54 fix(init-deep): drive real LSP + codegraph tools instead of a non-existent API
- 201b181 Merge pull request #5374 from code-yeongyu/fix/codex-auto-update-marketplace-installs
- 9109654 fix(codex-auto-update): update marketplace installs
- af29490 Merge pull request #5321 from LilMGenius/fix/5285-start-work-bare-session-id
- a29b500 Merge pull request #5209 from EvangelosMoschou/fix/hasGA1MContext-fable-mythos
- 60cef59 Merge pull request #5373 from code-yeongyu/fix/sparkshell-context-output
- 51558ac Merge pull request #5190 from WhiteGiverMa/fix/gh-5189-parent-wake-noreply-deadlock
- a327b7c docs(sparkshell): document context ranking
- 4f608b9 fix(sparkshell): clarify context-only input
- 41cb2f8 fix(sparkshell): stop printing session context
- f6b9ace Merge pull request #5362 from code-yeongyu/release/v4.11.0-state
- 4425f17 fix(start-work): pass bare session id to SDK session.messages
- 4de9535 test(model-core): fix misleading test name
- d4c5226 fix(model-core): add claude-fable-5 and claude-mythos-5 to hasGA1MContext
- 407a134 fix(background-agent): schedule re-flush for reply-required wake after activity window
Thank you to 4 community contributors:
- @WhiteGiverMa:
- fix(background-agent): schedule re-flush for reply-required wake after activity window
- @EvangelosMoschou:
- fix(model-core): add claude-fable-5 and claude-mythos-5 to hasGA1MContext
- test(model-core): fix misleading test name
- @LilMGenius:
- fix(start-work): pass bare session id to SDK session.messages
- @MoerAI:
v4.11.0
v4.11.0: 357 commits of agent-system hardening
This is a large release: 357 commits, 2,494 files changed, 234,053 insertions, 82,362 deletions, with roughly 63 feature commits, 120 fix commits, and 34 refactor commits since v4.10.0. It is the release where oh-my-openagent becomes more visibly multi-harness: OpenCode, Codex Light / LazyCodex, shared skills, MCP tooling, and release automation all moved forward together.
CodeGraph-first development
CodeGraph is now part of the default agent workflow, with safer Node runtime selection and portable MCP startup. Agents can lean on indexed code intelligence before falling back to slower text search, while unsupported runtimes now degrade cleanly instead of breaking bootstrap.
Monitor tools and better live command awareness
The new monitor feature brings background command tracking into the OpenCode plugin surface. It adds monitor tools, session-aware output injection, schema/docs coverage, teardown cleanup, memory caps, and ReDoS hardening around output filters.
TUI sidebar and session visibility polish
The TUI sidebar work tightened project mirroring, safe title handling, shutdown behavior, and privacy redaction. Active work should be easier to scan without leaking private goal text or leaving stale mirror state behind.
Prometheus, ultrawork, and ulw-loop are cleaner
Prometheus / ulw-plan moved toward a path-backed, model-agnostic prompt structure. The ultrawork and ulw-loop quality gates now have stronger outcome criteria, safer review guidance, essential checkpoint handling, and cleaner packaged Codex instructions.
LazyCodex and Codex Light release maturity
LazyCodex gets a synchronized marketplace payload, versioned plugin metadata, stricter install and hook packaging checks, isolated Codex QA, and live published-package smoke coverage. The release also cleans up stale reviewer/agent surfaces and improves Windows Git Bash / installer behavior.
Packaging and release reliability
The release pipeline now verifies main packages, platform packages, Codex compatibility, trusted publishing, and LazyCodex sync more thoroughly. v4.11.0 ships on oh-my-opencode, oh-my-openagent, lazycodex-ai, and the platform binary packages.
Upgrade notes
Ast-grep is no longer shipped as the old built-in MCP path; it is provisioned through the shared ast-grep skill / sg resolver flow. After upgrading, restart your agent session and let the installer/session hook provision the new path. CodeGraph and the TUI sidebar are now more prominent by default, so teams with custom configs should review their disabled tools/hooks if they were relying on the older layout.
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.
- Task and tool behavior updates, including delegate-task contract and runtime registration behavior.
- Task-system default behavior alignment so omitted configuration behaves consistently across runtime paths.
- Install and publish workflow hardening, including safer release sequencing and package/install fixes.
Commit Summary
- f6b9ace Merge pull request #5362 from code-yeongyu/release/v4.11.0-state
- 61e56e8 Merge pull request #5361 from code-yeongyu/revert-5316-no-fix
- 241828b Revert "Merge pull request #5316 from 0804sally/fix/sisyphus-runtime-prompt-family"
- 45f4c13 Merge pull request #5360 from code-yeongyu/code-yeongyu/codegraph-node-runtime
- 377c66a fix(codegraph): select safe node runtime before bootstrap
- 568692a Merge pull request #5354 from code-yeongyu/feat/contributing-dx-overhaul
- 31772aa fix(dev-env): guard script exec-bit assertions to non-Windows (CI test windows-latest)
- 6cd0df6 feat(dev-env): qa-docker.sh shell/serve/codex(app-server)+tui modes; simplify QA refs to bring-up-and-use
- c04b129 Merge pull request #5347 from code-yeongyu/perf/test-ci-runtime
- da0386b test(script): require read-only build job
- 7d37984 Merge pull request #5356 from code-yeongyu/docs/work-with-pr-atomic-pr-guidance
- 81db3c6 docs(skills): make atomic PRs + parallel multi-PR work first-class in work-with-pr
- 65a2e87 test(script): normalize workflow line endings
- 022d434 feat(dev-env): containerize opencode-qa/codex-qa via qa-docker.sh (latest opencode+codex, host config copied, --rm cleanup)
- f59bbdd test(script): expect build to run independently
- fc8f2e2 Merge pull request #5016 from code-yeongyu/test/codex-skill-packaging-overlap
- fafdcd6 test(omo-codex): consolidate skill packaging contracts
- 8990cac test(omo-opencode): virtualize auto-retry dispatch waits
- f5a6bef test(omo-opencode): virtualize watchdog waits
- 63d3cfc test(omo-opencode): virtualize background wake waits
- 525a687 test(omo-opencode): virtualize runtime fallback waits
- f86887a test(omo-opencode): remove overload continuation sleep
- c001cb4 test(omo-opencode): virtualize todo continuation waits
- 0ed6a8f docs(agents): document dev env + keep-in-sync directive; share via CLAUDE.md
- af72a16 feat(dev-env): wire codex/cursor/claude and devcontainer to shared scripts
- b3864c7 feat(dev-env): add shared agent setup/cleanup/qa-sandbox scripts
- 41b3dd0 docs(contributing): correct inaccuracies and document cross-harness dev env
- 2c80cd3 Merge pull request #5349 from code-yeongyu/fix/tui-sidebar-qa-catches
- bd5138b Merge pull request #5316 from 0804sally/fix/sisyphus-runtime-prompt-family
- 6c609bf Merge pull request #5352 from code-yeongyu/chore/ci-node24-actions
- fa27aa9 Merge pull request #5351 from code-yeongyu/fix/block-master-pr-autoclose
- 5185481 fix(tui-sidebar): label redacted active goals as private
- 87f9bbf fix(tui-sidebar): preserve safe background task titles
- 4f68b21 fix(tui-sidebar): canonicalize mirror project paths
- 6e3336b docs(agents): add AGENTS.md for 10 core/MCP/skills packages + refresh hub
- 437922b fix(codex): skip codegraph MCP on unsupported Node
- 85a9119 Merge pull request #5224 from acamq/fix/sync-subagent-deliverable-and-wake-gate
- 057cea1 Merge pull request #5340 from code-yeongyu/feature/codegraph-first-astgrep-skill
- de5b85f test(utils): pin linux platform in sg-resolver runtime-dir test (#5313)
- ce06eef test(install): stub ast-grep sg provisioning in install.test.ts (#5313)
- 9a6d077 chore(codex): regenerate install-dist bundle after rebase onto dev (#5313)
- 1829e79 test(installers): stub ast-grep sg provisioning in installer unit tests (#5313)
- cb28dca feat(prompts): CodeGraph-first exploration guidance + ast-grep skill refs (#5312)
- e321358 refactor!: remove ast_grep MCP server + ast-grep-mcp/core packages (#5313)
- 37ad63c feat: provision ast-grep sg via installers + lazy session hook (#5313)
- 3c6be5c refactor: rewire codex bootstrap + opencode doctor to shared sg resolver (#5313)
- 0484f5f feat(utils): add shared ast-grep sg resolver + provisioner module (#5313)
- fec8db4 feat(shared-skills): vendor ast-grep skill from upstream pin 3148c69 (#5313)
- 8107f1a Merge pull request #5339 from code-yeongyu/fix/issue-lcx-55-npx-wrapper
- 5a8a87b fix(test): skip posix wrapper spawn test on Windows
- dd53350 feat(ulw-loop): require user outcome gate review
- 875533a fix(codex): retry skill sync cleanup
- 8ca0c11 fix(doctor): warn on dangling omo wrapper
- fa29428 fix(codex): guard generated omo runtime target
- 82d3174 fix(codegraph): use portable root MCP command
- f03718d refactor(sisyphus): address review - drop em dashes, clarify reverse-case test
- 91d2688 fix(sisyphus): reconcile file-edit guidance to runtime model family
- 40a26b1 chore(openclaw-core): resolve control-char regex lint on sanitizeReplyInput
- 2fff043 docs(agents): refresh AGENTS.md hierarchy and add Core/MCP package docs
- 6d49286 @clayleopardlabs has signed the CLA in #5336
- d609bb5 Merge pull request #5322 from code-yeongyu/feature/codegraph-omo-integration
- feba612 docs(skills): remove invalid commit task category
- 31cd979 fix(delegate-task): reserve parent wake before child teardown begins
- 473ea62 @manascb1344 has signed the CLA in #5332
- 7ede504 Merge pull request #5325 from code-yeongyu/feature/omo-tui-sidebar-panel
- ea481a4 Merge remote-tracking branch 'upstream/dev' into fix/sync-subagent-deliverable-and-wake-gate
- 6cf3910 fix(tui): pin opencode plugin runtime version
- 41aa48a fix(tui): keep sidebar registration helper internal
- 093c1c5 fix(delegate-task): track in-flight parent-wake dispatch to close sync completion race
- e1f1f60 fix(tui): ship zod runtime dependency
- d260ad8 fix(tui): request initial sidebar render
- 9a9f602 fix(tui): ship OpenTUI runtime dependencies
- 0800073 fix(doctor): flag TUI package subpath entries
- d0365cc fix(tui): write package specs for TUI registration
- de43d62 test(tui-sidebar): account for Windows file modes
- 6f1fc4e fix(tui-sidebar): redact persisted prompt text
- 6383964 fix(tui-sidebar): write mirror snapshots privately
- dc7f4bb fix(monitor): shut down manager on plugin dispose
- 8b91ed9 fix(opencode): run codegraph cmd shims through shell
- cf8228a fix(codex): run codegraph cmd shims through shell
- 617974b test(opencode): make codegraph fixtures path portable
- 19fa841 test(utils): make codegraph resolver fixture path portable
- de0bee8 fix(codex): support Windows codegraph wrapper tests
- 75be3a3 fix(ci): handle notice checks in codex matrix
- 7881ebf docs(codegraph): mark final verification complete
- ac1fe00 docs(codegraph): account final evidence directories
- ee6ca7a docs(codegraph): account final review evidence
- dec357c refactor(codex): split codegraph session hook
...
v4.10.0
omo v4.10.0
This release makes omo easier to install, safer to recover, and more predictable across Codex, OpenCode, and Windows environments. The headline is a stronger LazyCodex/Codex runtime path, real Windows ARM publishing, Kimi K2.7-aware agent behavior, and steadier long-running work.
Codex And LazyCodex Runtime Provisioning
Codex installs can now provision the runtime pieces they need instead of assuming every machine already has the right binaries. Downloads are checksum-pinned, CODEX_HOME gets a managed runtime path, bootstrap work is serialized, installer state is easier to diagnose, and uninstall is scoped so cleanup removes omo-managed runtime state without stomping unrelated local setup.
Native Windows And Windows ARM Publishing
Windows support now covers more of the rough edges: PowerShell 5.1 bootstrap, portable Node and Git Bash provisioning, WSL misroute avoidance, safer Windows launcher checks, and the new windows-arm64 platform package. Windows-on-ARM users now get a first-class package path, with x64 fallback behavior where it is still needed.
Kimi K2.7 Agent Support
Atlas, Prometheus, Sisyphus, Sisyphus-Junior, and Metis now have Kimi K2.7-native prompt variants, and model matching detects K2.7 before generic Kimi routing. K2.7 runs should get a better instruction shape without disturbing existing model families.
Recovery And Long-Run Reliability
The parts that matter after hours of agent work are tighter: atomic config writes, wake and team delivery fixes, stale tmux pane cleanup, idempotent ulw-loop --json resume, cleaner look_at missing-file errors, steadier runtime fallback behavior, and removal of legacy session-recovery paths that could fight newer continuation logic.
Release And Compatibility Hardening
The publish path now checks platform package consistency more aggressively, fails LazyCodex marketplace sync when referenced dists are missing, and ships the Codex marketplace payload with version-stamped plugin metadata. The release also includes documentation and compatibility updates for install trust, provider routing, older sessions, team quiescence, and known Windows/OpenCode edges.
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.
- Task and tool behavior updates, including delegate-task contract and runtime registration behavior.
- Task-system default behavior alignment so omitted configuration behaves consistently across runtime paths.
- Install and publish workflow hardening, including safer release sequencing and package/install fixes.
Commit Summary
- 9fa0c08 fix(codex): respect read-only config during bootstrap
- a8c66b4 Merge pull request #5296 from code-yeongyu/fix/prepublish-robustness-hardening
- 82e65bc test(release): assert platform packages stay consistent in optionalDependencies and on disk
- abe141f fix(look-at): return File-not-found instead of throwing on a missing JSON file
- 925667c fix(codex): write config.toml atomically to survive interrupted writes
- be84fd4 Merge pull request #5290 from code-yeongyu/fix/ulw-impact-proportional-sizing
- a7ea62d refactor(ultrawork): tidy directive consistency from self-review
- 6a8f181 chore(ultrawork): make package check green (biome format + schema 2.4.16)
- 4f96cb2 fix(ultrawork): size proof and QA to change impact, not an absolute test-first mandate
- dce609c Merge pull request #5289 from code-yeongyu/fix/ulw-loop-json-error-stdout
- 4c457cd Merge pull request #5287 from code-yeongyu/fix/win-arm64-platform-binary
- 022c5f3 fix(ulw-loop): emit JSON errors on stdout in --json mode
- 0776d26 test(ci): tolerate not-yet-published platform packages in lock-sync gate
- 2863715 Merge pull request #5283 from code-yeongyu/fix/issue-5258-closeable
- 0543f40 test(release): also assert publish.yml platform lists stay in sync
- b44bf61 feat(release): publish windows-arm64 across pipeline + optionalDependencies
- b4d9db1 fix(rules): stop windows-git-bash rule from steering bash to WSL
- a446bb3 fix(sparkshell): hint --shell when metacharacters used without it
- e61f1da feat(dist): add oh-my-opencode-windows-arm64 platform package
- b38d7f7 fix(platform): resolve windows-x64-baseline fallback on win32-arm64
- 3df8063 Merge pull request #5286 from code-yeongyu/docs/sisyphus-model-support-warning
- 075a57d docs(model-matching): hard-warn that Sisyphus is tested ONLY on listed models
- ae7361a test(windows): relax OAuth callback server timeout
- f862916 fix(windows): avoid git spawn in worktree discovery
- 38e7c18 test(codex): speed up Git Bash installer fixtures
- 3fd4e22 Merge pull request #5284 from code-yeongyu/fix/ulw-loop-resume-idempotent
- 66f1b98 test(agents): align Hephaestus GPT-only fixtures
- 1c18d1e fix(ulw-loop): make complete-goals resume idempotent, stop ledger spam
- edf49f6 fix(agents): restrict Hephaestus to GPT-native models
- d58c560 Merge pull request #5282 from code-yeongyu/fix/ulw-plan-approval-gate-durable-state
- b3b9fde fix(ulw-plan): rewrite Prometheus prompt GPT-5.5-native, end approval-gate loop (lazycodex #48)
- 663f100 Merge pull request #5281 from code-yeongyu/fix/doctor-windows-guidance-ideal-state
- aaa7cd5 docs(install): document Windows OpenCode proxy preinstall
- 6cef621 fix(doctor): prefer canonical package identity
- 0b327eb fix(agents): dedupe GPT apply_patch guidance
- 7fedea0 Merge pull request #5262 from code-yeongyu/worktree-fix-gpt-apply-patch-guidance
- e556cdb fix(agents): align GPT apply_patch guidance with upstream tool availability
- 178b26a docs(known-issues): batch merge 12 known-issue entries (#5271, #5272, #5273, #5274, #5275, #5276, #5277, #5278, #5267, #5266, #5251, #5250)
- 03d5f5d Merge pull request #5238 from JSap0914/docs/3491-install-trust-surface
- c830f2f Merge pull request #5239 from JSap0914/docs/5183-bun-global-trust
- a40d0de Merge pull request #5246 from JSap0914/docs/4124-background-agent-temp
- 83176a6 Merge pull request #5248 from JSap0914/docs/2206-claude-split-routing
- 82bd07b Merge pull request #5249 from JSap0914/docs/614-agents-template
- ced5aa1 Merge pull request #5252 from JSap0914/docs/4722-codex-hook-code1
- 193300c Merge pull request #5265 from JSap0914/docs/1902-older-sessions
- 2fcc01e Merge pull request #5268 from JSap0914/docs/4184-custom-provider-limit
- d6c228a Merge pull request #5269 from JSap0914/docs/3803-bedrock-guidance
- 21c868c Merge pull request #5279 from JSap0914/docs/4990-team-quiescence
- cfd6923 Merge pull request #5212 from EvangelosMoschou/feat/tech-debt-audit-skill
- c6c42f8 Merge pull request #5257 from dongguri-jun/fix/team-delete-active-cancel-order
- 25f7ca1 Merge pull request #5256 from dongguri-jun/fix/team-send-message-empty-correlation-id
- 72315a9 Merge pull request #5264 from dongguri-jun/fix/opencode-qa-home-shim
- 934d3fc Merge pull request #5241 from ririnto/fix/5240-background-runtime-fallback
- 3607d86 Merge pull request #5270 from EvangelosMoschou/fix/archive-tests-skip-windows
- 63a23c4 Merge pull request #5213 from EvangelosMoschou/fix/5182-5193-sisyphus-junior-tool-overrides
- 545488a docs(known-issues): note team quiescence workaround
- ddf4ce6 fix(test): skip archive extraction preflight on Windows (no Python)
- 0e67860 docs(install): add Bedrock provider guidance
- e74ddfe docs(known-issues): note custom provider limits
- 69d4882 fix(test): update sisyphus-junior task-allow test to match new fix (#5193)
- cd65b86 docs(features): document older session lookup
- 00db026 fix(opencode-qa): preserve HOME-based opencode shims
- 356894a Merge pull request #5261 from code-yeongyu/feat/kimi-k2-7-agent-prompts
- ec0d8aa docs(agent-model-matching): explain snapshot-backed chains, recommend 4.8/K2.7 in examples
- 90d0629 docs(agent-model-matching): add Fable 5 / Opus 4.8 / Kimi K2.7
- bad8b0d refactor(metis): add a from-scratch K2.7-native Metis prompt
- d36454e refactor(atlas): rewrite K2.7 prompt as a from-scratch native prompt
- f45386f refactor(prometheus): rewrite K2.7 prompt as a from-scratch native prompt
- bef2475 refactor(sisyphus-junior): rewrite K2.7 prompt as a from-scratch native prompt
- de91b83 refactor(sisyphus): rewrite K2.7 prompt as a from-scratch native prompt
- 1fb9879 feat(atlas): Kimi K2.7-native orchestrator variant
- d7098b7 feat(prometheus): Kimi K2.7-native planner variant
- 95e2382 feat(sisyphus-junior): Kimi K2.7-native executor prompt
- 94a40c8 feat(sisyphus): Kimi K2.7-native orchestrator prompt
- 80ae810 feat(model-core): detect Kimi K2.7 distinctly from K2.6
- 9602893 chore(gitignore): ignore local agent artifacts
- deb8629 test(codex): add marketplace e2e QA script
- 69de629 fix(codex): reject Windows bash launchers
- 6a4192d test(tmux): split stale attach pane coverage
- ff35ce9 @dongguri-jun has signed the CLA in #5256
- c35329f fix(team-mode): preserve force delete cancellation ordering
- ef9601a fix(team-mode): treat empty message correlation IDs as omitted
- 3222c8b fix(team-mode): avoid cancelling active tasks on rejected delete
- 86241c2 docs(codex): add hook code 1 recovery note
- 2bc8fe2 docs(agents): add OMO AGENTS template
- 46a09f8 docs(config): explain split Claude routing
- 08d4fb9 docs: explain background agent work directories
- f0b5d4f fix(sisyphus-junior): wire tool overrides to all delivery paths (#5182, #5193 re-review)
- a4dc397 fix(sisyphus-junior): apply user tool/permission overrides (#5182, #5193)
- 6d39956 fix: skip timeout retries for completed subagents
- 19b6595 fix: clear completed background subagent fallback eligibility
- b14cc8f docs(install): add bun g...
v4.9.2
🔄 Reliable Background-Agent Wake Routing
Background agents can now wake their parent session through a live server route — a direct HTTP path that bypasses the previous prompt-gate timing window. When a background task completes, the wake signal is dispatched through the live listener client with synchronous fast-path resolution, eliminating the race condition that could leave parent sessions stuck waiting.
Key improvements:
- No more wake deadlocks. The prompt gate now looks through
noReplytails, so a background completion that lands while the gate is busy no longer silently drops the wake. (Community fix by @acamq — thank you!) - Per-instance route scoping. Multi-instance
serve()registrations each get isolated route state, preventing cross-talk in advanced setups. - Escape hatch. If the new routing causes issues, set
experimental.disable_live_parent_wake_routing: trueto fall back to the previous behavior.
- ccc57a1 @gdaegeun539 has signed the CLA in #5180
- a446e5d Merge pull request #5171 from acamq/fix/noreply-tail-prompt-gate-deadlock
- 741d0ca @Hubluck has signed the CLA in #5102
- 02cd850 refactor: deslop live-wake routing diff (portable harness path, canonical gate client types, test noise)
- dd6d533 fix(live-server-route): synchronous fast-path resolution keeps dispatch ordering
- f0f3701 test(opencode-qa): fake-LLM echoes the CLI no-regression marker
- 9932aca fix(live-server-route): scope route state per server() registration for multi-instance serve
- f70369a fix(background-agent): parent-wake flush busy-guard reads via resolved client
- 1104394 feat(plugin): register live-server route at serverPlugin entry (fire-and-forget)
- ab32f74 feat(prompt-async-gate): route parent-targeted dispatches through live listener client
- 2681351 test(opencode-qa): serve-topology wake runner-split harness + fake-LLM fixture
- 1f6d0e4 fix(background-agent): look through noReply tails in prompt gate to prevent wake deadlock
- 1b7fe79 feat(live-server-route): topology probe + cached live-listener client + dispatch resolution
- 7083d1a feat(config): experimental.disable_live_parent_wake_routing escape hatch
- 5e928c9 test(prompt-async-gate): pin gate client-identity + busy-check characterization
Thank you to 1 community contributor:
v4.9.1
oh-my-opencode v4.9.1
Patch release fixing a crash that hit every LazyCodex (Codex Light) install on v4.9.0.
🩺 omo doctor no longer crashes on zero-dependency installs
Bun reports failed module resolution (dynamic import() and createRequire().resolve()) by throwing a ResolveMessage that is not an instanceof Error, so doctor's rethrow-non-Error guards escalated a routine "optional dependency absent" probe into Doctor failed unexpectedly: ResolveMessage: Cannot find module '@ast-grep/napi'. Because lazycodex-ai intentionally ships zero dependencies, every Codex Light install crashed on omo doctor. Both probe sites (@ast-grep/napi import and the comment-checker require.resolve) now degrade to a normal "not installed" report via a shared isModuleResolutionFailure predicate, restoring the doctor contract that checks report instead of throwing.
- ebbd01d fix(doctor): treat Bun ResolveMessage throws as absent optional deps
v4.9.0
oh-my-opencode v4.9.0
This release introduces a shared per-user LSP daemon, a Node CLI runtime fallback so omo runs on bun-less hosts, and a hardened Codex / LazyCodex distribution — plus sparkshell output summarization and per-model prompt variants for Claude Opus 4.6/4.7/4.8 and Fable 5.
⚠️ Read the behavior changes below before upgrading — a few defaults changed silently.
⚠️ Breaking & behavior changes
- LSP no longer runs language servers in-process. The LSP MCP server is now a thin proxy to the shared daemon. If the daemon is unreachable (after one retry) you get a structured
LSP daemon unreachableresult (it auto-starts on demand and retries next request) instead of a transparent in-process fallback. multi_agent_v2is force-disabled on every Codex session start. With it on, every Codex turn fails HTTP 400 (openai/codex#26753). The config-migration guard now always writesenabled=falseand annotates yourconfig.toml. Opt out withLAZYCODEX_CONFIG_MIGRATION_DISABLED=1.- Sparkshell spark summaries: default model fixed and secret redaction removed. The default is now the real
gpt-5.3-codex-spark(the oldgpt-5.5-codex-sparkdidn't exist). Summaries now reproduce values verbatim and no longer mask secrets. - Removed: keyword-detector
search/analyzemodes and theanthropic-effortmax-effort hook."search"/"analyze"are no longer validkeyword_detector.disabled_keywords, and"anthropic-effort"is no longer a validdisabled_hooksvalue. experimental.aggressive_truncationis now honored (previously always-on); it now gates on the flag and otherwise summarizes (#3899).
🧠 Shared per-user LSP daemon
A new vendored @code-yeongyu/lsp-daemon owns one set of language servers per directory across all sessions — a server warmed by one session is reused by the next, accessed over a unix socket (named pipe on Windows) via a thin stdio MCP proxy. Per-request cwd/env is threaded through every path resolution so multi-session use resolves diagnostics against the right directory. A failed tool call can no longer crash the long-lived proxy, retries never double-execute a request, transient outages no longer poison the per-session availability cache, and the Codex installer reaps stale daemons on update so the freshly-installed version always takes effect.
🧰 New lsp-setup skill
A guided detect → install → configure → verify flow for 20+ language servers, with per-language references (per-OS install commands, config snippets, troubleshooting), a recursive project scanner, and a real diagnostics-roundtrip verifier. New builtin servers: Julia (julials) and Razor; extensionless Dockerfile/Containerfile now resolve to the dockerfile server.
🟢 Node CLI runtime fallback
omo no longer hard-requires Bun. Hosts that can't run any Bun build (x86_64-v1 CPUs, qemu64-masked VPS guests that crash Bun with SIGILL) now fall back to a packaged Node CLI. Force it with OMO_RUNTIME=node; a SIGILL crash now explains the missing CPU instruction set before falling back; and doctor/run work under Node. The generated Codex wrapper also resolves Bun via fallback paths (~/.bun/bin, Homebrew, /usr/local/bin) for desktop-app shells with a stripped PATH.
🤖 Codex / LazyCodex distribution
Fixes a 4.8.0/4.8.1 regression that silently deleted users' omo bin on update (the root CLI dist was missing from the published payload). Installed agent role TOMLs (explorer, librarian, plan, momus, metis) are selectable again, all orchestration guidance migrated to the multi_agent_v1 API, delegated commands no longer recurse infinitely, plugin metadata is version-stamped (no more 0.1.0 leaking to the marketplace), and a new lcx-doctor skill diagnoses install health against always-fresh upstream sources.
✨ Sparkshell output summarization
Oversized command output (logs, big diffs) is now condensed before it floods an agent's context: the spark model summarizes first (reproducing kept lines verbatim, always preserving errors/warnings), with a deterministic signal-preserving fallback. Sparkshell also attaches the Codex session context (workspace, role, first/latest requests) so summaries stay goal-aware. Tunable via OMO_SPARKSHELL_CONDENSE, OMO_SPARKSHELL_CONDENSE_BUDGET, OMO_SPARKSHELL_SESSION_CONTEXT, and the OMO_SPARKSHELL_SPARK_* family.
🎛️ Per-model prompts & fixes
Sisyphus and Prometheus now ship dedicated prompt variants for Claude Opus 4.6/4.7/4.8 and the new Fable 5 tier (4.7 over-exploration is bounded; Fable gets a delegated-discovery mandate). claude-opus-4-8 is now recognized as a GA 1M-context model out of the box (#5070) — you can drop ANTHROPIC_1M_CONTEXT=true. Also: session_read retries transient SDK failures before falling back (#4622), /handoff binds the first user request from session_read output instead of memory (#4592), Copilot GPT-5 reasoning variants are capped to the supported set, and reply-required background-agent wakes survive noReply admissions so a parent is never stranded after its background work completes.
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.
- Task and tool behavior updates, including delegate-task contract and runtime registration behavior.
- Task-system default behavior alignment so omitted configuration behaves consistently across runtime paths.
- Install and publish workflow hardening, including safer release sequencing and package/install fixes.
Commit Summary
- 8057508 fix(omo-codex): emit forward-slash hook target paths in assert error
- cd10059 ci(publish): build vendored lsp-daemon before test and codex-compat gates
- 200c448 docs(agents-md): drop thinking-block-validator from the hook inventories
- 9a16b54 fix(omo-opencode): remove thinking block validator hook
- 9f426b8 fix(background-agent): stop duplicate parent-wake replies forking turns
- 8e7bedb docs(agents): mandate opencode-qa + isolated codex install QA with .omo/evidence on every harness-connected change
- 03fc47f fix(publish): exclude plugin node_modules from the main npm tarballs
- 56803fd test(codex): register the install-hook-targets suite in test:codex
- 8a92141 fix(script): add windows-x64-baseline to the local publish platform list
- a18477c fix(publish): keep .ulw and .claude out of the marketplace sync
- cadd22d fix(doctor): print the real failure stack instead of blaming memory pressure
- f646084 feat(install-codex): port the node CLI fallback into the TS runtime wrapper
- c975c30 fix(test): inject which/spawn into getGhCliInfo instead of leaking module mocks
- b2f6bcd refactor(keyword-detector): remove search and analyze modes
- 34ed496 refactor(omo-codex): compress hephaestus bundled rule with canonical-echo emphasis
- 06cc15d feat(skills): rewrite ultraresearch for ulw coexistence with a contract test
- 6193e14 docs(agents-md): refresh knowledge base for src to packages/omo-opencode move
- b7d8503 refactor(omo-codex): make librarian/explorer prompts model-neutral
- 6bb2845 fix(runtime): guard node CLI from Bun globals
- 96ad197 feat(omo-codex): expose spawn_agent agent_type so installed role TOMLs are selectable
- bfcef21 test(omo-opencode): rename atlas prompt test to match surviving runtime-injection content
- 5df93bf test(omo-codex): remove prose-pinning skill and directive tests
- 6e47aa9 test(omo-opencode): remove diff-guarding prompt and byte-pinning tests
- 3903af9 fix(runtime): bundle jsonc-parser into the node CLI instead of leaving it external
- bae3b68 feat(runtime): fall back to a node-target CLI when bun is unavailable
- b4c9689 fix(publish): build Codex plugin components before any plugin-shipping package packs
- 5dafddb fix(git-bash-mcp): reject WSL launchers, forward env override, expose probe trail
- 9ef62aa fix(ulw-loop): dispatch direct subcommands after wrapper prefix strip
- d28d39c fix(prometheus): carve trivial intent out of fable delegated-discovery mandate
- a4585b5 feat(prometheus): add per-model Claude prompt variants for opus 4.6/4.7/4.8 and fable 5
- c34b80c feat(model-core): add isClaudeOpus46Model family detector
- 40c9339 docs: point contributor docs at packages/omo-opencode/src
- b631b3d test(publish): model the previous payload fixture without lsp references
- 1708f7a fix(lsp-daemon): stamp dist/package.json so cached copies resolve the real version
- 121d7fe test(lsp-daemon): pin daemon version resolution from a dist-only layout
- 64a1450 chore(omo-opencode): declare externally-imported runtime dependencies
- 3093632 fix(publish): regenerate bun.lock in the release version bump commit
- 238ed70 fix(omo-codex): resolve bundled lsp runtimes from the installed plugin cache
- 456ac4a test(publish): expect the version bump to regenerate and commit bun.lock
- 84844fa test(omo-codex): pin lsp prebuild resolution across repo and installed-cache layouts
- c90290c fix(lsp-daemon): retry tool calls only when the request was never written
- 9f707f2 fix(publish): reconstruct previous LazyCodex payloads without the bundled lsp-daemon dist
- a265101 fix(omo-codex): make the multi_agent_v2 guard tolerate inline TOML comments
- 8cdec35 test(doctor): pin the findPackageJsonUp fallback skipping the interim workspace manifest
- fc471e5 fix(config): allow disabling debugging/visual-qa and honor disabled_commands for skill commands
- 1431848 test(lsp-daemon): pin single execution when a written request times out or drops
- 2ff1734 test(config): pin disabling debugging/visual-qa skills and skill-backed command removal
- 2093edd test(omo-codex): pin comment-tolerant multi_agent_v2 guard corruption cases...

