Repository navigation
Add brand assets page - #5256
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Note Reviews pausedIt 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 Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds 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. ChangesBrand Assets Feature
Sequence DiagramsequenceDiagram
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
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~22 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 17 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (17 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
Greptile SummaryAdds a localized
Confidence Score: 5/5Static marketing UI with no auth, data, or payment changes — safe to merge. All 20 locale files receive the required No files require special attention. Important Files Changed
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
Reviews (6): Last reviewed commit: "align brand menu link icon" | Re-trigger Greptile |
There was a problem hiding this comment.
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
⛔ Files ignored due to path filters (2)
web/public/brand/app-icon-dark.pngis excluded by!**/*.pngweb/public/brand/app-icon-light.pngis excluded by!**/*.png
📒 Files selected for processing (21)
web/app/[locale]/assets/page.tsxweb/messages/ar.jsonweb/messages/bs.jsonweb/messages/da.jsonweb/messages/de.jsonweb/messages/en.jsonweb/messages/es.jsonweb/messages/fr.jsonweb/messages/it.jsonweb/messages/ja.jsonweb/messages/km.jsonweb/messages/ko.jsonweb/messages/no.jsonweb/messages/pl.jsonweb/messages/pt-BR.jsonweb/messages/ru.jsonweb/messages/th.jsonweb/messages/tr.jsonweb/messages/uk.jsonweb/messages/zh-CN.jsonweb/messages/zh-TW.json
| "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", |
There was a problem hiding this comment.
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.
| "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", |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
| }, | ||
| "brandAssets": { | ||
| "metaTitle": "Ressources de marque", | ||
| "metaDescription": "Téléchargez les icônes cmux claire et sombre utilisées par l’app macOS.", |
There was a problem hiding this comment.
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>
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
There was a problem hiding this comment.
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 winTranslate footer.assets to German.
The
footer.assetsvalue is "Assets" (English), but German is a high-confidence locale that should have native translations. Other footer keys likefooter.languageare 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.tswith 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 winTranslate footer.assets to Danish.
The
footer.assetsvalue is "Assets" (English), but Danish is a high-confidence locale that should have native translations. Other footer keys likefooter.languageare 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.tswith 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
⛔ Files ignored due to path filters (1)
web/bun.lockis excluded by!**/*.lock
📒 Files selected for processing (22)
web/app/[locale]/components/brand-logo-link.tsxweb/messages/ar.jsonweb/messages/bs.jsonweb/messages/da.jsonweb/messages/de.jsonweb/messages/en.jsonweb/messages/es.jsonweb/messages/fr.jsonweb/messages/it.jsonweb/messages/ja.jsonweb/messages/km.jsonweb/messages/ko.jsonweb/messages/no.jsonweb/messages/pl.jsonweb/messages/pt-BR.jsonweb/messages/ru.jsonweb/messages/th.jsonweb/messages/tr.jsonweb/messages/uk.jsonweb/messages/zh-CN.jsonweb/messages/zh-TW.jsonweb/package.json
| }, | ||
| "dependencies": { | ||
| "@aws-sdk/rds-signer": "^3.1045.0", | ||
| "@base-ui-components/react": "^1.0.0-rc.0", |
There was a problem hiding this comment.
🧩 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:
- 1: https://base-ui.com/react/overview/releases
- 2: https://github.com/mui/base-ui/releases/tag/v1.0.0-rc.0
- 3: https://base-ui.com/react/overview/releases/v1-0-0
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.
There was a problem hiding this comment.
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
| }, | ||
| "dependencies": { | ||
| "@aws-sdk/rds-signer": "^3.1045.0", | ||
| "@base-ui-components/react": "^1.0.0-rc.0", |
There was a problem hiding this comment.
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>
Summary:
/assetsbrand assets page with the two macOS app icon variants.Assets.xcassetsunderweb/public/brand.Acceptance criteria:
/assetsrenders in localized routes.web/messages/*.jsonlocale.Verification:
nodeparsed all 20 message catalogs.bun run lintpassed with existing warnings only.bun tsc --noEmitpassed.source scripts/load-dev-env.sh && bun run buildpassed, including Pagefind index generation.bun test tests/agent-page-variants.test.tspassed.http://localhost:3791: right-clicking the logo opened az-index: 1000menu above page content, the light/dark download rows rendered the actual icon images, downloads pointed to/brand/app-icon-light.pngand/brand/app-icon-dark.png, Brand assets linked to/assets, and/assetsstill 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
/assetspage 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
BrandLogoLinkthat 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, andagentReadablePagesincludes Brand Assets. Copy forbrandAssetsandbrandLogoMenu(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
UX
Localization
Chores