* Fix SEO indexing: add hreflang, canonicals, sitemap per-locale entries Google Search Console showed 380 not-indexed vs 86 indexed pages. Root causes: missing hreflang tags on rendered pages (only in sitemap), no canonical on homepage, inconsistent canonicals wiping parent hreflang, sitemap only listing English URLs, trailing slash duplicates, and _next/static chunks being crawled as pages. Changes: - Add buildAlternates() utility for consistent canonical + hreflang - Add hreflang tags to all pages via alternates.languages in metadata - Add self-referencing canonical URLs to every page (homepage had none) - Expand sitemap to emit separate entries for each locale - Add missing /docs/custom-commands to sitemap - Remove skipTrailingSlashRedirect to normalize trailing slashes - Block /_next/ in robots.txt to stop chunk crawling * Add per-page alternates to docs sub-pages and blog index Docs sub-pages and blog index only returned title/description in generateMetadata, so they inherited the parent layout's alternates (pointing to /docs or /blog). Now each page sets its own buildAlternates() with the correct path so canonical and hreflang point to the actual page URL. * Derive openGraph.url from buildAlternates to avoid drift * Redirect non-English legal pages to English, remove from sitemap Legal pages (privacy policy, TOS, EULA) are untranslated English content. Serving them under every locale creates 54 duplicate URLs. Now: - Middleware 301-redirects /ja/privacy-policy etc. to /privacy-policy - Sitemap only includes English URLs for legal pages (no locale variants) - Legal page metadata uses static English-only canonical * Fix legal page redirect to only match /<locale>/<page> paths endsWith matched too broadly (e.g. /docs/eula). Now only redirects when the path after the first segment is an exact legal page match. * Skip next-intl for legal pages to prevent locale redirect loop Without this, a Japanese user hitting /privacy-policy could be redirected by next-intl to /ja/privacy-policy, which our middleware redirects back to /privacy-policy, creating a loop. * Rewrite legal pages to /en/ instead of NextResponse.next() Pages live under app/[locale]/, so skipping next-intl entirely would break route resolution. Rewrite to /en/privacy-policy etc. so Next.js can resolve the [locale] segment correctly. --------- Co-authored-by: Lawrence Chen <lawrencecchen@users.noreply.github.com>
181 lines
7.1 KiB
TypeScript
181 lines
7.1 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { Link } from "../../../../i18n/navigation";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Privacy Policy — cmux",
|
|
description: "Privacy policy for cmux",
|
|
alternates: { canonical: "https://cmux.com/privacy-policy" },
|
|
};
|
|
|
|
export default function PrivacyPolicyPage() {
|
|
return (
|
|
<>
|
|
<h1>Privacy Policy</h1>
|
|
<p>Last updated: March 18, 2026</p>
|
|
|
|
<p>
|
|
Manaflow (the “Company”) is committed to maintaining robust
|
|
privacy protections for its users. This Privacy Policy is designed to
|
|
help you understand how we collect, use and safeguard the information you
|
|
provide to us.
|
|
</p>
|
|
<p>
|
|
For purposes of this policy, “Site” refers to the
|
|
Company’s website at{" "}
|
|
<a href="https://cmux.com">cmux.com</a>.
|
|
“Application” refers to the cmux desktop application for
|
|
macOS. “Service” refers to the Site and Application
|
|
collectively. The terms “we,” “us,” and
|
|
“our” refer to the Company. “You” refers to
|
|
you, as a user of our Service.
|
|
</p>
|
|
<p>
|
|
By using our Service, you accept this Privacy Policy and our{" "}
|
|
<Link href="/terms-of-service">Terms of Service</Link>, and you consent to
|
|
our collection, storage, use and disclosure of your information as
|
|
described here.
|
|
</p>
|
|
|
|
<h2>I. Information We Collect</h2>
|
|
<p>
|
|
We collect “Non-Personal Information” and “Personal
|
|
Information.” Non-Personal Information includes information that
|
|
cannot be used to personally identify you, such as anonymous usage data,
|
|
platform types, and crash diagnostics. Personal Information includes
|
|
your email address if you choose to contact us.
|
|
</p>
|
|
|
|
<h3>1. Information collected via Technology</h3>
|
|
<p>
|
|
The Application may collect the following information automatically:
|
|
</p>
|
|
<ul>
|
|
<li>Crash reports and error diagnostics (via Sentry)</li>
|
|
<li>Operating system version and application version</li>
|
|
<li>Anonymous usage patterns</li>
|
|
</ul>
|
|
<p>
|
|
The Application checks for updates via Sparkle, which may transmit your
|
|
operating system version and application version to our update server.
|
|
</p>
|
|
<p>
|
|
The Site uses PostHog for anonymous analytics, including page views and
|
|
navigation patterns. PostHog stores a cookie to distinguish unique
|
|
visitors. No personally identifiable information is collected through
|
|
analytics. You can opt out by using a browser extension that blocks
|
|
tracking scripts.
|
|
</p>
|
|
|
|
<h3>2. Information you provide directly</h3>
|
|
<p>
|
|
If you contact us via email or our contact page, we collect the
|
|
information you provide such as your name and email address.
|
|
</p>
|
|
|
|
<h3>3. Children’s Privacy</h3>
|
|
<p>
|
|
The Service is not directed to anyone under the age of 13. We do not
|
|
knowingly collect information from anyone under 13. If you believe we
|
|
have collected such information, please contact us at{" "}
|
|
<a href="mailto:founders@manaflow.com">founders@manaflow.com</a>.
|
|
</p>
|
|
|
|
<h2>II. Third-Party Services</h2>
|
|
<p>
|
|
The Application integrates with the following third-party services:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<strong>Sentry</strong> — error tracking and crash reporting.
|
|
May collect error logs, stack traces, device information, and OS
|
|
version.
|
|
</li>
|
|
<li>
|
|
<strong>Sparkle</strong> — auto-update framework. Transmits
|
|
application and OS version to check for updates.
|
|
</li>
|
|
<li>
|
|
<strong>Ghostty / libghostty</strong> — terminal rendering
|
|
engine. Runs entirely locally on your device.
|
|
</li>
|
|
<li>
|
|
<strong>PostHog</strong> — website analytics. Collects anonymous
|
|
page view data, navigation patterns, and browser metadata via a
|
|
first-party proxy. No personally identifiable information is collected.
|
|
</li>
|
|
<li>
|
|
<strong>Resend</strong> — transactional email delivery. Used to
|
|
deliver feedback submissions from the Application. Your email address
|
|
is transmitted to Resend only if you voluntarily submit feedback.
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
Each of these services has its own privacy policy governing the
|
|
collection and use of your data.
|
|
</p>
|
|
|
|
<h2>III. How We Use and Share Information</h2>
|
|
<p>
|
|
We do not sell, trade, rent or otherwise share your Personal Information
|
|
with third parties for marketing purposes. We use crash reports and
|
|
diagnostics solely to improve the Application. We may share information
|
|
if we have a good-faith belief that disclosure is necessary to meet
|
|
legal process or protect against harm.
|
|
</p>
|
|
|
|
<h2>IV. How We Protect Information</h2>
|
|
<p>
|
|
We implement security measures designed to protect your information from
|
|
unauthorized access, including encryption and secure server software.
|
|
However, no method of transmission or storage is 100% secure. By using
|
|
our Service, you acknowledge and agree to assume these risks.
|
|
</p>
|
|
|
|
<h2>V. Your Rights</h2>
|
|
<p>
|
|
Depending on your location, you may have rights under applicable data
|
|
protection laws (such as GDPR or CCPA), including:
|
|
</p>
|
|
<ul>
|
|
<li>Right to access a copy of data we hold about you</li>
|
|
<li>Right to request correction of inaccurate data</li>
|
|
<li>Right to request deletion of your data</li>
|
|
<li>Right to data portability</li>
|
|
<li>Right to restrict or object to processing</li>
|
|
</ul>
|
|
<p>
|
|
To exercise any of these rights, please contact us at{" "}
|
|
<a href="mailto:founders@manaflow.com">founders@manaflow.com</a>.
|
|
</p>
|
|
|
|
<h2>VI. Links to Other Websites</h2>
|
|
<p>
|
|
The Service may provide links to third-party websites. We are not
|
|
responsible for the privacy practices of those websites. This Privacy
|
|
Policy applies solely to information collected by us.
|
|
</p>
|
|
|
|
<h2>VII. Changes to This Policy</h2>
|
|
<p>
|
|
We reserve the right to change this policy at any time. Significant
|
|
changes will go into effect 30 days following notification. You should
|
|
periodically check the Site for updates.
|
|
</p>
|
|
|
|
<h2>VIII. Contact Us</h2>
|
|
<p>
|
|
If you have any questions regarding this Privacy Policy, please contact
|
|
us at{" "}
|
|
<a href="mailto:founders@manaflow.com">founders@manaflow.com</a>.
|
|
</p>
|
|
|
|
<h2>IX. Data Retention</h2>
|
|
<p>
|
|
Crash reports and diagnostics are retained only as long as needed to
|
|
diagnose and fix issues. You may request deletion of any data associated
|
|
with you by contacting us at{" "}
|
|
<a href="mailto:founders@manaflow.com">founders@manaflow.com</a>.
|
|
</p>
|
|
</>
|
|
);
|
|
}
|