Skip to content

style(sidepanel): align visual density + hierarchy to overlay [GET-17]#51

Merged
DevanshuNEU merged 2 commits into
OpenCodeIntel:mainfrom
DevanshuNEU:feat/lco-17-side-panel-density
Apr 23, 2026
Merged

style(sidepanel): align visual density + hierarchy to overlay [GET-17]#51
DevanshuNEU merged 2 commits into
OpenCodeIntel:mainfrom
DevanshuNEU:feat/lco-17-side-panel-density

Conversation

@DevanshuNEU

@DevanshuNEU DevanshuNEU commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Summary

The overlay widget and side panel were visually distinct enough to read as two separate products. TodayCard used a 2x2 bordered-card grid with 20px hero numbers and uppercase labels (Material / enterprise-dashboard feel). ActiveConversation had a card background and 14px subject text. This PR aligns both surfaces to overlay-style typography and density so they feel like one coherent tool.

Type of Change

  • refactor — Code restructure, no behavior change

What Was Changed

  • entrypoints/sidepanel/components/TodayCard.tsx — Replaced 2x2 card grid with a single dense row: today 1 conv · 9 turns · 508 tok · $0.0050. Removes .lco-dash-metric, .lco-dash-metric-value, .lco-dash-metric-label JSX nodes.
  • entrypoints/sidepanel/components/ActiveConversation.tsx — Changed "tokens" to "tok" in the stats row to match the compact label format.
  • entrypoints/sidepanel/dashboard.css — Typography-wide alignment:
    • Body base: 13px → 11px
    • Today section: grid + bordered cards removed; new .lco-dash-today-label / .lco-dash-today-stats flex row
    • Health dot: 8px → 6px (overlay spec); critical dot gains lco-dot-pulse animation; label 12px → 10px
    • Active card: removed background: var(--lco-bg-card) and border; padding 12px → 8px 0; empty state keeps explicit dashed border
    • Active subject: 14px → 12px; context bar: 6px → 4px; stats row: 12px → 11px + tabular-nums + dot separators via CSS ::before
    • Budget status: 13px → 11px; zone label: 12px → 10px; row-pct gains tabular-nums
    • Conv subject: 13px → 12px; turns/cost gain tabular-nums
    • prefers-reduced-motion: removes stale .lco-dash-metric rule, adds critical dot animation override

How to Test

  1. Load the extension in Chrome (Developer mode, load unpacked .output/chrome-mv3)
  2. Open claude.ai and start a conversation
  3. Open the side panel — verify TodayCard shows a single dense row (today N conv · N turns · N tok · $X) with no grid or hero numbers
  4. Verify the active conversation section has no card background; subject is ~12px; context bar is visually thinner; stats use · separators
  5. Open overlay and side panel simultaneously in the same view — typography scale should feel like one product
  6. Switch to a conversation at >80% context fill — health dot should be 6px and pulse (if critical)
  7. Check prefers-reduced-motion (macOS: System Settings > Accessibility > Reduce motion) — pulse stops, section transitions instant

Checklist

  • Tests pass locally (bun run test)
  • TypeScript compiles clean (bun run compile)
  • Extension builds without errors (bun run build)
  • No secrets, hardcoded URLs, or sensitive tokens exposed
  • Comments are professional and clear — no emojis, no AI-generated filler
  • Commit messages follow conventional commits (feat:, fix:, refactor:, test:, chore:)

Related Issues

Closes GET-17

Notes for Reviewer

The lco-dot-pulse keyframe animates box-shadow (not compositor-only), which causes a paint per frame on the critical health dot. This is intentional and mirrors the identical pattern in overlay-styles.ts. It only fires when health is critical and is gated by prefers-reduced-motion.

Summary by CodeRabbit

  • Style
    • Redesigned the Today card layout from grid to a single condensed line showing conversations, turns, tokens, and cost information
    • Reduced font sizes across the entire dashboard for a more compact presentation
    • Added a pulsing animation effect to health status indicators
    • Enhanced visual alignment and spacing of numeric values for improved readability
    • Updated the token display label format

TodayCard: replace 2x2 bordered-card grid with a single dense row
(today  1 conv · 9 turns · 508 tok · $0.0050). Removes 20px hero
numbers, uppercase labels, and card backgrounds that made the panel
feel like a separate product.

ActiveConversation: drop card border/background, reduce padding to 8px 0,
shrink subject to 12px, context bar to 4px track, stats to 11px with
tabular-nums and · dot separators via CSS ::before. Empty state keeps
its dashed border.

Health dot: 8px → 6px to match overlay spec; critical dot gains the
lco-dot-pulse animation (box-shadow glow). Health label: 12px → 10px.

Typography-wide: body 13px → 11px; budget status 13px → 11px, zone
label 12px → 10px, row-pct gains tabular-nums; conv subject 13px → 12px,
turns/cost gain tabular-nums. Section headers keep uppercase.

prefers-reduced-motion: removes stale .lco-dash-metric rule, adds
critical dot animation override.
@vercel

vercel Bot commented Apr 23, 2026

Copy link
Copy Markdown

@DevanshuNEU is attempting to deploy a commit to the Dev's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Apr 23, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@DevanshuNEU has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 42 minutes and 42 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 42 minutes and 42 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d17285e3-8643-4901-a04d-ab567a2175cb

📥 Commits

Reviewing files that changed from the base of the PR and between 2c9cee4 and 81400fe.

📒 Files selected for processing (1)
  • entrypoints/sidepanel/dashboard.css
📝 Walkthrough

Walkthrough

The PR refactors the dashboard UI by converting the Today card layout from a 2x2 grid to a single dense row of stats, abbreviates the token label from "tokens" to "tok" in the active conversation view, and applies comprehensive styling updates including reduced font sizes, a new health dot pulsing animation, improved numeric alignment, and modified spacing.

Changes

Cohort / File(s) Summary
Component Stats Labels
entrypoints/sidepanel/components/ActiveConversation.tsx
Abbreviated token unit label from "tokens" to "tok" in stats rendering.
Today Card Layout Refactor
entrypoints/sidepanel/components/TodayCard.tsx
Replaced 2x2 metrics grid with a single dense row combining conversations count, turn pluralization, formatted token total, and formatted cost into one stats string.
Dashboard Styling Overhaul
entrypoints/sidepanel/dashboard.css
Reduced font sizes across components, converted Today card from grid to flex layout, replaced metric card styling with label/stats styles, added health dot pulsing animation, enabled tabular-nums for numeric alignment, and switched active-stats spacing from gap to ::before dot separators.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰 A card once grid, now flows as one,
With stats condensed beneath the sun,
Health dots pulse in gentle beat,
Numbers align, font sizes neat,
The dashboard dances, svelte and fleet!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main refactor—aligning visual density and hierarchy of the side panel to match the overlay style, which is the core change across all three modified files.
Description check ✅ Passed The description is comprehensive and complete. It includes a clear summary, identifies the type of change (refactor), lists all modified files with specific details, provides detailed testing steps, confirms the checklist is complete, and notes relevant issues and implementation details.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
entrypoints/sidepanel/dashboard.css (1)

273-275: Update the budget-dot note after shrinking the health dot.

Line 274 makes health dots 6px, but budget dots remain 8px while the comment says they are the same size. Either update the comment or size the budget dot to 6px.

Also applies to: 388-391

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@entrypoints/sidepanel/dashboard.css` around lines 273 - 275, The comment and
sizes are inconsistent: .lco-dash-health-dot was reduced to 6px but
.lco-dash-budget-dot remains 8px; pick one fix: either change
.lco-dash-budget-dot to width: 6px; height: 6px to match .lco-dash-health-dot,
or update the comment that says both are the same size to reflect the differing
sizes. Apply the same change wherever .lco-dash-health-dot and
.lco-dash-budget-dot are defined (including the other occurrence mentioned).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@entrypoints/sidepanel/dashboard.css`:
- Line 283: The critical dot class .lco-dash-health-dot--critical currently
loses its box-shadow when the pulse animation lco-dot-pulse is disabled for
reduced motion; add a static box-shadow for .lco-dash-health-dot--critical
(matching the visual weight used by healthy/degrading states) so the emphasis
persists, and keep the pulse animation applied on top when motion is allowed; in
the prefers-reduced-motion: reduce media query remove/override only the
animation property but do NOT remove the static box-shadow for
.lco-dash-health-dot--critical so it remains visible even when animations are
disabled.

---

Nitpick comments:
In `@entrypoints/sidepanel/dashboard.css`:
- Around line 273-275: The comment and sizes are inconsistent:
.lco-dash-health-dot was reduced to 6px but .lco-dash-budget-dot remains 8px;
pick one fix: either change .lco-dash-budget-dot to width: 6px; height: 6px to
match .lco-dash-health-dot, or update the comment that says both are the same
size to reflect the differing sizes. Apply the same change wherever
.lco-dash-health-dot and .lco-dash-budget-dot are defined (including the other
occurrence mentioned).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 19f828c2-6504-455b-9d9b-dbdcf057303f

📥 Commits

Reviewing files that changed from the base of the PR and between 8e527db and 2c9cee4.

📒 Files selected for processing (3)
  • entrypoints/sidepanel/components/ActiveConversation.tsx
  • entrypoints/sidepanel/components/TodayCard.tsx
  • entrypoints/sidepanel/dashboard.css

Comment thread entrypoints/sidepanel/dashboard.css
Make .lco-dash a full-height flex column and give .lco-dash-feedback
margin-top: auto. When sections are collapsed and content is short,
the feedback widget is pushed to the viewport bottom; when History
is expanded beyond the fold the panel scrolls and the widget sits
at the end of content. Fixes the "empty black void below Send feedback"
behaviour when History is collapsed.
@vercel

vercel Bot commented Apr 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
getsaar Ready Ready Preview, Comment Apr 23, 2026 4:39am

@DevanshuNEU DevanshuNEU merged commit 2e9f49b into OpenCodeIntel:main Apr 23, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant