Repository navigation
Add the cmux.com/rc download page #12825
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,150 @@ | ||
| import { useTranslations } from "next-intl"; | ||
| import { getTranslations } from "next-intl/server"; | ||
| import { buildAlternates, openGraphDefaults, twitterSummary } from "@/i18n/seo"; | ||
| import { landingPageSeoCopy } from "@/i18n/audited-seo"; | ||
| import { SiteHeader } from "@/app/[locale]/components/site-header"; | ||
|
|
||
| export async function generateMetadata({ | ||
| params, | ||
| }: { | ||
| params: Promise<{ locale: string }>; | ||
| }) { | ||
| const { locale } = await params; | ||
| const t = await getTranslations({ locale, namespace: "rc" }); | ||
| const siteMeta = await getTranslations({ locale, namespace: "meta" }); | ||
| const alternates = buildAlternates(locale, "/rc"); | ||
| const { title, description } = landingPageSeoCopy( | ||
| locale, | ||
| t, | ||
| siteMeta, | ||
| { | ||
| complete: ["description", "subtitle"], | ||
| context: ["title"], | ||
| }, | ||
| ); | ||
| return { | ||
| title, | ||
| description, | ||
| alternates, | ||
| openGraph: { | ||
| ...openGraphDefaults(locale, "website"), | ||
| title, | ||
| description, | ||
| url: alternates.canonical, | ||
| }, | ||
| twitter: twitterSummary(locale, title, description), | ||
| }; | ||
| } | ||
|
|
||
| const linkClass = | ||
| "underline underline-offset-2 decoration-link-underline hover:decoration-foreground transition-colors"; | ||
|
|
||
| export default function RcPage() { | ||
| const t = useTranslations("rc"); | ||
|
|
||
| return ( | ||
| <div className="min-h-screen"> | ||
| <SiteHeader section={t("title")} /> | ||
| <main className="w-full max-w-2xl mx-auto px-6 py-10"> | ||
| {/* Header */} | ||
| <div className="flex items-center gap-4 mb-6"> | ||
| <img | ||
| src="/logo.png" | ||
| alt="cmux icon" | ||
| width={48} | ||
| height={48} | ||
| className="rounded-xl" | ||
| /> | ||
| <div> | ||
| <h1 className="text-2xl font-semibold tracking-tight"> | ||
| {t("title")} | ||
| </h1> | ||
| </div> | ||
| </div> | ||
|
|
||
| {/* Description */} | ||
| <p | ||
| className="text-[15px] text-muted mb-8" | ||
| style={{ lineHeight: 1.5 }} | ||
| > | ||
| {t("description")} | ||
| </p> | ||
|
|
||
| {/* Download button */} | ||
| <a | ||
| href="https://github.com/manaflow-ai/cmux/releases/download/rc/cmux-rc-macos.dmg" | ||
| className="inline-flex items-center gap-2.5 rounded-full font-medium bg-foreground hover:opacity-85 transition-opacity px-5 py-2.5 text-[15px]" | ||
| style={{ color: "var(--background)", textDecoration: "none" }} | ||
| > | ||
| <svg | ||
| width={16} | ||
| height={19} | ||
| viewBox="0 0 814 1000" | ||
| fill="currentColor" | ||
| > | ||
| <path d="M788.1 340.9c-5.8 4.5-108.2 62.2-108.2 190.5 0 148.4 130.3 200.9 134.2 202.2-.6 3.2-20.7 71.9-68.7 141.9-42.8 61.6-87.5 123.1-155.5 123.1s-85.5-39.5-164-39.5c-76.5 0-103.7 40.8-165.9 40.8s-105.6-57.8-155.5-127.4c-58.3-81.6-105.6-208.4-105.6-328.6 0-193 125.6-295.5 249.2-295.5 65.7 0 120.5 43.1 161.7 43.1 39.2 0 100.4-45.8 175.1-45.8 28.3 0 130.3 2.6 197.2 99.2zM554.1 159.4c31.1-36.9 53.1-88.1 53.1-139.3 0-7.1-.6-14.3-1.9-20.1-50.6 1.9-110.8 33.7-147.1 75.8-28.9 32.4-57.2 83.6-57.2 135.4 0 7.8 1.3 15.6 1.9 18.1 3.2.6 8.4 1.3 13.6 1.3 45.4 0 102.5-30.4 137.6-71.2z" /> | ||
| </svg> | ||
| {t("download")} | ||
| </a> | ||
|
|
||
| {/* Architecture-specific downloads */} | ||
| <p className="text-[13px] text-muted mt-3" style={{ lineHeight: 1.5 }}> | ||
| <a | ||
| href="https://github.com/manaflow-ai/cmux/releases/download/rc/cmux-rc-macos-arm64.dmg" | ||
| className={linkClass} | ||
| > | ||
| {t("downloadArm64")} | ||
| </a> | ||
| {" · "} | ||
| <a | ||
| href="https://github.com/manaflow-ai/cmux/releases/download/rc/cmux-rc-macos-x86_64.dmg" | ||
| className={linkClass} | ||
| > | ||
| {t("downloadIntel")} | ||
| </a> | ||
| </p> | ||
|
|
||
| <p | ||
| className="text-[15px] text-muted mt-8" | ||
| style={{ lineHeight: 1.5 }} | ||
| > | ||
| {t.rich("channelHint", { | ||
| code: (chunks) => ( | ||
| <code className="font-mono text-[13px] bg-code-bg px-1.5 py-0.5 rounded"> | ||
| {chunks} | ||
| </code> | ||
| ), | ||
| })} | ||
| </p> | ||
|
|
||
| <p | ||
| className="text-[15px] text-muted mt-4" | ||
| style={{ lineHeight: 1.5 }} | ||
| > | ||
| {t.rich("warning", { | ||
| githubLink: (chunks) => ( | ||
| <a | ||
| href="https://github.com/manaflow-ai/cmux/issues" | ||
| target="_blank" | ||
| rel="noopener noreferrer" | ||
| className={linkClass} | ||
| > | ||
| {chunks} | ||
| </a> | ||
| ), | ||
| discordLink: (chunks) => ( | ||
| <a | ||
| href="https://discord.gg/xsgFEVrWCZ" | ||
| target="_blank" | ||
| rel="noopener noreferrer" | ||
| className={linkClass} | ||
| > | ||
| {chunks} | ||
| </a> | ||
| ), | ||
| })} | ||
| </p> | ||
| </main> | ||
| </div> | ||
| ); | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -132,6 +132,7 @@ | |
| "discord": "Discord", | ||
| "contact": "Contacto", | ||
| "nightly": "Nightly", | ||
| "rc": "Release Candidate", | ||
|
coderabbitai[bot] marked this conversation as resolved.
|
||
| "copyright": "© {year} Manaflow", | ||
| "language": "Idioma", | ||
| "assets": "Recursos", | ||
|
|
@@ -1960,6 +1961,18 @@ | |
| "download": "Descargar NIGHTLY para Mac", | ||
| "warning": "Las compilaciones nightly pueden contener errores o funciones incompletas. Si algo falla, repórtalo en <githubLink>GitHub</githubLink> o en <discordLink>#nightly-bugs en Discord</discordLink> y cambia a la versión estable." | ||
| }, | ||
| "rc": { | ||
| "title": "cmux Release Candidate", | ||
| "subtitle": "La próxima versión estable, unos días antes", | ||
| "metaTitle": "cmux Release Candidate — Acceso anticipado a la próxima versión estable", | ||
| "metaDescription": "Prueba la release candidate de cmux: la próxima versión estable publicada unos días antes en su propio canal de actualizaciones. Misma app, mismo bundle ID, cambia de canal en Ajustes.", | ||
| "description": "La release candidate es la próxima versión estable de cmux, publicada unos días antes para detectar problemas antes de que la reciba todo el mundo. Es la misma app que la estable: instálala sobre tu cmux actual o cambia una instalación existente al canal de actualizaciones release candidate en Ajustes > App. Cuando la candidata pasa, esa misma compilación se convierte en la versión estable.", | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win Translate copied English RC terminology in all affected high-confidence locales. The localization rule prohibits copied English in new public user-facing copy. Keep technical identifiers such as
📍 Affects 6 files
🤖 Prompt for AI AgentsSource: Path instructions |
||
| "download": "Descargar la release candidate para Mac", | ||
| "downloadArm64": "DMG para Apple silicon", | ||
| "downloadIntel": "DMG para Intel", | ||
| "channelHint": "¿Ya tienes cmux? Abre Ajustes > App y pon el canal de actualizaciones en Release candidate, o añade <code>{\"updates\": {\"channel\": \"rc\"}}</code> a <code>~/.config/cmux/cmux.json</code>.", | ||
| "warning": "Las release candidates todavía pueden tener errores. Si algo falla, repórtalo en <githubLink>GitHub</githubLink> o en <discordLink>Discord</discordLink>. Volver al canal Estable detiene las actualizaciones de release candidate pero no hace downgrade; para eso, reinstala la versión estable." | ||
| }, | ||
| "languageSwitcher": { | ||
| "label": "Idioma" | ||
| }, | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🔎 Supported by static analysis
🏁 Script executed:
Repository: manaflow-ai/cmux
Length of output: 17353
🏁 Script executed:
Repository: manaflow-ai/cmux
Length of output: 43470
🏁 Script executed:
Repository: manaflow-ai/cmux
Length of output: 37189
🏁 Script executed:
Repository: manaflow-ai/cmux
Length of output: 1225
Align the RC links with the published release assets.
The RC page requests
cmux-rc-macos.dmg,cmux-rc-macos-arm64.dmg, andcmux-rc-macos-x86_64.dmg. The repository’s release workflow andscripts/build-sign-upload.shpublish onlycmux-macos.dmg; no RC pipeline publishes thecmux-rc-*assets. These links can therefore be unavailable after an RC release.If the RC uses the existing universal DMG, link to
cmux-macos.dmgand remove the architecture-specific links. Otherwise, add an RC pipeline that publishes the exact three filenames before exposing these links.🧰 Tools
🪛 Biome (2.5.11)
[error] 79-84: Alternative text title element cannot be empty
(lint/a11y/noSvgWithoutTitle)
🤖 Prompt for AI Agents