github code-yeongyu/oh-my-openagent v5.0.0-beta.63

3 hours ago

Breaking

OpenCode's agent-browser provider and builtin skill have been removed.
Configs containing browser_automation_engine.provider: "agent-browser" now
fail schema validation. oh-my-opencode doctor reports the rejected value and
says: "use the built-in browser path: Bun.WebView / playwright-core scripts".
Remove the obsolete override from the active [opencode] block in omo.jsonc,
including project and profile layers. Browser work uses in-process Bun.WebView
or written playwright-core scripts against local Chrome; these script paths
are not new provider enum values. The retained provider choices are
playwright, dev-browser, and playwright-cli.

Engine: senpi 2026.9.15-2 (adopting 2026.9.13-2 and 2026.9.15 as well)

Concurrent questions queue instead of overwriting each other. Two async questions used to race, and the second one replaced the first. They now sit in a queue: the widget shows +N more, alt+down cycles through them from an empty composer, and each request keeps its own draft and its own idle deadline. Answering got faster too — a digit on an empty composer answers the shown question, a single-select single question submits on that digit, /answer lists or opens a specific request, and typed text binds to one request with a ↳ reply to <header> label. An answered, commented, dismissed or timed-out question collapses to a ↳ <header>: <answer> chip you can click to expand.

A question announces itself. A ? <header> layer goes into the terminal title while a question waits, a one-time bell fires (askUser.bell, on by default), an ask-user:asked bus event and a matching ask-user-asked Notification hook fire for anything you want to wire up, and herdr:blocked gets an active/inactive pair. Reconnect replay and hydration stay silent.

Bundled resources have their own provenance scope. Builtin and bundled extensions resolve to a system scope in every runtime, resources_discover accepts { path, scope } entries, and a command-line package declaring "pi": { "system": true } keeps that scope through CLI precedence. The compact startup banner leaves system resources out of [Skills], [Extensions], [Prompts] and [Themes], so what you see is what you added; Ctrl+O or --verbose shows the system group after the project, user and path groups.

For extension authors. ctx.steeringSignal is readable during tool execution, so an extension can notice queued steering without cancelling work or consuming the message. PI_SESSION_CWD and PI_GOAL_STORE_FILE reach kernels and shell children, with inherited stale values cleared. @code-yeongyu/senpi/bun-runtime registers providers and OAuth synchronously, once per isolate, for standalone Bun consumers.

grep is a real search engine again. A native senpi-grep addon walks the tree with ordered parallelism, bounded reads and cancellation; ripgrep stays as the fallback, and SENPI_GREP_ENGINE=auto|native|rg picks between them. mode selects content, count or files, limit and skip paginate over files, path takes a file, a directory, an array or a <file>:L1-L2 selector, and glob accepts ! exclusions. Every result ends in a [grep: matches=2 files=2 searched=42 elapsedMs=8 engine=native nextSkip=none] footer and carries details v1 with structured matches and pagination, and the TUI, the HTML export and the eval widget group matches under their file.

tool_search stopped costing you a round trip. It is side-effect-free now: it lists up to five matching deferred tools with their parameter schemas and activates nothing, so the old "callable from your NEXT turn" wait is gone and naming a tool activates it on that first call. Results are gated on query-term coverage and a relative score floor, so one incidental word match no longer drags in unrelated tools, and a query naming bash or monitor answers with that tool's redirect hint instead of "No tools matched". generate_image moved behind the same door and no longer ships its roughly 1K-token schema on every request.

Background processes die with the session that started them. The bash tool keeps owning a command's process group until its last descendant exits, so sleep 30 & or nohup server & is killed by shutdown cleanup instead of being orphaned. Eval cells do the same for what they spawn: when a JavaScript cell settles, is interrupted or times out, its children and their descendants get SIGTERM and then SIGKILL after a grace, unless the cell asked for a detached process. Python kernels sweep their process group on close, and a parent-death watchdog takes the kernel down with the host. Underneath, the PTY layer escalates an ignored SIGTERM to SIGKILL in session stop, registry teardown and detached cleanup.

