Skip to content

fix(ui): serve Geist and GeistMono from local provider#214

Merged
kodiakhq[bot] merged 4 commits into
mainfrom
fix/local-geist-fonts
May 27, 2026
Merged

fix(ui): serve Geist and GeistMono from local provider#214
kodiakhq[bot] merged 4 commits into
mainfrom
fix/local-geist-fonts

Conversation

@RedStar071

Copy link
Copy Markdown
Member

🔗 Linked issue

N/A

🧭 Context

@nuxt/fonts was previously resolving Geist and GeistMono from external providers (Fontshare CDN). This switches both families to provider: 'local' and bundles the font files directly in public/fonts/, eliminating external CDN dependencies for reliability and performance.

📚 Description

  • Disabled the fontshare provider in @nuxt/fonts configuration
  • Switched Geist and GeistMono to provider: 'local'
  • Added weights 400, 500, 600, 700 for both families
  • Added public/fonts/Geist-{Regular,Medium,SemiBold,Bold}.ttf and public/fonts/GeistMono-{Regular,Medium,Bold}.ttf

Fonts are now served from the app itself rather than fetched from an external CDN, removing a third-party network dependency and making the app functional in offline or network-restricted environments.

Copilot AI review requested due to automatic review settings May 27, 2026 12:51

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the Nuxt @nuxt/fonts configuration so the Geist and Geist Mono font families are served from the app itself (local provider) rather than an external provider, aiming to remove third-party CDN dependency.

Changes:

  • Disabled the fontshare provider in the Nuxt fonts configuration.
  • Switched Geist and Geist Mono families to provider: "local" and configured their weights.

Comment thread nuxt.config.ts
@coderabbitai

coderabbitai Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The Nuxt configuration is updated to migrate font handling from remote fontshare-based providers to local font definitions for Geist, Geist Mono, and Whitney families. The Content Security Policy is simultaneously tightened to restrict font sources to self and data URIs only.

Changes

Font Configuration and Security Updates

Layer / File(s) Summary
Local font provider migration
nuxt.config.ts
Fonts configuration introduces a providers block disabling fontshare, and redefines Geist, Geist Mono, and Whitney families to use provider: "local" with explicit weights arrays, removing preload, subsets, src, and display fields.
Font Content Security Policy restriction
nuxt.config.ts
Content Security Policy font-src directive is narrowed to allow only 'self' and data:, removing all external font origins and general https allowlist.

Possibly related PRs

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description check ✅ Passed The description is directly related to the changeset, providing clear context about switching fonts from external CDN to local provider and explaining the benefits.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title accurately reflects the primary change: switching Geist and GeistMono fonts from external CDN to local provider.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/local-geist-fonts

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@sentry

sentry Bot commented May 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.52%. Comparing base (1ba87ec) to head (c9cf661).
✅ All tests successful. No failed tests found.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #214   +/-   ##
=======================================
  Coverage   66.52%   66.52%           
=======================================
  Files         103      103           
  Lines        2306     2306           
  Branches      472      472           
=======================================
  Hits         1534     1534           
  Misses        412      412           
  Partials      360      360           
Flag Coverage Δ
component 57.04% <ø> (ø)
unit 67.56% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@codspeed-hq

codspeed-hq Bot commented May 27, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 44 untouched benchmarks


Comparing fix/local-geist-fonts (c9cf661) with main (1ba87ec)

Open in CodSpeed

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

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

Inline comments:
In `@nuxt.config.ts`:
- Around line 374-379: The configured font entry for "Geist Mono" lists weights:
[400, 500, 600, 700] but your public/fonts only contains GeistMono-Regular,
GeistMono-Medium and GeistMono-Bold (no SemiBold), so update the font config for
the "Geist Mono" provider: either add the missing font file
GeistMono-SemiBold.ttf to public/fonts and ensure the weights array keeps 600,
or remove 600 from the weights array (leaving [400, 500, 700]) to avoid
browser-synthesised SemiBold rendering; locate the font block with name "Geist
Mono" in nuxt.config.ts and apply one of these fixes.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: 0cd9e5d8-f219-48a7-a675-47c72524e948

📥 Commits

Reviewing files that changed from the base of the PR and between 1ba87ec and 713c550.

⛔ Files ignored due to path filters (11)
  • public/fonts/Geist-Bold.ttf is excluded by !**/*.ttf
  • public/fonts/Geist-Medium.ttf is excluded by !**/*.ttf
  • public/fonts/Geist-Regular.ttf is excluded by !**/*.ttf
  • public/fonts/Geist-SemiBold.ttf is excluded by !**/*.ttf
  • public/fonts/GeistMono-Bold.ttf is excluded by !**/*.ttf
  • public/fonts/GeistMono-Medium.ttf is excluded by !**/*.ttf
  • public/fonts/GeistMono-Regular.ttf is excluded by !**/*.ttf
  • public/fonts/Whitney-Bold.woff is excluded by !**/*.woff
  • public/fonts/Whitney-Medium.woff is excluded by !**/*.woff
  • public/fonts/Whitney-Regular.woff is excluded by !**/*.woff
  • public/fonts/Whitney-SemiBold.woff is excluded by !**/*.woff
📒 Files selected for processing (1)
  • nuxt.config.ts

Comment thread nuxt.config.ts
@RedStar071 RedStar071 requested a review from lorypelli May 27, 2026 15:08
@RedStar071 RedStar071 changed the title fix(fonts): serve Geist and GeistMono from local provider fix(ui): serve Geist and GeistMono from local provider May 27, 2026

@lorypelli lorypelli left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!

@kodiakhq kodiakhq Bot merged commit b8f2720 into main May 27, 2026
18 of 19 checks passed
@kodiakhq kodiakhq Bot deleted the fix/local-geist-fonts branch May 27, 2026 15:12
This was referenced May 27, 2026
RedStar071 added a commit that referenced this pull request Jun 8, 2026
This PR will deploy the following changes to production
(`wolfstar.rocks`).

**Next version: `v0.7.0`** (current: `v0.6.3`)

### Features

- feat(tests): auto-generate ephemeral secrets for CI builds
(`fd3a0255`)
- feat(semantic-pr): update scopes for PR validation (`2fb7ab56`)
- feat(test-secrets): add module for auto-generating CI secrets
(`3baf470c`)

### Fixes

- fix(auth): refresh Discord OAuth tokens before API calls (#218)
(`4dd1e5cf`)
- fix(ui): serve Geist and GeistMono from local provider (#214)
(`b8f27202`)
- fix: improve release workflow and fix release-notes output (#211)
(`f7ae44fb`)
- fix(package): update node engine requirement to >=24 (`b66e0040`)
- fix(ci): resolve failing workflow checks (`face5c43`)

### Other Changes

- chore: resolve release PR #217 merge conflicts (#219) (`af83b2af`)
- chore: migrate design reference from .atlas to .claude (#216)
(`cadf476e`)
- chore: remove redundant auto-imported type imports (#213) (`be362fbc`)
- chore(deps): upgrade knip to v6 and enable treatConfigHintsAsErrors
(#212) (`1ba87ecb`)
- chore(deps): update test packages (#206) (`1187f76e`)
- chore(ci): pin playwright container image to sha256 digest (#202)
(`4eef7689`)
- chore: replace create-pr-commit skill with full create-pull-request
skill (#201) (`6874c781`)
- ci: improve release workflows and permissions (`9839e301`)
- ci: enable reuse of existing server in CI environment (`ffa2b640`)
- ci: fix browser container digest, version comment, and restore
NODE_OPTIONS/secrets (`8fae2422`)
- ci: remove NODE_OPTIONS from component and build tests (`728c7951`)
- chore: rename codecov file to use correct version (`fba616b7`)
- ci: update scopes in semantic PR workflow (`2e2fd6fe`)
- ci: remove hardcoded secrets from browser tests (`a7ddfdb0`)
- chore: rename `continuous-integration` to `ci` workflow (`0ee01169`)
- ci: simplify permissions in release PR workflow (`80c69cad`)
- ci: fix all zizmor security analysis findings (`5ebc15ee`)
- ci: update reporter configuration for CI environments (`2a6166c6`)
- ci: harden GitHub Actions workflows (`2d4600ea`)
- chore(pnpm): add minimumReleaseAge and clean up config comments
(`729fadb3`)
- chore: set package version to 0.0.0 (`afd42056`)

### Uncategorized

- revert "fix(ci): resolve failing workflow checks" (`a684d62e`)

---

> Merging this PR will:
> - Deploy to `wolfstar.rocks` via Netlify
> - Create a `v0.7.0` tag and GitHub Release
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants