Changed
- Analytics: Index building is now explicit and on-demand. Opening Analytics no longer auto-starts indexing from the Unified toolbar; users can start, cancel, and manually update analytics index builds from the Analytics window.
- Performance: Analytics indexing work is decoupled from routine provider refresh paths so Unified/Cockpit stay responsive when Analytics is idle.
- Performance: Core session indexing now uses a lower-impact foreground execution profile, reduced focused-session monitor cadence, and no longer cancels in-flight refreshes when the app deactivates.
- Unified toolbar: Refresh indicator now explicitly represents core session indexing (not analytics), with clearer status/help copy to distinguish it from Analytics index builds.
- Performance: Automatic core refresh monitors now pause while the app is foreground/active and resume in background, reducing sustained CPU and avoiding near-continuous "indexing" status during active Unified use.
- Unified footer: Core indexing status now shows live session progress (
X/Yand%) instead of a generic "refreshing" message. - Unified filters: Toggling agent pills in the toolbar is now filter-only and no longer auto-triggers index refreshes.
- Indexing UX: Background monitor refreshes now surface as lightweight syncing status, while launch/manual indexing keeps stable progress messaging.
- Indexing reliability: Core indexers now persist their own per-source file-stat baselines and restore them on startup, preventing large false re-sync runs after restart when only a few sessions changed.
- Indexing reliability (Codex): Incremental refresh now force-includes recent files that exist on disk but are missing from the hydrated session snapshot, preventing newest sessions from being silently skipped when persisted file-stat baselines are ahead of session rows.
- Indexing reliability (Codex):
thread_nameside-channel overrides now apply only to verified.../sessionslayouts and use stronger cache invalidation, preventing cross-root title mismatches and stale rename reuse. - Agent Cockpit:
Go to Sessionremains blocked for cwd-only fallback matches, but runtime-ID matches are now treated as navigable again.
Added
- Analytics: Build lifecycle UI now includes not-built, building, canceled, failed, and stale states with visible progress details (percent, sessions processed, source progress, and indexed date span).
- Session list: Subagent sessions now show an
sindicator in flat list view so they are identifiable without the hierarchy expanded. The indicator is hidden in hierarchy view where nesting already conveys subagent status. - Agent Cockpit: Limits bar now auto-expands the detail panel when any quota indicator is amber/red and reset times no longer fit inline, so constrained usage is always visible without a hover.
- Claude: Custom session titles set via the
/renameCLI command are now reliably restored after relaunch. - Codex: Session custom titles are now parsed from
session_index.jsonl(thread_namefield) using a lock-protected mtime/size/path cache and tail-read for large files. - Copilot: Session custom titles are now parsed from
workspace.yaml(namefield), gated to directory-based layouts to prevent cross-session contamination.
Fixed
- Claude: Custom session titles set via
/renamewere not restored after relaunch becauseupsertSessionMetaCoreomittedcustom_titlefrom itsUPDATE SET; non-NULL parsed values now update the DB while NULL preserves the existing title. - Custom title scan in the lightweight parser now uses a chunked gap scan (64KB chunks, 8MB budget) so title records in the middle of large session files are no longer missed.