Pending questions are clickable, including inside tmux. Click an option to answer it, type your own, cycle between requests, or expand the question tabs, in both regular and fullscreen mode. The new terminal.mouse setting defaults to whilePending, so the mouse is captured only while a question is waiting; off disables capture and always keeps it on. Short startup question blocks in tmux used to swallow clicks because the private cursor query never came back — the frame is now calibrated from two stable pane-cursor readings, bounded by 750 ms.

senpi reports its own state to herdr. A builtin reporter marks the pane blocked with the question's label while a question or host dialog waits, keeps it working during turns, subagents and monitors, and restores idle on settlement. It coexists with herdr's managed integration and steps aside for a user-authored herdr-* reporter.

webfetch dropped its browser emulator. LinkeDOM replaced jsdom for inert HTML conversion, which keeps reader output and omitted document tags intact, resolves relative article links and images against the final response URL, and retires the CSS and XHR compile assets that shipped only for the old parser.

Compiled binaries load TypeScript extensions natively. jiti is no longer embedded in the Bun binary: extensions load through native runtime modules, so host-module identity survives and a reload gets a fresh dependency graph. Computed imports and requires share their generation, unused graphs can be reclaimed, native data imports keep Bun's loaders, and parser errors keep their source locations. Node runtimes keep their jiti options.

Devin lanes stopped offering a thinking level that did nothing. Cascade's chat protocol has no request-side thinking field, and SWE-2 effort is chosen by the lane uid, so the /efforts and /reasoning selector and the footer thinking suffix were a second control wired to nothing. Streamed thinking output still renders; picking the lane is the one effort control.

Smaller TUI repairs. Enter on a multi-select option toggles that choice instead of silently skipping it, including option 1. A bare /btw dismisses the panel or cancels the in-flight side query, and Escape reaches it under the kitty keyboard protocol. /btw no longer shows its question twice. Every Tip: line gets a blank line above it, so it stops reading as part of the block before it.

Publishing stages what the lockfile says. The packed tarball now mirrors publish-deps.lock.json whatever the developer's package manager did to node_modules: nested manifest entries are staged at their manifest path from a version-matched copy, npm's workspace-local placements keep the top-level slot, and packages the manifest no longer lists are pruned. A tarball staged from a bun-hoisted install used to ship htmlparser2@10 next to a stale entities@8, and compiling the engine failed on No matching export ... for import "fromCodePoint".

Closing an RPC session is ordered now. close_session acknowledgements and session_closed events, including worker-failure terminals, go out only after the session registry has dropped the entry, so a list_sessions issued right after never returns the closed session. Filesystem watchers are cancelled together with shutdown, every disposer is joined before the process exits, a reentrant shutdown shares that join and keeps its failure exit code, and nonpersistent RPC probes never start watchers.

The RPC host watchdog stopped spawning ps. Its ppid fallback ran ps -o lstart= every 250 ms while the supervisor was alive, and long-lived shared hosts piled up thousands of ps children, zombies on runtimes that fail to reap them. A dead supervisor is reaped by its own parent and the host is reparented, so the free kill(pid, 0) plus a ppid comparison sees the loss with no child process at all.

Paused monitors cost nothing. A paused file watch clears its 250 ms poll timer outright, with no stat or SHA-256 digest work, and resume runs one immediate check so a change made during the pause still fires. Session-output line buffers cap at 64 KiB, so a stream without newlines can no longer grow a monitor's retained tail without bound.

Eval cells stop hoarding memory in long sessions. Settled detached cells leave the live registry for a 32-entry snapshot store, where peek, stop and waiting for a terminal state still work for recent cells; the JS kernel's unconsumed tool-call queue is capped at 256 and cleared on interrupt, reset, close and crash, as the subprocess kernel already did; and per-cell display buffers cap at 8 images, 24 MB and 64 JSON outputs with an elision note. Detached and completed eval cards render static with a frozen elapsed time instead of repainting at 1 Hz forever, and a live ticker whose row stopped rendering stops itself after 60 idle ticks and rearms on the next render, so transcript rebuilds and session switches no longer pile up intervals.

