Skip to content

feat(web): unified visual design, a11y, and perf optimizations across all apps#155

Merged
yacosta738 merged 5 commits into
mainfrom
frontend
Mar 7, 2026
Merged

feat(web): unified visual design, a11y, and perf optimizations across all apps#155
yacosta738 merged 5 commits into
mainfrom
frontend

Conversation

@yacosta738
Copy link
Copy Markdown
Contributor

This pull request introduces a major, coordinated overhaul of the Corvus web apps' design system, focusing on a new, distinctive brand aesthetic and improved frontend consistency. The main changes include the introduction of a shared design token system, a new typographic and color palette, and the refactoring of app styles to consume these shared tokens. Additionally, it updates font loading to use Google Fonts for a more unique look, and adds documentation for the new frontend design skill.

Design System & Brand Consistency

  • Introduced a new shared design token file (tokens.css) in @corvus/shared, defining a unified color palette, gradients, glass effects, border radii, and especially a distinctive typography stack using Manrope, Syne, and JetBrains Mono via Google Fonts. This file also provides CSS variable aliases for compatibility across apps. [1] [2] [3]
  • Refactored the chat and dashboard apps to import and use these shared tokens, removing their local CSS variables and ensuring consistent styling across products. [1] [2]

Typography & Font Loading

  • Updated all main app HTML entry points (chat, dashboard, marketing) to load Manrope, Syne, and JetBrains Mono from Google Fonts, and set up preconnect for performance. [1] [2] [3]
  • Updated the documentation site (docs) to use the new font variables for both sans-serif and monospace text, and applied the heading font for all major headings. [1] [2] [3]

Color & Visual Updates

  • Switched the core brand colors from blue/cyan to a more mysterious, modern palette with deep blacks and electric purple/blue accents. Updated gradients, backgrounds, and accent colors accordingly in the shared tokens and in app-specific CSS. [1] [2]
  • Updated transition timing and animation curves for a more refined feel, and adjusted accent glow and animation colors for visual consistency. [1] [2] [3]

App Integration & Dependency Management

  • Added @corvus/shared as a dependency in chat and dashboard apps, and updated the pnpm lockfile to reflect this. [1] [2] [3] [4]

Documentation & Guidelines

  • Added a new frontend-design skill documentation, outlining the philosophy, guidelines, and expectations for building distinctive, production-grade frontend interfaces that avoid generic AI-generated aesthetics.

These changes establish a strong, memorable visual identity for Corvus and make it significantly easier to maintain brand consistency across all frontend surfaces.

@snyk-io
Copy link
Copy Markdown
Contributor

snyk-io Bot commented Mar 7, 2026

Snyk checks have passed. No issues have been found so far.

Status Scanner Critical High Medium Low Total (0)
🔚 Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 7, 2026

Warning

Rate limit exceeded

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

⌛ 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.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: a79267f1-05c2-472e-881d-6819a465340c

📥 Commits

Reviewing files that changed from the base of the PR and between 6d1da9e and 04e6faa.

📒 Files selected for processing (2)
  • clients/web/apps/docs/src/styles/custom.css
  • clients/web/packages/shared/tokens.css
📝 Walkthrough

Walkthrough

Centralizes frontend design tokens into a new @corvus/shared package, updates app heads to load unified Google Fonts and theme colors, replaces local CSS variables with shared tokens across apps, adds a frontend-design skill spec, and adjusts related CSS, package.json entries, and a SonarQube workflow property.

Changes

