- Memory path-state recovery and commit hooks now keep literal Git lookups working when global glob or case-insensitive pathspec modes are enabled (#11130, #11167). (batch #11187)
A user Stop pauses the workflow run it started instead of cancelling it. DAG nodes, workpool workers and task children hold where they are; a message to the paused run or Resume continues it from where it stopped. (#10808, fixes #6752) (batch #11187)
Concurrent file touches show each project memory nudge once. Project memory reads reserve the nudge before asynchronous loading, retry failed reads, and discard stale results after compaction or session changes. (#11165, addresses item 1 of #10927) (batch #11187)
A finished workflow run now shows as a finished run. When a workflow (DAG) run started from a session completes, including one that completes after recovery, the engine records the session's completion as a finished run instead of a plain reply (#11155). (batch #11187)
A finished ulw-execute plan now shows as a finished run. When this session's own ulw-execute work is marked completed, the engine records the session's completion as a finished run instead of a plain reply. Work finished by an earlier run, abandoned work, and another session's work are not counted (#11174). (batch #11187)
A completed ulw-loop plan now shows as a finished run. When this session's ulw-loop plan reaches its aggregate completion, the engine records the session's completion as a finished run instead of a plain reply. A plan that was already complete when the session started is not counted (#11175). (batch #11187)
CI exposes the lint ratchet as its own required-free status check. Pull requests, pushes and merge groups run Lint ratchet independently of the heavy-validation typecheck path. (#11128, thanks @Dante-dan) (batch #11187)
The 10k parked-backlog memory test now fails if it observed no entry reads. (#11164, part of #11091, thanks @Dante-dan) (batch #11187)
omo.dev/download no longer answers 404. Desktop builds link it from the reinstall screen and the .deb update pill; while the site's own download page is off, /download and /<locale>/download now redirect to the public beta download page at https://get.omo.dev/desktop/beta/. (#11270)
Gateway wakes, UI answers and releases reach a host session known only by its durable id. A multi-session host refuses any command that names no session, so a wake for a session read from disk or found by thread locate was lost with missing_session_id. The client now looks the session up on its host by durable id and routes the command; when no live session holds it, the delivery stays queued for the session's next start and omo thread report says the completion's wake did not reach it. (#11188, fixes #11185, part of #10995) (#11252)
Turning telemetry off through an environment variable no longer deletes summaries another session queued under a profile. A session whose OMO_PROFILE turns telemetry on could lose its queued usage summary when another session started with DO_NOT_TRACK and the base omo.json setting was off. Each summary queued from now on remembers the config it was recorded under and is judged by it when it is sent, resumed or cleaned up; summaries queued before the upgrade keep the old reading until they expire. (#11198) (#11202) (#11252)
The telemetry reference now states exactly which queued summaries an opt-out deletes and what the legacy rollups cleanup can and cannot remove. (#11181) (#11252)
senpi's on-demand memory report now shows OmO's task children and memory recall. With SENPI_MEMORY_REPORT=1, a report gains an omoTask section (resident task children, cached task records and their bytes, open event logs) and an omoRecall section (loaded memory corpora, their text bytes, the recall index's term arrays and dictionary size), so a large session's memory can be traced to these layers. Nothing is measured unless a report is taken. (#11178, part of #9442) (#11252)
Kimi K3.1 gets its own Sisyphus, Sisyphus-Junior and Atlas prompts. Kimi K3.1 Pro ids (k3.1-pro, kimi-k3.1-pro and their Highspeed versions) now route to separate copies of the K3 prompts instead of sharing K3's, and the Kimi Code id k3.1-pro gets a Kimi prompt at all. kimi-k3.1-pro maps to Kimi Code's k3.1-pro id. (#11197) (#11252)
Protocol-2 account storage has separate credential and pending-revocation namespaces. Legacy credential writes and deletes cannot overwrite either namespace; the origin key and native storage-error mappings stay shared. This is storage support for the protocol-2 rollout, not enrollment activation. (#11177, refs omo-service#628) (#11252)
A background task whose task host stays unreachable no longer comes back as a leftover session after recovery gives up. When a task child's reconnect timed out and its host answered only later, the stalled reconnect could retry after the session had already been closed and reopen it on the host, leaving a live session and its processes behind. The abandoned reconnect now stops retrying, while the parked child keeps its respawn and its single notice. (#11246, fixes #10925) (#11252)
Windows Codex commands no longer stop at a command syntax error. Generated command shims accept a quoted NODE_REPL_NODE_PATH in config.toml and also run when that setting or the config file is absent. Thanks to @fvegiard for the report and @LilMGenius for the fix. (#11222, fixes #7473) (#11252)
The ulw-research proofread lane returns edits that are checked before they land. The writing lane hands back polish-edits.json; fact polish-apply applies each edit only when it changes text nodes alone and keeps every number, hedge, qualifier, link, and claim id, fact polish-diff backstops hand edits, and fact pairs --changed-since sends every sentence polish rewrote back to the meaning readers. (#11160, part of #11009)
Changelog entries live in per-PR fragments, so pull requests stop conflicting on the changelogs. A pull request that changes what ships adds exactly one file, changes/unreleased/<pr-number>.md: the paragraph that used to go under ## [Unreleased] (or ### Fixed-style bullets), plus a <!-- changes-log: <path> --> block for each entry it used to prepend to changes.md or packages/<name>/changes.md. Only the release pull request edits those files: the release workflow writes every fragment into the release section and the logs, and deletes the fragments. What counts as shipped is unchanged, and bun script/changelog-fragments-cli.ts from-diff --base origin/dev --pr <n> converts a branch that still edits the changelogs. (#10477)
Fixed
-
Commands OmO starts under Bun now see environment changes made while it runs, as they already did under Node. Before, a child started without an explicit environment got the values the process started with, so it could run with an out-of-date temp or home directory. (#11260) (#11252)
-
6f37e91be0 Merge pull request [#11276] from code-yeongyu/fix/11259-tmux-test-env
- b48c5826bc fix(test): restore temp environment before removing run root
- 874cf1cd1b Merge pull request [#11252] from code-yeongyu/batch/memsync-coord-12
- 9f06a33806 Merge pull request [#11270] from code-yeongyu/fix/web-download-redirect
- 829e4f9ead docs(changes): fragment for [#11270]
- 3cf1b38ec1 fix(web): send /download to the public desktop beta page while omo.dev's own page is off
- 8313aa8463 chore(batch-12): canonical regen after the comment fix (pair aa7312e5cdd95907)
- 0b94cb1891 fix(batch-12): word [#11260]'s comment so the opencode coupling grep gate stops matching it (comment only)
- 53b041b42b chore(batch-12): canonical regen on the merge result (pair 1039d9d2dc5cd9c5)
- 1b3dd78070 docs(changes): fold car fragments [#11222] and [#11260] into the batch fragment (fold-batch)
- b525db3795 docs(changes): batch [#12] car entries as the batch fragment (#10477 flow); CHANGELOG.md unchanged vs dev
- 1ba1916acd Merge [#11260] (a1affa8d09) into batch [#12]
- aa46b7b4e1 Merge [#11246] (5bd157eb5d) into batch [#12]
- 24eb0841cc Merge [#11177] (43d1c917b8) into batch [#12]
- c7139e4eb9 Merge [#11222] (2963703bbc) into batch [#12]
- 970ee7879e Merge [#11197] (240c98bc29) into batch [#12]
- 70b90f2caa Merge [#11165] (91625ecf0a) into batch [#12]
- 052abebd13 Merge [#11181] (5e92f06d88) into batch [#12]
- 5e3a5d81d2 Merge [#11178] (3274692c78) into batch [#12]
- c7ebf2c91b Merge [#11202] (686ce366f9) into batch [#12]
- 53b0e17bbf Merge [#11188] (cc3dff9168) into batch [#12]
- 72ad63fe97 Merge pull request [#11255] from code-yeongyu/fix/changelog-cli-git-cwd
- a1affa8d09 chore(changelog): fragment for [#11260]
- 5f5075f86c fix(utils): hand Bun-spawned children the current process.env (#11259)
- cb4c05c3f5 test(changelog): pin core.autocrlf=false in the CLI tests' scratch repositories
- 06c5b643a5 fix(changelog): run the fragments CLI's git in the repo's file path, not its URL pathname
- 2963703bbc chore(changelog): move the entry into changes/unreleased
- ca7f092617 Merge remote-tracking branch 'upstream/dev' into fix/windows-cmd-shim-quote
- 784d7f9197 Merge pull request [#11160] from code-yeongyu/feat/11009-t16
- a2c42b69b4 docs(changelog): move the [#11160] entry to a changes/unreleased fragment (Part of [#11009])
- f74ef1332c Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- 4b02a6974d Merge pull request [#10477] from code-yeongyu/chore/9961-changelog-fragments
- 46f73b9853 Merge remote-tracking branch 'origin/dev' into lm-11160
- 92dcff1972 Merge pull request [#11187] from code-yeongyu/batch/memsync-coord-11
- 4e9d5bdba8 Merge remote-tracking branch 'upstream/dev' into fix/windows-cmd-shim-quote
- 471c2ecca9 docs(changelog): keep the [#11160] entry under Unreleased after the 5.1.46 cut (Part of [#11009])
- d6069ca436 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- f73a4677bd chore(batch-11): canonical regen after the dev merge (5.1.46 source-state; pair 5980c6284a7b5682)
- 145b60cf3d Merge remote-tracking branch 'origin/dev' into b11
- 8616d13a3b Merge pull request [#11244] from code-yeongyu/release/v5.1.46-source-state
- cfbadd6996 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- 6c895a1c39 docs(changelog): link [#11246]
- ceb12a731b Merge remote-tracking branch 'origin/dev' into b11
- 3c3b171837 Merge remote-tracking branch 'upstream/dev' into fix/windows-cmd-shim-quote
- f4924e400e chore(batch-11): canonical regen after the dev merge (#11233 strip; pair 8fbfda78031fc82b)
- bf20c9eeff Merge remote-tracking branch 'origin/dev' into b11
- f2633a095f fix(ulw-research): close the proofread fence, document polish commands, and fail closed on a fill map without a hash (Part of [#11009])
- 18fb216706 chore(ulw-research): align with the [#11156] head (record envelope and table-driven barrier)
- dccb20db97 chore(ulw-research): align with the [#11156] head (fidelity-records and the meaning calibration runs) (Part of [#11009])
- 3c59ae679b Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- f47a5f5d56 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- c9777415c0 refactor(ulw-research): align the polish lane with [#11152] and print rejected reasons (Part of [#11009])
- 0d366b2592 fix(changelog): one fence-aware Markdown reading for release notes; an entry skips its link only when it already links its own PR (#10477 review r3)
- 7fee4b41d8 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- e6813afe51 fix(changelog): release linking keeps fenced code blocks and already-linked entries as written (#10477 review r2)
- 011f6f27ba docs(changelog): credit the [#7473] reporter alongside the fix
- ec5b2ff765 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- c71e24ba9e refactor(ulw-research): align the proofread lane with the text-node polish rule (Part of [#11009])
- 5f7517f5a1 Merge remote-tracking branch 'origin/dev' into chore/9961-changelog-fragments
- db7d0c4f74 fix(changelog): the PR gate refuses fragment text the release cannot place; full-history base fetch; links and from-diff safety (#10477 review)
- fe09e8a63c Merge remote-tracking branch 'origin/dev' into lm-11187
- 43d1c917b8 Merge remote-tracking branch 'origin/dev' into lm-11177
- 32bdf71311 Merge remote-tracking branch 'origin/dev' into chore/9961-changelog-fragments
- 06b2891f48 test(changelog): the shipped-path classifier keeps its tests, and a removed shipped file still needs a fragment (#10841)
- 784ea6a137 feat(changelog): fragments keep the shipped-path classification, carry changes.md blocks, and convert or fold branches (#10841)
- 63846d1f3f docs(changelog): avoid concurrent Unreleased insertion conflict
- 5d5465cf56 docs(changelog): credit Windows Codex shim fix
- ab42e25ffa test(codex-install): execute generated Windows shims for [#7473]
- 267eb42281 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- 865923effe refactor(ulw-research): import shared tables from their owners in the polish command (Part of [#11009])
- e35198448b chore(ulw-research): align predecessor files with [#11152], [#11153] and [#11156] heads (Part of [#11009])
- c2776bb399 fix(codex-install): stop generated .cmd shims aborting when NODE_REPL_NODE_PATH is set
- 1ff58b3e55 Merge [#10682] (package-log blocks in the PR fragment) into the [#10477] branch
- 2113a65a64 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- 81e8b6dc67 Merge remote-tracking branch 'origin/dev' into lm-11187
- fc5f52cbe0 Merge remote-tracking branch 'origin/dev' into chore/9961-changelog-fragments
- 686ce366f9 fix(telemetry): the send, resume and sweep gate also judges a record by its writer's config (#11198)
- 3b23abdc91 Merge remote-tracking branch 'origin/dev' into b11
- 0e169e5b09 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- dbe4479574 Merge remote-tracking branch 'origin/dev' into fix/11198-purge-profile-consent
- 4b0b4c83bf fix(telemetry): the opt-out purge judges each queued record by its writer's config selection (#11198)
- 5e92f06d88 docs(telemetry): fold review LOWs: counts go nowhere in the shipped build; the purge ignores the profile (#10234)
- 240c98bc29 docs(changelog): Kimi K3.1 prompts (#11197)
- 08e301fab5 feat(agents): Kimi K3.1 gets its own Sisyphus, Sisyphus-Junior and Atlas prompts, copied from K3
- 91625ecf0a Keep project nudge reservation within the bundle budget
- cc3dff9168 fix(thread): route rpc_host commands by durable id instead of sending them session-less
- 3e3aac9272 docs(batch-11): link the batch PR from every added Unreleased line (changelog gate)
- 1bbeecbb95 chore(batch-11): regenerate generated artifacts after all cars landed (pair b218a1a5baec8821)
- 911eed10cc fix(ulw-research): adapt to the dev unit registry and the new proofread gate text
- 1bf59f661b test(thread): RED for session-less rpc_host commands and contract fake parity
- f65e66c1bc Merge remote-tracking branch 'origin/dev' into feat/11009-t16
- 552c58314e Merge remote-tracking branch 'origin/dev' into b11
- a8b3e552fe Merge dev into the protocol-2 namespace foundation
- 48beb6e3ea docs(telemetry): state the rollups removal and env-only opt-out exactly (#10234)
- 688abe3d82 Merge remote-tracking branch 'origin/dev' into feat/628-cli-protocol2-storage
- 51af65de44 build(account): regenerate sealed-store namespace consumers
- d6c9dd4438 docs(batch-11): batch changelog lines under [Unreleased] (incl. credited lines for outside cars [#11128]/#11164)
- 6d929de415 Merge omo#11175 @814d997970 into batch [#11]
- 62b3ca56fb Merge omo#11174 @9a320027ab into batch [#11]
- c75f1fa6dc Merge omo#11155 @c3a2236c47 into batch [#11]
- d73b6b732f Merge remote-tracking branch 'origin/dev' into feat/628-cli-protocol2-storage
- dd6f0848a5 docs(batch-11): keep [#10808]'s changelog line under [Unreleased] (the merge put it in [5.1.45])
- b31be8193a Merge omo#11167 @06c32c183d into batch [#11]
- f20800fa47 Merge omo#11165 @8ca4a6a1b6 into batch [#11]
- bd70426fb7 Merge omo#11164 @a9cc7eed61 into batch [#11]
- a234c16da1 Merge omo#11128 @bc0fe82138 into batch [#11]
- f8e2f78ae6 Merge omo#10808 @195bc932c1 into batch [#11]
- d81cf428fd Merge omo#11169 @0aa217c07f into batch [#11]
- c3a2236c47 docs(changelog): [#11155] line under Unreleased (#10782)
- 3274692c78 docs(changelog): memory report sections for task children and recall (#11178)
- 244884363e docs(account): link the protocol-2 storage increment
- 9c1c6d70ab Merge remote-tracking branch 'origin/dev' into feat/628-cli-protocol2-storage
- 7facd82d35 feat(account): isolate protocol-2 credential store namespaces
- 8ca4a6a1b6 Merge current dev into project nudge reservation fix
- 06c32c183d Merge dev to include release baseline and refresh memory bundles
- 18c647654e docs(changelog): 11175 line under Unreleased (#10782)
- c4cfd3bcf8 docs(changelog): 11174 line under Unreleased (#10782)
- 13e368bcd3 docs: link memory pathspec changelog to PR [#11167]
- a9cc7eed61 Merge dev to inherit corrected lint ratchet baseline
- bc0fe82138 Merge remote-tracking branch 'origin/dev' into fix/11119-required-lint-ratchet
- 195bc932c1 Merge remote-tracking branch 'origin/dev' into fix/6752-run-pause
- 397a3d73c1 docs(changelog): move the [#10808] entry under [Unreleased] for dev's changelog gate
- fd57b8d808 Merge origin/dev into fix/6752-run-pause
- 0aa217c07f refactor(thread): one constant for the git origin timeout; note that gitRemote replaces the git probe
- 21e7954611 Merge remote-tracking branch 'origin/dev' into fix/11119-required-lint-ratchet
- 9347e2a49e docs: note memory pathspec environment fix
- df3db3e7cb fix(memory): isolate literal hook lookups from pathspec environment
- 1045f3e7b5 fix(memory): neutralize inherited pathspec modes for state capture
- 0ccc570abf test(memory): require observed reads in parked backlog check
- a367f602d5 Merge remote-tracking branch 'origin/dev' into HEAD
- 637d524ba3 feat(ulw-research): apply proofread edits through the fidelity checks (Part of [#11009])
- 5450c04565 Merge remote-tracking branch 'origin/feat/11009-t15' into feat/11009-t16
- 7a37bc9ce4 Merge remote-tracking branch 'origin/feat/11009-t14' into feat/11009-t16
- 729547d9b5 Merge remote-tracking branch 'origin/feat/11009-t13' into feat/11009-t16
- d20ff320e6 Merge remote-tracking branch 'origin/feat/11009-t12' into feat/11009-t16
- eb40e14f72 Merge remote-tracking branch 'origin/feat/11009-t11' into feat/11009-t16
- 2f44181f31 Merge remote-tracking branch 'origin/feat/11009-t10' into feat/11009-t16
- f3e45ab181 Merge remote-tracking branch 'origin/feat/11009-t9' into feat/11009-t16
- 283d0cca4a Merge remote-tracking branch 'origin/feat/11009-t8' into feat/11009-t16
- dd0436b254 Merge remote-tracking branch 'origin/feat/11009-t7' into feat/11009-t16
- 9242cb39be Merge remote-tracking branch 'origin/feat/11009-t5' into feat/11009-t16
- aac1021440 Merge dev into chore/9961-changelog-fragments
- 0ea62d1340 fix(qa): pass only the session to workpool inspect in the item-6 driver
- ad76d0a990 test(task): cover the Stop/Resume scenarios across restart, workflows, workpools and receipts
- 967bedd3a8 fix(task): finish a Resume whose child was already unpaused before the host died
- 2463214aab test(dag): pin the paused-run vocabularies and document them
- c5741c7526 fix(task): end paused children on cancel_node and workflow cancel, then release the run fence
- 6bc5e5ca0a fix(task): never restore a paused child its live host still holds
- 0aae293a68 fix(task): keep paused task records readable by R0
- 3128b70bf5 feat(task): restore paused children whose host is gone
- 1558c6da15 fix(task): resume an in-process child on its own runner
- a746b2dd62 fix(task): never lose or expire a child whose run is stopped
- 3347040d30 feat(task): hold sends and respawns of a stopped run
- cc41144024 feat(task): bind native run pause for host-session children
- 7416fca65e feat(task): bind native child run pause in production
- 36cd2eb4cb fix(task): hand workpool workers their run admission ticket
- aa62657de4 feat(task): journal paused workflow controls
- a14348c954 feat(task): retain held admission and Resume custody
- 44e5fa022d feat(task): preserve run identity through wake admission
- aef84ca547 feat(task): guard creation and align native pause controls
- e85b4bf567 feat(task): persist run pause custody and resume transactions
- 7ece736731 feat(task): add nonterminal pause and fenced admission primitives
- 8d81506c06 fix(changelog): package-log gate uses the shared release predicate + the publish marker; from-diff uses the merge base; plain package segments only; CRLF-safe compile; stamp/runner/CLI tests (review [#10682])
- 2c98c73d17 fix(changelog-gate): the release marker is publish.yml's own title/body/branch; the gate runs the base branch's copy; extensions dir is a release artifact (review [#10477]; [#10709], [#10710])
- 23f6557716 chore(changelog): fragment for [#10682]
- 086a20f1f8 feat(changelog): package-log entries move into the PR's fragment as blocks; the gate refuses direct package-log edits (#9961)
- a1ed235b10 chore(changelog): re-vendor the shared gate at common-infra#223 fcfe34fefe (search-matched, ^-anchored artifacts)
- 202f1d5ec9 fix(changelog): real release PRs pass the gate; PR-author identity; guide moved out of the fragment dir (#9961)
- 75e28d2fd0 Merge remote-tracking branch 'origin/dev' into chore/9961-changelog-fragments
- b136fe8692 fix(changelog): actionlint-clean gate workflow with release identity wired; stamp carries legacy Unreleased into the release section; docs, sync check, dead code
- 28150641fa feat(changelog): vendor the shared gate module byte-identically; the simple rule takes over (changelog edits only from the release workflow; this PR adds its own fragment)
- 407f22e5c8 fix(changelog): refuse user-facing code in release PRs; freeze older sections; require the release edit when fragments are deleted
- e0dc72ec58 Merge remote-tracking branch 'origin/dev' into chore/9961-changelog-fragments
- c49bfd67db fix(changelog): heading-integrity and copy-line detection; validate every fragment-dir entry; repo-scoped PR link (omo-service review)
- 82610c2819 fix(changelog): refuse hand-edited Unreleased in every gate path; validate the fragment directory; byte-identical migration test (#10477 review)
- d7e1532d49 feat(changelog): assemble CHANGELOG.md Unreleased from per-PR fragments (#9961)
Thank you to 2 community contributors:
- @Dante-dan:
- test(memory): require observed reads in parked backlog check
- fix(memory): neutralize inherited pathspec modes for state capture
- fix(memory): isolate literal hook lookups from pathspec environment
- docs: note memory pathspec environment fix
- Merge remote-tracking branch 'origin/dev' into fix/11119-required-lint-ratchet
- Merge remote-tracking branch 'origin/dev' into fix/11119-required-lint-ratchet
- Merge dev to inherit corrected lint ratchet baseline
- docs: link memory pathspec changelog to PR [#11167]
- Merge dev to include release baseline and refresh memory bundles
- Merge current dev into project nudge reservation fix
- Keep project nudge reservation within the bundle budget
- @LilMGenius:
- fix(codex-install): stop generated .cmd shims aborting when NODE_REPL_NODE_PATH is set
- Merge remote-tracking branch 'upstream/dev' into fix/windows-cmd-shim-quote
- Merge remote-tracking branch 'upstream/dev' into fix/windows-cmd-shim-quote
- Merge remote-tracking branch 'upstream/dev' into fix/windows-cmd-shim-quote
-
chore(changelog): move the entry into changes/unreleased
:::bash bun add -g omo-ai