Standalone binaries ship codemode once. The compiled binary loads codemode from the staged on-disk package instead of a second embedded copy; the sidecar carries its JS parser dependency and keeps the bun-1-4 skill.

Multi-day sessions stopped freezing on the status ticker. Deciding the working/retry animation cadence used to re-parse the whole session file every tick, which periodically froze the UI on long, compaction-trimmed sessions; it now reads an O(1) entry count that SessionManager maintains as entries land.

Cursor CLI OAuth no longer probes on every start. The startup cursor-agent models probe runs only when the lane is usable (not disabled, cursor-agent installed, an account bound) and inside that account's HOME, and every cursor-agent spawn gets the same explicit environment allowlist instead of the inherited process.env. A hermetic or SSH-launched session therefore never trips the CLI's macOS keychain preflight, which used to surface as a blocking "Keychain Not Found" dialog on the console.

OmO

omo.dev is rebuilt for people who do not already know what an agent harness is. The site carries the OmO brand, one install path, the 2026-09-14 manifesto in English and Korean, and a landing page that shows the Kibitzer loop and the main loop running side by side on a research-to-deck scenario. Open Graph cards render from the Figma brand file with the live GitHub star count. Download stats are all-or-nothing now and count omo-ai, so a partial registry response no longer publishes a number that is quietly too low. Lark joins the messaging platforms, the ones that are not shipped yet say so, and the Korean copy breaks its lines where a Korean reader would.

16,497 of a stock launch's 25,048 prompt tokens were tool schemas. The ones almost nobody calls now register with search exposure and activate when the model names them: team_create and team_delete (951 tokens), the three ast-grep MCP tools (2,029), mcp_grep_app_searchGitHub (713), the two context7 tools (1,006) and omo_agent_toolkit (851). Across a 30-day sample each of those appears in 0.1% to 1.6% of sessions. The skills that need them name them, so the ast-grep skill names its three MCP tools, the ulw-loop skill names omo_agent_toolkit, and team_* is named across the ulw and hyperplan skills.

The memory notice stopped sending models hunting for a tool that does not exist. It used to say prior messages are "stored in recall memory", and 33 of 90 sampled tool_search calls went looking for the recall tool that phrasing implied. Recall is passive — Kibitzer injects <recalled-memory> on its own — so the notice now says relevant memory arrives automatically and there is nothing to call.

The agent keeps a self-aware block. system/self-aware.md is seeded as a reflection-owned block of reflected self-observations, projected beside the persona and never merged into the soul. It is the reflection's to write, not the session's.