Cohort / File(s) Summary
Design Skill
.agents/skills/frontend-design/SKILL.md, .agents/AGENTS.md
Adds a new Frontend Design Skill spec and registers it in AGENTS.md.
Shared tokens
clients/web/packages/shared/tokens.css
Introduces centralized design tokens: fonts, color palette, gradients, glass, aliases (--color-*, --font-*), and updated transitions.
App HTML heads
clients/web/apps/chat/index.html, clients/web/apps/dashboard/index.html, clients/web/apps/marketing/src/layouts/MarketingLayout.astro
Adds font preconnects, Google Fonts stylesheet links (Manrope, Syne, JetBrains Mono), and theme-color meta tags.
App manifests
clients/web/apps/chat/package.json, clients/web/apps/dashboard/package.json
Adds @corvus/shared as a workspace dependency.
App styles
clients/web/apps/chat/src/style.css, clients/web/apps/dashboard/src/style.css, clients/web/apps/docs/src/styles/custom.css
Import shared tokens, remove local :root variables, swap to shared font variables, update animations/timing, replace 100vh100dvh (dashboard), and adjust gradients/typography.
Component accessibility
clients/web/apps/chat/src/App.vue
Adds dynamic aria-label binding to toggle/config buttons based on showConfig.
CI config
.github/workflows/sonarqube-analysis.yml
Adds SonarQube overrides for Python version and TypeScript node path.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels

area:ci

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning PR title exceeds the 72-character limit at 78 characters but follows Conventional Commit style with 'feat' prefix and clearly summarizes the main changes. Shorten the title to 72 characters or fewer. Consider: 'feat(web): unified design, a11y, and perf optimizations' (55 chars).
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed Description is comprehensive with detailed sections on design system changes, typography, colors, app integration, and documentation, but lacks explicit Tested Information and Breaking Changes sections from the template.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch frontend

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.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 7, 2026

✅ Contributor Report

User: @yacosta738
Status: Passed (12/13 metrics passed)

Metric Description Value Threshold Status
PR Merge Rate PRs merged vs closed 88% >= 30%
Repo Quality Repos with ≥100 stars 0 >= 0
Positive Reactions Positive reactions received 9 >= 1
Negative Reactions Negative reactions received 0 <= 5
Account Age GitHub account age 3052 days >= 30 days
Activity Consistency Regular activity over time 108% >= 0%
Issue Engagement Issues with community engagement 0 >= 0
Code Reviews Code reviews given to others 391 >= 0
Merger Diversity Unique maintainers who merged PRs 2 >= 0
Repo History Merge Rate Merge rate in this repo 90% >= 0%
Repo History Min PRs Previous PRs in this repo 119 >= 0
Profile Completeness Profile richness (bio, followers) 90 >= 0
Suspicious Patterns Spam-like activity detection 1 N/A

Contributor Report evaluates based on public GitHub activity. Analysis period: 2025-03-07 to 2026-03-07

@sentry
Copy link
Copy Markdown

sentry Bot commented Mar 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 11

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.agents/skills/frontend-design/SKILL.md:
- Line 41: The guideline line "Interpret creatively and make unexpected
choices..." (specifically the sentence "No design should be the same. Vary
between light and dark themes, different fonts, different aesthetics. NEVER
converge on common choices (Space Grotesk, for example) across generations.")
conflicts with the shared brand system; change that text to instruct
contributors to start from the shared brand primitives (tokens and typography)
and only diverge when a documented product requirement demands it, allow
controlled variation with justification and review rather than unconditional
divergence, and reference "tokens" and "typography" as the starting point for
any design work.
- Around line 33-39: The "NEVER use ... system fonts" line in the Typography
guidance is too absolute—update the SKILL.md Typography section to allow system
fonts as sensible fallbacks rather than banning them: keep the recommendation to
use a distinctive primary display font paired with a refined body font, but
require explicit, resilient fallback stacks (e.g., language-appropriate
fallbacks and generic-family fallbacks), mention
accessibility/font-loading/language coverage considerations, and replace the
"NEVER use" phrasing with a clause that forbids relying solely on generic
defaults while mandating sane fallbacks and progressive enhancement.
- Around line 1-4: Add a new row for the skill named "frontend-design" to the
Available Skills table in AGENTS.md following the existing table pattern:
include the skill name "frontend-design", the short description "Create
distinctive, production-grade frontend interfaces with high design quality", and
trigger conditions mirroring the other entries (e.g., when the user asks to
build web components, pages, or applications). Ensure formatting matches the
table's Markdown structure and that the new entry is placed with the other
skills in the Available Skills list.

