Clawd Insights v0.2.0
v0.2.0 — Daily/Weekly AI Reports + Calendar View
Second release. Two big additions: AI-powered daily/weekly reports that summarize what you actually did across multiple sessions, and a Toggl-style calendar view alongside the existing swimlane timeline. Plus a custom AI provider registry, perf work that takes report generation from ~75s to ~30s on cache misses (and near-instant on warm cache), and parser hardening that fixes the recurring "unparseable JSON" warnings.
✨ New: AI Daily / Weekly Reports
Replaces the stats-only 日报 / 周报 buttons with full AI-generated cross-session synthesis. This is the signature addition for v0.2.0.
- Date / week picker — clicking
日报or周报now opens a popover listing the last 14 days (daily) or 8 weeks Mon–Sun (weekly), each row showing session count. Multi-select via checkboxes to combine arbitrary ranges (e.g. Mon + Tue + Fri) - Two-stage analysis — per-session brief summaries are looked up from cache first (already-analyzed sessions return instantly), then the AI synthesizes across sessions into a single markdown report (TL;DR + 主要工作 + 关键成果 + 时间分布)
- Cross-day clipping — for cross-day sessions, only the portion within the picked window is fed to the AI so daily reports don't bleed into yesterday's content
- Markdown rendering — reports render as styled HTML with headings, lists, blockquotes, and inline code; toggle "View source" to see the raw markdown. Copy button copies the source
- Timing instrumentation — status bar shows total duration, stage 1 (briefs) vs stage 2 (aggregation) split, and cache-hit vs new-generation counts
- Stats-only fallback — still available from the picker for users who want the original event-log aggregation without AI
📅 New: Calendar View
Toggl-style vertical week grid alongside the horizontal lane view, switched via tabs at the top of the timeline.
- Mon–Sun 7-column grid — fixed columns regardless of how many days have data; navigate previous/next weeks with arrow buttons or
本周 - Block height zoom + min-duration filter — both persisted across sessions
- Smart merging — same-session sub-blocks within 15 minutes of idle time are merged to reduce stripe noise
- Cluster-pack lanes — overlapping blocks pack side-by-side per overlap group; non-overlapping blocks keep full width
- AI summary on blocks — block labels show the cached AI summary (3-line clamp) instead of just the project name
- Conversation path display — blocks taller than ~6% show
~/.../basenameof the session's cwd; full path on hover - Vertical drag panning — drag to pan the time axis; Ctrl/Cmd + wheel to zoom (anchored on cursor Y)
🤖 Custom AI Provider Registry
Migrated to a v3 provider registry so users can register multiple custom AI backends.
- Provider registry — settings panel lets you register OpenAI-compatible / Claude / Ollama providers with custom name, base URL, model, and API key
- v2 → v3 auto-migration — legacy flat fields (
provider/apiKey/baseUrl/model) are migrated transparently; redundant "API Provider (Fallback)" section is removed - Unified surface —
getSessionOneLinerandanalyzeKnowledgeCompoundnow go through the registry, matching the rest of the analysis pipeline
🚀 Performance
- Parallel brief generation — stage 1 of report generation now runs up to 4 worker tasks in parallel (was serial). Five cache-miss sessions: ~75s → ~30s
- Ref deduplication — sessions that span multiple picked ranges are now fetched and briefed once, not once per range
- Cross-feature cache sharing — when the report scope fully covers a session's activity span, the brief is cached under the same key as the single-session analysis panel. Running a daily report instantly populates the per-session panel, and vice versa
🐛 Fixes
- Timeline range semantics unified —
今天/3天/本周are now strict rolling windows (1 / 3 / 7 days); cross-midnight blocks are bucketed by start day. Earlier the本周tab could show fewer days than3天early in the week - Lenient CLI JSON parsing — fixes the recurring
claude-cli returned unparseable JSONwarnings. New transforms: strip```json ```fence, drop trailing commas, escape raw newlines inside strings, repair truncated objects, sanitize smart quotes. Short / non-JSON responses are classified separately and marked transient (won't be cached, retries naturally) - Block summary persistence — clicking block A, then block B no longer hides A's summary on re-render. Lookup iterates the analysis cache by sessionId, preferring block-specific over full-session
- Block scope correctness — multi-block sessions no longer leak one block's analysis onto sibling blocks. Strict block-scope matching for multi-block sessions; full-session fallback only kicks in for single-block sessions
- Project palette overhaul — hue assignment uses
hash(projectName)instead of insertion order (so the dominant project doesn't always land on slot 0); cooler palette (12 hues, only one warm slot); per-session lightness/saturation jitter so long stretches of one project don't read as a wall of identical color
📖 Docs
- README rewrite — "About the Fork" → "Lineage & Credits"; leads with what Insights adds (the analytics layer) while still crediting the upstream pet. Both English and Chinese READMEs updated
Contributors
Thanks to everyone who shipped code for v0.2.0:
- @kingsley-wade — Custom analysis providers (#5)
New Contributors
- @kingsley-wade made their first contribution in #5
Known Limitations
- CLI JSON parse failures still possible — v0.2.0 ships lenient parsing (fence-strip, trailing-comma fix, raw-newline escape, truncation repair, smart-quote sanitize). Most malformed outputs are now recovered, but the LLM can still emit shapes we don't anticipate. Failed parses are logged with a preview and marked transient (retries naturally on next click)
- Windows support not fully validated — the Daily/Weekly report flow, calendar view, and picker UI were primarily exercised on macOS. The
claude-cli.cmdshim path is handled (thanks to dopawei in v0.1.0), but parallel CLI worker spawn on Windows is untested. PRs welcome - Narrow AI backend support — out-of-the-box analyzers are Claude CLI and Codex CLI only. Everything else requires manually registering a provider via the settings panel (Claude API, OpenAI-compatible like Qwen/DeepSeek, or Ollama). No first-class support yet for Cursor AI, Copilot Chat, Gemini CLI, or other ecosystem CLIs
Full Changelog: v0.1.0...v0.2.0