Skip to content

refactor(ui): token discipline, voice pass, a11y guards, radius normalization#182

Merged
RedStar071 merged 15 commits into
mainfrom
refactor/design-token-cleanup
May 8, 2026
Merged

refactor(ui): token discipline, voice pass, a11y guards, radius normalization#182
RedStar071 merged 15 commits into
mainfrom
refactor/design-token-cleanup

Conversation

@RedStar071

Copy link
Copy Markdown
Member

🔗 Linked issue

No issue — this is a proactive normalization pass surfaced by an internal design audit.

🧭 Context

The site had scattered hardcoded color literals, duplicated CSS already present in utilities.css, inconsistent border-radii across cards, raw Tailwind palette classes (e.g. text-slate-700, bg-green-500) instead of semantic tokens, and user-facing copy that did not match the brand terminology canon in .atlas/design.md. This PR fixes all of that without changing any visual tokens or the DaisyUI theme palette.

📚 Description

What changed:

  • .atlas/design.md — Synchronized to reflect the actual codebase state: Inter-only type stack, corrected radius values (uniform 0.5rem), added Voice & Terminology canon, Utilities Catalog, Copy Patterns, and Do/Don't rules for agents.
  • AGENTS.md — Added Design Token Discipline section documenting the no-hardcoded-colors rule, the allow-list policy, and the new Vitest guardrail.
  • Discord components (discord/message.vue, discord/embed.vue, discord/invite.vue) — Replaced #5865f2 / #1E1F22 with scoped CSS custom properties; bg-green-500bg-success; removed arbitrary [Npx] Tailwind values.
  • Marketing pages (wolfstar/index.vue, FeatureShowcase.client.vue) — Replaced inline oklch gradient literals with the existing gradient-text-hero utility; text-purple-500text-primary.
  • App shell + PWA (app/Header.vue, app/Footer.vue, pwa/InstallPrompt.client.vue) — Removed duplicated glassmorphism CSS (consume nav-panel-glass); text-slate-700 dark:text-slate-400text-muted; bg-green-500bg-success.
  • Radius normalization (commands.vue, command/Base.vue, guild/card.vue, UserMenu.vue) — Standardized cards to rounded-xl, interactive blocks to rounded-lg.
  • A11y (layouts/default.vue) — Added outline: 2px solid transparent paired with box-shadow on skip link for forced-colors mode compatibility.
  • Terminology (oauth/callback.vue, oauth/guild.vue) — "Login with Discord" → "Sign in with Discord" per brand voice canon.
  • Token guardrail (test/unit/design-tokens/no-hardcoded-colors.test.ts) — New Vitest test scanning all .vue files for hardcoded color literals and raw Tailwind palette classes.

What did NOT change:

  • app/assets/css/main.css — DaisyUI theme palette is frozen.
  • No new fonts, no new routes, no Prisma schema changes, no API contract changes.
  • No visual regressions — changes are pure token-normalization.

…ormalization

- Replace hardcoded #hex/oklch literals in discord, marketing, app-shell, pwa
  components with scoped CSS vars or semantic DaisyUI/Nuxt UI tokens
- Consume existing gradient-text-hero and nav-panel-glass utilities instead
  of duplicating in component <style> blocks
- Normalize border-radius convention (cards rounded-xl, blocks rounded-lg,
  avatars/pills rounded-full) across guild, command, and layout components
- Add forced-colors outline to skip link focus state (a11y, WCAG 2.2 AA)
- Apply design.md terminology canon to user-facing copy only: Sign in/out,
  Server vs Guild in UI text, WolfStar casing; code identifiers unchanged
- Add test/unit/design-tokens/no-hardcoded-colors.test.ts to prevent future
  regressions; allow-list OgImage/Takumi and Discord brand-fidelity files
- Sync .atlas/design.md to actual token values (Inter only, 0.5rem radii,
  utilities catalog, voice and terminology canon)
- Document Design Token Discipline in AGENTS.md
Copilot AI review requested due to automatic review settings May 7, 2026 16:47
@coderabbitai

coderabbitai Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added a full design system / style reference and utilities catalogue; new quick-start tokens and utility classes.
  • Style

    • Visual tweaks: hero gradient text, icon colour updates to primary, reduced corner radii for consistency, refined header/navbar gradient and border, improved focus outline, adjusted embed/media sizing, success colour usage, and a new font utility.
  • Documentation

    • Introduced design token discipline guidance and token enforcement notes; updated global font selection.
  • Tests

    • Added guardrail test to detect hardcoded colours.

Walkthrough

This PR establishes design token discipline: a comprehensive Style Reference, Tailwind theme tokens, a Vitest guardrail preventing hardcoded colours, Whitney font utilities, and coordinated component updates switching hardcoded palette values to semantic tokens, standardising radii and fractional sizing, and normalising sign-in/out copy.

Changes

Design Token System & Enforcement

Layer / File(s) Summary
Design Documentation
.atlas/design.md
Comprehensive style reference with theme description, tokenised colour/typography/spacing/radius/shadow tables, component guidelines, product/brand/voice patterns, Quick Start :root CSS variables, Tailwind v4 @theme block, and a Utilities Catalog.
Agent Discipline
AGENTS.md
Adds "Design Token Discipline" section requiring semantic tokens, documents an allow-list of exemptions, and provides a semantic class/token reference.
Guardrail Test Implementation
test/unit/design-tokens/no-hardcoded-colors.test.ts
Vitest scanner checking Vue SFC <template>, <script>, and <style> blocks for raw Tailwind palette classes, hex literals outside CSS custom properties, and disallowed inline colour functions; supports an allow-list and per-line failure reporting.
Fonts & Utilities
app/assets/css/utilities.css, app/components/discord/messages.vue, nuxt.config.ts
Adds @utility font-whitney, applies font-whitney in discord messages, and changes Nuxt global font entry name from Inter to Geist.
Semantic Colour Migrations
app/components/app/Footer.vue, app/components/discord/invite.vue, app/components/discord/message.vue, app/components/discord/embed.vue
Replaced hardcoded palette classes and hex literals with semantic tokens and CSS variables (e.g., bg-success, var(--blurple), --discord-embed-default-border) and adjusted embed sizing.
Border Radius & Sizing Standardisation
app/components/command/Base.vue, app/components/guild/card.vue, app/pages/commands.vue, app/components/discord/embed.vue
Consolidated border radius from rounded-2xl to rounded-xl across several components and updated embed/media sizing to fractional utilities (max-h-75, max-w-75, h-4.5).
Header, Copy & Icon Updates
app/components/app/Header.vue, app/components/UserMenu.vue, app/pages/(marketing)/wolfstar/index.vue, app/pages/(marketing)/wolfstar/@components/FeatureShowcase.client.vue, app/pages/oauth/*.vue
Standardised sign-in/out wording ("Login"/"Log out" → "Sign in"/"Sign out"), refactored gradient text to gradient-text-hero, switched several marketing icons from purple to primary, and tuned header CSS (navbar shadow/branding styles).
Header Theme Slots
app/themes/header.ts
Updated slots default export class-string values for header container/content/header/left/overlay/right/root to new Tailwind utility combinations.
Misc UI & Accessibility
app/layouts/default.vue, app/components/pwa/InstallPrompt.client.vue
Extended skip-to-content focus outline utilities and adjusted PWA install icon colour to text-muted.

Possibly Related PRs

Suggested Reviewers

  • lorypelli
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately captures the main objectives: token discipline enforcement, brand voice standardisation, accessibility improvements, and radius normalisation across the codebase.
Description check ✅ Passed The description comprehensively explains the changes across design documentation, token replacements, radius normalisation, accessibility improvements, and terminology updates, with clear separation of what changed and what did not.
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 docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/design-token-cleanup

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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.

@sentry

sentry Bot commented May 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.83%. Comparing base (0119699) to head (6d96cb0).
✅ All tests successful. No failed tests found.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #182   +/-   ##
=======================================
  Coverage   66.83%   66.83%           
=======================================
  Files          81       81           
  Lines        2023     2023           
  Branches      601      601           
=======================================
  Hits         1352     1352           
  Misses        534      534           
  Partials      137      137           
Files with missing lines Coverage Δ
app/components/discord/embed.vue 85.71% <100.00%> (ø)
app/components/discord/invite.vue 100.00% <ø> (ø)
app/components/discord/message.vue 100.00% <ø> (ø)
app/components/discord/messages.vue 100.00% <ø> (ø)
app/pages/(marketing)/wolfstar/index.vue 5.45% <ø> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@codspeed-hq

codspeed-hq Bot commented May 7, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 44 untouched benchmarks


Comparing refactor/design-token-cleanup (6d96cb0) with main (0119699)

Open in CodSpeed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR is a design-system normalization pass for WolfStar.rocks, focused on enforcing semantic design tokens, aligning UI copy with the brand voice canon, and adding an automated guardrail to prevent hardcoded colors from reappearing in Vue SFCs.

Changes:

  • Replaced raw Tailwind palette classes / inline gradients with semantic tokens and existing utilities, plus normalized border radii across cards/interactive surfaces.
  • Updated user-facing auth/session terminology (“Sign in/Sign out”) to match the canonical voice.
  • Added a Vitest guardrail that scans Vue <template>/<style> blocks for hardcoded color usage, and documented the policy in repo guides.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
test/unit/design-tokens/no-hardcoded-colors.test.ts Adds a Vitest-based guardrail to block hardcoded colors / raw palette classes in Vue SFCs.
app/pages/oauth/guild.vue Updates user-facing terminology (“log in” → “sign in”).
app/pages/oauth/callback.vue Updates user-facing terminology (“log in” → “sign in”).
app/pages/commands.vue Normalizes card/container radius to the updated convention.
app/pages/(marketing)/wolfstar/index.vue Replaces inline gradient implementation with the shared gradient-text-hero utility.
app/pages/(marketing)/wolfstar/@components/FeatureShowcase.client.vue Replaces raw palette text color classes with semantic tokens (text-primary).
app/layouts/default.vue Adjusts skip-link focus styling to better support forced-colors/high-contrast modes.
app/components/UserMenu.vue Updates “Log out” terminology to “Sign out”.
app/components/pwa/InstallPrompt.client.vue Replaces raw palette classes with semantic token (text-muted).
app/components/guild/card.vue Normalizes skeleton radius to the updated convention.
app/components/discord/message.vue Moves Discord brand color usage into scoped CSS custom properties.
app/components/discord/invite.vue Replaces bg-green-500 with semantic success token (bg-success).
app/components/discord/embed.vue Replaces hardcoded colors/values with CSS vars and normalized sizing utilities.
app/components/command/Base.vue Normalizes container radius to the updated convention.
app/components/app/Header.vue Updates sign-in labels/aria-labels and refactors navbar styling to token-friendly values.
app/components/app/Footer.vue Replaces raw palette UI styling (bg-green-500) with semantic token (bg-success).
AGENTS.md Documents the new “Design Token Discipline” policy and the guardrail test scope.
.atlas/design.md Expands and synchronizes the style reference (tokens, voice canon, utilities catalog, radius guidance).

Comment thread test/unit/design-tokens/no-hardcoded-colors.test.ts Outdated
Comment thread test/unit/design-tokens/no-hardcoded-colors.test.ts Outdated
Comment thread app/layouts/default.vue Outdated
Comment thread .atlas/design.md

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
app/pages/oauth/callback.vue (1)

6-17: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Incomplete terminology pass — "Login Required" and "Go to Login" were missed.

Line 9 was updated to "sign in" but two adjacent user-facing strings in the same block still use the prohibited term. Per the brand Terminology table (Sign in / not Log in, login, connect):

  • Line 6: title="Login Required"title="Sign-In Required"
  • Line 13: "Go to Login""Go to Sign In"

Note: the route /login is exempt (routes retain existing identifiers per the scope note).

✏️ Proposed fix
-			<UAlert variant="solid" color="warning" title="Login Required" icon="twemoji:warning">
+			<UAlert variant="solid" color="warning" title="Sign-In Required" icon="twemoji:warning">
				<template `#description`>
					This page can't be accessed directly. Please
					<ULink to="/login" class="font-medium underline">sign in</ULink>
					to continue.
				</template>
				<template `#actions`>
-					<UButton color="neutral" variant="ghost" to="/login" size="sm">
-						Go to Login
+					<UButton color="neutral" variant="ghost" to="/login" size="sm">
+						Go to Sign In
					</UButton>
				</template>
			</UAlert>
🤖 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 `@app/pages/oauth/callback.vue` around lines 6 - 17, Change the remaining uses
of "login"/"Login" in the UAlert block to the preferred branding "Sign In":
update the UAlert title prop value from "Login Required" to "Sign-In Required"
and change the UButton label text from "Go to Login" to "Go to Sign In" while
leaving the ULink to="/login" route unchanged; locate these strings in the
UAlert component render (UAlert title, UButton children) and replace them
accordingly.
app/components/app/Header.vue (1)

77-86: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add a visible text label to the mobile sign-in button.

The mobile UButton is icon-only with aria-label, but this control still needs a persistent visible label. This is a primary action, so it should be unambiguous visually as well as programmatically.

Suggested fix
 						<UButton
+							label="Sign in"
 							size="md"
 							color="primary"
 							variant="subtle"
 							to="/login"
 							block
 							class="md:hidden"
 							icon="ic:round-discord"
 							aria-label="Sign in with Discord"
 						/>

As per coding guidelines, “Every interactive element must have a visible label” and “The accessible name of each interactive element must contain the visible label text”.

Also applies to: 85-85

🤖 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 `@app/components/app/Header.vue` around lines 77 - 86, The mobile UButton used
for Discord sign-in is icon-only and needs a persistent visible label; update
the UButton(s) (the components with icon="ic:round-discord" used for the mobile
sign-in) to render visible text such as "Sign in with Discord" (either via a
default slot or a text prop) and ensure the aria-label matches that visible text
so the accessible name contains the same words; keep the icon if desired but do
not rely solely on aria-label for identification.
🤖 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 `@app/components/discord/embed.vue`:
- Around line 76-77: The Tailwind utility `h-56.25` used in
app/components/discord/embed.vue will be dropped by the Tailwind scanner; update
the CSS rule that uses `@apply h-56.25` to use the arbitrary value syntax
`@apply h-[225px]` (or replace the class usage `h-56.25` with `h-[225px]`) so
Tailwind generates the correct height utility in the compiled CSS.

In `@test/unit/design-tokens/no-hardcoded-colors.test.ts`:
- Around line 67-82: extractBlocks currently only extracts <template> and
<style> blocks, leaving raw Tailwind class strings inside <script> (e.g.,
<script setup>) untested; add extraction for <script> blocks by introducing a
scriptRe (e.g. /<script(?:\s[^>]*)?>[\\s\\S]*?<\\/script>/gi), iterate
source.matchAll(scriptRe) to collect script contents into a new scripts array,
update the function signature/return type to { templates: string[]; styles:
string[]; scripts: string[] } and adjust any callers/tests that use
extractBlocks (or merge scripts into the existing templates scan where
appropriate) so classes inside <script> are covered by the same checks.

---

Outside diff comments:
In `@app/components/app/Header.vue`:
- Around line 77-86: The mobile UButton used for Discord sign-in is icon-only
and needs a persistent visible label; update the UButton(s) (the components with
icon="ic:round-discord" used for the mobile sign-in) to render visible text such
as "Sign in with Discord" (either via a default slot or a text prop) and ensure
the aria-label matches that visible text so the accessible name contains the
same words; keep the icon if desired but do not rely solely on aria-label for
identification.

In `@app/pages/oauth/callback.vue`:
- Around line 6-17: Change the remaining uses of "login"/"Login" in the UAlert
block to the preferred branding "Sign In": update the UAlert title prop value
from "Login Required" to "Sign-In Required" and change the UButton label text
from "Go to Login" to "Go to Sign In" while leaving the ULink to="/login" route
unchanged; locate these strings in the UAlert component render (UAlert title,
UButton children) and replace them accordingly.
🪄 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: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: 6cfdd473-1b3d-41bd-85a8-6db1ef99274e

📥 Commits

Reviewing files that changed from the base of the PR and between 0119699 and 8108e09.

📒 Files selected for processing (18)
  • .atlas/design.md
  • AGENTS.md
  • app/components/UserMenu.vue
  • app/components/app/Footer.vue
  • app/components/app/Header.vue
  • app/components/command/Base.vue
  • app/components/discord/embed.vue
  • app/components/discord/invite.vue
  • app/components/discord/message.vue
  • app/components/guild/card.vue
  • app/components/pwa/InstallPrompt.client.vue
  • app/layouts/default.vue
  • app/pages/(marketing)/wolfstar/@components/FeatureShowcase.client.vue
  • app/pages/(marketing)/wolfstar/index.vue
  • app/pages/commands.vue
  • app/pages/oauth/callback.vue
  • app/pages/oauth/guild.vue
  • test/unit/design-tokens/no-hardcoded-colors.test.ts

Comment thread app/components/discord/embed.vue Outdated
Comment thread test/unit/design-tokens/no-hardcoded-colors.test.ts Outdated
@RedStar071 RedStar071 force-pushed the refactor/design-token-cleanup branch 2 times, most recently from 24006ea to 8108e09 Compare May 7, 2026 17:08
@RedStar071 RedStar071 force-pushed the refactor/design-token-cleanup branch from b457a10 to 0e8c281 Compare May 7, 2026 17:55
@RedStar071

Copy link
Copy Markdown
Member Author

@copilot apply changes based on the comments in this thread

@RedStar071

Copy link
Copy Markdown
Member Author

@copilot apply changes based on the comments in this thread

Copilot AI commented May 7, 2026

Copy link
Copy Markdown
Contributor

@copilot apply changes based on the comments in this thread

Applied all requested review-thread fixes in a4cb56a.

  • Replaced the invalid hex regex lookbehind with declaration-based matching and explicit CSS-var line skips in no-hardcoded-colors.test.ts.
  • Clarified ALLOW_LIST as exact-path based.
  • Added focus:outline to the skip link for forced-colors outline-style compatibility.
  • Clarified .atlas/design.md radius wording to distinguish DaisyUI base token vs app Tailwind conventions.

Screenshot (UI context after this update): /tmp/wolfstar-review-fix.png

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • api.fontshare.com
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build k desc�� /wolfstar.rocks/node_modules/.pnv* --abbrev=0 /home/REDACTED/.config/composer/vendor/bin/git 97fb58ee4c2a830bgit origin/release git git log 0119699b86e6425d8be9e890d31f4636v* --format=%s%n%b n/git --global r = get &amp;&amp; echo &#34;0119699b86e6425d8be9e890d31f4636266a4e09..HEAD ode (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs dev --port 3000 0119699b86e6425dv* pm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e-c p/bin/ps 0.1.19_@opentelebash (dns block)
  • api.fontsource.org
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build (dns block)
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run (dns block)
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts tnet/tools/node 97fb58ee4c2a830bgit (dns block)
  • api.iconify.design
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs dev --port 3000 ������������ %H �� %aI �� %s �� %D �� %b �� %aN v* HEAD /usr/local/.ghcup/bin/git 2.2_@vites_5793egit ting)/privacy.vupush ded-colors|faile-v git log ������������ %H �� %aI �� %s �� %D �� %b �� %aN v* --format=%s%n%b t %D �� %b �� %aN git ting)/terms.vue n/git sed (dns block)
  • checkpoint.prisma.io
    • Triggering command: `/usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/prisma@7.7.0_@types+react@19.2.14_magicast@0.5.2_react-dom@19.2.5_react@19.2.5_typescript@6.0.2/node_modules/prisma/build/child {"product":"prisma","version":"7.7.0","cli_install_type":"local","information":"","local_timestamp":"2026-05-07T18:06:21Z","project_hash":"8cee999f","cli_path":"/home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/prisma/build/index.js","cli_path_ ro-dev/vite-plus-test/dist/worke--abbrev=0 --ex�� --require /home/REDACTED/work/wolfstar.rocksorigin/release 0/dist/node-gyp-bin/git node --conditions development git -tes�� 0119699b86e6425d8be9e890d31f4636node p-link outline

Agent-Logs-Url: REDACTED nfig/composer/vendor/bin/git --abbrev-ref HEAD n/git -test/dist/worke--abbrev=0` (dns block)

  • fonts.bunny.net
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build (dns block)
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run (dns block)
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts tnet/tools/node 97fb58ee4c2a830bgit (dns block)
  • fonts.google.com
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build (dns block)
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run (dns block)
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts tnet/tools/node 97fb58ee4c2a830bgit (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
app/components/app/Header.vue (1)

143-150: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Two violations in the dropdown items block contradict the rules this PR establishes.

1 — Terminology: label: "Log Out" should be "Sign out" per the Terminology canon introduced in .atlas/design.md ("Sign out | Log out, logout, disconnect").

2 — Token discipline: itemLeadingIcon: "bg-red-500" is a raw Tailwind palette class inside a <script setup> block. The Vitest guardrail only scans <template> and <style>, so this bypasses enforcement. Use the semantic token bg-error instead.

🛠️ Proposed fix
-		label: "Log Out",
+		label: "Sign out",
 		onSelect: logout,
 		ui: {
-			itemLeadingIcon: "bg-red-500",
+			itemLeadingIcon: "bg-error",
 		},
🤖 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 `@app/components/app/Header.vue` around lines 143 - 150, Update the dropdown
item in Header.vue that currently uses label "Log Out" and a raw Tailwind class
for itemLeadingIcon: change the label to "Sign out" and replace the raw palette
class "bg-red-500" with the semantic token "bg-error" so the entry uses approved
Terminology and token discipline; locate the dropdown items array (the object
with icon "lucide:log-out", label, onSelect: logout, ui) and edit its label and
ui.itemLeadingIcon accordingly.
🧹 Nitpick comments (3)
app/themes/header.ts (1)

5-12: 💤 Low value

LGTM — token normalisation and floating-pill pattern look correct.

The pointer-events-none on root with pointer-events-auto restored on container, content, and overlay is the standard click-through wrapper technique. Consuming card-glass and nav-panel-glass utilities instead of inlining equivalent CSS aligns with the PR's semantic token discipline.

One minor note: Line 12 uses border-none on root. The more idiomatic Tailwind reset for "no border" is border-0, since the default border-style on a <div> is already none. border-none is harmless here but border-0 is more conventional.

Optional: prefer border-0 over border-none
-		root: "sticky top-3 z-50 w-full bg-transparent border-none flex justify-center px-4 pointer-events-none",
+		root: "sticky top-3 z-50 w-full bg-transparent border-0 flex justify-center px-4 pointer-events-none",
🤖 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 `@app/themes/header.ts` around lines 5 - 12, Update the theme tokens to use the
Tailwind-conventional utility for removing borders: in app/themes/header.ts
replace the "border-none" entry in the root token with "border-0" (the token
named root) so the header uses the idiomatic Tailwind reset while keeping all
other classes (pointer-events-none, sticky top-3, z-50, etc.) unchanged.
.atlas/design.md (2)

199-213: ⚡ Quick win

Agent Prompt Guide examples teach raw literal usage, which contradicts the token canon.

Examples like oklch(14% 0.005 285.823) and oklch(58.73% 0.0204 272.13) in the prompt snippets will train authors to hard-code oklch literals in new components rather than reference the defined CSS custom properties (var(--color-neutral), var(--color-secondary), etc.). Replace the inline literals with their token names to model correct usage.

✏️ Suggested change (example 1)
-1. Create a hero section with an `Obsidian` background (`oklch(14% 0.005 285.823)`). Headline (Inter, 54px, weight 700, `Canvas White`). Subtext (Inter, 18px, weight 400, `Canvas White`, line-height 1.2).
+1. Create a hero section with `background: var(--color-neutral)` (`Obsidian`). Headline: `font-size: var(--text-display)` / `font-weight: var(--font-weight-bold)` / `color: var(--color-base-100)`. Subtext: `font-size: var(--text-subheading)` / `line-height: var(--leading-subheading)` / `color: var(--color-base-100)`.
🤖 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 @.atlas/design.md around lines 199 - 213, The Agent Prompt Guide uses
hard-coded oklch color literals (e.g., "oklch(14% 0.005 285.823)", "oklch(58.73%
0.0204 272.13)") in the Example Component Prompts which contradicts the token
canon; update the examples in the "Agent Prompt Guide" (examples 1–4) to
reference the design tokens (e.g., var(--color-neutral), var(--color-secondary),
var(--color-accent), var(--color-primary-action)) instead of inline oklch(...)
literals so authors learn to use CSS custom properties consistently.

385-455: 💤 Low value

@theme block is a subset of :root — typography scale and layout tokens are missing.

The :root block declares --leading-*, --tracking-*, --font-weight-*, --spacing-unit, --section-gap, --card-padding, and --element-gap, but none of these appear in the @theme block. In Tailwind v4, tokens absent from @theme are not surfaced as utility classes. If authors need leading-caption or tracking-heading utilities, they should be in @theme too. Either add the missing tokens or add a note clarifying that the @theme block is intentionally a partial subset.

🤖 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 @.atlas/design.md around lines 385 - 455, The `@theme` block is missing many
tokens defined in :root (e.g., --leading-caption, --tracking-heading,
--font-weight-*, --spacing-unit, --section-gap, --card-padding, --element-gap)
which prevents Tailwind v4 from generating corresponding utilities; update the
`@theme` block to include these missing variables (copy or map the relevant
--leading-*, --tracking-*, --font-weight-*, and spacing tokens from :root into
`@theme`) so utilities like leading-caption and tracking-heading are produced, or
alternatively add a clear comment in the `@theme` block stating it is
intentionally a partial subset and list which tokens are omitted.
🤖 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 `@test/unit/design-tokens/no-hardcoded-colors.test.ts`:
- Around line 84-95: The path comparison fails on Windows because relPath is
produced by path.relative(join(ROOT, file)) and contains backslashes while
ALLOW_LIST uses forward slashes; update the relPath computation in the test loop
(where relPath is defined) to normalize separators before checking ALLOW_LIST
(e.g., compute relPath as before then convert backslashes to forward slashes or
use path.posix-style normalization such that ALLOW_LIST.has(normalizedRelPath)
will match on all platforms).
- Around line 100-158: The tests report block-relative line numbers because they
use i+1 from each block's split; change the block representation to include its
starting file-line (e.g., each item in templates and styles becomes an object
with text and startLine or maintain a parallel startLines array) and in the
three test loops ("no raw Tailwind palette classes in <template>" using
templates, "no hex literals in <style>" and "no inline oklch/rgb/rgba in
<style>" using styles) update the expect.fail location string to use
(block.startLine + i + 1) (or startLines[idx] + i + 1) instead of i + 1 so
relPath points to the absolute file line; keep the rest of the checks unchanged.

---

Outside diff comments:
In `@app/components/app/Header.vue`:
- Around line 143-150: Update the dropdown item in Header.vue that currently
uses label "Log Out" and a raw Tailwind class for itemLeadingIcon: change the
label to "Sign out" and replace the raw palette class "bg-red-500" with the
semantic token "bg-error" so the entry uses approved Terminology and token
discipline; locate the dropdown items array (the object with icon
"lucide:log-out", label, onSelect: logout, ui) and edit its label and
ui.itemLeadingIcon accordingly.

---

Nitpick comments:
In @.atlas/design.md:
- Around line 199-213: The Agent Prompt Guide uses hard-coded oklch color
literals (e.g., "oklch(14% 0.005 285.823)", "oklch(58.73% 0.0204 272.13)") in
the Example Component Prompts which contradicts the token canon; update the
examples in the "Agent Prompt Guide" (examples 1–4) to reference the design
tokens (e.g., var(--color-neutral), var(--color-secondary), var(--color-accent),
var(--color-primary-action)) instead of inline oklch(...) literals so authors
learn to use CSS custom properties consistently.
- Around line 385-455: The `@theme` block is missing many tokens defined in :root
(e.g., --leading-caption, --tracking-heading, --font-weight-*, --spacing-unit,
--section-gap, --card-padding, --element-gap) which prevents Tailwind v4 from
generating corresponding utilities; update the `@theme` block to include these
missing variables (copy or map the relevant --leading-*, --tracking-*,
--font-weight-*, and spacing tokens from :root into `@theme`) so utilities like
leading-caption and tracking-heading are produced, or alternatively add a clear
comment in the `@theme` block stating it is intentionally a partial subset and
list which tokens are omitted.

In `@app/themes/header.ts`:
- Around line 5-12: Update the theme tokens to use the Tailwind-conventional
utility for removing borders: in app/themes/header.ts replace the "border-none"
entry in the root token with "border-0" (the token named root) so the header
uses the idiomatic Tailwind reset while keeping all other classes
(pointer-events-none, sticky top-3, z-50, etc.) unchanged.
🪄 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: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: 36b34534-40ed-43e2-85e1-91efe24d0fe3

📥 Commits

Reviewing files that changed from the base of the PR and between 8108e09 and a4cb56a.

📒 Files selected for processing (5)
  • .atlas/design.md
  • app/components/app/Header.vue
  • app/layouts/default.vue
  • app/themes/header.ts
  • test/unit/design-tokens/no-hardcoded-colors.test.ts
✅ Files skipped from review due to trivial changes (1)
  • app/layouts/default.vue

Comment thread test/unit/design-tokens/no-hardcoded-colors.test.ts Outdated
Comment thread test/unit/design-tokens/no-hardcoded-colors.test.ts

Copilot AI commented May 7, 2026

Copy link
Copy Markdown
Contributor

@copilot apply changes based on the comments in this thread

Applied the review-thread updates in 1053a4d.

  • Replaced @apply h-56.25 with @apply h-[225px] in app/components/discord/embed.vue.
  • Extended no-hardcoded-colors guardrail coverage to scan <script> blocks for raw Tailwind palette classes.
  • Updated an existing script-side class in app/components/app/Header.vue from bg-red-500 to text-error to satisfy the new guardrail.

Screenshot: /tmp/wolfstar-review-fix-2.png

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • api.fontshare.com
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build git log 266a4e09..HEAD --format=%s%n%b p/bin/git (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs dev --port 3000 �� %aI �� %s �� node --abbrev=0 node v* e /wolfstar.rocks/0119699b86e6425d8be9e890d31f4636266a4e09..HEAD rs/forks.js ro-d�� HEAD node node_modules/.bin/git 266a4e09..HEAD node_modules/.pn/usr/local/bin/pnpm bin/git ro-dev/vite-plus-test/dist/worke--abbrev=0 (dns block)
  • api.fontsource.org
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts (dns block)
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts git copilot.originalgit (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build git log 266a4e09..HEAD --format=%s%n%b p/bin/git (dns block)
  • api.iconify.design
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs dev --port 3000 �� %aI �� %s �� node --abbrev=0 node v* e /wolfstar.rocks/0119699b86e6425d8be9e890d31f4636266a4e09..HEAD rs/forks.js ro-d�� HEAD node node_modules/.bin/git 266a4e09..HEAD node_modules/.pn/usr/local/bin/pnpm bin/git ro-dev/vite-plus-test/dist/worke--abbrev=0 (dns block)
  • checkpoint.prisma.io
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/prisma@7.7.0_@types&#43;react@19.2.14_magicast@0.5.2_react-dom@19.2.5_react@19.2.5_typescript@6.0.2/node_modules/prisma/build/child {&#34;product&#34;:&#34;prisma&#34;,&#34;version&#34;:&#34;7.7.0&#34;,&#34;cli_install_type&#34;:&#34;local&#34;,&#34;information&#34;:&#34;&#34;,&#34;local_timestamp&#34;:&#34;2026-05-07T18:13:42Z&#34;,&#34;project_hash&#34;:&#34;8cee999f&#34;,&#34;cli_path&#34;:&#34;/home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/prisma/build/index.js&#34;,&#34;cli_path_ ode mpor�� --max-parents=0 k/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelerev-list k/v1/pnpm/10.33.0/dist/node-gyp-bin/git get --local k/wolfstar.rocks--tags ames-native-stac--abbrev=0 synt�� k/wolfstar.rocksv* --abbrev=0 bin/git v* (dns block)
  • fonts.bunny.net
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts (dns block)
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts git copilot.originalgit (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build git log 266a4e09..HEAD --format=%s%n%b p/bin/git (dns block)
  • fonts.google.com
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts (dns block)
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts git copilot.originalgit (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build git log 266a4e09..HEAD --format=%s%n%b p/bin/git (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@RedStar071

Copy link
Copy Markdown
Member Author

@copilot apply changes based on the comments in this thread

@RedStar071 RedStar071 changed the title refactor(design): token discipline, voice pass, a11y guards, radius normalization refactor(ui): token discipline, voice pass, a11y guards, radius normalization May 8, 2026

Copilot AI commented May 8, 2026

Copy link
Copy Markdown
Contributor

@copilot apply changes based on the comments in this thread

Applied the thread updates in ca43da0 (with follow-up commits on top).

  • Updated Header dropdown copy to Sign out and kept semantic icon token usage (text-error).
  • Hardened no-hardcoded-colors guardrail: cross-platform path normalization, absolute file line numbers in failure output, and Windows-safe allow-list matching.
  • Removed direct fast-glob usage (fixes CI unlisted-dependency failure) by switching file discovery to node:fs globSync.
  • Adjusted the hex-style regex to satisfy lint and avoid ambiguous matches.

Screenshot: /tmp/wolfstar-review-fix-3.png

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • api.fontshare.com
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs dev --port 3000 (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build git n/..�� oded-colors.testv* --global n.js user.name @types&#43;node@24.1-c (dns block)
  • api.fontsource.org
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs dev --port 3000 (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build git n/..�� oded-colors.testv* --global n.js user.name @types&#43;node@24.1-c (dns block)
  • api.iconify.design
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs dev --port 3000 (dns block)
    • Triggering command: /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell /home/REDACTED/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl ndor/bin/git (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build git n/..�� oded-colors.testv* --global n.js user.name @types&#43;node@24.1-c (dns block)
  • checkpoint.prisma.io
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/prisma@7.7.0_@types&#43;react@19.2.14_magicast@0.5.2_react-dom@19.2.5_react@19.2.5_typescript@6.0.2/node_modules/prisma/build/child {&#34;product&#34;:&#34;prisma&#34;,&#34;version&#34;:&#34;7.7.0&#34;,&#34;cli_install_type&#34;:&#34;local&#34;,&#34;information&#34;:&#34;&#34;,&#34;local_timestamp&#34;:&#34;2026-05-08T11:04:15Z&#34;,&#34;project_hash&#34;:&#34;8cee999f&#34;,&#34;cli_path&#34;:&#34;/home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/prisma/build/index.js&#34;,&#34;cli_path_ (dns block)
  • fonts.bunny.net
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs dev --port 3000 (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build git n/..�� oded-colors.testv* --global n.js user.name @types&#43;node@24.1-c (dns block)
  • fonts.google.com
    • Triggering command: /usr/local/bin/node /usr/local/bin/node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.pnpm/@voidzero-dev&#43;vite-plus-test@0.1.19_@opentelemetry&#43;api@1.9.1_@types&#43;node@24.12.2_@vites_5793e97fb58ee4c2a830bc5a986c3c46/node_modules/@voidzero-dev/vite-plus-test/dist/cli.js run --project unit -- test/unit/design-tokens/no-hardcoded-colors.test.ts (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs dev --port 3000 (dns block)
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/wolfstar.rocks/wolfstar.rocks/node_modules/.bin/../nuxt/bin/nuxt.mjs build git n/..�� oded-colors.testv* --global n.js user.name @types&#43;node@24.1-c (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 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 `@app/assets/css/utilities.css`:
- Line 30: Update the Stylelint configuration to allow Tailwind v4 custom
at-rules by modifying the scss/at-rule-no-unknown rule in .stylelintrc.json: add
an ignoreAtRules array that includes "utility" and "layer" so `@utility` and
`@layer` in app/assets/css/utilities.css are not reported as unknown by
stylelint-config-standard-scss; ensure the rule remains enabled but uses the
ignoreAtRules option to whitelist these two at-rule names.
- Around line 3-31: The CSS uses quoted single-word font family names
("Whitney") which triggers stylelint's font-family-name-quotes rule; update
every occurrence in the shown diff — in each `@font-face` blocks' font-family
declarations and in the `@utility` font-whitney rule — by removing the quotes
around Whitney (e.g., change "Whitney" to Whitney) while leaving fallback
families, commas, font-weight and font-display lines unchanged.
🪄 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: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: a741c02d-b884-4f4a-b0e9-94c5235df73f

📥 Commits

Reviewing files that changed from the base of the PR and between a4cb56a and 07d5879.

📒 Files selected for processing (6)
  • app/assets/css/utilities.css
  • app/components/app/Header.vue
  • app/components/discord/embed.vue
  • app/components/discord/messages.vue
  • nuxt.config.ts
  • test/unit/design-tokens/no-hardcoded-colors.test.ts
✅ Files skipped from review due to trivial changes (2)
  • app/components/discord/messages.vue
  • app/components/discord/embed.vue
🚧 Files skipped from review as they are similar to previous changes (1)
  • app/components/app/Header.vue

Comment thread app/assets/css/utilities.css Outdated
Comment thread app/assets/css/utilities.css

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

♻️ Duplicate comments (2)
app/assets/css/utilities.css (2)

1-3: ⚠️ Potential issue | 🟡 Minor

Quoted font family name still requires correction.

The issue previously flagged remains: "Whitney" should be unquoted. Single-word font names that are valid CSS identifiers do not require quotes under the always-where-recommended stylelint rule.

🤖 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 `@app/assets/css/utilities.css` around lines 1 - 3, The font-family declaration
inside the `@utility` font-whitney rule uses a quoted single-word font name;
update the font-family in the font-whitney utility by removing the quotes around
Whitney so it reads Whitney, ui-sans-serif, system-ui, sans-serif to comply with
the stylelint always-where-recommended rule.

1-3: ⚠️ Potential issue | 🟡 Minor

Stylelint configuration for @utility still required.

The @utility at-rule continues to trigger scss/at-rule-no-unknown. As previously noted, update .stylelintrc.json to include { "ignoreAtRules": ["utility", "layer"] } for the scss/at-rule-no-unknown rule to support Tailwind v4 custom at-rules.

🤖 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 `@app/assets/css/utilities.css` around lines 1 - 3, Update the Stylelint config
so the scss/at-rule-no-unknown rule ignores Tailwind v4 custom at-rules;
specifically add "utility" and "layer" to the rule's ignoreAtRules array in
.stylelintrc.json (so `@utility` in utilities.css no longer triggers
scss/at-rule-no-unknown).
🤖 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.

Duplicate comments:
In `@app/assets/css/utilities.css`:
- Around line 1-3: The font-family declaration inside the `@utility` font-whitney
rule uses a quoted single-word font name; update the font-family in the
font-whitney utility by removing the quotes around Whitney so it reads Whitney,
ui-sans-serif, system-ui, sans-serif to comply with the stylelint
always-where-recommended rule.
- Around line 1-3: Update the Stylelint config so the scss/at-rule-no-unknown
rule ignores Tailwind v4 custom at-rules; specifically add "utility" and "layer"
to the rule's ignoreAtRules array in .stylelintrc.json (so `@utility` in
utilities.css no longer triggers scss/at-rule-no-unknown).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: 5e9e94c6-a8b1-4274-a5ba-e2c069e9a8ab

📥 Commits

Reviewing files that changed from the base of the PR and between 07d5879 and 6d96cb0.

📒 Files selected for processing (2)
  • app/assets/css/utilities.css
  • nuxt.config.ts
✅ Files skipped from review due to trivial changes (1)
  • nuxt.config.ts

@RedStar071 RedStar071 merged commit d39130d into main May 8, 2026
17 checks passed
@RedStar071 RedStar071 deleted the refactor/design-token-cleanup branch May 8, 2026 14:14
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.

3 participants