fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text - #217

Merged
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup
Jun 12, 2026
Merged

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text#217
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jun 12, 2026

Copy link
Copy Markdown
Member

Resolves the PROGRAM.md backlog item: duplicate --rarity-* definitions in globals.css.

  • Deletes the dead revamp :root rarity block; the legacy block (canonical per decision) now defines each of the ten tokens exactly once.
  • --rarity-legendary pinned to #b4862c (was var(--brand-progress) #e8a33a at 2.10:1 — under the 3:1 non-text bar). All five tiers now clear 3:1 on every required non-text surface (legendary worst case 3.02).
  • Hard-coded copies of the rarity palette in ProfileView.tsx and Achievements.tsx replaced with the canonical tokens (hex-alpha suffixes → color-mix; ProfileView featured legendary is pixel-identical, confirming the conversion).
  • Rarity is never conveyed by colored text: TitleFlair and the Achievements rarity chip render neutral var(--text); TitleFlair appends the literal tier name; the Achievements showcase strip gains a rarity text line (was border-color-only, a 1.4.1 gap).
  • --rarity-legendary-bg intentionally stays on the lighter gold base (comment added): a #b4862c-based tint would put the TitleFlair border vs its own interior under 3:1.

Verified by fresh-context measurement: all rarity-adjacent text ≥4.87:1; all required non-text ≥3.02:1; two legendary items (Achievements icon-tile glyph 2.82, progress fill 2.64) rely on the documented decorative/redundant carve-out. Toast and Settings render pixel-identical for the four unchanged tiers (headless-Chrome harness diff).

Do not merge yet — awaiting visual sign-off on the changed surfaces.

Summary by CodeRabbit

  • Style

    • Standardized rarity tier styling across achievement cards and profile features using design tokens.
    • Reorganized CSS for consistent color application across components.
    • Updated featured achievement cards with improved rarity tier visibility.
  • Bug Fixes

    • Enhanced accessibility: rarity tiers now indicated via border color and explicit tier label instead of text color alone, improving contrast and clarity.

@cloudflare-workers-and-pages

cloudflare-workers-and-pagesBot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend4450f0aCommit Preview URL

Branch Preview URL
Jun 12 2026, 05:10 PM

@coderabbitai

coderabbitaiBot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR refactors rarity color styling across achievement and profile components to use canonical CSS tokens instead of hardcoded hex values. Rarity tier tokens are reorganized in globals.css with --rarity-legendary updated to a fixed value, and a rarityVar helper abstracts color derivation in components. Featured achievement tiles gain dedicated rarity display lines with improved typography.

Changes

Rarity Color Token Migration

Layer / File(s)Summary
CSS Token Foundation and Reorganization
frontend/src/app/globals.css
Rarity tier tokens moved to dedicated "RARITY TIER TOKENS" section with --rarity-legendary updated from var(--brand-progress) to fixed #b4862c value.
Achievements Component Rarity Token Adoption
frontend/src/components/screens/Achievements.tsx
Introduces rarityVar helper and refactors card borders, shadows, badge colors, and featured tile styling to use CSS token-derived colors. Featured tiles gain dedicated rarity display lines with uppercase formatting.
ProfileView Featured Achievements Integration
frontend/src/components/ProfileView.tsx
Introduces rarityVar helper and applies token-derived colors to featured achievement borders and backgrounds via color-mix, replacing hardcoded hex values.
TitleFlair Accessibility and Display Update
frontend/src/components/TitleFlair.tsx
Updates styling to use neutral text color for accessibility while maintaining rarity backgrounds. Renders both cosmetic name and rarity tier as separate elements with explanatory accessibility comments.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Hues now flow from tokens true,
Rarity colors, canonical through and through,
Legendary gold gleams bright (#b4862c!),
Accessibility whispers: borders, not ink,
From scattered hex to unified think.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe description provides a detailed explanation of changes and includes testing/verification notes, but does not follow the repository's template structure with explicit sections like 'Changes Made', 'Related Issues', 'Testing', and 'Screenshots'.Reformat the description to match the repository template: use 'Changes Made' for the bullet list, add 'Related Issues' section with issue number, structure 'Testing' with checkboxes, and add 'Notes for Reviewers' section.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title accurately summarizes the main changes: consolidating rarity tokens as a single source, fixing the legendary tier to meet 3:1 contrast, and using neutral text for rarity display.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck 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 fix/rarity-token-dedup

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.

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
frontend/src/components/ProfileView.tsx (1)

10-11: ⚡ Quick win

Inconsistent fallback and type compared to Achievements.tsx.

The rarityVar helper here uses var(--text-muted) as the fallback, while Achievements.tsx (lines 12-14) uses var(--border). Since these colors are applied to borders, backgrounds, and shadows, var(--border) is more semantically appropriate and ensures visual consistency if a rarity token is missing.

Additionally, the parameter type here is string, while Achievements uses the more specific RarityTier type. Since ua.achievement.rarity should be typed as RarityTier, using the stricter type improves type safety.

♻️ Align with Achievements.tsx pattern
-// Rarity colors come only from the canonical --rarity-* tokens (globals.css).-const rarityVar = (r: string) => `var(--rarity-${r}, var(--text-muted))`;+import type { RarityTier } from "`@/lib/types`";++// Rarity colors come only from the canonical --rarity-* tokens (globals.css).+const rarityVar = (r: RarityTier) => `var(--rarity-${r}, var(--border))`;
🤖 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 `@frontend/src/components/ProfileView.tsx` around lines 10 - 11, Update the
rarityVar helper to match Achievements.tsx: change its fallback from
var(--text-muted) to var(--border) and tighten the parameter type from string to
the RarityTier type used elsewhere; ensure usages (e.g., places that pass
ua.achievement.rarity) still compile and import or reference RarityTier where
rarityVar is declared so the helper enforces the stricter type and produces the
same border-appropriate fallback color.
🤖 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.
Nitpick comments:
In `@frontend/src/components/ProfileView.tsx`:
- Around line 10-11: Update the rarityVar helper to match Achievements.tsx:
change its fallback from var(--text-muted) to var(--border) and tighten the
parameter type from string to the RarityTier type used elsewhere; ensure usages
(e.g., places that pass ua.achievement.rarity) still compile and import or
reference RarityTier where rarityVar is declared so the helper enforces the
stricter type and produces the same border-appropriate fallback color.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 67e93ca5-cd2f-4100-aec5-1e1d7edc11d5

📥 Commits

Reviewing files that changed from the base of the PR and between 8caed88 and 4450f0a.

📒 Files selected for processing (4)
  • frontend/src/app/globals.css
  • frontend/src/components/ProfileView.tsx
  • frontend/src/components/TitleFlair.tsx
  • frontend/src/components/screens/Achievements.tsx

@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez merged commit 24f1b94 into mainJun 12, 2026
6 checks passed
@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez deleted the fix/rarity-token-dedup branch June 12, 2026 17:31
Jose-Gael-Cruz-Lopez added a commit that referenced this pull request Jun 12, 2026
docs: PROGRAM.md — record #217, close rarity + deploy-stall backlog items
Sign up for freeto 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

@Jose-Gael-Cruz-Lopez
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text - #217

Merged
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup
Jun 12, 2026
Merged

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text#217
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jun 12, 2026

Copy link
Copy Markdown
Member

Resolves the PROGRAM.md backlog item: duplicate --rarity-* definitions in globals.css.

  • Deletes the dead revamp :root rarity block; the legacy block (canonical per decision) now defines each of the ten tokens exactly once.
  • --rarity-legendary pinned to #b4862c (was var(--brand-progress) #e8a33a at 2.10:1 — under the 3:1 non-text bar). All five tiers now clear 3:1 on every required non-text surface (legendary worst case 3.02).
  • Hard-coded copies of the rarity palette in ProfileView.tsx and Achievements.tsx replaced with the canonical tokens (hex-alpha suffixes → color-mix; ProfileView featured legendary is pixel-identical, confirming the conversion).
  • Rarity is never conveyed by colored text: TitleFlair and the Achievements rarity chip render neutral var(--text); TitleFlair appends the literal tier name; the Achievements showcase strip gains a rarity text line (was border-color-only, a 1.4.1 gap).
  • --rarity-legendary-bg intentionally stays on the lighter gold base (comment added): a #b4862c-based tint would put the TitleFlair border vs its own interior under 3:1.

Verified by fresh-context measurement: all rarity-adjacent text ≥4.87:1; all required non-text ≥3.02:1; two legendary items (Achievements icon-tile glyph 2.82, progress fill 2.64) rely on the documented decorative/redundant carve-out. Toast and Settings render pixel-identical for the four unchanged tiers (headless-Chrome harness diff).

Do not merge yet — awaiting visual sign-off on the changed surfaces.

Summary by CodeRabbit

  • Style

    • Standardized rarity tier styling across achievement cards and profile features using design tokens.
    • Reorganized CSS for consistent color application across components.
    • Updated featured achievement cards with improved rarity tier visibility.
  • Bug Fixes

    • Enhanced accessibility: rarity tiers now indicated via border color and explicit tier label instead of text color alone, improving contrast and clarity.

@cloudflare-workers-and-pages

cloudflare-workers-and-pagesBot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend4450f0aCommit Preview URL

Branch Preview URL
Jun 12 2026, 05:10 PM

@coderabbitai

coderabbitaiBot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR refactors rarity color styling across achievement and profile components to use canonical CSS tokens instead of hardcoded hex values. Rarity tier tokens are reorganized in globals.css with --rarity-legendary updated to a fixed value, and a rarityVar helper abstracts color derivation in components. Featured achievement tiles gain dedicated rarity display lines with improved typography.

Changes

Rarity Color Token Migration

Layer / File(s)Summary
CSS Token Foundation and Reorganization
frontend/src/app/globals.css
Rarity tier tokens moved to dedicated "RARITY TIER TOKENS" section with --rarity-legendary updated from var(--brand-progress) to fixed #b4862c value.
Achievements Component Rarity Token Adoption
frontend/src/components/screens/Achievements.tsx
Introduces rarityVar helper and refactors card borders, shadows, badge colors, and featured tile styling to use CSS token-derived colors. Featured tiles gain dedicated rarity display lines with uppercase formatting.
ProfileView Featured Achievements Integration
frontend/src/components/ProfileView.tsx
Introduces rarityVar helper and applies token-derived colors to featured achievement borders and backgrounds via color-mix, replacing hardcoded hex values.
TitleFlair Accessibility and Display Update
frontend/src/components/TitleFlair.tsx
Updates styling to use neutral text color for accessibility while maintaining rarity backgrounds. Renders both cosmetic name and rarity tier as separate elements with explanatory accessibility comments.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Hues now flow from tokens true,
Rarity colors, canonical through and through,
Legendary gold gleams bright (#b4862c!),
Accessibility whispers: borders, not ink,
From scattered hex to unified think.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe description provides a detailed explanation of changes and includes testing/verification notes, but does not follow the repository's template structure with explicit sections like 'Changes Made', 'Related Issues', 'Testing', and 'Screenshots'.Reformat the description to match the repository template: use 'Changes Made' for the bullet list, add 'Related Issues' section with issue number, structure 'Testing' with checkboxes, and add 'Notes for Reviewers' section.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title accurately summarizes the main changes: consolidating rarity tokens as a single source, fixing the legendary tier to meet 3:1 contrast, and using neutral text for rarity display.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck 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 fix/rarity-token-dedup

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.

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
frontend/src/components/ProfileView.tsx (1)

10-11: ⚡ Quick win

Inconsistent fallback and type compared to Achievements.tsx.

The rarityVar helper here uses var(--text-muted) as the fallback, while Achievements.tsx (lines 12-14) uses var(--border). Since these colors are applied to borders, backgrounds, and shadows, var(--border) is more semantically appropriate and ensures visual consistency if a rarity token is missing.

Additionally, the parameter type here is string, while Achievements uses the more specific RarityTier type. Since ua.achievement.rarity should be typed as RarityTier, using the stricter type improves type safety.

♻️ Align with Achievements.tsx pattern
-// Rarity colors come only from the canonical --rarity-* tokens (globals.css).-const rarityVar = (r: string) => `var(--rarity-${r}, var(--text-muted))`;+import type { RarityTier } from "`@/lib/types`";++// Rarity colors come only from the canonical --rarity-* tokens (globals.css).+const rarityVar = (r: RarityTier) => `var(--rarity-${r}, var(--border))`;
🤖 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 `@frontend/src/components/ProfileView.tsx` around lines 10 - 11, Update the
rarityVar helper to match Achievements.tsx: change its fallback from
var(--text-muted) to var(--border) and tighten the parameter type from string to
the RarityTier type used elsewhere; ensure usages (e.g., places that pass
ua.achievement.rarity) still compile and import or reference RarityTier where
rarityVar is declared so the helper enforces the stricter type and produces the
same border-appropriate fallback color.
🤖 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.
Nitpick comments:
In `@frontend/src/components/ProfileView.tsx`:
- Around line 10-11: Update the rarityVar helper to match Achievements.tsx:
change its fallback from var(--text-muted) to var(--border) and tighten the
parameter type from string to the RarityTier type used elsewhere; ensure usages
(e.g., places that pass ua.achievement.rarity) still compile and import or
reference RarityTier where rarityVar is declared so the helper enforces the
stricter type and produces the same border-appropriate fallback color.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 67e93ca5-cd2f-4100-aec5-1e1d7edc11d5

📥 Commits

Reviewing files that changed from the base of the PR and between 8caed88 and 4450f0a.

📒 Files selected for processing (4)
  • frontend/src/app/globals.css
  • frontend/src/components/ProfileView.tsx
  • frontend/src/components/TitleFlair.tsx
  • frontend/src/components/screens/Achievements.tsx

@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez merged commit 24f1b94 into mainJun 12, 2026
6 checks passed
@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez deleted the fix/rarity-token-dedup branch June 12, 2026 17:31
Jose-Gael-Cruz-Lopez added a commit that referenced this pull request Jun 12, 2026
docs: PROGRAM.md — record #217, close rarity + deploy-stall backlog items
Sign up for freeto 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

@Jose-Gael-Cruz-Lopez
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text - #217

Merged
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup
Jun 12, 2026
Merged

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text#217
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jun 12, 2026

Copy link
Copy Markdown
Member

Resolves the PROGRAM.md backlog item: duplicate --rarity-* definitions in globals.css.

  • Deletes the dead revamp :root rarity block; the legacy block (canonical per decision) now defines each of the ten tokens exactly once.
  • --rarity-legendary pinned to #b4862c (was var(--brand-progress) #e8a33a at 2.10:1 — under the 3:1 non-text bar). All five tiers now clear 3:1 on every required non-text surface (legendary worst case 3.02).
  • Hard-coded copies of the rarity palette in ProfileView.tsx and Achievements.tsx replaced with the canonical tokens (hex-alpha suffixes → color-mix; ProfileView featured legendary is pixel-identical, confirming the conversion).
  • Rarity is never conveyed by colored text: TitleFlair and the Achievements rarity chip render neutral var(--text); TitleFlair appends the literal tier name; the Achievements showcase strip gains a rarity text line (was border-color-only, a 1.4.1 gap).
  • --rarity-legendary-bg intentionally stays on the lighter gold base (comment added): a #b4862c-based tint would put the TitleFlair border vs its own interior under 3:1.

Verified by fresh-context measurement: all rarity-adjacent text ≥4.87:1; all required non-text ≥3.02:1; two legendary items (Achievements icon-tile glyph 2.82, progress fill 2.64) rely on the documented decorative/redundant carve-out. Toast and Settings render pixel-identical for the four unchanged tiers (headless-Chrome harness diff).

Do not merge yet — awaiting visual sign-off on the changed surfaces.

Summary by CodeRabbit

  • Style

    • Standardized rarity tier styling across achievement cards and profile features using design tokens.
    • Reorganized CSS for consistent color application across components.
    • Updated featured achievement cards with improved rarity tier visibility.
  • Bug Fixes

    • Enhanced accessibility: rarity tiers now indicated via border color and explicit tier label instead of text color alone, improving contrast and clarity.

@cloudflare-workers-and-pages

cloudflare-workers-and-pagesBot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend4450f0aCommit Preview URL

Branch Preview URL
Jun 12 2026, 05:10 PM

@coderabbitai

coderabbitaiBot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR refactors rarity color styling across achievement and profile components to use canonical CSS tokens instead of hardcoded hex values. Rarity tier tokens are reorganized in globals.css with --rarity-legendary updated to a fixed value, and a rarityVar helper abstracts color derivation in components. Featured achievement tiles gain dedicated rarity display lines with improved typography.

Changes

Rarity Color Token Migration

Layer / File(s)Summary
CSS Token Foundation and Reorganization
frontend/src/app/globals.css
Rarity tier tokens moved to dedicated "RARITY TIER TOKENS" section with --rarity-legendary updated from var(--brand-progress) to fixed #b4862c value.
Achievements Component Rarity Token Adoption
frontend/src/components/screens/Achievements.tsx
Introduces rarityVar helper and refactors card borders, shadows, badge colors, and featured tile styling to use CSS token-derived colors. Featured tiles gain dedicated rarity display lines with uppercase formatting.
ProfileView Featured Achievements Integration
frontend/src/components/ProfileView.tsx
Introduces rarityVar helper and applies token-derived colors to featured achievement borders and backgrounds via color-mix, replacing hardcoded hex values.
TitleFlair Accessibility and Display Update
frontend/src/components/TitleFlair.tsx
Updates styling to use neutral text color for accessibility while maintaining rarity backgrounds. Renders both cosmetic name and rarity tier as separate elements with explanatory accessibility comments.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Hues now flow from tokens true,
Rarity colors, canonical through and through,
Legendary gold gleams bright (#b4862c!),
Accessibility whispers: borders, not ink,
From scattered hex to unified think.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe description provides a detailed explanation of changes and includes testing/verification notes, but does not follow the repository's template structure with explicit sections like 'Changes Made', 'Related Issues', 'Testing', and 'Screenshots'.Reformat the description to match the repository template: use 'Changes Made' for the bullet list, add 'Related Issues' section with issue number, structure 'Testing' with checkboxes, and add 'Notes for Reviewers' section.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title accurately summarizes the main changes: consolidating rarity tokens as a single source, fixing the legendary tier to meet 3:1 contrast, and using neutral text for rarity display.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck 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 fix/rarity-token-dedup

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.

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
frontend/src/components/ProfileView.tsx (1)

10-11: ⚡ Quick win

Inconsistent fallback and type compared to Achievements.tsx.

The rarityVar helper here uses var(--text-muted) as the fallback, while Achievements.tsx (lines 12-14) uses var(--border). Since these colors are applied to borders, backgrounds, and shadows, var(--border) is more semantically appropriate and ensures visual consistency if a rarity token is missing.

Additionally, the parameter type here is string, while Achievements uses the more specific RarityTier type. Since ua.achievement.rarity should be typed as RarityTier, using the stricter type improves type safety.

♻️ Align with Achievements.tsx pattern
-// Rarity colors come only from the canonical --rarity-* tokens (globals.css).-const rarityVar = (r: string) => `var(--rarity-${r}, var(--text-muted))`;+import type { RarityTier } from "`@/lib/types`";++// Rarity colors come only from the canonical --rarity-* tokens (globals.css).+const rarityVar = (r: RarityTier) => `var(--rarity-${r}, var(--border))`;
🤖 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 `@frontend/src/components/ProfileView.tsx` around lines 10 - 11, Update the
rarityVar helper to match Achievements.tsx: change its fallback from
var(--text-muted) to var(--border) and tighten the parameter type from string to
the RarityTier type used elsewhere; ensure usages (e.g., places that pass
ua.achievement.rarity) still compile and import or reference RarityTier where
rarityVar is declared so the helper enforces the stricter type and produces the
same border-appropriate fallback color.
🤖 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.
Nitpick comments:
In `@frontend/src/components/ProfileView.tsx`:
- Around line 10-11: Update the rarityVar helper to match Achievements.tsx:
change its fallback from var(--text-muted) to var(--border) and tighten the
parameter type from string to the RarityTier type used elsewhere; ensure usages
(e.g., places that pass ua.achievement.rarity) still compile and import or
reference RarityTier where rarityVar is declared so the helper enforces the
stricter type and produces the same border-appropriate fallback color.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 67e93ca5-cd2f-4100-aec5-1e1d7edc11d5

📥 Commits

Reviewing files that changed from the base of the PR and between 8caed88 and 4450f0a.

📒 Files selected for processing (4)
  • frontend/src/app/globals.css
  • frontend/src/components/ProfileView.tsx
  • frontend/src/components/TitleFlair.tsx
  • frontend/src/components/screens/Achievements.tsx

@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez merged commit 24f1b94 into mainJun 12, 2026
6 checks passed
@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez deleted the fix/rarity-token-dedup branch June 12, 2026 17:31
Jose-Gael-Cruz-Lopez added a commit that referenced this pull request Jun 12, 2026
docs: PROGRAM.md — record #217, close rarity + deploy-stall backlog items
Sign up for freeto 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

@Jose-Gael-Cruz-Lopez
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text - #217

Merged
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup
Jun 12, 2026
Merged

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text#217
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jun 12, 2026

Copy link
Copy Markdown
Member

Resolves the PROGRAM.md backlog item: duplicate --rarity-* definitions in globals.css.

  • Deletes the dead revamp :root rarity block; the legacy block (canonical per decision) now defines each of the ten tokens exactly once.
  • --rarity-legendary pinned to #b4862c (was var(--brand-progress) #e8a33a at 2.10:1 — under the 3:1 non-text bar). All five tiers now clear 3:1 on every required non-text surface (legendary worst case 3.02).
  • Hard-coded copies of the rarity palette in ProfileView.tsx and Achievements.tsx replaced with the canonical tokens (hex-alpha suffixes → color-mix; ProfileView featured legendary is pixel-identical, confirming the conversion).
  • Rarity is never conveyed by colored text: TitleFlair and the Achievements rarity chip render neutral var(--text); TitleFlair appends the literal tier name; the Achievements showcase strip gains a rarity text line (was border-color-only, a 1.4.1 gap).
  • --rarity-legendary-bg intentionally stays on the lighter gold base (comment added): a #b4862c-based tint would put the TitleFlair border vs its own interior under 3:1.

Verified by fresh-context measurement: all rarity-adjacent text ≥4.87:1; all required non-text ≥3.02:1; two legendary items (Achievements icon-tile glyph 2.82, progress fill 2.64) rely on the documented decorative/redundant carve-out. Toast and Settings render pixel-identical for the four unchanged tiers (headless-Chrome harness diff).

Do not merge yet — awaiting visual sign-off on the changed surfaces.

Summary by CodeRabbit

  • Style

    • Standardized rarity tier styling across achievement cards and profile features using design tokens.
    • Reorganized CSS for consistent color application across components.
    • Updated featured achievement cards with improved rarity tier visibility.
  • Bug Fixes

    • Enhanced accessibility: rarity tiers now indicated via border color and explicit tier label instead of text color alone, improving contrast and clarity.

@cloudflare-workers-and-pages

cloudflare-workers-and-pagesBot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend4450f0aCommit Preview URL

Branch Preview URL
Jun 12 2026, 05:10 PM

@coderabbitai

coderabbitaiBot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR refactors rarity color styling across achievement and profile components to use canonical CSS tokens instead of hardcoded hex values. Rarity tier tokens are reorganized in globals.css with --rarity-legendary updated to a fixed value, and a rarityVar helper abstracts color derivation in components. Featured achievement tiles gain dedicated rarity display lines with improved typography.

Changes

Rarity Color Token Migration

Layer / File(s)Summary
CSS Token Foundation and Reorganization
frontend/src/app/globals.css
Rarity tier tokens moved to dedicated "RARITY TIER TOKENS" section with --rarity-legendary updated from var(--brand-progress) to fixed #b4862c value.
Achievements Component Rarity Token Adoption
frontend/src/components/screens/Achievements.tsx
Introduces rarityVar helper and refactors card borders, shadows, badge colors, and featured tile styling to use CSS token-derived colors. Featured tiles gain dedicated rarity display lines with uppercase formatting.
ProfileView Featured Achievements Integration
frontend/src/components/ProfileView.tsx
Introduces rarityVar helper and applies token-derived colors to featured achievement borders and backgrounds via color-mix, replacing hardcoded hex values.
TitleFlair Accessibility and Display Update
frontend/src/components/TitleFlair.tsx
Updates styling to use neutral text color for accessibility while maintaining rarity backgrounds. Renders both cosmetic name and rarity tier as separate elements with explanatory accessibility comments.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Hues now flow from tokens true,
Rarity colors, canonical through and through,
Legendary gold gleams bright (#b4862c!),
Accessibility whispers: borders, not ink,
From scattered hex to unified think.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe description provides a detailed explanation of changes and includes testing/verification notes, but does not follow the repository's template structure with explicit sections like 'Changes Made', 'Related Issues', 'Testing', and 'Screenshots'.Reformat the description to match the repository template: use 'Changes Made' for the bullet list, add 'Related Issues' section with issue number, structure 'Testing' with checkboxes, and add 'Notes for Reviewers' section.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title accurately summarizes the main changes: consolidating rarity tokens as a single source, fixing the legendary tier to meet 3:1 contrast, and using neutral text for rarity display.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck 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 fix/rarity-token-dedup

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.

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
frontend/src/components/ProfileView.tsx (1)

10-11: ⚡ Quick win

Inconsistent fallback and type compared to Achievements.tsx.

The rarityVar helper here uses var(--text-muted) as the fallback, while Achievements.tsx (lines 12-14) uses var(--border). Since these colors are applied to borders, backgrounds, and shadows, var(--border) is more semantically appropriate and ensures visual consistency if a rarity token is missing.

Additionally, the parameter type here is string, while Achievements uses the more specific RarityTier type. Since ua.achievement.rarity should be typed as RarityTier, using the stricter type improves type safety.

♻️ Align with Achievements.tsx pattern
-// Rarity colors come only from the canonical --rarity-* tokens (globals.css).-const rarityVar = (r: string) => `var(--rarity-${r}, var(--text-muted))`;+import type { RarityTier } from "`@/lib/types`";++// Rarity colors come only from the canonical --rarity-* tokens (globals.css).+const rarityVar = (r: RarityTier) => `var(--rarity-${r}, var(--border))`;
🤖 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 `@frontend/src/components/ProfileView.tsx` around lines 10 - 11, Update the
rarityVar helper to match Achievements.tsx: change its fallback from
var(--text-muted) to var(--border) and tighten the parameter type from string to
the RarityTier type used elsewhere; ensure usages (e.g., places that pass
ua.achievement.rarity) still compile and import or reference RarityTier where
rarityVar is declared so the helper enforces the stricter type and produces the
same border-appropriate fallback color.
🤖 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.
Nitpick comments:
In `@frontend/src/components/ProfileView.tsx`:
- Around line 10-11: Update the rarityVar helper to match Achievements.tsx:
change its fallback from var(--text-muted) to var(--border) and tighten the
parameter type from string to the RarityTier type used elsewhere; ensure usages
(e.g., places that pass ua.achievement.rarity) still compile and import or
reference RarityTier where rarityVar is declared so the helper enforces the
stricter type and produces the same border-appropriate fallback color.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 67e93ca5-cd2f-4100-aec5-1e1d7edc11d5

📥 Commits

Reviewing files that changed from the base of the PR and between 8caed88 and 4450f0a.

📒 Files selected for processing (4)
  • frontend/src/app/globals.css
  • frontend/src/components/ProfileView.tsx
  • frontend/src/components/TitleFlair.tsx
  • frontend/src/components/screens/Achievements.tsx

@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez merged commit 24f1b94 into mainJun 12, 2026
6 checks passed
@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez deleted the fix/rarity-token-dedup branch June 12, 2026 17:31
Jose-Gael-Cruz-Lopez added a commit that referenced this pull request Jun 12, 2026
docs: PROGRAM.md — record #217, close rarity + deploy-stall backlog items
Sign up for freeto 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

@Jose-Gael-Cruz-Lopez
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text - #217

Merged
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup
Jun 12, 2026
Merged

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text#217
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jun 12, 2026

Copy link
Copy Markdown
Member

Resolves the PROGRAM.md backlog item: duplicate --rarity-* definitions in globals.css.

  • Deletes the dead revamp :root rarity block; the legacy block (canonical per decision) now defines each of the ten tokens exactly once.
  • --rarity-legendary pinned to #b4862c (was var(--brand-progress) #e8a33a at 2.10:1 — under the 3:1 non-text bar). All five tiers now clear 3:1 on every required non-text surface (legendary worst case 3.02).
  • Hard-coded copies of the rarity palette in ProfileView.tsx and Achievements.tsx replaced with the canonical tokens (hex-alpha suffixes → color-mix; ProfileView featured legendary is pixel-identical, confirming the conversion).
  • Rarity is never conveyed by colored text: TitleFlair and the Achievements rarity chip render neutral var(--text); TitleFlair appends the literal tier name; the Achievements showcase strip gains a rarity text line (was border-color-only, a 1.4.1 gap).
  • --rarity-legendary-bg intentionally stays on the lighter gold base (comment added): a #b4862c-based tint would put the TitleFlair border vs its own interior under 3:1.

Verified by fresh-context measurement: all rarity-adjacent text ≥4.87:1; all required non-text ≥3.02:1; two legendary items (Achievements icon-tile glyph 2.82, progress fill 2.64) rely on the documented decorative/redundant carve-out. Toast and Settings render pixel-identical for the four unchanged tiers (headless-Chrome harness diff).

Do not merge yet — awaiting visual sign-off on the changed surfaces.

Summary by CodeRabbit

  • Style

    • Standardized rarity tier styling across achievement cards and profile features using design tokens.
    • Reorganized CSS for consistent color application across components.
    • Updated featured achievement cards with improved rarity tier visibility.
  • Bug Fixes

    • Enhanced accessibility: rarity tiers now indicated via border color and explicit tier label instead of text color alone, improving contrast and clarity.

@cloudflare-workers-and-pages

cloudflare-workers-and-pagesBot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend4450f0aCommit Preview URL

Branch Preview URL
Jun 12 2026, 05:10 PM

@coderabbitai

coderabbitaiBot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR refactors rarity color styling across achievement and profile components to use canonical CSS tokens instead of hardcoded hex values. Rarity tier tokens are reorganized in globals.css with --rarity-legendary updated to a fixed value, and a rarityVar helper abstracts color derivation in components. Featured achievement tiles gain dedicated rarity display lines with improved typography.

Changes

Rarity Color Token Migration

Layer / File(s)Summary
CSS Token Foundation and Reorganization
frontend/src/app/globals.css
Rarity tier tokens moved to dedicated "RARITY TIER TOKENS" section with --rarity-legendary updated from var(--brand-progress) to fixed #b4862c value.
Achievements Component Rarity Token Adoption
frontend/src/components/screens/Achievements.tsx
Introduces rarityVar helper and refactors card borders, shadows, badge colors, and featured tile styling to use CSS token-derived colors. Featured tiles gain dedicated rarity display lines with uppercase formatting.
ProfileView Featured Achievements Integration
frontend/src/components/ProfileView.tsx
Introduces rarityVar helper and applies token-derived colors to featured achievement borders and backgrounds via color-mix, replacing hardcoded hex values.
TitleFlair Accessibility and Display Update
frontend/src/components/TitleFlair.tsx
Updates styling to use neutral text color for accessibility while maintaining rarity backgrounds. Renders both cosmetic name and rarity tier as separate elements with explanatory accessibility comments.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Hues now flow from tokens true,
Rarity colors, canonical through and through,
Legendary gold gleams bright (#b4862c!),
Accessibility whispers: borders, not ink,
From scattered hex to unified think.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe description provides a detailed explanation of changes and includes testing/verification notes, but does not follow the repository's template structure with explicit sections like 'Changes Made', 'Related Issues', 'Testing', and 'Screenshots'.Reformat the description to match the repository template: use 'Changes Made' for the bullet list, add 'Related Issues' section with issue number, structure 'Testing' with checkboxes, and add 'Notes for Reviewers' section.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title accurately summarizes the main changes: consolidating rarity tokens as a single source, fixing the legendary tier to meet 3:1 contrast, and using neutral text for rarity display.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck 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 fix/rarity-token-dedup

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.

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
frontend/src/components/ProfileView.tsx (1)

10-11: ⚡ Quick win

Inconsistent fallback and type compared to Achievements.tsx.

The rarityVar helper here uses var(--text-muted) as the fallback, while Achievements.tsx (lines 12-14) uses var(--border). Since these colors are applied to borders, backgrounds, and shadows, var(--border) is more semantically appropriate and ensures visual consistency if a rarity token is missing.

Additionally, the parameter type here is string, while Achievements uses the more specific RarityTier type. Since ua.achievement.rarity should be typed as RarityTier, using the stricter type improves type safety.

♻️ Align with Achievements.tsx pattern
-// Rarity colors come only from the canonical --rarity-* tokens (globals.css).-const rarityVar = (r: string) => `var(--rarity-${r}, var(--text-muted))`;+import type { RarityTier } from "`@/lib/types`";++// Rarity colors come only from the canonical --rarity-* tokens (globals.css).+const rarityVar = (r: RarityTier) => `var(--rarity-${r}, var(--border))`;
🤖 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 `@frontend/src/components/ProfileView.tsx` around lines 10 - 11, Update the
rarityVar helper to match Achievements.tsx: change its fallback from
var(--text-muted) to var(--border) and tighten the parameter type from string to
the RarityTier type used elsewhere; ensure usages (e.g., places that pass
ua.achievement.rarity) still compile and import or reference RarityTier where
rarityVar is declared so the helper enforces the stricter type and produces the
same border-appropriate fallback color.
🤖 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.
Nitpick comments:
In `@frontend/src/components/ProfileView.tsx`:
- Around line 10-11: Update the rarityVar helper to match Achievements.tsx:
change its fallback from var(--text-muted) to var(--border) and tighten the
parameter type from string to the RarityTier type used elsewhere; ensure usages
(e.g., places that pass ua.achievement.rarity) still compile and import or
reference RarityTier where rarityVar is declared so the helper enforces the
stricter type and produces the same border-appropriate fallback color.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 67e93ca5-cd2f-4100-aec5-1e1d7edc11d5

📥 Commits

Reviewing files that changed from the base of the PR and between 8caed88 and 4450f0a.

📒 Files selected for processing (4)
  • frontend/src/app/globals.css
  • frontend/src/components/ProfileView.tsx
  • frontend/src/components/TitleFlair.tsx
  • frontend/src/components/screens/Achievements.tsx

@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez merged commit 24f1b94 into mainJun 12, 2026
6 checks passed
@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez deleted the fix/rarity-token-dedup branch June 12, 2026 17:31
Jose-Gael-Cruz-Lopez added a commit that referenced this pull request Jun 12, 2026
docs: PROGRAM.md — record #217, close rarity + deploy-stall backlog items
Sign up for freeto 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

@Jose-Gael-Cruz-Lopez
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text - #217

Merged
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup
Jun 12, 2026
Merged

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text#217
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jun 12, 2026

Copy link
Copy Markdown
Member

Resolves the PROGRAM.md backlog item: duplicate --rarity-* definitions in globals.css.

  • Deletes the dead revamp :root rarity block; the legacy block (canonical per decision) now defines each of the ten tokens exactly once.
  • --rarity-legendary pinned to #b4862c (was var(--brand-progress) #e8a33a at 2.10:1 — under the 3:1 non-text bar). All five tiers now clear 3:1 on every required non-text surface (legendary worst case 3.02).
  • Hard-coded copies of the rarity palette in ProfileView.tsx and Achievements.tsx replaced with the canonical tokens (hex-alpha suffixes → color-mix; ProfileView featured legendary is pixel-identical, confirming the conversion).
  • Rarity is never conveyed by colored text: TitleFlair and the Achievements rarity chip render neutral var(--text); TitleFlair appends the literal tier name; the Achievements showcase strip gains a rarity text line (was border-color-only, a 1.4.1 gap).
  • --rarity-legendary-bg intentionally stays on the lighter gold base (comment added): a #b4862c-based tint would put the TitleFlair border vs its own interior under 3:1.

Verified by fresh-context measurement: all rarity-adjacent text ≥4.87:1; all required non-text ≥3.02:1; two legendary items (Achievements icon-tile glyph 2.82, progress fill 2.64) rely on the documented decorative/redundant carve-out. Toast and Settings render pixel-identical for the four unchanged tiers (headless-Chrome harness diff).

Do not merge yet — awaiting visual sign-off on the changed surfaces.

Summary by CodeRabbit

  • Style

    • Standardized rarity tier styling across achievement cards and profile features using design tokens.
    • Reorganized CSS for consistent color application across components.
    • Updated featured achievement cards with improved rarity tier visibility.
  • Bug Fixes

    • Enhanced accessibility: rarity tiers now indicated via border color and explicit tier label instead of text color alone, improving contrast and clarity.

@cloudflare-workers-and-pages

cloudflare-workers-and-pagesBot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend4450f0aCommit Preview URL

Branch Preview URL
Jun 12 2026, 05:10 PM

@coderabbitai

coderabbitaiBot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR refactors rarity color styling across achievement and profile components to use canonical CSS tokens instead of hardcoded hex values. Rarity tier tokens are reorganized in globals.css with --rarity-legendary updated to a fixed value, and a rarityVar helper abstracts color derivation in components. Featured achievement tiles gain dedicated rarity display lines with improved typography.

Changes

Rarity Color Token Migration

Layer / File(s)Summary
CSS Token Foundation and Reorganization
frontend/src/app/globals.css
Rarity tier tokens moved to dedicated "RARITY TIER TOKENS" section with --rarity-legendary updated from var(--brand-progress) to fixed #b4862c value.
Achievements Component Rarity Token Adoption
frontend/src/components/screens/Achievements.tsx
Introduces rarityVar helper and refactors card borders, shadows, badge colors, and featured tile styling to use CSS token-derived colors. Featured tiles gain dedicated rarity display lines with uppercase formatting.
ProfileView Featured Achievements Integration
frontend/src/components/ProfileView.tsx
Introduces rarityVar helper and applies token-derived colors to featured achievement borders and backgrounds via color-mix, replacing hardcoded hex values.
TitleFlair Accessibility and Display Update
frontend/src/components/TitleFlair.tsx
Updates styling to use neutral text color for accessibility while maintaining rarity backgrounds. Renders both cosmetic name and rarity tier as separate elements with explanatory accessibility comments.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Hues now flow from tokens true,
Rarity colors, canonical through and through,
Legendary gold gleams bright (#b4862c!),
Accessibility whispers: borders, not ink,
From scattered hex to unified think.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe description provides a detailed explanation of changes and includes testing/verification notes, but does not follow the repository's template structure with explicit sections like 'Changes Made', 'Related Issues', 'Testing', and 'Screenshots'.Reformat the description to match the repository template: use 'Changes Made' for the bullet list, add 'Related Issues' section with issue number, structure 'Testing' with checkboxes, and add 'Notes for Reviewers' section.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title accurately summarizes the main changes: consolidating rarity tokens as a single source, fixing the legendary tier to meet 3:1 contrast, and using neutral text for rarity display.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck 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 fix/rarity-token-dedup

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.

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
frontend/src/components/ProfileView.tsx (1)

10-11: ⚡ Quick win

Inconsistent fallback and type compared to Achievements.tsx.

The rarityVar helper here uses var(--text-muted) as the fallback, while Achievements.tsx (lines 12-14) uses var(--border). Since these colors are applied to borders, backgrounds, and shadows, var(--border) is more semantically appropriate and ensures visual consistency if a rarity token is missing.

Additionally, the parameter type here is string, while Achievements uses the more specific RarityTier type. Since ua.achievement.rarity should be typed as RarityTier, using the stricter type improves type safety.

♻️ Align with Achievements.tsx pattern
-// Rarity colors come only from the canonical --rarity-* tokens (globals.css).-const rarityVar = (r: string) => `var(--rarity-${r}, var(--text-muted))`;+import type { RarityTier } from "`@/lib/types`";++// Rarity colors come only from the canonical --rarity-* tokens (globals.css).+const rarityVar = (r: RarityTier) => `var(--rarity-${r}, var(--border))`;
🤖 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 `@frontend/src/components/ProfileView.tsx` around lines 10 - 11, Update the
rarityVar helper to match Achievements.tsx: change its fallback from
var(--text-muted) to var(--border) and tighten the parameter type from string to
the RarityTier type used elsewhere; ensure usages (e.g., places that pass
ua.achievement.rarity) still compile and import or reference RarityTier where
rarityVar is declared so the helper enforces the stricter type and produces the
same border-appropriate fallback color.
🤖 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.
Nitpick comments:
In `@frontend/src/components/ProfileView.tsx`:
- Around line 10-11: Update the rarityVar helper to match Achievements.tsx:
change its fallback from var(--text-muted) to var(--border) and tighten the
parameter type from string to the RarityTier type used elsewhere; ensure usages
(e.g., places that pass ua.achievement.rarity) still compile and import or
reference RarityTier where rarityVar is declared so the helper enforces the
stricter type and produces the same border-appropriate fallback color.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 67e93ca5-cd2f-4100-aec5-1e1d7edc11d5

📥 Commits

Reviewing files that changed from the base of the PR and between 8caed88 and 4450f0a.

📒 Files selected for processing (4)
  • frontend/src/app/globals.css
  • frontend/src/components/ProfileView.tsx
  • frontend/src/components/TitleFlair.tsx
  • frontend/src/components/screens/Achievements.tsx

@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez merged commit 24f1b94 into mainJun 12, 2026
6 checks passed
@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez deleted the fix/rarity-token-dedup branch June 12, 2026 17:31
Jose-Gael-Cruz-Lopez added a commit that referenced this pull request Jun 12, 2026
docs: PROGRAM.md — record #217, close rarity + deploy-stall backlog items
Sign up for freeto 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

@Jose-Gael-Cruz-Lopez
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text - #217

Merged
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup
Jun 12, 2026
Merged

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text#217
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jun 12, 2026

Copy link
Copy Markdown
Member

Resolves the PROGRAM.md backlog item: duplicate --rarity-* definitions in globals.css.

  • Deletes the dead revamp :root rarity block; the legacy block (canonical per decision) now defines each of the ten tokens exactly once.
  • --rarity-legendary pinned to #b4862c (was var(--brand-progress) #e8a33a at 2.10:1 — under the 3:1 non-text bar). All five tiers now clear 3:1 on every required non-text surface (legendary worst case 3.02).
  • Hard-coded copies of the rarity palette in ProfileView.tsx and Achievements.tsx replaced with the canonical tokens (hex-alpha suffixes → color-mix; ProfileView featured legendary is pixel-identical, confirming the conversion).
  • Rarity is never conveyed by colored text: TitleFlair and the Achievements rarity chip render neutral var(--text); TitleFlair appends the literal tier name; the Achievements showcase strip gains a rarity text line (was border-color-only, a 1.4.1 gap).
  • --rarity-legendary-bg intentionally stays on the lighter gold base (comment added): a #b4862c-based tint would put the TitleFlair border vs its own interior under 3:1.

Verified by fresh-context measurement: all rarity-adjacent text ≥4.87:1; all required non-text ≥3.02:1; two legendary items (Achievements icon-tile glyph 2.82, progress fill 2.64) rely on the documented decorative/redundant carve-out. Toast and Settings render pixel-identical for the four unchanged tiers (headless-Chrome harness diff).

Do not merge yet — awaiting visual sign-off on the changed surfaces.

Summary by CodeRabbit

  • Style

    • Standardized rarity tier styling across achievement cards and profile features using design tokens.
    • Reorganized CSS for consistent color application across components.
    • Updated featured achievement cards with improved rarity tier visibility.
  • Bug Fixes

    • Enhanced accessibility: rarity tiers now indicated via border color and explicit tier label instead of text color alone, improving contrast and clarity.

@cloudflare-workers-and-pages

cloudflare-workers-and-pagesBot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend4450f0aCommit Preview URL

Branch Preview URL
Jun 12 2026, 05:10 PM

@coderabbitai

coderabbitaiBot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR refactors rarity color styling across achievement and profile components to use canonical CSS tokens instead of hardcoded hex values. Rarity tier tokens are reorganized in globals.css with --rarity-legendary updated to a fixed value, and a rarityVar helper abstracts color derivation in components. Featured achievement tiles gain dedicated rarity display lines with improved typography.

Changes

Rarity Color Token Migration

Layer / File(s)Summary
CSS Token Foundation and Reorganization
frontend/src/app/globals.css
Rarity tier tokens moved to dedicated "RARITY TIER TOKENS" section with --rarity-legendary updated from var(--brand-progress) to fixed #b4862c value.
Achievements Component Rarity Token Adoption
frontend/src/components/screens/Achievements.tsx
Introduces rarityVar helper and refactors card borders, shadows, badge colors, and featured tile styling to use CSS token-derived colors. Featured tiles gain dedicated rarity display lines with uppercase formatting.
ProfileView Featured Achievements Integration
frontend/src/components/ProfileView.tsx
Introduces rarityVar helper and applies token-derived colors to featured achievement borders and backgrounds via color-mix, replacing hardcoded hex values.
TitleFlair Accessibility and Display Update
frontend/src/components/TitleFlair.tsx
Updates styling to use neutral text color for accessibility while maintaining rarity backgrounds. Renders both cosmetic name and rarity tier as separate elements with explanatory accessibility comments.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Hues now flow from tokens true,
Rarity colors, canonical through and through,
Legendary gold gleams bright (#b4862c!),
Accessibility whispers: borders, not ink,
From scattered hex to unified think.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe description provides a detailed explanation of changes and includes testing/verification notes, but does not follow the repository's template structure with explicit sections like 'Changes Made', 'Related Issues', 'Testing', and 'Screenshots'.Reformat the description to match the repository template: use 'Changes Made' for the bullet list, add 'Related Issues' section with issue number, structure 'Testing' with checkboxes, and add 'Notes for Reviewers' section.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title accurately summarizes the main changes: consolidating rarity tokens as a single source, fixing the legendary tier to meet 3:1 contrast, and using neutral text for rarity display.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck 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 fix/rarity-token-dedup

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.

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
frontend/src/components/ProfileView.tsx (1)

10-11: ⚡ Quick win

Inconsistent fallback and type compared to Achievements.tsx.

The rarityVar helper here uses var(--text-muted) as the fallback, while Achievements.tsx (lines 12-14) uses var(--border). Since these colors are applied to borders, backgrounds, and shadows, var(--border) is more semantically appropriate and ensures visual consistency if a rarity token is missing.

Additionally, the parameter type here is string, while Achievements uses the more specific RarityTier type. Since ua.achievement.rarity should be typed as RarityTier, using the stricter type improves type safety.

♻️ Align with Achievements.tsx pattern
-// Rarity colors come only from the canonical --rarity-* tokens (globals.css).-const rarityVar = (r: string) => `var(--rarity-${r}, var(--text-muted))`;+import type { RarityTier } from "`@/lib/types`";++// Rarity colors come only from the canonical --rarity-* tokens (globals.css).+const rarityVar = (r: RarityTier) => `var(--rarity-${r}, var(--border))`;
🤖 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 `@frontend/src/components/ProfileView.tsx` around lines 10 - 11, Update the
rarityVar helper to match Achievements.tsx: change its fallback from
var(--text-muted) to var(--border) and tighten the parameter type from string to
the RarityTier type used elsewhere; ensure usages (e.g., places that pass
ua.achievement.rarity) still compile and import or reference RarityTier where
rarityVar is declared so the helper enforces the stricter type and produces the
same border-appropriate fallback color.
🤖 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.
Nitpick comments:
In `@frontend/src/components/ProfileView.tsx`:
- Around line 10-11: Update the rarityVar helper to match Achievements.tsx:
change its fallback from var(--text-muted) to var(--border) and tighten the
parameter type from string to the RarityTier type used elsewhere; ensure usages
(e.g., places that pass ua.achievement.rarity) still compile and import or
reference RarityTier where rarityVar is declared so the helper enforces the
stricter type and produces the same border-appropriate fallback color.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 67e93ca5-cd2f-4100-aec5-1e1d7edc11d5

📥 Commits

Reviewing files that changed from the base of the PR and between 8caed88 and 4450f0a.

📒 Files selected for processing (4)
  • frontend/src/app/globals.css
  • frontend/src/components/ProfileView.tsx
  • frontend/src/components/TitleFlair.tsx
  • frontend/src/components/screens/Achievements.tsx

@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez merged commit 24f1b94 into mainJun 12, 2026
6 checks passed
@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez deleted the fix/rarity-token-dedup branch June 12, 2026 17:31
Jose-Gael-Cruz-Lopez added a commit that referenced this pull request Jun 12, 2026
docs: PROGRAM.md — record #217, close rarity + deploy-stall backlog items
Sign up for freeto 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

@Jose-Gael-Cruz-Lopez
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text - #217

Merged
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup
Jun 12, 2026
Merged

fix(a11y): single-source rarity tokens, 3:1 legendary, neutral rarity text#217
Jose-Gael-Cruz-Lopez merged 1 commit into
mainfrom
fix/rarity-token-dedup

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jun 12, 2026

Copy link
Copy Markdown
Member

Resolves the PROGRAM.md backlog item: duplicate --rarity-* definitions in globals.css.

  • Deletes the dead revamp :root rarity block; the legacy block (canonical per decision) now defines each of the ten tokens exactly once.
  • --rarity-legendary pinned to #b4862c (was var(--brand-progress) #e8a33a at 2.10:1 — under the 3:1 non-text bar). All five tiers now clear 3:1 on every required non-text surface (legendary worst case 3.02).
  • Hard-coded copies of the rarity palette in ProfileView.tsx and Achievements.tsx replaced with the canonical tokens (hex-alpha suffixes → color-mix; ProfileView featured legendary is pixel-identical, confirming the conversion).
  • Rarity is never conveyed by colored text: TitleFlair and the Achievements rarity chip render neutral var(--text); TitleFlair appends the literal tier name; the Achievements showcase strip gains a rarity text line (was border-color-only, a 1.4.1 gap).
  • --rarity-legendary-bg intentionally stays on the lighter gold base (comment added): a #b4862c-based tint would put the TitleFlair border vs its own interior under 3:1.

Verified by fresh-context measurement: all rarity-adjacent text ≥4.87:1; all required non-text ≥3.02:1; two legendary items (Achievements icon-tile glyph 2.82, progress fill 2.64) rely on the documented decorative/redundant carve-out. Toast and Settings render pixel-identical for the four unchanged tiers (headless-Chrome harness diff).

Do not merge yet — awaiting visual sign-off on the changed surfaces.

Summary by CodeRabbit

  • Style

    • Standardized rarity tier styling across achievement cards and profile features using design tokens.
    • Reorganized CSS for consistent color application across components.
    • Updated featured achievement cards with improved rarity tier visibility.
  • Bug Fixes

    • Enhanced accessibility: rarity tiers now indicated via border color and explicit tier label instead of text color alone, improving contrast and clarity.

@cloudflare-workers-and-pages

cloudflare-workers-and-pagesBot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend4450f0aCommit Preview URL

Branch Preview URL
Jun 12 2026, 05:10 PM

@coderabbitai

coderabbitaiBot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR refactors rarity color styling across achievement and profile components to use canonical CSS tokens instead of hardcoded hex values. Rarity tier tokens are reorganized in globals.css with --rarity-legendary updated to a fixed value, and a rarityVar helper abstracts color derivation in components. Featured achievement tiles gain dedicated rarity display lines with improved typography.

Changes

Rarity Color Token Migration

Layer / File(s)Summary
CSS Token Foundation and Reorganization
frontend/src/app/globals.css
Rarity tier tokens moved to dedicated "RARITY TIER TOKENS" section with --rarity-legendary updated from var(--brand-progress) to fixed #b4862c value.
Achievements Component Rarity Token Adoption
frontend/src/components/screens/Achievements.tsx
Introduces rarityVar helper and refactors card borders, shadows, badge colors, and featured tile styling to use CSS token-derived colors. Featured tiles gain dedicated rarity display lines with uppercase formatting.
ProfileView Featured Achievements Integration
frontend/src/components/ProfileView.tsx
Introduces rarityVar helper and applies token-derived colors to featured achievement borders and backgrounds via color-mix, replacing hardcoded hex values.
TitleFlair Accessibility and Display Update
frontend/src/components/TitleFlair.tsx
Updates styling to use neutral text color for accessibility while maintaining rarity backgrounds. Renders both cosmetic name and rarity tier as separate elements with explanatory accessibility comments.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 Hues now flow from tokens true,
Rarity colors, canonical through and through,
Legendary gold gleams bright (#b4862c!),
Accessibility whispers: borders, not ink,
From scattered hex to unified think.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe description provides a detailed explanation of changes and includes testing/verification notes, but does not follow the repository's template structure with explicit sections like 'Changes Made', 'Related Issues', 'Testing', and 'Screenshots'.Reformat the description to match the repository template: use 'Changes Made' for the bullet list, add 'Related Issues' section with issue number, structure 'Testing' with checkboxes, and add 'Notes for Reviewers' section.
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title accurately summarizes the main changes: consolidating rarity tokens as a single source, fixing the legendary tier to meet 3:1 contrast, and using neutral text for rarity display.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck 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 fix/rarity-token-dedup

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.

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
frontend/src/components/ProfileView.tsx (1)

10-11: ⚡ Quick win

Inconsistent fallback and type compared to Achievements.tsx.

The rarityVar helper here uses var(--text-muted) as the fallback, while Achievements.tsx (lines 12-14) uses var(--border). Since these colors are applied to borders, backgrounds, and shadows, var(--border) is more semantically appropriate and ensures visual consistency if a rarity token is missing.

Additionally, the parameter type here is string, while Achievements uses the more specific RarityTier type. Since ua.achievement.rarity should be typed as RarityTier, using the stricter type improves type safety.

♻️ Align with Achievements.tsx pattern
-// Rarity colors come only from the canonical --rarity-* tokens (globals.css).-const rarityVar = (r: string) => `var(--rarity-${r}, var(--text-muted))`;+import type { RarityTier } from "`@/lib/types`";++// Rarity colors come only from the canonical --rarity-* tokens (globals.css).+const rarityVar = (r: RarityTier) => `var(--rarity-${r}, var(--border))`;
🤖 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 `@frontend/src/components/ProfileView.tsx` around lines 10 - 11, Update the
rarityVar helper to match Achievements.tsx: change its fallback from
var(--text-muted) to var(--border) and tighten the parameter type from string to
the RarityTier type used elsewhere; ensure usages (e.g., places that pass
ua.achievement.rarity) still compile and import or reference RarityTier where
rarityVar is declared so the helper enforces the stricter type and produces the
same border-appropriate fallback color.
🤖 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.
Nitpick comments:
In `@frontend/src/components/ProfileView.tsx`:
- Around line 10-11: Update the rarityVar helper to match Achievements.tsx:
change its fallback from var(--text-muted) to var(--border) and tighten the
parameter type from string to the RarityTier type used elsewhere; ensure usages
(e.g., places that pass ua.achievement.rarity) still compile and import or
reference RarityTier where rarityVar is declared so the helper enforces the
stricter type and produces the same border-appropriate fallback color.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 67e93ca5-cd2f-4100-aec5-1e1d7edc11d5

📥 Commits

Reviewing files that changed from the base of the PR and between 8caed88 and 4450f0a.

📒 Files selected for processing (4)
  • frontend/src/app/globals.css
  • frontend/src/components/ProfileView.tsx
  • frontend/src/components/TitleFlair.tsx
  • frontend/src/components/screens/Achievements.tsx

@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez merged commit 24f1b94 into mainJun 12, 2026
6 checks passed
@Jose-Gael-Cruz-Lopez
Jose-Gael-Cruz-Lopez deleted the fix/rarity-token-dedup branch June 12, 2026 17:31
Jose-Gael-Cruz-Lopez added a commit that referenced this pull request Jun 12, 2026
docs: PROGRAM.md — record #217, close rarity + deploy-stall backlog items
Sign up for freeto 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

@Jose-Gael-Cruz-Lopez