OpenClaw/OpenCode parity + a real fix for the recurring dead-dashboard
Dashboard daemon: a cleanup can no longer silently kill it
A measure.py cleanup (tidy) used to write the sticky daemon_disabled opt-out, which the SessionStart self-heal honored forever, leaving the dashboard silently dead until a manual setup-daemon. Now cleanup never latches that flag (only the deliberate setup-daemon --uninstall does), so the self-heal restores the dashboard automatically on your next session, no command required. The #106 uninstall tombstone (orphaned-job guard) is untouched.
OpenClaw sessions now parse (#115)
The session parser expected a top-level type: "user"/"assistant", but OpenClaw stores conversation lines as { type: "message", message: { role } } with the role nested. Every line missed the gate and the audit reported 0 sessions across an entire OpenClaw install. Fixed with a normalizedType that reads the nested role, skips session/compaction/reset markers, and keeps legacy top-level-type logs working.
Young-install savings guard ported to OpenClaw & OpenCode
Parity with the v5.11.79 Python fix. When post-baseline history is under 30 days, the "/mo" run-rate projects a tiny sample and reads as fake. Both TS ports now show the measured cumulative ("Saved so far · N days tracked") under the guard, restore the run-rate at 30 days, and carry the provider-neutral API-equivalent caption. The measured-floor card copy is corrected so it never mislabels the hero as a "superset" when, under the guard, the hero is the floor.
Hardening
- New asset-tree parity test so a
dashboard.htmlthat isn't mirrored into the Codex plugin fails at edit time, not at the release gate. - NaN-safe
trackedDaysclamp.
Verification: full Python suite 1047 passed / 12 skipped; OpenClaw 56/56 and OpenCode 55/55 TS tests; dist-freshness and Codex-parity gates green. Reviewed by an independent model pass (SHIP).
Note: standalone OpenClaw (ClawHub) and OpenCode (npm) users get the parser/parity fixes via those packages' own publishes, which are separate from this plugin release.