In `@clients/web/apps/chat/index.html`:
- Around line 7-9: Remove the duplicate font loading: either delete the three
<link> tags that load Google Fonts (the rel="preconnect" links and the <link
href="https://fonts.googleapis.com/css2?family=..." rel="stylesheet" />) from
the HTML entry, or—if you prefer the HTML-based approach for render-blocking
optimization—keep those <link> tags here and remove the corresponding `@import`
url(...) line from tokens.css; ensure only one method loads the Manrope, Syne
and JetBrains Mono families to avoid duplicate requests.

In `@clients/web/apps/chat/src/style.css`:
- Around line 67-70: The box-shadow uses a hardcoded rgba value duplicating the
accent — extract that into a token in tokens.css (e.g.,
--color-accent-glow-subtle) and replace the hardcoded rgba(129, 140, 248, 0.1)
in the style.css box-shadow rule with the new token; update tokens.css to define
--color-accent-glow-subtle and then reference that variable in the box-shadow
alongside --color-accent-glow to keep colors centralized and maintainable.

In `@clients/web/apps/dashboard/index.html`:
- Around line 7-9: Duplicate font loading present via the three <link> tags that
preconnect and load Google Fonts (Manrope, Syne, JetBrains Mono) — pick the same
font-loading strategy used in the chat app and make dashboard consistent: either
keep the HTML <link rel="preconnect"> + <link href="..."> approach for these
families or remove these tags and load fonts via your CSS (e.g.,
`@import/`@font-face), and ensure you remove the duplicate/alternative loading
method so only one approach is used for Manrope, Syne, and JetBrains Mono across
apps.

In `@clients/web/apps/docs/src/styles/custom.css`:
- Around line 306-311: The heading rule for .sl-markdown-content h1..h4 uses
only var(--corvus-font-heading) without fallback fonts; update the font-family
declaration in that selector to include a robust fallback stack (e.g., local
variable first, then common system fonts like Inter, system-ui, -apple-system,
'Segoe UI', Roboto, 'Helvetica Neue', Arial, and a generic sans-serif) so the
headings render predictably if the CSS variable or custom font fails to load.
- Around line 17-18: The CSS custom properties --sl-font and --sl-font-mono
currently reference var(--corvus-font-sans) and var(--corvus-font-mono) with no
fallbacks; update the declarations for --sl-font and --sl-font-mono to provide
robust fallback font stacks by using the var() second-argument fallback (e.g.,
system/stack and monospace stack) so typography still works if
`@corvus/shared/tokens.css` or those variables are missing; change the assignments
where --sl-font and --sl-font-mono are defined to include these fallback
font-family lists.
- Around line 168-169: Update the font-family declaration that currently uses
the CSS variable --corvus-font-heading to provide a safe fallback stack if the
variable is undefined; modify the rule that sets font-family:
var(--corvus-font-heading) (the hero/heading style) to include a comma-separated
fallback family list (e.g., a preferred system font and common sans-serif
options) so headings fall back predictably while keeping font-weight: 800
unchanged.

In `@clients/web/apps/marketing/src/layouts/MarketingLayout.astro`:
- Around line 69-71: Replace external Google Fonts usage with self-hosted font
assets: add Manrope, Syne, and JetBrains Mono font files (only the weights used)
into the app static assets (e.g., public/assets/fonts), create `@font-face` rules
in clients/web/packages/shared/tokens.css to reference those local files and
remove the existing `@import` url(...) there, remove the preconnect and external
stylesheet link tags from MarketingLayout.astro and from
clients/web/apps/dashboard/index.html and clients/web/apps/chat/index.html, and
add <link rel="preload" as="font" type="font/woff2" href="..."> tags for the
specific weights you actually use; ensure your CSS uses the new local
font-family names and that the build serves the fonts from the chosen assets
path.

