v0.11.0
0.11.0
Minor Changes
- #692
a13905aThanks @jalehman! - Add focus brief generation through/lossless focus <prompt>, active focus overlays, unfocus/refocus lifecycle handling, and TUI/status diagnostics for generated briefs.
Patch Changes
-
#688
d1bef05Thanks @jetd1! - Preserve unpersisted OpenClaw inter-session live input when assembling context from LCM's durable DB frontier. -
#685
a6640b6Thanks @jetd1! - Seed a placeholderconversation_bootstrap_staterow in the afterTurn slow-path stat-fail branch so the next turn can recover.[#649](https://github.com/Martian-Engineering/lossless-claw/issues/649)added a stat-fail fallback that returnshasOverlap:trueto permit liveafterTurnpersistence even whenstat(sessionFile)fails, expecting the subsequentrefreshAfterTurnBootstrapStatehook to refresh the checkpoint. That hook callsrefreshBootstrapState, which independently callsstat(sessionFile)and throws on failure, so the catch block in the hook swallows the error andconversation_bootstrap_statestaysNULL. Every subsequentafterTurnthen re-enters the slow path withreason="checkpoint-missing", which is intentionally excluded fromallowNoAnchorImport, and the conversation gets stuck: LCM degrades into a transparent passthrough where the assemble safe-fallback returnsparams.messagesverbatim and compaction never runs.This restores the contract that "permissive return ⟹ checkpoint exists" without re-introducing the unconditional refresh
[#649](https://github.com/Martian-Engineering/lossless-claw/issues/649)deliberately removed. The placeholder is written viasummaryStore.upsertConversationBootstrapStatedirectly so it does not depend on stat success. Subsequent turns recover from offset=0 once the transcript becomes statable, but route that placeholder recovery through the existing DB-anchor reconciliation path so already-persisted live afterTurn messages are not replayed as new rows. -
#704
f806bb9Thanks @jalehman! - Declare OpenClaw 2026.5.12 as the minimum supported host version for runtime LLM summarization. -
#696
1869c6cThanks @jalehman! - Mark OpenClaw as an optional peer dependency so standalone plugin installs do not pull a second OpenClaw runtime tree. -
#573
5621e8fThanks @100yenadmin! - Generalize the native-image-block externalizer to assistant, system, tool, and toolResult messages. PR #521 in v0.9.3 only ran on user-role messages, so:- Assistant or system messages carrying native
{type:"image", data:...}blocks fell through to the generic raw-payload externalizer and were stored asraw-{role}-payload.jsonblobs with embedded base64 instead of dedupe-friendly image files. - Tool and toolResult messages (which skip raw-payload externalization entirely) had their image blocks persisted inline through the standard
message_partspipeline, embedding base64 directly in the DB row.
In both cases the result was the same: no large*file row, no
lcm_describerendering, and no inter-conversation dedupe. The interceptor now runs for every persistable role, replacing native image blocks with[<Role> image: ... | LCM file: file*…]references and storing the image file once.interceptLargeRawPayloadalso no longer skips externalization based on a content substring match (isExternalizedReferenceContent); it now only skips when the message already carries the explicitrawPayloadExternalized: trueflag, so a still-oversized message that merely embeds an image reference alongside other content is still externalized.Extension map: added
image/heic,image/avif, andimage/bmpso MIME-detection misses for those formats produce a sensible filename. - Assistant or system messages carrying native
-
#706
f1e1806Thanks @jalehman! - Block same-path-shrink no-anchor bootstrap imports when candidate raw event IDs already belong to another active conversation.
New Contributors
Full Changelog: v0.10.0...v0.11.0