- 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)
-
6f37e91 Merge pull request #11276 from code-yeongyu/fix/11259-tmux-test-env
-
b48c582 fix(test): restore temp environment before removing run root
-
874cf1c Merge pull request #11252 from code-yeongyu/batch/memsync-coord-12
-
9f06a33 Merge pull request #11270 from code-yeongyu/fix/web-download-redirect
-
3cf1b38 fix(web): send /download to the public desktop beta page while omo.dev's own page is off
-
8313aa8 chore(batch-12): canonical regen after the comment fix (pair aa7312e5cdd95907)
-
0b94cb1 fix(batch-12): word #11260's comment so the opencode coupling grep gate stops matching it (comment only)
-
53b041b chore(batch-12): canonical regen on the merge result (pair 1039d9d2dc5cd9c5)
-
1b3dd78 docs(changes): fold car fragments #11222 and #11260 into the batch fragment (fold-batch)
-
b525db3 docs(changes): batch #12 car entries as the batch fragment (#10477 flow); CHANGELOG.md unchanged vs dev
-
72ad63f Merge pull request #11255 from code-yeongyu/fix/changelog-cli-git-cwd
-
5f5075f fix(utils): hand Bun-spawned children the current process.env (#11259)
-
cb4c05c test(changelog): pin core.autocrlf=false in the CLI tests' scratch repositories
-
06c5b64 fix(changelog): run the fragments CLI's git in the repo's file path, not its URL pathname
-
2963703 chore(changelog): move the entry into changes/unreleased
-
ca7f092 Merge remote-tracking branch 'upstream/dev' into fix/windows-cmd-shim-quote
-
784d7f9 Merge pull request #11160 from code-yeongyu/feat/11009-t16
-
a2c42b6 docs(changelog): move the #11160 entry to a changes/unreleased fragment (Part of #11009)
-
f74ef13 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
4b02a69 Merge pull request #10477 from code-yeongyu/chore/9961-changelog-fragments
-
46f73b9 Merge remote-tracking branch 'origin/dev' into lm-11160
-
92dcff1 Merge pull request #11187 from code-yeongyu/batch/memsync-coord-11
-
4e9d5bd Merge remote-tracking branch 'upstream/dev' into fix/windows-cmd-shim-quote
-
471c2ec docs(changelog): keep the #11160 entry under Unreleased after the 5.1.46 cut (Part of #11009)
-
d6069ca Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
f73a467 chore(batch-11): canonical regen after the dev merge (5.1.46 source-state; pair 5980c6284a7b5682)
-
145b60c Merge remote-tracking branch 'origin/dev' into b11
-
8616d13 Merge pull request #11244 from code-yeongyu/release/v5.1.46-source-state
-
cfbadd6 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
ceb12a7 Merge remote-tracking branch 'origin/dev' into b11
-
3c3b171 Merge remote-tracking branch 'upstream/dev' into fix/windows-cmd-shim-quote
-
f4924e4 chore(batch-11): canonical regen after the dev merge (#11233 strip; pair 8fbfda78031fc82b)
-
bf20c9e Merge remote-tracking branch 'origin/dev' into b11
-
f2633a0 fix(ulw-research): close the proofread fence, document polish commands, and fail closed on a fill map without a hash (Part of #11009)
-
18fb216 chore(ulw-research): align with the #11156 head (record envelope and table-driven barrier)
-
dccb20d chore(ulw-research): align with the #11156 head (fidelity-records and the meaning calibration runs) (Part of #11009)
-
3c59ae6 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
f47a5f5 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
c977741 refactor(ulw-research): align the polish lane with #11152 and print rejected reasons (Part of #11009)
-
0d366b2 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)
-
7fee4b4 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
e6813af fix(changelog): release linking keeps fenced code blocks and already-linked entries as written (#10477 review r2)
-
011f6f2 docs(changelog): credit the #7473 reporter alongside the fix
-
ec5b2ff Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
c71e24b refactor(ulw-research): align the proofread lane with the text-node polish rule (Part of #11009)
-
5f7517f Merge remote-tracking branch 'origin/dev' into chore/9961-changelog-fragments
-
db7d0c4 fix(changelog): the PR gate refuses fragment text the release cannot place; full-history base fetch; links and from-diff safety (#10477 review)
-
fe09e8a Merge remote-tracking branch 'origin/dev' into lm-11187
-
43d1c91 Merge remote-tracking branch 'origin/dev' into lm-11177
-
32bdf71 Merge remote-tracking branch 'origin/dev' into chore/9961-changelog-fragments
-
06b2891 test(changelog): the shipped-path classifier keeps its tests, and a removed shipped file still needs a fragment (#10841)
-
784ea6a feat(changelog): fragments keep the shipped-path classification, carry changes.md blocks, and convert or fold branches (#10841)
-
63846d1 docs(changelog): avoid concurrent Unreleased insertion conflict
-
5d5465c docs(changelog): credit Windows Codex shim fix
-
ab42e25 test(codex-install): execute generated Windows shims for #7473
-
267eb42 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
865923e refactor(ulw-research): import shared tables from their owners in the polish command (Part of #11009)
-
e351984 chore(ulw-research): align predecessor files with #11152, #11153 and #11156 heads (Part of #11009)
-
c2776bb fix(codex-install): stop generated .cmd shims aborting when NODE_REPL_NODE_PATH is set
-
1ff58b3 Merge #10682 (package-log blocks in the PR fragment) into the #10477 branch
-
2113a65 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
81e8b6d Merge remote-tracking branch 'origin/dev' into lm-11187
-
fc5f52c Merge remote-tracking branch 'origin/dev' into chore/9961-changelog-fragments
-
686ce36 fix(telemetry): the send, resume and sweep gate also judges a record by its writer's config (#11198)
-
3b23abd Merge remote-tracking branch 'origin/dev' into b11
-
0e169e5 Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
dbe4479 Merge remote-tracking branch 'origin/dev' into fix/11198-purge-profile-consent
-
4b0b4c8 fix(telemetry): the opt-out purge judges each queued record by its writer's config selection (#11198)
-
5e92f06 docs(telemetry): fold review LOWs: counts go nowhere in the shipped build; the purge ignores the profile (#10234)
-
08e301f feat(agents): Kimi K3.1 gets its own Sisyphus, Sisyphus-Junior and Atlas prompts, copied from K3
-
91625ec Keep project nudge reservation within the bundle budget
-
cc3dff9 fix(thread): route rpc_host commands by durable id instead of sending them session-less
-
3e3aac9 docs(batch-11): link the batch PR from every added Unreleased line (changelog gate)
-
1bbeecb chore(batch-11): regenerate generated artifacts after all cars landed (pair b218a1a5baec8821)
-
911eed1 fix(ulw-research): adapt to the dev unit registry and the new proofread gate text
-
1bf59f6 test(thread): RED for session-less rpc_host commands and contract fake parity
-
f65e66c Merge remote-tracking branch 'origin/dev' into feat/11009-t16
-
552c583 Merge remote-tracking branch 'origin/dev' into b11
-
a8b3e55 Merge dev into the protocol-2 namespace foundation
-
48beb6e docs(telemetry): state the rollups removal and env-only opt-out exactly (#10234)
-
688abe3 Merge remote-tracking branch 'origin/dev' into feat/628-cli-protocol2-storage
-
51af65d build(account): regenerate sealed-store namespace consumers
-
d6c9dd4 docs(batch-11): batch changelog lines under [Unreleased] (incl. credited lines for outside cars #11128/#11164)
-
d73b6b7 Merge remote-tracking branch 'origin/dev' into feat/628-cli-protocol2-storage
-
dd6f084 docs(batch-11): keep #10808's changelog line under [Unreleased] (the merge put it in [5.1.45])
-
c3a2236 docs(changelog): #11155 line under Unreleased (#10782)
-
3274692 docs(changelog): memory report sections for task children and recall (#11178)
-
2448843 docs(account): link the protocol-2 storage increment
-
9c1c6d7 Merge remote-tracking branch 'origin/dev' into feat/628-cli-protocol2-storage
-
7facd82 feat(account): isolate protocol-2 credential store namespaces
-
8ca4a6a Merge current dev into project nudge reservation fix
-
06c32c1 Merge dev to include release baseline and refresh memory bundles
-
18c6476 docs(changelog): 11175 line under Unreleased (#10782)
-
c4cfd3b docs(changelog): 11174 line under Unreleased (#10782)
-
a9cc7ee Merge dev to inherit corrected lint ratchet baseline
-
bc0fe82 Merge remote-tracking branch 'origin/dev' into fix/11119-required-lint-ratchet
-
195bc93 Merge remote-tracking branch 'origin/dev' into fix/6752-run-pause
-
397a3d7 docs(changelog): move the #10808 entry under [Unreleased] for dev's changelog gate
-
fd57b8d Merge origin/dev into fix/6752-run-pause
-
0aa217c refactor(thread): one constant for the git origin timeout; note that gitRemote replaces the git probe
-
21e7954 Merge remote-tracking branch 'origin/dev' into fix/11119-required-lint-ratchet
-
9347e2a docs: note memory pathspec environment fix
-
df3db3e fix(memory): isolate literal hook lookups from pathspec environment
-
1045f3e fix(memory): neutralize inherited pathspec modes for state capture
-
0ccc570 test(memory): require observed reads in parked backlog check
-
a367f60 Merge remote-tracking branch 'origin/dev' into HEAD
-
637d524 feat(ulw-research): apply proofread edits through the fidelity checks (Part of #11009)
-
5450c04 Merge remote-tracking branch 'origin/feat/11009-t15' into feat/11009-t16
-
7a37bc9 Merge remote-tracking branch 'origin/feat/11009-t14' into feat/11009-t16
-
729547d Merge remote-tracking branch 'origin/feat/11009-t13' into feat/11009-t16
-
d20ff32 Merge remote-tracking branch 'origin/feat/11009-t12' into feat/11009-t16
-
eb40e14 Merge remote-tracking branch 'origin/feat/11009-t11' into feat/11009-t16
-
2f44181 Merge remote-tracking branch 'origin/feat/11009-t10' into feat/11009-t16
-
f3e45ab Merge remote-tracking branch 'origin/feat/11009-t9' into feat/11009-t16
-
283d0cc Merge remote-tracking branch 'origin/feat/11009-t8' into feat/11009-t16
-
dd0436b Merge remote-tracking branch 'origin/feat/11009-t7' into feat/11009-t16
-
9242cb3 Merge remote-tracking branch 'origin/feat/11009-t5' into feat/11009-t16
-
aac1021 Merge dev into chore/9961-changelog-fragments
-
0ea62d1 fix(qa): pass only the session to workpool inspect in the item-6 driver
-
ad76d0a test(task): cover the Stop/Resume scenarios across restart, workflows, workpools and receipts
-
967bedd fix(task): finish a Resume whose child was already unpaused before the host died
-
2463214 test(dag): pin the paused-run vocabularies and document them
-
c5741c7 fix(task): end paused children on cancel_node and workflow cancel, then release the run fence
-
6bc5e5c fix(task): never restore a paused child its live host still holds
-
0aae293 fix(task): keep paused task records readable by R0
-
3128b70 feat(task): restore paused children whose host is gone
-
1558c6d fix(task): resume an in-process child on its own runner
-
a746b2d fix(task): never lose or expire a child whose run is stopped
-
3347040 feat(task): hold sends and respawns of a stopped run
-
cc41144 feat(task): bind native run pause for host-session children
-
7416fca feat(task): bind native child run pause in production
-
36cd2eb fix(task): hand workpool workers their run admission ticket
-
aa62657 feat(task): journal paused workflow controls
-
a14348c feat(task): retain held admission and Resume custody
-
44e5fa0 feat(task): preserve run identity through wake admission
-
aef84ca feat(task): guard creation and align native pause controls
-
e85b4bf feat(task): persist run pause custody and resume transactions
-
7ece736 feat(task): add nonterminal pause and fenced admission primitives
-
8d81506 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)
-
2c98c73 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)
-
086a20f feat(changelog): package-log entries move into the PR's fragment as blocks; the gate refuses direct package-log edits (#9961)
-
a1ed235 chore(changelog): re-vendor the shared gate at common-infra#223 fcfe34fefe (search-matched, ^-anchored artifacts)
-
202f1d5 fix(changelog): real release PRs pass the gate; PR-author identity; guide moved out of the fragment dir (#9961)
-
75e28d2 Merge remote-tracking branch 'origin/dev' into chore/9961-changelog-fragments
-
b136fe8 fix(changelog): actionlint-clean gate workflow with release identity wired; stamp carries legacy Unreleased into the release section; docs, sync check, dead code
-
2815064 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)
-
407f22e fix(changelog): refuse user-facing code in release PRs; freeze older sections; require the release edit when fragments are deleted
-
e0dc72e Merge remote-tracking branch 'origin/dev' into chore/9961-changelog-fragments
-
c49bfd6 fix(changelog): heading-integrity and copy-line detection; validate every fragment-dir entry; repo-scoped PR link (omo-service review)
-
82610c2 fix(changelog): refuse hand-edited Unreleased in every gate path; validate the fragment directory; byte-identical migration test (#10477 review)
-
d7e1532 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
bun add -g omo-ai