Skip to content

v1.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Oct 20:36
· 5 commits to main since this release
4bd12aa

1.2.0

Minor Changes

  • #1238 99dfe43 Thanks @jalehman! - Ingest the OpenClaw transcript through a persisted per-conversation visible-delta cursor instead of re-reading and reconciling the whole transcript on every bootstrap and afterTurn. Steady-state turns now read only new transcript entries (about 2–5 ms with no main-thread SQLite work, down from 0.3–28.5 s on large sessions).

    • commitTurn, afterTurn, ingest and ingestBatch no longer persist runtime message arrays for transcript-backed sessions, so every new row carries its transcript entry id. commitTurn records its idempotency receipt in the same transaction as the drained rows.
    • When OpenClaw invalidates a cursor, lossless-claw resyncs in bulk and restamps re-issued entries onto their existing rows instead of importing duplicates.
    • Existing conversations migrate to cursor mode once, on first use, with the same bulk resync. Migration never deletes rows or clears transcript entry ids, and never imports history before the last stored entry that is still visible.
    • A conversation created by /reset no longer imports pre-reset history (#1199).
    • A host without OpenClaw's visible-delta reader now gets a logged capability error instead of the full-transcript reconcile. Every supported OpenClaw release ships the reader. The legacy reconcile code is now unreachable and will be removed in a follow-up release.
  • #1242 924571a Thanks @jalehman! - Record transcript history gaps. When a conversation enters cursor mode or resyncs, each run of storable transcript entries that Lossless Claw never stored and that sits before the anchor is saved as a marker in the new conversation_transcript_gaps table, and one warning reports the counts. /lcm status, /lcm doctor, lcm status, and lcm conversations show report the gaps. Markers are diagnostics only; nothing is imported or deleted.

    Log quality: each incremental transcript drain logs one debug line with imported/restamped counts and duration; assemble logs when it reads the full visible transcript to fill missing replay keys; a session with no host transcript logs "transcript missing" once per conversation per process instead of on every turn.

Patch Changes

  • #1239 6d2fedc Thanks @jalehman! - Restore raw user replay identity during assemble from replay keys recorded at transcript ingestion, instead of reading the whole visible transcript on every turn where live user messages carry an idempotencyKey. Rows stored before replay keys were recorded are filled from one full visible read, then served from storage.

  • #1249 0358968 Thanks @razethion! - Use the existing opaque-binary token allowance when estimating structured tool results, including nested image data. This prevents base64 image bytes from overriding the full-message estimate and producing inflated context pressure. Preserve text estimates, including literal data URLs in text blocks, per-image accounting, and the tool-result safety margin.

  • #1250 6f3f154 Thanks @siraustin! - lcm_grep and lcm_expand now mirror their rendered text into details.text, and lcm_grep adds typed messages / summaries / files hit arrays (ids, timestamps, 200-char snippets) to details. OpenClaw code mode and tool search hand the model a tool's details value, not its content, so until now a code-mode caller received only the match counts and could not see which messages matched.

  • #1253 812eb22 Thanks @jalehman! - Deferred maintenance and post-turn compaction evaluation now use the host's current runtimeSettings.limits.promptTokenBudget when one is supplied, instead of the 128,000-token fallback or a budget recorded for an earlier model. When a direct budget is also present, the smaller value wins. maxAssemblyTokenBudget still acts as a ceiling, and hosts that supply no budget keep the conservative behavior.

  • #1254 15fc9d6 Thanks @jalehman! - Allow forced overflow recovery when OpenClaw includes display-only nested-tool transcript rows. Count only persistable roles when verifying complete current-turn coverage after delta ingestion. Preserve the initiating user, stored history, and recovery refusal checks; emit count-only diagnostics without transcript content.

  • #1211 e05d8d3 Thanks @TheAngryPit! - Exclude archived conversations' historical pending maintenance debt and failure summaries from the actionable totals reported by lcm status.

  • #1243 13a9b6a Thanks @jalehman! - Remove the legacy full-transcript reconcile path, which no supported OpenClaw release reaches since transcript ingestion moved to the visible-delta cursor. Existing anchor-trust and transcript-epoch rows are left in place.

  • #1259 c063fe1 Thanks @jalehman! - Treat OpenClaw model-runtime reload admission rejections as host runtime lifecycle interruptions. Summarization now keeps pending summaries and compaction debt for a later drain instead of logging provider failures and persisting deterministic fallback summaries. Hosts that report the LLM_RUNTIME_LIFECYCLE completion error code are recognized by that code; older hosts keep the existing message and admissionBlocked detection.

  • #1245 6a5915f Thanks @jalehman! - Report summarization interrupted by host runtime retirement ("Plugin inventory has retired", "Async work scope is closed") as a single warning instead of two error lines; pending summaries and compaction debt stay queued for the next drain.

  • #1253 812eb22 Thanks @jalehman! - lcm-tui repair, rewrite, and backfill now default to claude-sonnet-4-6 when no summary model is configured. The previous default, claude-sonnet-4-20250514, was retired by Anthropic and returned 404 errors.

Release Verification

New Contributors

Full Changelog: v1.1.1...v1.2.0