system/boundaries.md belongs to you. It is a user-owned soul block: only what you actually said about what not to do goes in it, quoted as you said it. The persona no longer advertises a generic system/*.md line; it points at the boundaries contract instead.

Reflections deliver a recap, and they stop eating each other. A finished reflection hands back a recap with its provenance and relative links to what it read, and recap reads go through the resilient filesystem path, so a transient read error no longer swallows the delivery. Reconciliation stopped killing live reflection runs over a start-identity scheme mismatch, orphaned reflection worktrees get swept, and a reflection that already landed stays merged when its cleanup fails.

Idle children are parked, not evicted. A resident that goes idle is suspended and revived when a message arrives, instead of being thrown away and rebuilt from nothing. Idle park retention is configurable, team liveness survives the park, and a batch whose acknowledgment failed to persist is kept.

The ulw-loop plan store survives a crashed writer. .state.lock is reclaimed through a lease instead of waiting on a lock whose owner is gone, plan and audit state land in an immutable commit log, an invalid legacy plan can be force-recreated, and a session id that normalizes to null is rejected at the door.

The browser lane is Playwright and the eval kernel. agent-browser and npx playwright guidance are gone from the shipped skills; local Chrome templates use playwright-core, the WebView examples run as written in the eval kernel, and ultimate-browsing loads as the ulw-research companion skill.

Plan consultants run on Fable 5.1 max. The plan-consultant chain is headed by Fable 5.1 max with a guarded model-core mirror, qwen3.7-plus joins as a utility rung, and every builtin OpenAI rung routes through openai-codex.

Windows and RPC hardening. The omo-senpi adapter's Windows compatibility races are gone, the native RPC surface rejects incomplete patch targets and malformed stream events instead of acting on them, the postinstall guard that installs that serializer accepts the engine's new createRpcShutdown entry (the previous guard refused any senpi built after 2026.9.15), and the css-tree sidecar trio is embedded only when the engine actually ships it.

Quieter startup. omo-senpi declares itself a system package, so its skills and extensions leave the compact startup banner and appear only in the expanded view. Memory-repo skills pin to the user scope on engines that accept scoped entries.

  • 3df25a6 Merge remote-tracking branch 'origin/dev' into HEAD
  • eb29e87 Merge pull request #8318 from code-yeongyu/fix/8316-windows-inbox-lock-pid-reuse
  • 7b5dc34 fix(team-core): reap 4-line locks whose owner pid is already dead
  • a476ec5 Merge branch 'dev' into fix/8316-windows-inbox-lock-pid-reuse
  • c5b7e6a Merge pull request #8322 from code-yeongyu/fix/8321-footer-goal-cache-racy
  • 03244d2 Merge branch 'dev' into fix/8316-windows-inbox-lock-pid-reuse
  • 9f4c788 test(team-core): pin legacy and live-foreign lock liveness
  • 4d8cbd4 docs(changelog): drop the diff3 base marker left by the dev merge
  • 820b02f Merge pull request #8320 from code-yeongyu/fix/8319-rpc-shutdown-binding
  • 3f871b7 Merge pull request #8310 from code-yeongyu/fix/1699-omo-entry-count
  • 86a0415 test(omo-native): pin both RPC shutdown declaration shapes in the serializer guard (refs #8319)
  • eda06d3 fix(team-core): reap inbox locks after Windows pid reuse
  • 07683c1 Merge pull request #8314 from code-yeongyu/fix/8290-idle-pollers
  • fd6fb23 fix: read listTeams from the unwrapped service in the lead poller deps (refs #8290)
  • 184779b fix: idle sessions stop polling member acks, lead poller, and the ulw footer (fixes #8290)
  • 43ee99c Merge pull request #8309 from code-yeongyu/fix/memory-lock-windows-takeover
  • 6862071 Merge branch 'dev' into fix/memory-lock-windows-takeover
  • d0f75e7 Merge pull request #8299 from code-yeongyu/feat/8241-agent-toolkit-eval-sdk
  • 0efd645 refactor(ulw-loop): drop the unused status-args helper
  • e7846d9 perf(ulw-loop): read only the newest commit record when reconciling the plan
  • d30d539 Merge branch 'dev' into fix/memory-lock-windows-takeover
  • 7c42e3a test(ulw-loop): pin the per-surface completed-plan guidance
  • d8f2e36 fix(ulw-loop): surface-aware completed-plan error guidance
  • eb25ba0 feat(ulw-loop): render status nextActions for the calling surface
  • d0821e6 docs(evidence): record the windows-latest diagnosis, RED/GREEN and soak for the takeover fix
  • 59123ea Merge pull request #8293 from code-yeongyu/feat/remove-agent-browser-provider
  • 27b1e65 test(memory-core): gate the takeover on the lock oracle and make fixture teardown fail loud
  • e5cbb64 fix(memory-core): read the win32 process start identity through kernel32, not PowerShell
  • 23c778c Merge pull request #8307 from code-yeongyu/feat/reflection-circuit-breaker
  • 5d248fb fix(memory-core): keep reflection running when park.json is unreadable
  • 20f516e docs(evidence): record RED/GREEN and gate evidence for the reflection circuit breaker
  • 991771c feat(memory-core): expose a lock-free reader for the reflection park file
  • 281d4bb feat(memory-core): park automatic reflection after repeated failures
  • 671750d feat(memory-core): add the reflection park policy
  • b71e6ba Merge pull request #8306 from code-yeongyu/fix/reflection-orphan-sweep
  • 3dd82d7 docs(evidence): record RED/GREEN and gate evidence for the reflection orphan sweep
  • 2509ce9 fix(memory-core): keep a landed reflection merged when cleanup is incomplete
  • 539a6a0 fix(memory-core): sweep reflection worktrees and branches no live run owns
  • 7870f80 Merge pull request #8305 from code-yeongyu/fix/reflection-liveness-scheme
  • b527e53 docs(evidence): record RED/GREEN and gate evidence for scheme-safe reflection liveness
  • aba6d6c fix(memory-core): expose scheme-aware start-identity comparison to adapters
  • ba5bc78 Merge pull request #8286 from code-yeongyu/style/web-soft-visual-20260914
  • 3a107b1 docs(web): register the feature title role in the type scale
  • db06fbe Merge pull request #8291 from code-yeongyu/feat/self-aware-memory-block
  • ef7a19e test(memory-core): assert the self-aware projection path, not the literal block name, stays out of the self section
  • 6877383 feat(memory-core): seed system/self-aware.md as a reflection-owned reflected-self block
  • 23f6bd8 test(memory-core): pin the self-aware seed, its memory-node projection, and its non-soul tool result
  • 57fd6d6 test(skills): drop the retired browser-provider denylist exemptions
  • 388869e feat(opencode)!: remove the agent-browser browser-automation provider and builtin skill
  • d14ed2c fix(web): wrap stationary model profiles inside the viewport
  • 8d9ed07 Merge pull request #8288 from code-yeongyu/feat/web-manifesto-v2-20260914
  • 3787451 feat(web): replace the manifesto with the 2026-09-14 text and archive the January version
  • 6586404 Merge pull request #8251 from code-yeongyu/feat/retire-agent-browser-npx-playwright
  • 5ced618 Merge remote-tracking branch 'origin/dev' into style/web-soft-visual-20260914
  • 40dab03 style(web): soften work surfaces and calm feature hierarchy
  • dca9228 test(skills): scan materialized browser skill payloads
  • 0bbe559 test(codex): classify the shipped stealth integration test
  • 6db1c62 test(skills): cover successful stealth template integration
  • fb358bb test(skills): scope browser-tool exclusions to provider files
  • 53a9fe0 fix(skills): make WebView examples executable in the eval kernel
  • 6cb374b feat(skills): retire agent-browser and npx playwright guidance
  • 56f679f feat(skills): use playwright-core for local Chrome templates
  • c304433 fix(web): keep landing requests readable on mobile
  • 21d0068 Merge pull request #8285 from code-yeongyu/docs/web-manifesto-ko-polish-20260914
  • 84a625e docs(web): rewrite the Korean manifesto copy from the polished English
  • 6344c40 Merge pull request #8274 from code-yeongyu/fix/telemetry-qa-create-goal-stall
  • caaa7a9 Merge pull request #8280 from code-yeongyu/feat/tool-deferral-ideal-state
  • d3ccc74 fix(omo-native): reject incomplete RPC patch targets
  • cc5eaab fix(qa): bound failed telemetry process shutdown
  • 52f863d feat(native): defer rarely used schema-heavy tools to by-name activation; align memory notice with the toolset
  • aff3906 Merge pull request #8279 from code-yeongyu/docs/web-manifesto-en-polish-20260914
  • 9d4ec4f docs(web): polish the English manifesto copy
  • 1f6bb46 Merge pull request #8270 from code-yeongyu/fix/binary-sidecar-css-tree-optional
  • 32b7ab7 fix(build): embed the css-tree sidecar trio only when the engine ships it
  • a2c1b8b docs: keep telemetry notes with their owning modules
  • 0f1db6d Merge pull request #8275 from code-yeongyu/fix/web-og-star-size-20260914
  • 8206ab9 fix(web): enlarge OG GitHub star label
  • dd25867 Merge pull request #8273 from code-yeongyu/fix/web-reading-room-20260914
  • 0462f98 fix(web): shorten secret copy and preserve sentence breaks
  • 410f1e5 fix(qa): settle native telemetry turns before advancing
  • a4088ce fix(omo-native): reject malformed RPC stream events
  • 0b326fb Merge pull request #8271 from code-yeongyu/feat/native-prebuild-fixture
  • f2de9e8 fix(web): separate secret reading hold from follow-up reveal
  • 97fb135 test(omob): cover multi-file native prebuild extraction
  • 6220083 Merge pull request #8267 from code-yeongyu/feat/web-figma-og-20260914
  • 437ee54 build(omob): generalize native prebuild staging to a per-package fixture
  • eb36506 Merge pull request #8265 from code-yeongyu/fix/plan-consultant-fable-chain
  • 816b984 feat(web): render Figma brand OG with live GitHub stars
  • 7d9ab60 Merge remote-tracking branch 'origin/dev' into fix/plan-consultant-fable-chain
  • 852298d Merge pull request #8256 from code-yeongyu/chore/drop-comment-checker-npm-dep
  • 7094a23 docs: document the Fable 5.1 plan-consultant chain and the qwen3.7-plus utility rung
  • 209be05 Merge pull request #8260 from code-yeongyu/fix/web-lit-reveal-pace-20260914
  • 7ddfa35 fix(web): end the lit scrub at mid-viewport and ease the follow line in
  • b3c5e47 Merge pull request #8257 from code-yeongyu/fix/web-lit-reveal-chrome
  • 70ab411 fix(web): validate active lit timelines and await scroll completion
  • 57efc51 test(opencode): classify the downloader probe as a fixture
  • 7f4b422 Merge pull request #8255 from code-yeongyu/fix/8241-ulw-lock-lease
  • a6c335a fix(web): register lit progress and scrub the full range
  • 674ff2e fix(ulw-loop): allow forced recreation of invalid legacy plans
  • 79e44db chore(opencode): drop the comment-checker npm dependency
  • 4707fe7 fix(comment-checker): tolerate missing packages in embedded Bun
  • 5f2384c fix(ulw-loop): lease-based .state.lock reclaim and an immutable commit log for plan and audit state
  • 0c10cd2 fix(ulw-loop): reject session ids that normalize to null
  • c8f1de1 Merge pull request #8253 from code-yeongyu/fix/web-favicon-and-curious-reveal-20260913
  • 030d795 feat(web): scrub the lit paragraph like ScrollReveal and let the follow line rise in
  • 6717a17 fix(web): use the OmO mark as the favicon and ship a real apple-touch icon
  • a9ec478 Merge pull request #8252 from code-yeongyu/fix/web-lit-text-sweep-20260913
  • eaa9fa1 feat(web): sweep the lit paragraph continuously through each word
  • 4c19a9f Merge pull request #8242 from code-yeongyu/chore/remove-pi-goal-pi-webfetch
  • cfdaa1d Merge pull request #8227 from code-yeongyu/feature/reflection-recap-ui-20260913
  • 3013ecb fix(memory): route recap reads through resilient filesystem
  • efadd15 Merge pull request #8245 from code-yeongyu/fix/dep-audit-windows-metafile
  • 32c3f04 test(qa): assert the platform-joined metafile path in the graph-command test
  • 0d0ce34 chore(workspaces)!: remove unused pi-goal and pi-webfetch workspaces
  • 0f8b4b4 Merge pull request #8239 from code-yeongyu/test/dependency-audit-harness
  • e18a65a Merge latest dev into verified reflection recap delivery
  • 45c1a7d test(qa): classify the captured dependency graph as historical data
  • 07baced Merge origin/dev into reflection recap delivery
  • 2fcbf73 test(qa): record dependency-audit baseline receipts
  • 78f40ad test(qa): use an audit-owned path in the malformed-input fixture
  • 2d172c6 Merge pull request #8240 from code-yeongyu/fix/web-ko-linebreaks-en-polish-20260913
  • 9c3803f fix(web): keep Korean predicates with their subjects and attach the platform particle
  • 52ada68 test(qa): add dependency-audit capture and compare harness
  • ca4a830 Merge pull request #8238 from code-yeongyu/fix/ulw-research-loads-ultimate-browsing
  • c56c578 docs(skills): make ultimate-browsing the ulw-research browsing lane's skill
  • 14c6819 Merge pull request #8236 from code-yeongyu/feat/memory-skills-user-scope
  • 739f0ad Merge pull request #8233 from code-yeongyu/feat/web-kibitzer-two-loops
  • 2d56040 Merge pull request #8232 from code-yeongyu/fix/web-hero-subcopy-lines-20260913
  • 8f8da84 feat(web): show the Kibitzer and main loops running side by side
  • 1c41d6c docs(web): polish the Korean landing copy
  • 935a3fa fix(web): shorten the hero sub-copy and break it on purpose
  • c978681 Merge pull request #8224 from code-yeongyu/feat/web-omo-rebrand-redesign-20260913
  • a5697d8 fix(web): drop the agent-count proof cell and fix mobile tap targets
  • bff66a9 feat(web): add Lark and mark the messaging platforms as coming soon
  • 0bda2b6 Merge pull request #8212 from code-yeongyu/feat/omp-o9-20260913
  • 39b6f5e Merge dev into O9 and regenerate conflicted bundles
  • 8019088 fix(task): preserve continuation uncertainty and provenance
  • 3ce2c79 docs(web): point the LedgerRow note at its remaining consumer
  • d1557a4 Merge pull request #8228 from code-yeongyu/fix/8222-persona-line-replace
  • 464d36c feat(web): rebrand to OmO and redesign the landing for non-technical readers
  • fb55410 feat(web): run the landing DAG on a research-to-deck scenario
  • f77b0e1 fix(memory-core): replace the persona's system/*.md line with the boundaries contract
  • 74030e7 Merge pull request #8225 from code-yeongyu/fix/8222-boundaries-user-owned
  • d0aef6c Merge remote-tracking branch 'origin/dev' into fix/8222-boundaries-user-owned
  • de0af79 feat(memory-core): make system/boundaries.md a user-owned soul block
  • 74ecc47 test(memory-core): pin the boundaries seed, its soul-edit token, and the out-of-band notice
  • 04f16bc Merge pull request #8219 from code-yeongyu/feat/plugin-system-package
  • da3e35c feat(task): configure idle park retention and preserve team liveness
  • 39b9b99 chore(web): load react-grab and react-scan in development only
  • 49b9d99 fix(web): render the boulder evidence without ICU parsing
  • 9671879 fix(web): make download stats all-or-nothing and count omo-ai
  • cf60595 build(task): refresh idle park and cold revive bundles
  • d4a1f17 fix(task): retain uncertain batches when acknowledgment persistence fails
  • 8d13929 feat(task): revive idle parked children on messages
  • ef5bb91 fix(task): suspend idle residents instead of evicting
  • 76e54b0 Merge pull request #8210 from code-yeongyu/fix/release-root-causes
  • 96bad90 ci(release): enforce isolated versions and resilient trust preflight
  • e0f88b4 fix(release): retry transient publisher exchanges with status diagnostics
  • c45d939 fix(release): reserve a disjoint LazyCodex-only version namespace
npm i -g omo-ai@beta

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

NewReleases is sending notifications on new releases.