Skip to content

refactor: use geist instead of inter - #334

Merged
pedronauck merged 2 commits into
mainfrom
font-geist
Aug 9, 2026
Merged

pedronauck merged 2 commits into
mainfrom
font-geist

Conversation

@pedronauck

@pedronauck pedronauck commented Aug 9, 2026 •

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • Style

    • Updated the primary sans-serif typography from Inter to Geist across the website, UI components, Storybook, showcases, and generated images.
    • Refined font loading and styling to support Geist weight variations and improve rendering behavior.
    • Updated typography guidance, labels, and examples to reflect the new font standards.
  • Documentation

    • Added generated font token entries to the design documentation.

@pedronauck pedronauck self-assigned this Aug 9, 2026
@greptile-apps

greptile-apps Bot commented Aug 9, 2026

Copy link
Copy Markdown

Too many files changed for review (164 files, 100 file limit).

Bypass the limit by tagging @greptile-apps to review.

@vercel

vercel Bot commented Aug 9, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
compozy-site Ready Ready Preview Aug 9, 2026 9:58pm

Request Review

@coderabbitai

coderabbitai Bot commented Aug 9, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: a106e005-8643-4175-9b3f-297076aed954

📥 Commits

Reviewing files that changed from the base of the PR and between ce67087 and 3369aec.

⛔ Files ignored due to path filters (3)
  • bun.lock is excluded by !**/*.lock, !**/*.lock
  • packages/ui/package.json is excluded by !**/*.json
  • web/package.json is excluded by !**/*.json
📒 Files selected for processing (1)
  • packages/site/remotion/hero/tokens.ts

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.


Walkthrough

The change replaces Inter with Geist across application font loading, UI tokens, OpenGraph rendering, design-system tooling, lint diagnostics, tests, and showcase content. It also updates font-token synchronization and removes optical-sizing declarations.

Changes

Geist typography migration

Layer / File(s) Summary
Runtime font configuration
packages/site/app/*, packages/ui/src/tokens*, packages/ui/.storybook/*, packages/site/remotion/*, web/src/styles.css
Application and UI font imports, tokens, fallbacks, and rendering settings now use Geist.
OpenGraph font rendering
packages/site/lib/og/*, packages/site/lib/__tests__/*
OpenGraph font assets, tokens, templates, and related mocks and descriptions now use Geist.
Design token synchronization
scripts/sync-design-md.mjs
The sync script extracts font tokens into generated tables and frontmatter and updates quoted YAML scalar formatting.
Design-system alignment and validation
lint-plugins/*, packages/ui/src/components/custom/*, web/src/components/*
Lint messages, component documentation, tests, and showcase examples now identify Geist typography.

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

Possibly related PRs

  • compozy/compozy#125: Updates shared typography and font tokens in packages/ui/src/tokens.css.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring 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 (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: replacing Inter with Geist across the design system and site.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch font-geist

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

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

Inline comments:
In `@packages/site/app/global.css`:
- Line 29: Update the --font-sans fallback stack to quote the BlinkMacSystemFont
family name, preserving the existing fallback order while satisfying Stylelint’s
value-keyword-case check.

In `@packages/site/remotion/hero/tokens.ts`:
- Line 21: The fontSans token in TOKENS must reference a font family actually
loaded by the Remotion composition. Update fontSans to use an available
fallback, or load Geist in the hero composition and wire the matching variable
through CSS before the components consume TOKENS.fontSans.
🪄 Autofix

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

Review profile: CHILL

Plan: Pro Plus

Run ID: b0f4a09a-2a80-4648-96f2-f96e7d83dc5a

📥 Commits

Reviewing files that changed from the base of the PR and between 2952cdf and ce67087.

⛔ Files ignored due to path filters (143)
  • .agents/skills/eng/eng-ui-screenshot/references/cdp-flow.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/eng/eng-ui-screenshot/references/troubleshooting.md is excluded by !**/*.md, !.agents/**
  • CLAUDE.md is excluded by !**/*.md
  • DESIGN.md is excluded by !**/*.md
  • bun.lock is excluded by !**/*.lock, !**/*.lock
  • docs/_memory/lessons/L-022-eyebrow-canonical-source.md is excluded by !**/*.md
  • docs/articles/2026-05/05-flat-depth-model.mdx is excluded by !**/*.mdx
  • docs/design/opendesign/_done/agents/agent-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/agents/agent-settings.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/agents/agents-list.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/agents/provider-model-reasoning-selector.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/dashboard/critique.json is excluded by !docs/design/**/*, !**/*.json
  • docs/design/opendesign/_done/dashboard/dashboard.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/loops/LOOPS-DESIGN-SPEC.md is excluded by !docs/design/**/*, !**/*.md
  • docs/design/opendesign/_done/loops/LOOPS-HANDOFF.md is excluded by !docs/design/**/*, !**/*.md
  • docs/design/opendesign/_done/loops/loop-configure.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/loops/loop-create.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/loops/loop-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/loops/loop-editor.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/loops/loop-run-detail-states.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/loops/loop-run-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/loops/loop-run-form.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/loops/loops-catalog.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/loops/loops-index.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/loops/runs.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/marketplace/LISTING-STANDARD.md is excluded by !docs/design/**/*, !**/*.md
  • docs/design/opendesign/_done/marketplace/critique.json is excluded by !docs/design/**/*, !**/*.json
  • docs/design/opendesign/_done/marketplace/marketplace-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/marketplace/marketplace-index.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/marketplace/marketplace-vault-selector.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/marketplace/marketplace.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/add-workspace.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-agent.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-bridge.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-job-redesign.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-knowledge.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-mcp-server.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-network-channel.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-provider-sheet.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-sandbox-profile.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-task-redesign.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-trigger-redesign.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/create-vault-secret.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/edit-bridge.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/edit-knowledge.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/edit-mcp-server.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/edit-network-channel.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/edit-provider-sheet.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/edit-sandbox-profile.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/index.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/modal-system.css is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/modals/start-session.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/network/critique.json is excluded by !docs/design/**/*, !**/*.json
  • docs/design/opendesign/_done/network/network-states.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/network/network.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/session/_vc-capture-fast.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/session/_vc-capture-normal.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/session/runtime-selector-variations.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/session/session.css is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/settings/settings-automation.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/settings/settings-extensions.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/settings/settings-general.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/settings/settings-hooks.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/settings/settings-layouts.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/settings/settings-memory.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/settings/settings-network.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/settings/settings-observability.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/settings/settings-providers.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/settings/settings-skills.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/shell/compozy-onboarding.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/shell/compozy-refined-7.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/shell/index.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/shell/sidebar-sessions-01.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/shell/sidebar-sessions-02.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/site/site-docs-landing.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/site/site-docs-sidebar.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/site/site-example-page.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/site/site-marketplace-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/site/site-marketplace-list.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/site/site-marketplace.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/site/site.css is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/systems/critique.json is excluded by !docs/design/**/*, !**/*.json
  • docs/design/opendesign/_done/systems/sandbox.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/systems/vault.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/tasks/TASK-DETAILS-REDESIGN-PLAN.md is excluded by !docs/design/**/*, !**/*.md
  • docs/design/opendesign/_done/tasks/task-detail-states.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/tasks/task-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/_done/tasks/task-run-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/design-system/GUIDE.md is excluded by !docs/design/**/*, !**/*.md
  • docs/design/opendesign/design-system/components.html is excluded by !docs/design/**/*
  • docs/design/opendesign/design-system/ds-core.css is excluded by !docs/design/**/*
  • docs/design/opendesign/design-system/foundations.html is excluded by !docs/design/**/*
  • docs/design/opendesign/design-system/index.html is excluded by !docs/design/**/*
  • docs/design/opendesign/design-system/os-shell.html is excluded by !docs/design/**/*
  • docs/design/opendesign/design-system/patterns.html is excluded by !docs/design/**/*
  • docs/design/opendesign/design-system/window-tabs-variations.html is excluded by !docs/design/**/*
  • docs/design/opendesign/docs/docs-design-system.html is excluded by !docs/design/**/*
  • docs/design/opendesign/docs/docs.css is excluded by !docs/design/**/*
  • docs/design/opendesign/empty-states/jobs-empty-suggestions.html is excluded by !docs/design/**/*
  • docs/design/opendesign/empty-states/tasks-empty-templates.html is excluded by !docs/design/**/*
  • docs/design/opendesign/empty-states/triggers-empty-suggestions.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/index.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/loop-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/loop-editor-states.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/loop-editor.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/loop-inventories.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/loop-node-controls.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/loop-quarantine-sheet.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/loop-run-detail-states.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/loop-run-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/loop-run-form.html is excluded by !docs/design/**/*
  • docs/design/opendesign/loops/loops-catalog.html is excluded by !docs/design/**/*
  • docs/design/opendesign/marketplace/extension-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/marketplace/index.html is excluded by !docs/design/**/*
  • docs/design/opendesign/marketplace/marketplace.css is excluded by !docs/design/**/*
  • docs/design/opendesign/marketplace/mcp-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/marketplace/skill-detail.html is excluded by !docs/design/**/*
  • docs/design/opendesign/os/compozy-os-v2.html is excluded by !docs/design/**/*
  • docs/design/opendesign/os/critique.json is excluded by !docs/design/**/*, !**/*.json
  • docs/design/opendesign/os/onboarding.html is excluded by !docs/design/**/*
  • docs/design/opendesign/os/os-v2.css is excluded by !docs/design/**/*
  • docs/design/opendesign/os/pagehead-redesign.html is excluded by !docs/design/**/*
  • docs/qa/_seeds/final-qa/_children/06-skills-capabilities.md is excluded by !**/*.md
  • docs/qa/_seeds/final-qa/_children/12-web-ui.md is excluded by !**/*.md
  • docs/qa/_seeds/final-qa/_children/13-docs-site.md is excluded by !**/*.md
  • docs/qa/charters/CH-untested-068-operate-desktop-shell-bruno.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-site-docs-typography-opendesign.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-geist-wght-medium-510.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-inter-opsz-medium-510.md is excluded by !**/*.md
  • imgs/how-it-works-flow.png is excluded by !**/*.png
  • imgs/how-it-works-flow.svg is excluded by !**/*.svg
  • packages/site/CLAUDE.md is excluded by !**/*.md
  • packages/site/lib/og/fonts/Geist-Medium.ttf is excluded by !**/*.ttf
  • packages/site/lib/og/fonts/Geist-Regular.ttf is excluded by !**/*.ttf
  • packages/site/lib/og/fonts/Geist-SemiBold.ttf is excluded by !**/*.ttf
  • packages/site/lib/og/fonts/Inter-Medium.ttf is excluded by !**/*.ttf
  • packages/site/lib/og/fonts/Inter-Regular.ttf is excluded by !**/*.ttf
  • packages/site/lib/og/fonts/Inter-SemiBold.ttf is excluded by !**/*.ttf
  • packages/ui/package.json is excluded by !**/*.json
  • packages/ui/src/components/custom/stories/eyebrow.stories.tsx is excluded by !**/*.stories.tsx
  • packages/ui/src/components/custom/stories/pill-group.stories.tsx is excluded by !**/*.stories.tsx
  • web/CLAUDE.md is excluded by !**/*.md
  • web/package.json is excluded by !**/*.json