In `@clients/web/packages/shared/tokens.css`:
- Around line 7-8: Remove the duplicate Google Fonts import in
clients/web/packages/shared/tokens.css by deleting the `@import` url(...) rule
(the line that loads Manrope, Syne, and JetBrains Mono); keep the existing HTML
<link> font tags in the entry HTMLs (chat/index.html and dashboard/index.html)
to preserve preconnect/link benefits, and confirm there are no other CSS files
importing the same Google Fonts so fonts are only loaded from the HTML links.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: eb9ea83e-6008-414c-966d-e2d8e799db4e

📥 Commits

Reviewing files that changed from the base of the PR and between 172f350 and ae22d2f.

⛔ Files ignored due to path filters (1)
  • clients/web/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (11)
  • .agents/skills/frontend-design/SKILL.md
  • clients/web/apps/chat/index.html
  • clients/web/apps/chat/package.json
  • clients/web/apps/chat/src/App.vue
  • clients/web/apps/chat/src/style.css
  • clients/web/apps/dashboard/index.html
  • clients/web/apps/dashboard/package.json
  • clients/web/apps/dashboard/src/style.css
  • clients/web/apps/docs/src/styles/custom.css
  • clients/web/apps/marketing/src/layouts/MarketingLayout.astro
  • clients/web/packages/shared/tokens.css
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: pr-checks
  • GitHub Check: sonar
  • GitHub Check: Cloudflare Pages
  • GitHub Check: pr-checks
🧰 Additional context used
📓 Path-based instructions (2)
**/*

⚙️ CodeRabbit configuration file

**/*: Security first, performance second.
Validate input boundaries, auth/authz implications, and secret management.
Look for behavioral regressions, missing tests, and contract breaks across modules.

Files:

  • clients/web/apps/docs/src/styles/custom.css
  • clients/web/apps/dashboard/src/style.css
  • clients/web/apps/chat/index.html
  • clients/web/apps/dashboard/package.json
  • clients/web/apps/marketing/src/layouts/MarketingLayout.astro
  • clients/web/apps/chat/src/App.vue
  • clients/web/apps/dashboard/index.html
  • clients/web/apps/chat/package.json
  • clients/web/apps/chat/src/style.css
  • clients/web/packages/shared/tokens.css
**/*.vue

⚙️ CodeRabbit configuration file

**/*.vue: Enforce Vue 3 Composition API with <script setup>.
Ensure accessibility (A11y) and proper use of Tailwind CSS classes.
Check for proper prop validation and emitted events documentation.

Files:

  • clients/web/apps/chat/src/App.vue
🧠 Learnings (1)
📚 Learning: 2026-02-17T07:28:38.934Z
Learnt from: CR
Repo: dallay/corvus PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-17T07:28:38.934Z
Learning: Applies to .agents/AGENTS.md : Document agent configurations and capabilities in AGENTS.md

Applied to files:

  • .agents/skills/frontend-design/SKILL.md
🪛 Stylelint (17.4.0)
clients/web/packages/shared/tokens.css

[error] 8-8: Expected "url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Syne:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap")" to be ""https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Syne:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap"" (import-notation)

(import-notation)


[error] 15-15: Expected "BlinkMacSystemFont" to be "blinkmacsystemfont" (value-keyword-case)

(value-keyword-case)


[error] 18-18: Expected "SFMono-Regular" to be "sfmono-regular" (value-keyword-case)

(value-keyword-case)


[error] 18-18: Expected "Consolas" to be "consolas" (value-keyword-case)

(value-keyword-case)

🔇 Additional comments (10)
clients/web/apps/dashboard/package.json (1)

23-23: LGTM!

Workspace dependency correctly added. The exports map in @corvus/shared/package.json properly declares the "./tokens.css" subpath, enabling the CSS import in style.css.

clients/web/apps/chat/package.json (1)

21-21: LGTM!

Consistent with the dashboard setup. Workspace dependency properly declared.

