Skip to content

Add brand assets page - #5256

Merged
lawrencecchen merged 7 commits into
mainfrom
feature-brand-assets-page
Jun 4, 2026
Merged

lawrencecchen merged 7 commits into
mainfrom
feature-brand-assets-page

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Jun 3, 2026 •

Copy link
Copy Markdown
Contributor

Summary:

  • Add a localized /assets brand assets page with the two macOS app icon variants.
  • Publish the actual light and dark app icon PNGs from Assets.xcassets under web/public/brand.
  • Replace logo right-click navigation with a Base UI context menu for direct light/dark icon downloads and a Brand assets link.
  • Add the assets page to the footer, sitemap, and agent-readable page list.

Acceptance criteria:

  • /assets renders in localized routes.
  • The page shows only the light and dark macOS app icons with direct downloads.
  • Right-clicking the visible cmux logo opens a context menu with light icon download, dark icon download, and Brand assets actions.
  • Page and menu copy are present in every supported web/messages/*.json locale.

Verification:

  • node parsed all 20 message catalogs.
  • bun run lint passed with existing warnings only.
  • bun tsc --noEmit passed.
  • source scripts/load-dev-env.sh && bun run build passed, including Pagefind index generation.
  • bun test tests/agent-page-variants.test.ts passed.
  • Browser/CDP verification against http://localhost:3791: right-clicking the logo opened a z-index: 1000 menu above page content, the light/dark download rows rendered the actual icon images, downloads pointed to /brand/app-icon-light.png and /brand/app-icon-dark.png, Brand assets linked to /assets, and /assets still had exactly 2 download cards.

Note

Low Risk
Static marketing UI and public PNG downloads only; no auth, APIs, or data handling changes.

Overview
Adds a localized /assets page with SEO metadata and two downloadable macOS app icon cards (light/dark previews linking to /brand/*.png).

Site logos in the header and home hero are wrapped in a new BrandLogoLink that uses Base UI (@base-ui-components/react) to show a right-click context menu: direct downloads for both icons plus a link to the brand assets page; normal click still goes home.

Discovery updates: footer product column Assets link, sitemap entry for /assets, and agentReadablePages includes Brand Assets. Copy for brandAssets and brandLogoMenu (and footer assets) is added across all locale message files.

Reviewed by Cursor Bugbot for commit 54a7ea3. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • New Features

    • Brand Assets page: localized meta/title/description and a responsive grid of downloadable asset cards with light/dark previews.
  • UX

    • Footer adds an "Assets" link; site logo now opens a context menu for quick brand asset downloads and a link to the Brand Assets page.
  • Localization

    • Brand Assets copy and footer "Assets" label added across all supported locales.
  • Chores

    • Sitemap updated to include the /assets path.

@vercel

vercel Bot commented Jun 3, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Jun 3, 2026 3:58am
cmux-staging Building Building Preview, Comment Jun 3, 2026 3:58am

@coderabbitai

coderabbitai Bot commented Jun 3, 2026 •

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a localized /assets page with downloadable light/dark icons, a client BrandLogoLink context menu (download items + brand page link), header/footer integration, sitemap and agent-page registration, a runtime dependency, and translation updates across locales.

Changes

Brand Assets Feature

Layer / File(s) Summary
Brand Assets Page Component
web/app/[locale]/assets/page.tsx
Page with generateMetadata using next-intl, localized title/description/alternates, asset definitions, responsive grid of downloadable assets with light/dark previews, and usage rendering.
BrandLogoLink Component (client)
web/app/[locale]/components/brand-logo-link.tsx
Client component BrandLogoLink renders a context menu with light/dark icon downloads and a link to /assets, plus helper menu/item/icon subcomponents.
Header / Home / Footer Integration
web/app/[locale]/components/site-header.tsx, web/app/[locale]/page.tsx, web/app/[locale]/components/site-footer.tsx
Replaces direct logo Link wrappers with BrandLogoLink in header and home page; adds localized /assets link to footer product column.
Sitemap and Agent-readable Pages
web/app/sitemap.ts, web/app/lib/agent-page-paths.ts
Adds /assets route to sitemap paths (monthly, priority 0.5) and registers /assets in agentReadablePages.
Localization for All Locales
web/messages/{ar,bs,da,de,en,es,fr,it,ja,km,ko,no,pl,pt-BR,ru,th,tr,uk,zh-CN,zh-TW}.json
Adds footer.assets and new brandAssets and brandLogoMenu translation blocks (meta/title/description, iconSection, download, assetAlt, lightPreview, darkPreview) across locale files.
Package Dependency
web/package.json
Adds runtime dependency @base-ui-components/react → ^1.0.0-rc.0.

Sequence Diagram

sequenceDiagram
  participant User
  participant SiteHeader
  participant BrandLogoLink
  participant Router
  participant BrandAssetsPage
  participant i18n
  User->>SiteHeader: interact with logo / open context menu
  SiteHeader->>BrandLogoLink: context-menu trigger
  BrandLogoLink->>Router: navigate or download actions (/assets or file)
  Router->>BrandAssetsPage: navigate to /assets
  BrandAssetsPage->>i18n: getTranslations("brandAssets")
  i18n-->>BrandAssetsPage: localized strings
  BrandAssetsPage-->>User: render assets grid & download links
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • Ari4ka

Poem

🐰 I hopped through locales, light and night,
A tiny menu tucked beside the site.
Right-click the badge, find assets to share,
Pale and dark icons handled with care,
A rabbit's gift in every locale.

🚥 Pre-merge checks | ✅ 17 | ❌ 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 (17 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'Add brand assets page' clearly and concisely summarizes the main change: introducing a new localized assets page for brand downloads.
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.
Cmux Swift Actor Isolation ✅ Passed PR contains only TypeScript/TSX and JSON changes; zero Swift files present. Check for Swift actor isolation is not applicable.
Cmux Swift Blocking Runtime ✅ Passed PR modifies only web application files (TypeScript/TSX, JSON, package.json). No Swift files were changed. The custom check targets Swift blocking runtime primitives, which is inapplicable.
Cmux No Hacky Sleeps ✅ Passed PR adds brand assets page and components with zero timing patterns (setTimeout, setInterval, polling, sleep, etc.) or lifecycle race workarounds in TypeScript/JavaScript code.
Cmux Algorithmic Complexity ✅ Passed All collection operations involve fixed-size static arrays (2 brand assets, ~44 sitemap paths, ~20 locales): no scalable collections, nested scans, or hot-path complexity violations.
Cmux Swift Concurrency ✅ Passed This PR contains no Swift code changes; all modifications are web/TypeScript and JSON translation files. The Swift concurrency check is not applicable.
Cmux Swift @Concurrent ✅ Passed PR adds web brand assets page (TypeScript/Next.js). No Swift @concurrent or nonisolated async patterns found in actual source code that would violate the rule.
Cmux Swift File And Package Boundaries ✅ Passed PR removes 107 Swift lines across two files and deletes test files; no files exceed 800-line threshold; no new files created; no mixed responsibilities; meets rule exemption for focused refactoring.
Cmux Swift Logging ✅ Passed PR contains no production Swift code changes; only web/TypeScript/React changes. Check applies only to Swift logging and is not applicable here.
Cmux User-Facing Error Privacy ✅ Passed PR adds brand assets page with safe, generic user-facing text (labels, titles, download buttons) containing no vendor names, internal providers, credentials, or sensitive implementation details.
Cmux Full Internationalization ✅ Passed All 20 locales have matching translations for new keys (brandAssets, brandLogoMenu, footer.assets); all web components use next-intl; no hardcoded user-facing text.
Cmux Swiftui State Layout ✅ Passed PR contains no SwiftUI/Swift code changes; all modifications are in Next.js web app (TypeScript/React, localization JSON, and package.json). SwiftUI state layout check is not applicable.
Cmux Architecture Rethink ✅ Passed PR contains no Swift code; all changes are TypeScript/TSX web components, JSON localization, and configuration. Custom check is not applicable.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PR adds web/Next.js brand assets page only. No Swift files are added or materially changed. Swift window code in commit is unmodified infrastructure not touched by this feature.
Description check ✅ Passed The PR description fully covers the changes made, provides clear rationale, includes verification steps, and uses the template structure with summary, testing, and checklist sections.

✏️ 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 feature-brand-assets-page

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.

@greptile-apps

greptile-apps Bot commented Jun 3, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds a localized /assets brand assets page with downloadable light/dark macOS app icons, a right-click context menu on the site logo (using Base UI's ContextMenu), and updates to the footer, sitemap, and agent page list.

  • All 20 supported locales receive the brandAssets, brandLogoMenu, and footer.assets keys with translated copy.
  • BrandLogoLink wraps the site logo in a Base UI ContextMenu.Root so right-clicking opens download links and a Brand assets nav item; normal left-click navigation to / is preserved.
  • The /assets page, sitemap entry, and agent-readable page list are consistent with each other.

Confidence Score: 5/5

Static marketing UI with no auth, data, or payment changes — safe to merge.

All 20 locale files receive the required brandAssets, brandLogoMenu, and footer.assets keys. The Base UI context menu implementation is straightforward, the asset URLs are same-origin public paths, and the new page is consistent with the sitemap and agent page list. No runtime logic, no data handling, no Swift changes.

No files require special attention.

Important Files Changed

Filename Overview
web/app/[locale]/assets/page.tsx New brand assets page; uses next-intl correctly for both metadata and render, asset list is a small static constant, download links point to correct public paths.
web/app/[locale]/components/brand-logo-link.tsx New client component wrapping the site logo in a Base UI ContextMenu; download items render as native anchors with download attribute, locale-aware Link used for Brand assets navigation.
web/app/[locale]/components/site-footer.tsx Adds footer.assets link to the Product column; translation key is present in all 20 locales.
web/app/[locale]/components/site-header.tsx Replaces plain Link logo wrapper with BrandLogoLink; left-click navigation is preserved, right-click now shows context menu.
web/messages/en.json Adds brandAssets, brandLogoMenu, and footer.assets keys; all translation keys used in the new components are present.
web/app/sitemap.ts Adds /assets entry with monthly changeFrequency and 0.5 priority, consistent with similar marketing pages.
web/app/lib/agent-page-paths.ts Adds { path: "/assets", title: "Brand Assets" } in the correct position between Nightly and Privacy Policy.
web/app/[locale]/page.tsx Home hero logo wrapped in BrandLogoLink; layout preserved with shrink-0 class.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    Logo["Site Logo (img)"] -->|wrapped in| BLL["BrandLogoLink (client)"]
    BLL -->|left-click| Home["/ (home route)"]
    BLL -->|right-click| CM["Base UI ContextMenu"]
    CM --> DL["Download light icon\n/brand/app-icon-light.png"]
    CM --> DD["Download dark icon\n/brand/app-icon-dark.png"]
    CM --> BA["Brand Assets link\n/assets"]
    BA --> AssetsPage["[locale]/assets/page.tsx"]
    AssetsPage --> Card1["Light icon card\n(download anchor)"]
    AssetsPage --> Card2["Dark icon card\n(download anchor)"]
    Footer["SiteFooter"] -->|footer.assets| BA
    Sitemap["sitemap.ts"] --> BA
    AgentPaths["agent-page-paths.ts"] --> BA
Loading

Reviews (6): Last reviewed commit: "align brand menu link icon" | Re-trigger Greptile

@cubic-dev-ai cubic-dev-ai Bot 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.

No issues found across 31 files

Re-trigger cubic

@coderabbitai coderabbitai Bot 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.

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 `@web/messages/no.json`:
- Around line 1208-1211: Update the localized strings (metaDescription,
description, and iconSection) to reflect the full /assets scope (logos, icons,
badges) instead of only macOS app icons; specifically, change metaDescription
and description from "Last ned de lyse og mørke cmux-appikonene som macOS-appen
bruker." to wording that mentions logos, icons and badges, and update
iconSection from "macOS-appikoner" to a broader label like "Ikoner og logoer" so
the page copy (metaDescription, title, description, iconSection) accurately
describes the assets provided.

In `@web/messages/pl.json`:
- Around line 1208-1211: The current Polish strings metaDescription, title,
description, and iconSection in web/messages/pl.json reference only light/dark
macOS app icons; update these keys to reflect the broader brand assets available
on the /assets page (e.g., mention logos, color palette, typography and app
icons), keeping title concise (e.g., "Zasoby marki"), expanding metaDescription
and description to summarize all asset types, and adjust iconSection to a more
general label if needed (e.g., "Ikony i zasoby aplikacji") so on-page copy and
metadata accurately describe the full assets scope.
🪄 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.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 421c6e59-c785-4538-8425-02e88ae3de09

📥 Commits

Reviewing files that changed from the base of the PR and between 707e9b8 and 757f693.

⛔ Files ignored due to path filters (2)
  • web/public/brand/app-icon-dark.png is excluded by !**/*.png
  • web/public/brand/app-icon-light.png is excluded by !**/*.png
📒 Files selected for processing (21)
  • web/app/[locale]/assets/page.tsx
  • web/messages/ar.json
  • web/messages/bs.json
  • web/messages/da.json
  • web/messages/de.json
  • web/messages/en.json
  • web/messages/es.json
  • web/messages/fr.json
  • web/messages/it.json
  • web/messages/ja.json
  • web/messages/km.json
  • web/messages/ko.json
  • web/messages/no.json
  • web/messages/pl.json
  • web/messages/pt-BR.json
  • web/messages/ru.json
  • web/messages/th.json
  • web/messages/tr.json
  • web/messages/uk.json
  • web/messages/zh-CN.json
  • web/messages/zh-TW.json

Comment thread web/messages/no.json
Comment on lines +1208 to +1211
"metaDescription": "Last ned de lyse og mørke cmux-appikonene som macOS-appen bruker.",
"title": "Merkeressurser",
"description": "Last ned de lyse og mørke cmux-appikonene som macOS-appen bruker.",
"iconSection": "macOS-appikoner",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Broaden the localized page description to match actual assets scope.

Line 1208 and Line 1210 say the page is for app icons only, but this PR’s /assets page scope includes logos/icons/badges. Please update this locale copy so users aren’t told a narrower scope than what the page provides.

🤖 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 `@web/messages/no.json` around lines 1208 - 1211, Update the localized strings
(metaDescription, description, and iconSection) to reflect the full /assets
scope (logos, icons, badges) instead of only macOS app icons; specifically,
change metaDescription and description from "Last ned de lyse og mørke
cmux-appikonene som macOS-appen bruker." to wording that mentions logos, icons
and badges, and update iconSection from "macOS-appikoner" to a broader label
like "Ikoner og logoer" so the page copy (metaDescription, title, description,
iconSection) accurately describes the assets provided.

Comment thread web/messages/pl.json
Comment on lines +1208 to +1211
"metaDescription": "Pobierz jasną i ciemną ikonę aplikacji cmux używaną przez aplikację macOS.",
"title": "Zasoby marki",
"description": "Pobierz jasną i ciemną ikonę aplikacji cmux używaną przez aplikację macOS.",
"iconSection": "Ikony aplikacji macOS",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Polish metadata/body copy is overly narrow for the new assets page.

Line 1208 and Line 1210 describe only light/dark app icons, while the feature scope is broader brand assets. Please align this text with the actual /assets content so metadata and on-page description are accurate.

🤖 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 `@web/messages/pl.json` around lines 1208 - 1211, The current Polish strings
metaDescription, title, description, and iconSection in web/messages/pl.json
reference only light/dark macOS app icons; update these keys to reflect the
broader brand assets available on the /assets page (e.g., mention logos, color
palette, typography and app icons), keeping title concise (e.g., "Zasoby
marki"), expanding metaDescription and description to summarize all asset types,
and adjust iconSection to a more general label if needed (e.g., "Ikony i zasoby
aplikacji") so on-page copy and metadata accurately describe the full assets
scope.

@cubic-dev-ai cubic-dev-ai Bot 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.

1 issue found across 27 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="web/messages/fr.json">

<violation number="1" location="web/messages/fr.json:1208">
P3: French adjective agreement error: "claire" and "sombre" modify "icônes" (feminine plural) but are in singular form. Should be "claires" and "sombres" to match the feminine plural noun.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread web/messages/fr.json
},
"brandAssets": {
"metaTitle": "Ressources de marque",
"metaDescription": "Téléchargez les icônes cmux claire et sombre utilisées par l’app macOS.",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: French adjective agreement error: "claire" and "sombre" modify "icônes" (feminine plural) but are in singular form. Should be "claires" and "sombres" to match the feminine plural noun.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At web/messages/fr.json, line 1208:

<comment>French adjective agreement error: "claire" and "sombre" modify "icônes" (feminine plural) but are in singular form. Should be "claires" and "sombres" to match the feminine plural noun.</comment>

<file context>
@@ -1205,22 +1205,13 @@
   "brandAssets": {
     "metaTitle": "Ressources de marque",
-    "metaDescription": "Téléchargez les logos, icônes, badges et ressources cmux pour modes clair et sombre.",
+    "metaDescription": "Téléchargez les icônes cmux claire et sombre utilisées par l’app macOS.",
     "title": "Ressources de marque",
-    "description": "Téléchargez les logos, icônes, badges et variantes SVG cmux pour fonds clairs et sombres.",
</file context>

@socket-security

socket-security Bot commented Jun 3, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​vercel@​50.9.5721009699100
Addednpm/​@​opentui/​core@​0.1.106851009298100

View full report

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

Caution

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

⚠️ Outside diff range comments (2)
web/messages/de.json (1)

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

Translate footer.assets to German.

The footer.assets value is "Assets" (English), but German is a high-confidence locale that should have native translations. Other footer keys like footer.language are properly translated to "Sprache". This key should also be translated to German (e.g., "Ressourcen" or an appropriate German term for brand assets).

As per coding guidelines, web UI text changes must update every locale listed in web/i18n/routing.ts with matching entries, and high-confidence locales (including de) are expected to contain fully translated copy for strings changed in a given PR.

🤖 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 `@web/messages/de.json` at line 43, Translate the footer.assets string value in
the German locale file by replacing "Assets" with an appropriate German
translation (e.g., "Ressourcen" or another suitable term) for the key
footer.assets; update the "footer.assets" entry in web/messages/de.json
accordingly and verify that the same key exists and remains consistent across
all locales referenced in web/i18n/routing.ts so every locale file contains a
matching entry for footer.assets.
web/messages/da.json (1)

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

Translate footer.assets to Danish.

The footer.assets value is "Assets" (English), but Danish is a high-confidence locale that should have native translations. Other footer keys like footer.language are properly translated to "Sprog". This key should also be translated to Danish (e.g., "Aktiver" or an appropriate Danish term).

As per coding guidelines, web UI text changes must update every locale listed in web/i18n/routing.ts with matching entries, and high-confidence locales (including da) are expected to contain fully translated copy for strings changed in a given PR.

🤖 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 `@web/messages/da.json` at line 43, The footer.assets entry is still in
English; update the "footer.assets" value in the Danish locale file to a proper
Danish translation (e.g., change "Assets" to "Aktiver" or another appropriate
Danish term) and save the change; after that, verify that every configured
locale in the project’s i18n routing/locales list has a matching footer.assets
key so translations remain consistent across locales.
🤖 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 `@web/package.json`:
- Line 33: Replace the prerelease dependency "`@base-ui-components/react`":
"^1.0.0-rc.0" with the stable package name and version "`@base-ui/react`": "1.0.0"
in package.json, then run your package manager to reinstall; also search the
codebase for any import/require usages of "`@base-ui-components/react`" and update
them to "`@base-ui/react`" to match the breaking rename so runtime imports won’t
fail.

---

Outside diff comments:
In `@web/messages/da.json`:
- Line 43: The footer.assets entry is still in English; update the
"footer.assets" value in the Danish locale file to a proper Danish translation
(e.g., change "Assets" to "Aktiver" or another appropriate Danish term) and save
the change; after that, verify that every configured locale in the project’s
i18n routing/locales list has a matching footer.assets key so translations
remain consistent across locales.

In `@web/messages/de.json`:
- Line 43: Translate the footer.assets string value in the German locale file by
replacing "Assets" with an appropriate German translation (e.g., "Ressourcen" or
another suitable term) for the key footer.assets; update the "footer.assets"
entry in web/messages/de.json accordingly and verify that the same key exists
and remains consistent across all locales referenced in web/i18n/routing.ts so
every locale file contains a matching entry for footer.assets.
🪄 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.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 82734d48-e10f-4b8b-b6dc-849ed1685457

📥 Commits

Reviewing files that changed from the base of the PR and between 757f693 and e764f77.

⛔ Files ignored due to path filters (1)
  • web/bun.lock is excluded by !**/*.lock
