Originally created by: adityaharishch
Summary
Overview panel:
- "Today" and "Today's focus" wrapped in bordered cards with the heading as the card's own first row, a minimal % progress bar, no per-row dividers
- New "time spent coding" stat (
today.engaged_s, inclusive of supervised + autonomous agent time)
- New interactive "Time by category" donut and "Time by app" bar list, hover-synced legends; coding-agent time folds directly into the "coding" row so the top stat and chart can never disagree
- Removed the dead solo-mode "Tasks" entry and "N drafts to review" CTA; bolded all section headings
- New "Connect a tracker" CTA for solo-mode users, deep-linking into Settings → Integrations
Hour-detail panel:
- Condensed report view (TLDR + Core Tasks names only) with a "View full report" modal; fixed
extractCoreTaskNames matching WHY/WHAT/HOW bullet labels as task names
- Removed the "No work logs in Solo mode" empty state
- New curved, animated "Connect a tracker" CTA
Stacked on prior PRs in this chain — this is the last one.
Test plan
- [x]
npm run build in ui/ (repeated after every incremental change during the session)
- [ ] Manual click-through in a packaged/dev Tauri build (data only renders inside the real webview)
Originally posted by: coderabbitai[bot]
✨ Finishing Touches
🧪 Generate unit tests (beta)
- [ ] Create PR with unit tests - [ ] Commit unit tests in branch `feat/overview-hour-panel-redesign`Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
❤️ Share
- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)Comment
@coderabbitai helpto get the list of available commands.Originally posted by: Akarsh-Hegde
Review — richer Overview + Hour-detail panels
Summary: Adds bordered stat cards, an interactive Time-by-category donut, a "time spent coding" stat, condensed hour reports with a full-report modal, and solo-mode "Connect a tracker" CTAs to the timeline right-panel.
Blocking / correctness issues
1. Time-by-app folds today's coding-agent time into past-day views.
OverviewPanel.tsxfetches agent totals vialoadData('/api/coding-agents', 'get_coding_agents')with no date argument, andtray/src-tauri/src/commands/dashboard.rs:91hardcodesdate = today_string(). ButOverviewPanelrenders for the selectedday, which can be a past day (MeridianTimelineShell.tsx:35,92—shiftDay). So bothappTotals(today.sessions, codingAgents.agents)andTimeByApp agentTotals={codingAgents?.agents}inject today's Claude Code/Codex seconds into yesterday's app chart (and can corrupt the "most in X" header).today?.agent_s(scoped to the selected day). That divergence is exactly why this is easy to miss.data.isToday(dropagentTotalsfor past days), or add adateparam toget_coding_agentsand passday.Suggestions / nits
get_coding_agentsonly covers 2 of 4 agents. The reader's SQL filtersapp_name IN ('Claude Code', 'Codex')(meridian-core/src/readers/coding_agents.rs:71), yet the new comments inTimeByApp.tsx/api-types.tsclaim all four. Copilot/Cursor time never reaches Time-by-app's per-tool rows. Meanwhile the "Coding" top stat / category slice usetoday.agent_s, which unions all agents (today/mod.rs:246) — so a Copilot/Cursor user sees Time-by-category's coding total exceed the sum of Time-by-app's agent rows. Either tighten the comments or widen the SQL. (Note: PR [#409] in this stack widens the SQL to all four — once that lands this reconciles, but the two adjacent widgets still read from two different agent-time sources.)subprop onMini. The new signature addssub?: stringbut no call site passes it (only the commented-outcodingSubwould). Drop it, or land it with the autonomous-time feature it was staged for.!isSolo && pendingCount > 0— the connected-user quick entry into the review modal, now a non-clickable counter tile. If intentional (drafts still reachable via timeline cards) fine, but the PR-body rationale is inaccurate.extractCoreTaskNamesregex looks solid — the^[ \t]*\*\*anchor with/gmexcludes- **WHY:**bullets and the lookahead terminates correctly. Only fragility: a future prompt emitting a**LABEL:**line without a-prefix would be captured as a task name — acceptable given the prompt contract.Strengths
coding_sis pulled from the samecategoryRowsthe donut renders, so the top stat and chart can't drift.today.sessionsserver-side excludes coding-agent rows (today/mod.rs:92), so addingagent_sto "coding" is correct.CAT_HEXkeys matchCATSexactly (all 10) with a fallback; file headers present; all files well under 500 lines (OverviewPanel ~300, HourDetailPanel ~136, TimeByCategory 150).Verdict: Needs changes — issue [#1] is a real (if narrow) data-correctness bug on the historical-day path; the rest are nits. Gate the agent fold on
isToday(or thread the day through) and this is an approve.🤖 Automated review via Claude Code
Related
Tickets:
#1Tickets:
#409Ticket changed by: adityaharishch