v0.15.0
0.15.0
Minor Changes
- #981
189efbaThanks @cxbAsDev! -/lossless doctor applycan now repair a specific conversation withdoctor apply <conversation-id> confirm-offline. Targeted repair is limited to authorized OpenClaw command senders and requires the explicit offline confirmation after the target's active channel path is isolated. The existing current-conversation behavior is unchanged when no id is provided.
Patch Changes
-
#979
dffba95Thanks @cxbAsDev! -lcm_describenow accepts full copied reference strings such as[LCM Tool Output: file_xxx | ...]and[LCM File: file_xxx | ...]asid, extracting the embeddedfile_xxxorsum_xxxID automatically. Bare IDs continue to work; ambiguous input (multiple IDs), zero/empty IDs, and malformed IDs now return clear errors. -
#935
2b84753Thanks @gorkem2020! - Preserve conversation continuity when never-ingested recovery encounters an exact metadata-decorated runtime copy of a bare transcript row. -
#991
1b12e4bThanks @gorkem2020! - Fix the ambiguous-rollover identity-scope wedge on rapid same-day /new resets.messageIdentitycompares role+content only, unscoped by session generation, so a lane whose first post-reset turn happened to repeat trivial content (e.g. a literal "ping" health check) collided with the prior generation's persisted history and the freshness gate froze the lane instead of rotating it, re-warning on every subsequent bootstrap/afterTurn call. Identity overlap on trivial, low-entropy content no longer blocks rotation when the rollover is independently proven deliberate (a durable /new marker plus its archive sibling); substantial overlapping content still fails closed exactly as before, so a foreign session reusing a stale sessionKey is still rejected. A genuine freeze now warns once per session generation instead of on every turn. The once-only memo is capped (FIFO-evicted past 500 distinct generations) so a long-lived host process doesn't accumulate it indefinitely; a generation whose entry is evicted may warn once more on its next occurrence. -
#996
c4a69c7Thanks @Kaspnov! - Add an opt-inhostFallbackMode: "capture-only"setting so generic CLI backends can persist turns and use recall tools without Lossless prompt assembly or host-triggered Lossless compaction. Strict full-lifecycle validation remains the default, backend-native compaction remains host-owned, and subagent projection requirements remain unchanged. -
#830
bc261ecThanks @mpz4life! - Prevent duplicate tool-call replay ingestion when OpenClaw stores a host-redacted form of sensitive message content. -
#808
be366bdThanks @holgergruenhagen! - Tolerate and cap oversized CLI summary output instead of failing historical backfill. -
#939
763ad06Thanks @gorkem2020! - Recognize the specific OpenClaw runtime/transcript whitespace divergence, where core collapses runs of spaces in the runtime message to a single space while the transcript persists them verbatim, as one user turn during afterTurn frontier-coverage. This prevents a store double-write of the same turn without collapsing newlines, tabs, or leading and trailing whitespace, so two turns that differ in meaningful whitespace (line breaks or tab indentation) are never merged. Storage stays byte-verbatim; the persisted row is the survivor.
Release Verification
- Source: 4347bd978932a0383708153eb80549887043b6e6
- Package: @martian-engineering/lossless-claw@0.15.0
- Workflow: 30216853995
- Rollback: install @martian-engineering/lossless-claw@0.14.0.
What's Changed
Features
- test(lcm): cover grep-to-delegated-expansion handoff by @vincentkoc in #820
Fixes
- fix(engine): normalize sensitive field names in dedup identity comparison by @mpz4life in #830
- [codex] tolerate CLI summary overage by @holgergruenhagen in #808
New Contributors
- @Kaspnov made their first contribution in #996
- @ArthurNie made their first contribution in #1026
Full Changelog: v0.14.0...v0.15.0