Skip to content

Feat/tactical telemetry redesign#61

Open
nazarli-shabnam wants to merge 9 commits into
mainfrom
feat/tactical-telemetry-redesign
Open

Feat/tactical telemetry redesign#61
nazarli-shabnam wants to merge 9 commits into
mainfrom
feat/tactical-telemetry-redesign

Conversation

@nazarli-shabnam

@nazarli-shabnam nazarli-shabnam commented Jun 15, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features
    • Refreshed the visual system: updated typography, motion/easing tokens, square-corner styling, and added background noise overlay.
    • Updated telemetry-style page headers and stat/label typography, plus staggered list entrance animations.
  • Bug Fixes
    • Improved reduced-motion behavior (suppresses animations/overlays) and refined key UI transitions.
    • Standardized iconography and status indicators (loading, warnings/errors, empty states), along with updated rounding across common UI components.
  • Tests
    • Updated PageHeader assertions to match the new header structure and text layout.

@nazarli-shabnam nazarli-shabnam self-assigned this Jun 15, 2026
@nazarli-shabnam nazarli-shabnam added enhancement New feature or request UX/UI labels Jun 15, 2026
@nazarli-shabnam nazarli-shabnam added this to the Project Cors Deadline milestone Jun 15, 2026
@nazarli-shabnam

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c28682f1-67e1-4b77-a517-6cd2720c7c6e

📥 Commits

Reviewing files that changed from the base of the PR and between d2c042a and 15c8cdc.

📒 Files selected for processing (3)
  • apps/ui/app/login/page.tsx
  • apps/ui/app/settings/page.tsx
  • apps/ui/package.json
💤 Files with no reviewable changes (3)
  • apps/ui/package.json
  • apps/ui/app/login/page.tsx
  • apps/ui/app/settings/page.tsx

📝 Walkthrough

Walkthrough

The app migrates icon usage to @phosphor-icons/react, adds an IconProvider, and updates global tokens, shared UI primitives, shared components, and page screens for the new square-corner visual system.

Changes

Icon migration and visual redesign

Layer / File(s) Summary
Design tokens and global CSS foundation
apps/ui/app/globals.css, apps/ui/app/layout.tsx, apps/ui/components/icon-provider.tsx, apps/ui/package.json, apps/ui/next.config.mjs
Updates global color, radius, font, and easing tokens; adds reduced-motion rules and utility classes; swaps root fonts and provider wiring; and configures phosphor icon imports.
Shared UI primitive restyling
apps/ui/components/ui/badge.tsx, .../button.tsx, .../card.tsx, .../input.tsx, .../sheet.tsx, .../sidebar.tsx, .../skeleton.tsx, .../tooltip.tsx
Switches corner radii to rounded-none, updates transition/easing tokens, and replaces lucide icons with phosphor equivalents in sheet and sidebar controls.
Shared feature component updates
apps/ui/components/page-header.tsx, stat-card.tsx, check-card.tsx, empty-state.tsx, activity-list.tsx, app-sidebar.tsx, apps/ui/tests/components/page-header.test.tsx
Reworks PageHeader into a telemetry-style layout, updates StatCard and CheckCard, adds font-mono to empty-state text, adds stagger animation to activity-list, swaps sidebar icons/rounding, and updates the header test expectations.
Page-level icon replacements
apps/ui/app/automation/..., collaborators/..., login/..., page.tsx, repos/[repo]/cache/..., security/..., settings/..., setup/...
Removes unused icon props and replaces lucide-react loader, warning, key, trash, and arrow icons with phosphor equivalents across page components.

Estimated code review effort: 3 (Moderate) | ~25 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 75.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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: a UI redesign with telemetry-inspired styling and component updates.
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.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/tactical-telemetry-redesign

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

@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: 4

🧹 Nitpick comments (3)
apps/ui/components/check-card.tsx (1)

61-68: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Success state uses hardcoded green instead of a design token.

The fail branch correctly uses the new destructive semantic token (border-destructive/25, text-destructive), but the pass branch still hardcodes green-500/green-400. This breaks the token-driven theming this redesign otherwise establishes and won't automatically adapt if the palette/dark-mode tokens change.

♻️ Use a semantic success/accent token instead of hardcoded green
       className={`bg-card border p-3.5 flex items-start gap-3 transition-colors duration-200 ease-(--ease-out) ${
-        pass ? "border-green-500/20 hover:border-green-500/35" : "border-destructive/25 hover:border-destructive/45"
+        pass ? "border-accent/20 hover:border-accent/35" : "border-destructive/25 hover:border-destructive/45"
       }`}
     >
       {pass ? (
-        <CheckCircle className="size-4 shrink-0 mt-0.5 text-green-400" />
+        <CheckCircle className="size-4 shrink-0 mt-0.5 text-accent" />
       ) : (
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/ui/components/check-card.tsx` around lines 61 - 68, The success state in
CheckCard still hardcodes green values instead of using the new semantic token
approach. Update the pass branch in check-card.tsx (the className and
CheckCircle usage inside CheckCard) to use the appropriate semantic
success/accent token classes rather than green-500/green-400 so it matches the
token-driven styling used by the destructive branch.
apps/ui/package.json (1)

15-18: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Consider enabling optimizePackageImports for @phosphor-icons/react.

The package's own docs recommend adding it to experimental.optimizePackageImports in next.config.js so Next.js only compiles the icon modules actually used, rather than the whole package. next.config.js isn't part of this diff/cohort, so flagging as a forward-looking note rather than a required change here.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/ui/package.json` around lines 15 - 18, The package entry for
`@phosphor-icons/react` should be reflected in Next.js import optimization
settings; when you update next.config.js, add `@phosphor-icons/react` to
experimental.optimizePackageImports so Next.js compiles only the icon modules
actually used. Use the existing next.config.js configuration to locate the
optimizePackageImports array and include this package there.
apps/ui/app/globals.css (1)

342-359: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

.section-title duplicates .section-label verbatim.

Both rules now have identical declarations. Since the comment states it's kept only as a transitional alias, consider merging the selectors to avoid drift if one gets edited later.

♻️ Suggested consolidation
-  .section-label {
-    font-size: 0.6875rem;
-    font-weight: 500;
-    text-transform: uppercase;
-    letter-spacing: 0.1em;
-    color: var(--muted-foreground);
-    font-family: var(--font-mono);
-  }
-
-  /* Keep old name as alias during the transition */
-  .section-title {
-    font-size: 0.6875rem;
-    font-weight: 500;
-    text-transform: uppercase;
-    letter-spacing: 0.1em;
-    color: var(--muted-foreground);
-    font-family: var(--font-mono);
-  }
+  /* Keep old name as alias during the transition */
+  .section-label,
+  .section-title {
+    font-size: 0.6875rem;
+    font-weight: 500;
+    text-transform: uppercase;
+    letter-spacing: 0.1em;
+    color: var(--muted-foreground);
+    font-family: var(--font-mono);
+  }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/ui/app/globals.css` around lines 342 - 359, The .section-title rule is a
verbatim duplicate of .section-label and should be consolidated to avoid future
drift. Update the styling in globals.css so .section-title acts as a
transitional alias by sharing the same declarations as .section-label,
preferably through a combined selector or shared rule, and keep the unique
symbols .section-label and .section-title easy to locate for the transition
period.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/ui/app/globals.css`:
- Around line 477-488: The .noise-overlay layer is currently above interactive
overlay components, so lower its stacking order in globals.css by adjusting the
.noise-overlay rule to sit beneath Sheet/Tooltip overlays used by the app.
Update the .noise-overlay z-index to a value below the overlay layers while
keeping the fixed, pointer-events-none grain effect in place.

In `@apps/ui/components/page-header.tsx`:
- Around line 16-23: The decorative /// marker in PageHeader should be hidden
from assistive technology so it is not announced before the page title. Update
the span that renders the marker in PageHeader to include aria-hidden="true"
while leaving the title heading unchanged.

In `@apps/ui/components/ui/button.tsx`:
- Around line 9-10: The Button class string in button.tsx uses an unsupported
Tailwind variant for the popup exclusion, so the active scale rule is not
applying correctly. Update the class definition in the button styling to use an
arbitrary selector-based :not() check for aria-haspopup instead of
not-aria-[haspopup], keeping the rule attached to the same button variant logic
in the Button component.

In `@apps/ui/components/ui/sidebar.tsx`:
- Line 682: The sidebar item icon color is always using the accent foreground,
which no longer matches the label’s inactive state. Update the class list in the
sidebar button styling so the `[&>svg]` color follows the same state modifiers
as the text (`hover:`, `active:`, and `data-active:`) in the relevant sidebar
component. Keep the icon styling aligned with the existing button state classes
in `sidebar.tsx` so both label and icon switch colors together.

---

Nitpick comments:
In `@apps/ui/app/globals.css`:
- Around line 342-359: The .section-title rule is a verbatim duplicate of
.section-label and should be consolidated to avoid future drift. Update the
styling in globals.css so .section-title acts as a transitional alias by sharing
the same declarations as .section-label, preferably through a combined selector
or shared rule, and keep the unique symbols .section-label and .section-title
easy to locate for the transition period.

In `@apps/ui/components/check-card.tsx`:
- Around line 61-68: The success state in CheckCard still hardcodes green values
instead of using the new semantic token approach. Update the pass branch in
check-card.tsx (the className and CheckCircle usage inside CheckCard) to use the
appropriate semantic success/accent token classes rather than
green-500/green-400 so it matches the token-driven styling used by the
destructive branch.

In `@apps/ui/package.json`:
- Around line 15-18: The package entry for `@phosphor-icons/react` should be
reflected in Next.js import optimization settings; when you update
next.config.js, add `@phosphor-icons/react` to experimental.optimizePackageImports
so Next.js compiles only the icon modules actually used. Use the existing
next.config.js configuration to locate the optimizePackageImports array and
include this package there.
🪄 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: e0347eb5-23eb-434c-9cc7-701c692350f2

📥 Commits

Reviewing files that changed from the base of the PR and between 6ea0309 and 32400bc.

⛔ Files ignored due to path filters (1)
  • apps/ui/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (26)
  • apps/ui/app/automation/page.tsx
  • apps/ui/app/collaborators/page.tsx
  • apps/ui/app/globals.css
  • apps/ui/app/layout.tsx
  • apps/ui/app/login/page.tsx
  • apps/ui/app/page.tsx
  • apps/ui/app/repos/[repo]/cache/page.tsx
  • apps/ui/app/security/page.tsx
  • apps/ui/app/settings/page.tsx
  • apps/ui/app/setup/page.tsx
  • apps/ui/components/activity-list.tsx
  • apps/ui/components/app-sidebar.tsx
  • apps/ui/components/check-card.tsx
  • apps/ui/components/empty-state.tsx
  • apps/ui/components/icon-provider.tsx
  • apps/ui/components/page-header.tsx
  • apps/ui/components/stat-card.tsx
  • apps/ui/components/ui/badge.tsx
  • apps/ui/components/ui/button.tsx
  • apps/ui/components/ui/card.tsx
  • apps/ui/components/ui/input.tsx
  • apps/ui/components/ui/sheet.tsx
  • apps/ui/components/ui/sidebar.tsx
  • apps/ui/components/ui/skeleton.tsx
  • apps/ui/components/ui/tooltip.tsx
  • apps/ui/package.json
💤 Files with no reviewable changes (2)
  • apps/ui/app/collaborators/page.tsx
  • apps/ui/app/automation/page.tsx

Comment thread apps/ui/app/globals.css
Comment thread apps/ui/components/page-header.tsx
Comment thread apps/ui/components/ui/button.tsx Outdated
Comment thread apps/ui/components/ui/sidebar.tsx Outdated
Update stale page-header test assertion (title is the h1, not description),
fix noise-overlay z-index over Sheet/Tooltip, add aria-hidden to the decorative
marker, fix unsupported not-aria-[haspopup] variant, align sidebar icon color
with label state, use accent token instead of hardcoded green, dedupe
section-label/section-title, and enable optimizePackageImports for phosphor icons.
@strix-security

strix-security Bot commented Jul 6, 2026

Copy link
Copy Markdown

Strix Security Review

No security issues found.

Updated for 15c8cdc.


Reviewed by Strix
Re-run review · Configure security review settings

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request UX/UI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant