Skip to content

Add /nightly page - #1378

Merged
lawrencecchen merged 5 commits into
mainfrom
task-nightly-page
Mar 13, 2026
Merged

lawrencecchen merged 5 commits into
mainfrom
task-nightly-page

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Mar 13, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Adds a /nightly page at cmux.dev/nightly with download link, Homebrew install instructions, how-it-works details, and a warning callout
  • Fully localized across all 18 supported locales
  • Added to sitemap and footer (Product column)

Testing

  • SKIP_ENV_VALIDATION=1 npx next build passes, route renders at /[locale]/nightly

Related


Summary by cubic

Added a /nightly page at cmux.dev/nightly with a Mac download and a plain-text safety warning that links to GitHub Issues and Discord #nightly-bugs, fully localized across all supported locales. It’s linked in the footer and sitemap, uses the nightly icon, removes the Homebrew and “How it works” sections and the subtitle, and adds the same reporting links to the README — making https://www.cmux.dev/nightly a real page.

Written for commit 6571335. Summary will update on new commits.

Summary by CodeRabbit

  • New Features

    • Added a Nightly Builds download page with localized title, description, download CTA and warnings
    • Added a Nightly link to the site footer
    • Included the Nightly page in the sitemap for indexing
  • Documentation

    • Added guidance in README for reporting Nightly build issues
    • Added Nightly translations across 20+ locales for footer, testimonials, and page content

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Mar 13, 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 Mar 13, 2026 2:41pm

@greptile-apps greptile-apps 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.

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@coderabbitai

coderabbitai Bot commented Mar 13, 2026 •

Copy link
Copy Markdown

Warning

Rate limit exceeded

@lawrencecchen has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 2 minutes and 36 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: dced38b2-d1cd-488a-8159-de564535c2dc

📥 Commits

Reviewing files that changed from the base of the PR and between bef7bb3 and 6571335.

