Repository navigation
v2.23.0
·
69 commits
to main
since this release
Highlights
Session telemetry + control pass focused on the CMO-style workflows that live on tools.
Agent control
- Activity-based working signal — dashboard no longer loses track of the agent when OpenClaw's compaction retry transparently swaps runs after a context overflow. 15s recent-activity window keeps the Stop button visible across short gaps.
- Abort fallback via lastKnownRunId — Stop still aborts when
activeRunIdhas been cleared by an intermediate error event.
Latency breakdown
- Per-run tool count badge, gap-based tool time detection (>1s gaps = tool/wait, not generation), and effective tok/s that excludes those gaps.
- Aggregate stats split avg latency by w/tools vs plain runs.
Errors panel
- New reusable
JsonTreecomponent with syntax colors, depth-based collapse, long-string previews, and auto-unwrap of nested JSON strings (tool-resultcontent[0].textrenders as a sub-tree, not an escaped blob). - Copy button produces the flattened form you see on screen, not the wire-format with
\n\"escapes. - Detects OpenClaw's
{content, details}tool-error shape and showsdetailsby default with a toggle for the raw wire format.
Logs
- Fixes tslog's
log.child({subsystem}).info(msg)serialization: parser now correctly extracts the message from1instead of rendering the tag stringified in0as the body. Unwraps_meta.namewhen it arrives as a JSON string. Fallback summary when no primary content field is populated. LogDetailPanelhides the Payload section when it's just the Message repeated, and renders string payloads as preformatted blocks so CLI-table alignment survives.
Chat history stripping
- Replaced the regex-based
stripInboundMetawith a line-by-line parser ported from OpenClaw's canonicalstripInboundMetadata. Handles all 6 sentinels + trailing untrusted-context suffix + timestamp prefix. Silos-specific addition strips asyncSystem (untrusted): [ts] ...lines for cleaner chat.
Task pipeline
- Dropped the
isBackgroundProcessheuristic that substring-matchedpid,still running,backgroundin tool results and created false-positive "Subagent" entries in the kanban. - Sidebar Tasks badge filters stale runs (status=running + startedAt >1h) so it aligns with what
/tasksshows.
Included commits:
18a2b2bfeat(session): activity-based agent-working signal + abort fallbackdda8309feat(latency): tool count, gap-based tool time, effective tok/sc02cc3bfeat(errors): reusable JsonTree + auto-unwrap + tool-result simplificatione040683fix(logs): tslog tag unwrapping, preformatted payloads, dedup empty sections3164291refactor(chat): port stripInboundMeta canonical parser from OpenClaweb170cdfix(tasks): stale-aware sidebar Tasks badge + drop isBackgroundProcess false-positive