clients/web/packages/shared/tokens.css (2)

14-18: Static analysis hints are false positives here.

Stylelint flags BlinkMacSystemFont, SFMono-Regular, and Consolas for casing, but these are proper vendor font family names. Font names are case-insensitive per CSS spec, but preserving original casing matches documentation and improves readability.


82-115: Well-structured alias system for cross-app compatibility.

The semantic aliases (--color-bg-primary, --color-accent, etc.) provide a clean abstraction layer that will ease future theme changes without touching component code.

clients/web/apps/dashboard/src/style.css (2)

1-2: LGTM!

Import order is correct — tokens before Tailwind ensures CSS variables are available for use in utility classes.


14-16: Good use of 100dvh for mobile viewport handling.

Dynamic viewport height properly accounts for mobile browser chrome (address bar, etc.).

clients/web/apps/chat/src/App.vue (1)

391-401: Good a11y improvement for icon-only button.

Dynamic aria-label correctly reflects the toggle state, ensuring screen reader users understand the button's current action.

clients/web/apps/chat/src/style.css (1)

1-2: LGTM!

Shared tokens import follows the same pattern as dashboard.

clients/web/apps/docs/src/styles/custom.css (1)

7-7: All three font variables (--corvus-font-heading, --corvus-font-sans, --corvus-font-mono) are properly defined in the imported tokens.css file with complete values and appropriate fallbacks. No action needed.

clients/web/apps/marketing/src/layouts/MarketingLayout.astro (1)

18-24: Good OG image boundary validation.

This now constrains og:image to site-relative or explicit HTTP(S) URLs and falls back safely for everything else. Nice hardening for a user-controlled prop path.

As per coding guidelines, "Security first, performance second. Validate input boundaries, auth/authz implications, and secret management."

Also applies to: 42-49

Comment thread .agents/skills/frontend-design/SKILL.md
Comment thread .agents/skills/frontend-design/SKILL.md Outdated
Comment thread .agents/skills/frontend-design/SKILL.md Outdated
Comment thread clients/web/apps/chat/index.html
Comment thread clients/web/apps/chat/src/style.css
Comment thread clients/web/apps/docs/src/styles/custom.css Outdated
Comment thread clients/web/apps/docs/src/styles/custom.css Outdated
Comment thread clients/web/apps/docs/src/styles/custom.css
Comment thread clients/web/apps/marketing/src/layouts/MarketingLayout.astro
Comment thread clients/web/packages/shared/tokens.css Outdated
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Mar 7, 2026

Deploying corvus with  Cloudflare Pages  Cloudflare Pages

Latest commit: 04e6faa
Status: ✅  Deploy successful!
Preview URL: https://d0538278.corvus-42x.pages.dev
Branch Preview URL: https://frontend.corvus-42x.pages.dev

View logs

@coderabbitai coderabbitai Bot added area:ci and removed area:docs labels Mar 7, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (2)
clients/web/packages/shared/tokens.css (1)

7-8: ⚠️ Potential issue | 🟠 Major

Duplicate font loading — choose HTML <link> OR CSS @import, not both.

The HTML entry points (chat/index.html, dashboard/index.html) already load these fonts via <link> with preconnect. This @import triggers a second request.

Recommendation: Remove this @import and keep the HTML <link> approach—HTML preconnect provides better LCP since font discovery starts earlier in parsing.

🚀 Proposed fix (remove CSS import)
-/* ── Google Fonts (Distinctive Typography) ── */
-@import url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Syne:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap");
+/* ── Typography loaded via HTML <link> for optimal LCP ── */
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/web/packages/shared/tokens.css` around lines 7 - 8, Remove the
duplicate Google Fonts `@import` from tokens.css (the `@import` line referencing
fonts.googleapis.com) and rely on the existing <link> preload/preconnect entries
in chat/index.html and dashboard/index.html instead; locate the `@import`
statement in clients/web/packages/shared/tokens.css and delete it so fonts are
loaded only via the HTML link tags to preserve preconnect and improve LCP.
clients/web/apps/docs/src/styles/custom.css (1)

17-18: ⚠️ Potential issue | 🟡 Minor

Add fallback fonts for resilience.

These root font tokens lack fallbacks. If tokens.css fails to load, typography breaks. The heading rules at lines 168 and 310 correctly include fallbacks—apply the same pattern here.

🛡️ Proposed fix
-  --sl-font: var(--corvus-font-sans);
-  --sl-font-mono: var(--corvus-font-mono);
+  --sl-font: var(--corvus-font-sans, system-ui, -apple-system, sans-serif);
+  --sl-font-mono: var(--corvus-font-mono, ui-monospace, 'Cascadia Code', monospace);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/web/apps/docs/src/styles/custom.css` around lines 17 - 18, The root
CSS custom properties --sl-font and --sl-font-mono currently reference named
tokens without fallbacks; update their definitions so they include safe fallback
font stacks (e.g., a UI font stack for --sl-font and a generic monospace for
--sl-font-mono) using the var(..., fallback) pattern so typography still renders
if tokens.css fails—modify the --sl-font and --sl-font-mono declarations
accordingly to include those fallback lists.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@clients/web/apps/docs/src/styles/custom.css`:
- Around line 17-18: The root CSS custom properties --sl-font and --sl-font-mono
currently reference named tokens without fallbacks; update their definitions so
they include safe fallback font stacks (e.g., a UI font stack for --sl-font and
a generic monospace for --sl-font-mono) using the var(..., fallback) pattern so
typography still renders if tokens.css fails—modify the --sl-font and
--sl-font-mono declarations accordingly to include those fallback lists.

In `@clients/web/packages/shared/tokens.css`:
- Around line 7-8: Remove the duplicate Google Fonts `@import` from tokens.css
(the `@import` line referencing fonts.googleapis.com) and rely on the existing
<link> preload/preconnect entries in chat/index.html and dashboard/index.html
instead; locate the `@import` statement in clients/web/packages/shared/tokens.css
and delete it so fonts are loaded only via the HTML link tags to preserve
preconnect and improve LCP.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: ee2cd04e-c265-41ed-a5e0-c7144fd65fb3

📥 Commits

Reviewing files that changed from the base of the PR and between ae22d2f and 6d1da9e.

📒 Files selected for processing (6)
  • .agents/AGENTS.md
  • .agents/skills/frontend-design/SKILL.md
  • .github/workflows/sonarqube-analysis.yml
  • clients/web/apps/chat/src/style.css
  • clients/web/apps/docs/src/styles/custom.css
  • clients/web/packages/shared/tokens.css
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: sonar
  • GitHub Check: Cloudflare Pages
🧰 Additional context used
📓 Path-based instructions (2)
**/*

⚙️ CodeRabbit configuration file

**/*: Security first, performance second.
Validate input boundaries, auth/authz implications, and secret management.
Look for behavioral regressions, missing tests, and contract breaks across modules.

Files:

  • clients/web/apps/chat/src/style.css
  • clients/web/apps/docs/src/styles/custom.css
  • clients/web/packages/shared/tokens.css
.agents/AGENTS.md

📄 CodeRabbit inference engine (AGENTS.md)

.agents/AGENTS.md: Document agent configurations and capabilities in AGENTS.md
Maintain comprehensive agent metadata including name, description, purpose, and capabilities
Include version information and compatibility details for agents

Files:

  • .agents/AGENTS.md
🧠 Learnings (3)
📚 Learning: 2026-02-17T07:28:38.934Z
Learnt from: CR
Repo: dallay/corvus PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-17T07:28:38.934Z
Learning: Applies to .agents/AGENTS.md : Document agent configurations and capabilities in AGENTS.md

Applied to files:

  • .agents/skills/frontend-design/SKILL.md
  • .agents/AGENTS.md
📚 Learning: 2026-02-17T07:28:38.934Z
Learnt from: CR
Repo: dallay/corvus PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-17T07:28:38.934Z
Learning: Applies to .agents/AGENTS.md : Maintain comprehensive agent metadata including name, description, purpose, and capabilities

Applied to files:

  • .agents/skills/frontend-design/SKILL.md
📚 Learning: 2026-02-17T12:31:17.076Z
Learnt from: CR
Repo: dallay/corvus PR: 0
File: clients/agent-runtime/AGENTS.md:0-0
Timestamp: 2026-02-17T12:31:17.076Z
Learning: Applies to clients/agent-runtime/.github/**/*.{yml,yaml} : For workflow/template-only changes, ensure YAML/template syntax validity

Applied to files:

  • .github/workflows/sonarqube-analysis.yml
🪛 Stylelint (17.4.0)
clients/web/packages/shared/tokens.css

[error] 8-8: Expected "url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Syne:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap")" to be ""https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Syne:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap"" (import-notation)

(import-notation)


[error] 15-15: Expected "BlinkMacSystemFont" to be "blinkmacsystemfont" (value-keyword-case)

(value-keyword-case)


[error] 18-18: Expected "SFMono-Regular" to be "sfmono-regular" (value-keyword-case)

(value-keyword-case)


[error] 18-18: Expected "Consolas" to be "consolas" (value-keyword-case)

(value-keyword-case)

🔇 Additional comments (9)
.agents/AGENTS.md (1)

178-178: LGTM!

The skill entry follows the established table format and appropriately documents the new frontend-design capability with clear trigger conditions.

clients/web/apps/chat/src/style.css (2)

1-1: LGTM!

Centralizing design tokens via the shared import improves maintainability and consistency across apps.


69-69: Good fix — token with fallback addresses maintainability concern.

The --corvus-accent-glow-subtle token with an inline fallback provides resilience while centralizing the color definition.

.agents/skills/frontend-design/SKILL.md (1)

1-43: LGTM!

The skill spec establishes clear design philosophy while respecting the shared brand system through explicit token references in line 41. The guidance balances creative freedom with brand consistency.

clients/web/apps/docs/src/styles/custom.css (2)

168-169: Good — heading font includes proper fallback chain.


306-311: Good — markdown heading fonts include proper fallback chain.

clients/web/packages/shared/tokens.css (2)

51-53: Good addition — centralizes the accent glow token.

The --corvus-accent-glow-subtle token enables consistent usage across apps while allowing fallbacks in consuming stylesheets.


85-118: Good compatibility layer for existing apps.

The alias system allows gradual migration while maintaining backward compatibility with existing Dashboard & Chat variable references.

.github/workflows/sonarqube-analysis.yml (1)

151-152: ⚠️ Potential issue | 🟠 Major

Remove deprecated sonar.typescript.node property—it's no longer supported in current SonarQube versions.

The sonar.typescript.node property was deprecated and dropped from modern SonarQube/SonarScanner. The current replacement is sonar.nodejs.executable (which expects a full path to the Node binary). However, since Node.js is already set up via actions/setup-node earlier in the workflow, SonarQube's TypeScript analyzer will auto-provision Node automatically—this property can be safely removed entirely.

⛔ Skipped due to learnings
Learnt from: CR
Repo: dallay/corvus PR: 0
File: clients/agent-runtime/AGENTS.md:0-0
Timestamp: 2026-02-17T12:31:17.076Z
Learning: Applies to clients/agent-runtime/.github/**/*.{yml,yaml} : For workflow/template-only changes, ensure YAML/template syntax validity

@yacosta738 yacosta738 merged commit f6b717d into main Mar 7, 2026
17 of 19 checks passed
@yacosta738 yacosta738 deleted the frontend branch March 7, 2026 13:09
@yacosta738 yacosta738 mentioned this pull request Mar 16, 2026
@dallay-bot dallay-bot Bot mentioned this pull request Apr 9, 2026
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