⛔ Files ignored due to path filters (1)
  • web/public/logo-nightly.png is excluded by !**/*.png
📒 Files selected for processing (21)
  • README.md
  • web/app/[locale]/nightly/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/zh-CN.json
  • web/messages/zh-TW.json
📝 Walkthrough

Walkthrough

Adds a new localized Nightly builds page at /nightly, a footer link, a sitemap entry, and corresponding "nightly" translation entries across many locale JSON files.

Changes

Cohort / File(s) Summary
Page Implementation
web/app/[locale]/nightly/page.tsx
New Next.js page export with generateMetadata and default NightlyPage component rendering localized Nightly content and download CTA.
Footer / Navigation
web/app/[locale]/components/site-footer.tsx
Added one footer link entry using t("nightly") targeting /nightly.
Sitemap
web/app/sitemap.ts
Added /nightly path to sitemap with changefreq: "weekly" and priority: 0.6.
Localization / i18n
web/messages/.../*.json (e.g., web/messages/en.json, web/messages/de.json, web/messages/ja.json, web/messages/zh-CN.json, etc.)
Added nightly keys across many locale files (footer label and a structured object for page/testimonials) to support the new page and footer link.
Docs
README.md
Added two brief lines referencing where to report nightly build bugs.

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant NextJS as Next.js Server
  participant I18n as i18n Messages
  participant Sitemap as Sitemap Generator
  participant CDN as Download Host

  Client->>NextJS: GET /nightly (locale in URL)
  NextJS->>I18n: load translations for locale ("nightly")
  I18n-->>NextJS: localized strings
  NextJS-->>Client: render NightlyPage + metadata
  NextJS->>Sitemap: include /nightly entry (build time)
  Client->>CDN: Click download CTA -> fetch dmg
  CDN-->>Client: serve nightly dmg
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 I hopped through locales, one by one,
A nightly page, fresh as dawn begun.
Footer lights the path, sitemap sings,
Downloads hum on hopeful wings,
Huzzah — a build for everyone! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Add /nightly page' clearly and directly describes the main change: introducing a new nightly page at the /nightly route.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The pull request description covers the main changes, testing approach, and includes a related task link, but lacks some details from the template.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch task-nightly-page
📝 Coding Plan
  • Generate coding plan for human review comments

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.

@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 22 files

@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 the current code and only fix it if needed.

Inline comments:
In `@web/app/`[locale]/nightly/page.tsx:
- Around line 28-31: The logo image in the nightly page is decorative and its
current alt ("cmux icon") is redundant and not localized; update the <img>
element (the logo image in page.tsx) to use decorative-image semantics by
setting alt="" and adding aria-hidden="true" so screen readers ignore it (keep
existing props like src and width unchanged).

In `@web/messages/tr.json`:
- Around line 589-595: Update the Turkish strings to use proper apostrophe
joining for borrowed terms and suffixes: replace occurrences in the keys
metaDescription, description, detailSeparateApp, detailAutoBuilt and
detailAutoUpdates (e.g., "main deki" -> "main'deki", "commit ten" ->
"commit'ten", "bundle ID sine" -> "bundle ID'sine", "ID si" -> "ID'si") so that
suffixes attach with an apostrophe and stray spaces are removed; keep the
original meanings and punctuation while applying these apostrophes consistently
across the mentioned keys.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 31663e90-ba1f-40d6-a3aa-5e97cbf8ed8c

📥 Commits

Reviewing files that changed from the base of the PR and between ee3b027 and bef7bb3.

📒 Files selected for processing (22)
  • web/app/[locale]/components/site-footer.tsx
  • web/app/[locale]/nightly/page.tsx
  • web/app/sitemap.ts
  • 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/zh-CN.json
  • web/messages/zh-TW.json

Comment thread web/app/[locale]/nightly/page.tsx Outdated
Comment on lines +28 to +31
<img
src="/logo.png"
alt="cmux icon"
width={48}

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

Use decorative-image semantics for the logo.

On Line 30, alt="cmux icon" is redundant next to the visible heading and stays English on localized pages. Prefer decorative semantics (alt="" + aria-hidden) here.

♿ Suggested accessibility fix
             <img
               src="/logo.png"
-              alt="cmux icon"
+              alt=""
+              aria-hidden="true"
               width={48}
               height={48}
               className="rounded-xl"
             />
📝 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
<img
src="/logo.png"
alt="cmux icon"
width={48}
<img
src="/logo.png"
alt=""
aria-hidden="true"
width={48}
height={48}
className="rounded-xl"
/>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/app/`[locale]/nightly/page.tsx around lines 28 - 31, The logo image in
the nightly page is decorative and its current alt ("cmux icon") is redundant
and not localized; update the <img> element (the logo image in page.tsx) to use
decorative-image semantics by setting alt="" and adding aria-hidden="true" so
screen readers ignore it (keep existing props like src and width unchanged).

Comment thread web/messages/tr.json Outdated
Comment on lines +589 to +595
"metaDescription": "cmux NIGHTLY indirin. main deki en son commit ten otomatik olarak derlenen bağımsız bir uygulama. Kararlı sürümle yan yana çalışır ve kendi otomatik güncellemelerine sahiptir.",
"description": "cmux NIGHTLY, main deki en son commit ten otomatik olarak derlenir. Kendi bundle ID sine sahip olduğundan kararlı sürümle çakışmadan yan yana çalışır. Yeni özellikleri yayınlanmadan önce test etmek için kullanın.",
"download": "Mac için NIGHTLY indir",
"detailsHeading": "Nasıl çalışır",
"detailSeparateApp": "Kendi bundle ID si, simgesi ve tercihleri olan bağımsız uygulama",
"detailAutoBuilt": "main deki en son commit ten otomatik olarak derlenir",
"detailAutoUpdates": "Kararlı sürümden bağımsız kendi Sparkle akışı üzerinden otomatik güncelleme",

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

Fix Turkish apostrophe/spacing in Nightly copy.

On Line 589 onward, several strings miss standard Turkish apostrophe joining for borrowed terms and suffixes, which makes the UI text read unpolished.

✍️ Suggested text fixes
-    "metaDescription": "cmux NIGHTLY indirin. main deki en son commit ten otomatik olarak derlenen bağımsız bir uygulama. Kararlı sürümle yan yana çalışır ve kendi otomatik güncellemelerine sahiptir.",
+    "metaDescription": "cmux NIGHTLY'yi indirin. main'deki en son commit'ten otomatik olarak derlenen bağımsız bir uygulama. Kararlı sürümle yan yana çalışır ve kendi otomatik güncellemelerine sahiptir.",

-    "description": "cmux NIGHTLY, main deki en son commit ten otomatik olarak derlenir. Kendi bundle ID sine sahip olduğundan kararlı sürümle çakışmadan yan yana çalışır. Yeni özellikleri yayınlanmadan önce test etmek için kullanın.",
+    "description": "cmux NIGHTLY, main'deki en son commit'ten otomatik olarak derlenir. Kendi bundle ID'sine sahip olduğundan kararlı sürümle çakışmadan yan yana çalışır. Yeni özellikleri yayınlanmadan önce test etmek için kullanın.",

-    "detailAutoBuilt": "main deki en son commit ten otomatik olarak derlenir",
+    "detailAutoBuilt": "main'deki en son commit'ten otomatik olarak derlenir",

-    "warning": "Nightly derlemeler hatalar veya tamamlanmamış özellikler içerebilir. Bir sorun oluşursa GitHub da bildirin ve kararlı sürüme geçin."
+    "warning": "Nightly derlemeler hatalar veya tamamlanmamış özellikler içerebilir. Bir sorun oluşursa GitHub'da bildirin ve kararlı sürüme geçin."

Also applies to: 598-598

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/messages/tr.json` around lines 589 - 595, Update the Turkish strings to
use proper apostrophe joining for borrowed terms and suffixes: replace
occurrences in the keys metaDescription, description, detailSeparateApp,
detailAutoBuilt and detailAutoUpdates (e.g., "main deki" -> "main'deki", "commit
ten" -> "commit'ten", "bundle ID sine" -> "bundle ID'sine", "ID si" -> "ID'si")
so that suffixes attach with an apostrophe and stray spaces are removed; keep
the original meanings and punctuation while applying these apostrophes
consistently across the mentioned keys.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
lawrencecchen and others added 2 commits March 13, 2026 07:38
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@lawrencecchen
lawrencecchen merged commit 4b878b4 into main Mar 13, 2026
11 checks passed
bn-l pushed a commit to bn-l/cmux that referenced this pull request Apr 3, 2026
* Add /nightly page with localized content for all 18 locales

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Use actual nightly icon, remove Homebrew and How it works sections

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Change warning callout to plain text

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Remove subtitle from nightly page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add GitHub and Discord #nightly-bugs links to warning text and README

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Lawrence Chen <lawrencecchen@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

This branch was successfully deployed

1 active deployment
Preview — 65713350 Deployed Mar 13, 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