Menu

#406 feat(timeline): show only TLDR inline for solo-mode hours

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

Originally created by: adityaharishch

Summary

  • In the Timeline UI, an hour with no PM/tracker context (solo mode) rendered the FULL activity report (TLDR + Core Tasks & Projects + Key Decisions + Resources Consulted) inline in the timeline row — crowding the row and duplicating what's already shown in the right-side hour-detail panel.
  • Now the row shows just the TLDR paragraph (ActivityReport.extractTldr, pulled from the report markdown via the ### TLDR heading). Clicking the row (already wired to onSelectHour) opens the full report — unchanged — in the right-side HourDetailPanel.
  • No behavior change for connected (non-solo) users — they never saw the raw activity report inline to begin with (they see ticket-linked TimelineCards).

Test plan

  • [x] tsc --noEmit clean on the touched files.
  • [x] Pre-push suite (fmt, clippy, ui build/tests, cargo test, security audit) passed.
  • [ ] Manual: open the dashboard in solo mode, confirm each generated-report hour shows only the TLDR line, and clicking it opens the full report on the right.

Related

Tickets: #406
Tickets: #408

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: 5069339d-dcd2-41a7-93f2-2316dc1c0ab5

    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:
    - [ ] ✅ Review completed - (🔄 Check again to review again)

    ✨ Finishing Touches
    🧪 Generate unit tests (beta) - [ ] Create PR with unit tests - [ ] Commit unit tests in branch `feat/timeline-tldr-only-inline`

    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

    Code Review

    PR [#406]: feat(timeline): show only TLDR inline for solo-mode hours

    ✅ Nice implementation. The new components are clean, well-documented, and use the right design tokens. The UX improvement (preview + full report on click) is solid.

    Feedback:

    1. Test plan incomplete — the test plan checkbox for manual testing is unchecked (). Before merge, can you confirm you've actually opened the dashboard in solo mode and verified:
    2. Each hour shows only the TLDR, not the full report
    3. The TLDR text clamps to 2 lines correctly
    4. Clicking an hour opens the full report (Core Tasks/Decisions/Resources) on the right

    This is especially important since there's no automated test coverage for this UI change.

    1. No automated tests — the PR adds a new exported function (extractTldr) and component (TldrPreview) but no unit tests. Consider adding a quick test for:
    2. extractTldr(report) with various markdown structures (report with TLDR, without TLDR, empty)
    3. Defensive fallback behavior when TLDR heading is missing

    4. Design token consistency — the TldrPreview mixes Tailwind classes (rounded-md px-3 py-2.5 bg-box) with inline styles (the WebkitLineClamp/WebkitBoxOrient section). This is fine, but is there an existing text-clamping utility in the codebase you could reuse instead of the inline style? (Just asking if there's a precedent; if not, the inline style is reasonable.)

    5. Styling edge case — when the TLDR is very short (1 line or less), the 2-line clamp + the hint "Full report ›" on hover might create odd visual balance. Worth a quick visual check in the dashboard — does it look reasonable with both short and long TLDRs?

     

    Related

    Tickets: #406

  • Anonymous

    Anonymous - 2026-07-08

    Originally posted by: Akarsh-Hegde

    Review — show only TLDR inline for solo-mode hours

    Summary: A tight, well-documented UI change that swaps the full inline ActivityReport for a compact TLDR preview card in solo-mode timeline rows; correct and low-risk, with only minor cosmetic edge cases in the fallback path.

    Blocking / correctness issues

    None. The render guard isSolo && report ? (TimelineColumn.tsx:178) excludes empty/null reports before TldrPreview is reached, so extractTldr never runs on null/"". The full report still renders on click via the unchanged HourDetailPanel, and connected users are unaffected.

    Suggestions / nits

    • ActivityReport.tsx:20 — fallback dumps raw markdown as plaintext. When extractTldr finds no ### TLDR heading it returns report.trim(), rendered inside a plain <p> (line-clamped to 2). An inline heading like ### TLDR: short note fails the \s*\n+ match and falls back to the entire multi-section report, so the row shows ### TLDR: short note … ### Core … as literal text. Acceptable given the prompt contract, but stripping #/* markers (or reusing extractTldr to drop trailing sections) would degrade more gracefully.
    • ActivityReport.tsx:36 — whitespace-only report renders an empty card. A truthy-but-all-whitespace report passes the guard yet yields tldr === "", producing an empty "✦ Summary" card. Very unlikely from the LLM; gate on report.trim() in the parent if you care.
    • Nit: extractTldr is exported but only consumed internally by TldrPreview in the same module — fine (aids testing), just flagging.

    Strengths

    • Excellent doc-comments explaining the why (row = TLDR, panel = full report); module header stays accurate.
    • The regex correctly stops at the next ### section and trims trailing whitespace (verified against multi-section input).
    • No new any, both files keep the mandatory header on line 1, CSS tokens resolve, clickable-row/keyboard affordance untouched.

    Verdict: Approve. No blocking issues; the two nits are cosmetic fallback edge cases guarded by the prompt contract. (Ideally after the checkbox-3 manual solo-mode verification in the PR's own test plan.)

    🤖 Automated review via Claude Code

     
  • Anonymous

    Anonymous - 2026-07-09

    Ticket changed by: adityaharishch

    • status: open --> closed
     

Log in to post a comment.