📒 Files selected for processing (22)
  • web/app/[locale]/components/brand-logo-link.tsx
  • web/messages/ar.json
  • web/messages/bs.json
  • web/messages/da.json
  • web/messages/de.json
  • web/messages/en.json
  • web/messages/es.json
  • web/messages/fr.json
  • web/messages/it.json
  • web/messages/ja.json
  • web/messages/km.json
  • web/messages/ko.json
  • web/messages/no.json
  • web/messages/pl.json
  • web/messages/pt-BR.json
  • web/messages/ru.json
  • web/messages/th.json
  • web/messages/tr.json
  • web/messages/uk.json
  • web/messages/zh-CN.json
  • web/messages/zh-TW.json
  • web/package.json

Comment thread web/package.json
},
"dependencies": {
"@aws-sdk/rds-signer": "^3.1045.0",
"@base-ui-components/react": "^1.0.0-rc.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

Is @base-ui-components/react version 1.0.0-rc.0 or later stable and recommended for production use?

💡 Result:

No. Version 1.0.0-rc.0 is a release candidate (“rc”), and therefore not the stable, production-recommended release. Evidence: the Base UI project’s releases page marks v1.0.0 as “Stable” while v1.0.0-rc.0 is listed separately as an rc pre-release with specific changes, including breaking behavior and fixes [1]. The GitHub release for v1.0.0-rc.0 is also labeled “prerelease” [2]. So if you want production stability/recommendation, use v1.0.0 (the stable release) rather than 1.0.0-rc.0. Note that v1.0.0 is dated Dec 11, 2025, and also contains a breaking package rename from @base-ui-components/react to @base-ui/react [3].

Citations:


Avoid the RC dependency and switch to the stable package name

In web/package.json (line 33), @base-ui-components/react is set to ^1.0.0-rc.0, but v1.0.0-rc.0 is a prerelease rather than Base UI’s “Stable” production release (v1.0.0). Also, the stable v1.0.0 release includes a breaking package rename from @base-ui-components/react to @base-ui/react, so this dependency/version range can still lead to production breakage and required migration.

Update the dependency to the stable @base-ui/react (and stable version), and avoid tracking the RC.

🤖 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 `@web/package.json` at line 33, Replace the prerelease dependency
"`@base-ui-components/react`": "^1.0.0-rc.0" with the stable package name and
version "`@base-ui/react`": "1.0.0" in package.json, then run your package manager
to reinstall; also search the codebase for any import/require usages of
"`@base-ui-components/react`" and update them to "`@base-ui/react`" to match the
breaking rename so runtime imports won’t fail.

@cubic-dev-ai cubic-dev-ai Bot 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.

1 issue found across 23 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="web/package.json">

<violation number="1" location="web/package.json:33">
P1: Adding the deprecated package `@base-ui-components/react` instead of the renamed stable package `@base-ui/react`. The official Base UI documentation states: "The package was previously published as `@base-ui-components/react` and has since been renamed to `@base-ui/react`." Using the old name means depending on an RC pre-release (`1.0.0-rc.0`) when a stable v1.5.0 exists under the new name with the same context-menu subpath export.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread web/package.json
},
"dependencies": {
"@aws-sdk/rds-signer": "^3.1045.0",
"@base-ui-components/react": "^1.0.0-rc.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1: Adding the deprecated package @base-ui-components/react instead of the renamed stable package @base-ui/react. The official Base UI documentation states: "The package was previously published as @base-ui-components/react and has since been renamed to @base-ui/react." Using the old name means depending on an RC pre-release (1.0.0-rc.0) when a stable v1.5.0 exists under the new name with the same context-menu subpath export.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At web/package.json, line 33:

<comment>Adding the deprecated package `@base-ui-components/react` instead of the renamed stable package `@base-ui/react`. The official Base UI documentation states: "The package was previously published as `@base-ui-components/react` and has since been renamed to `@base-ui/react`." Using the old name means depending on an RC pre-release (`1.0.0-rc.0`) when a stable v1.5.0 exists under the new name with the same context-menu subpath export.</comment>

<file context>
@@ -30,6 +30,7 @@
   },
   "dependencies": {
     "@aws-sdk/rds-signer": "^3.1045.0",
+    "@base-ui-components/react": "^1.0.0-rc.0",
     "@effect/experimental": "0.57.9",
     "@effect/platform": "0.93.6",
</file context>

This branch was successfully deployed

1 active deployment
Preview – cmux — 54a7ea3b Deployed Jun 3, 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