📒 Files selected for processing (21)
  • lint-plugins/__tests__/compozy-design-system.test.mjs
  • lint-plugins/compozy-design-system-core-rules.mjs
  • packages/site/app/global.css
  • packages/site/app/layout.tsx
  • packages/site/lib/__tests__/opengraph-image.test.tsx
  • packages/site/lib/__tests__/static-route-metadata.test.ts
  • packages/site/lib/og/fonts.ts
  • packages/site/lib/og/templates/blog.tsx
  • packages/site/lib/og/templates/docs.tsx
  • packages/site/lib/og/templates/landing.tsx
  • packages/site/lib/og/tokens.ts
  • packages/site/remotion/hero/tokens.ts
  • packages/ui/.storybook/preview.css
  • packages/ui/src/components/custom/__tests__/eyebrow.test.tsx
  • packages/ui/src/components/custom/metric.tsx
  • packages/ui/src/tokens-runtime.css
  • packages/ui/src/tokens.css
  • scripts/sync-design-md.mjs
  • web/src/components/design-system-showcase-controls.tsx
  • web/src/components/design-system-showcase-foundations.tsx
  • web/src/styles.css

*/
@theme inline {
--font-sans: var(--font-inter), "Inter Variable", -apple-system, BlinkMacSystemFont, sans-serif;
--font-sans: var(--font-geist), "Geist", -apple-system, BlinkMacSystemFont, sans-serif;

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.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the fallback family token casing.

Line 29 leaves Stylelint's value-keyword-case error on unquoted BlinkMacSystemFont. Quote the family name to preserve the fallback stack and pass the CSS lint check.

Proposed fix
-  --font-sans: var(--font-geist), "Geist", -apple-system, BlinkMacSystemFont, sans-serif;
+  --font-sans: var(--font-geist), "Geist", -apple-system, "BlinkMacSystemFont", sans-serif;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
--font-sans: var(--font-geist), "Geist", -apple-system, BlinkMacSystemFont, sans-serif;
--font-sans: var(--font-geist), "Geist", -apple-system, "BlinkMacSystemFont", sans-serif;
🧰 Tools
🪛 Stylelint (17.14.0)

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

(value-keyword-case)

🤖 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 `@packages/site/app/global.css` at line 29, Update the --font-sans fallback
stack to quote the BlinkMacSystemFont family name, preserving the existing
fallback order while satisfying Stylelint’s value-keyword-case check.

Source: Linters/SAST tools

Comment thread packages/site/remotion/hero/tokens.ts Outdated
@pedronauck
pedronauck merged commit 69db9ed into main Aug 9, 2026
9 of 11 checks passed
@pedronauck
pedronauck deleted the font-geist branch August 9, 2026 21:56
@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit 3369aec.

This branch was successfully deployed

1 active deployment
Preview — 3369aece Deployed Aug 9, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant