Menu

#413 feat(timeline): richer Overview + Hour-detail panels for solo/no-PM use

closed
nobody
None
2026-07-09
2026-07-08
Anonymous
No

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)

Related

Tickets: #415

Discussion

  • Anonymous

    Anonymous - 2026-07-08

    Originally posted by: coderabbitai[bot]

    [!IMPORTANT]

    Review skipped

    Auto reviews are disabled on base/target branches other than the default branch.

    Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.


    ⚙️ Run configuration

    Configuration used: Organization UI

    Review profile: ASSERTIVE

    Plan: Pro Plus

    Run ID: cc98362c-43a8-41bd-b265-1fa1c648fb38

    You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

    Use the checkbox below for a quick retry:
    - [ ] 🔍 Trigger review

    ✨ 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 help to get the list of available commands.

     
  • Anonymous

    Anonymous - 2026-07-08

    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.tsx fetches agent totals via loadData('/api/coding-agents', 'get_coding_agents') with no date argument, and tray/src-tauri/src/commands/dashboard.rs:91 hardcodes date = today_string(). But OverviewPanel renders for the selected day, which can be a past day (MeridianTimelineShell.tsx:35,92shiftDay). So both appTotals(today.sessions, codingAgents.agents) and TimeByApp agentTotals={codingAgents?.agents} inject today's Claude Code/Codex seconds into yesterday's app chart (and can corrupt the "most in X" header).

    • Failure scenario: navigate to yesterday after coding today → yesterday's "Time by app" shows Claude Code/Codex rows sourced from today's activity.
    • Time-by-category is unaffected — it uses today?.agent_s (scoped to the selected day). That divergence is exactly why this is easy to miss.
    • Fix: gate the fold on data.isToday (drop agentTotals for past days), or add a date param to get_coding_agents and pass day.

    Suggestions / nits

    • get_coding_agents only covers 2 of 4 agents. The reader's SQL filters app_name IN ('Claude Code', 'Codex') (meridian-core/src/readers/coding_agents.rs:71), yet the new comments in TimeByApp.tsx / api-types.ts claim all four. Copilot/Cursor time never reaches Time-by-app's per-tool rows. Meanwhile the "Coding" top stat / category slice use today.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.)
    • Dead sub prop on Mini. The new signature adds sub?: string but no call site passes it (only the commented-out codingSub would). Drop it, or land it with the autonomous-time feature it was staged for.
    • Removed "N drafts to review" CTA was connected-user, not "dead solo-mode". It was gated !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.
    • extractCoreTaskNames regex looks solid — the ^[ \t]*\*\* anchor with /gm excludes - **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

    • Good single-source discipline: coding_s is pulled from the same categoryRows the donut renders, so the top stat and chart can't drift.
    • No double-count in the category fold — today.sessions server-side excludes coding-agent rows (today/mod.rs:92), so adding agent_s to "coding" is correct.
    • CAT_HEX keys match CATS exactly (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: #1
    Tickets: #409

  • Anonymous

    Anonymous - 2026-07-09

    Ticket changed by: adityaharishch

    • status: open --> closed
     

Log in to post a comment.