Skip to content

feat(website): update Terms of Service to legal-approved 2026-05-13 copy#12286

Merged
nav-tej merged 12 commits into
mainfrom
glary/tos-update-2026-05-13
May 18, 2026
Merged

feat(website): update Terms of Service to legal-approved 2026-05-13 copy#12286
nav-tej merged 12 commits into
mainfrom
glary/tos-update-2026-05-13

Conversation

@nav-tej
Copy link
Copy Markdown
Contributor

@nav-tej nav-tej commented May 15, 2026

PR Created by the Glary-Bot Agent


Summary

Replaces the tos.* i18n keys in apps/website/src/i18n/translations.ts with the legal-approved Terms of Service copy from Comfy - Terms of Service (GP 5.12.26).docx and surfaces an effective date below the hero on /terms-of-service.

  • Restructures the ToS into 14 sections (intro + 13 numbered sections) to match the new legal-approved structure.
  • Adds two new keys, tos.effectiveDateLabel and tos.effectiveDate, rendered as a centered Effective Date: May 13, 2026 line between the hero and the content (matches the pattern used on the Affiliate Program Terms page).
  • Subsection labels (Right to Access and Use Comfy Products., Customer Data., etc.) render as h3 headings via the existing block.N.heading shape — no changes to ContentSection.vue or contentSections.ts.
  • English page meta description tightened to reflect the new scope (Comfy Products: Cloud, API, Enterprise — explicitly excluding Comfy OSS).

Verbatim legal copy

Per request, the copy is verbatim from the legal-approved .docx, including:

  • [URL] placeholder in §2.7 (Data Retention) where the legal doc has a placeholder pending the real docs page.
  • [Address] placeholder in §12.8 (Notices) where the legal doc has a placeholder pending the finalized mailing address.
  • Mixed casing in §8 (Disclaimer) and §9 (Limitation of Liability) — e.g. THE Comfy Products AND OUTPUT…, …TOTAL LIABILITY OF Comfy… — preserved exactly as the legal doc presents it.
  • §11(c) cross-reference left as written.

These are intentional and flagged for follow-up with legal/docs before publishing. I have not silently substituted real values for the placeholders or normalized casing — that would be editing legal-approved text.

Chinese (zh-CN) handling

The legal-approved copy was provided in English only. To avoid serving English text under a Chinese page shell:

  • apps/website/src/pages/zh-CN/terms-of-service.astro is removed.
  • getRoutes() in apps/website/src/config/routes.ts treats termsOfService as locale-invariant, so the Chinese footer link emits /terms-of-service directly — no redirect hop.
  • astro.config.ts adds a redirect from /zh-CN/terms-of-service/terms-of-service as a safety net for any stale external/cached links.
  • All zh-CN values on the new tos.* keys are filler (mirrored from English) so the Record<Locale, string> type contract holds; they are never served.

Files changed

  • apps/website/src/i18n/translations.ts — 73 old tos.* keys removed, 136 new keys added matching the .docx structure.
  • apps/website/src/pages/terms-of-service.astro — imports t, renders effective date, updates meta description.
  • apps/website/src/pages/zh-CN/terms-of-service.astroremoved.
  • apps/website/astro.config.ts — adds /zh-CN/terms-of-service/terms-of-service redirect.
  • apps/website/src/config/routes.tstermsOfService route stays un-prefixed in non-English locales.

Verification

  • pnpm --filter=@comfyorg/website typecheck — 0 errors (2 pre-existing hints in unrelated files).
  • pnpm --filter=@comfyorg/website build — 279 pages built, /terms-of-service/ (English page) and /zh-CN/terms-of-service/ (redirect stub with noindex + canonical) both emitted.
  • Pre-commit lint-staged ran oxfmt, oxlint --type-aware, eslint --fix, and pnpm typecheck on every commit — all green.
  • Rendered HTML spot-checked: English /terms-of-service contains the new content with verbatim [URL] and [Address] placeholders; zh-CN homepage footer now links directly to /terms-of-service (no redirect hop); /zh-CN/privacy-policy and other locale routes still correctly emit /zh-CN/… prefixes.
  • Manual visual check via astro preview + Playwright — sidebar nav, h2 section titles, h3 subsection headings, paragraph wrapping, and inline mailto/href anchors all render correctly. Screenshots attached.

Code-review follow-ups addressed

  • zh-CN regression — Page removed, route override added, redirect kept as safety net.
  • Page description mismatch — Updated meta description to reflect new scope.
  • docs.comfy.org/data-retention 404 — Now matches the docx placeholder [URL]; flagged to legal/docs.
  • Disclaimer / Liability casing — Restored to match docx verbatim.
  • Mailing address — Now matches the docx placeholder [Address]; flagged to legal.
  • Section 11(c) cross-reference — Left verbatim per legal doc.

Scope notes

  • English-only legal update per request — no Chinese rewrite, no schema changes, no acceptance-tracking infrastructure.
  • The signup-flow link on platform.comfy.org (website repo) already points at https://www.comfy.org/terms-of-service and renders the new copy at the same URL — no change needed there.

Screenshots

Top of /terms-of-service showing 'Effective Date: May 13, 2026' below the hero and new section nav

Section 2 (Comfy Products) showing h2 title and yellow-italic h3 subsection headings rendered from new tos.*.block.N.heading keys

┆Issue is synchronized with this Notion page by Unito

Glary-Bot added 4 commits May 13, 2026 21:31
Replace tos.* i18n keys with the legal-approved Terms of Service copy
and surface an effective date below the hero on /terms-of-service.

Sections restructured to mirror the new agreement (13 numbered
sections + intro), with subsection labels rendered as h3 headings via
the existing ContentSection block-type inference. The Chinese page
(/zh-CN/terms-of-service) keeps its zh-CN hero title but mirrors the
English copy for the body pending an official translation pass.
Addresses code-review findings on the 2026-05-13 ToS update:

- Remove the zh-CN ToS page that was serving English body copy under a
  Chinese hero; add an Astro redirect from /zh-CN/terms-of-service to
  /terms-of-service so Chinese visitors land on the legal-approved
  English copy with a noindex/canonical until an official zh-CN
  translation lands.
- Update the English page meta description to match the new scope
  (Comfy Products: Cloud, API, Enterprise), since the new agreement
  explicitly excludes Comfy OSS.
Update the ToS copy to match the authoritative .docx
("Comfy - Terms of Service (GP 5.12.26).docx") verbatim:

- Replace docs.comfy.org/data-retention URL with [URL] placeholder
  (the legal doc has a placeholder pending real docs URL)
- Replace mailing address with [Address] placeholder
  (the legal doc has a placeholder pending finalized address)
- Restore the mixed casing of "Comfy Products" / "Comfy" inside the
  otherwise all-caps Disclaimer and Limitation of Liability sections
- Restore sentence-case for Disclaimer block 2 (Customer is solely
  responsible...) with intentional mid-sentence all-caps OUTPUT, as
  written in the legal doc
…irect hop)

Make termsOfService a locale-invariant route in getRoutes() so the
Chinese footer link emits /terms-of-service directly instead of
/zh-CN/terms-of-service (which would then redirect). The redirect
in astro.config.ts stays as a safety net for stale external links.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 15, 2026

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

This PR restructures Terms of Service translation keys into multiple sectioned groups with an effective date, updates the English ToS page to display the effective date using the i18n helper, removes the standalone Chinese ToS page file, and configures locale-invariant routing so all ToS requests resolve to the English page.

Changes

Terms of Service 2026 Legal Update

Layer / File(s) Summary
ToS translation content structure
apps/website/src/i18n/translations.ts
Replaces prior ToS keys with a new sectioned structure: tos.effectiveDateLabel, tos.effectiveDate, tos.intro.*, tos.definitions.*, and 11 new section groups (tos.comfy-products.*, tos.customer-responsibilities.*, tos.payment.*, tos.term-termination.*, tos.confidentiality.*, tos.proprietary-rights.*, tos.disclaimer.*, tos.liability.*, tos.indemnification.*, tos.dispute-resolution.*, tos.miscellaneous.*, tos.contact.*) with English and zh-CN translations.
English ToS page with effective date
apps/website/src/pages/terms-of-service.astro
Imports the t translation helper, updates the page description to explicitly reference Comfy Products (Cloud, API, Enterprise), and renders a centered effective-date paragraph using t('tos.effectiveDateLabel') and t('tos.effectiveDate').
Locale-invariant routing and redirects
apps/website/astro.config.ts, apps/website/src/config/routes.ts
Configures termsOfService route as locale-invariant in getRoutes so it does not receive a locale prefix, and adds an Astro redirect from /zh-CN/terms-of-service to /terms-of-service to consolidate all ToS traffic; Chinese ToS page file is removed.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested reviewers

  • AustinMroz
  • benceruleanlu

Poem

🐰 A ToS tale for twenty-twenty-six,
With sections stacked and dates that mix,
The Chinese page takes a graceful bow,
One route to rule them all—here's how!
Effective dates in every tongue,
A legal feast for old and young.

🚥 Pre-merge checks | ✅ 6 | ❌ 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 (6 passed)
Check name Status Explanation
Title check ✅ Passed The PR title accurately captures the main change: updating Terms of Service to legal-approved 2026-05-13 copy with clear, concise language.
Description check ✅ Passed The PR description covers all template requirements with detailed Summary and Changes sections, but lacks a dedicated Review Focus section.
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.
End-To-End Regression Coverage For Fixes ✅ Passed PR uses "feat" not bug-fix language. This is a feature change (Terms of Service update), not a bug fix. Per instructions: "Do not insist on tests when the PR is not fixing a bug."
Adr Compliance For Entity/Litegraph Changes ✅ Passed ADR compliance check does not apply. PR modifies only website files (i18n, astro, routing) in apps/website/. No changes to src/lib/litegraph/, src/ecs/, or graph entity files.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch glary/tos-update-2026-05-13

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 15, 2026

🌐 Website E2E

Tip

All tests passed.

Status ✅ Passed
Report View Report

🔗 Website Preview

Website Preview: https://comfy-website-preview-pr-12286.vercel.app

This commit: https://website-frontend-q01vpvcrt-comfyui.vercel.app

Last updated: 2026-05-16T15:05:04Z for 9fdeff4

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
apps/website/src/i18n/translations.ts (1)

2052-2054: ⚡ Quick win

Remove newly added explanatory comments in the translations map.

These comments should live in PR/docs, not inline in this data object, per repository guidance.

Proposed change
-  // NOTE: zh-CN values mirror English pending translation by legal/i18n
-  // team. The legal-approved copy was provided in English only; do not
-  // auto-translate or modify substance.

As per coding guidelines: "Avoid new usage of code comments; do not add or retain redundant comments".

🤖 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 `@apps/website/src/i18n/translations.ts` around lines 2052 - 2054, Remove the
newly added inline explanatory comment block inside the translations map (the
"// NOTE: zh-CN values mirror English..." comment) in
apps/website/src/i18n/translations.ts; edit the translations object (exported
translations constant / translations map) to delete that comment and any similar
redundant comments so only data remains, and instead place any rationale in the
PR description or external docs per repo guidance.
🤖 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.

Nitpick comments:
In `@apps/website/src/i18n/translations.ts`:
- Around line 2052-2054: Remove the newly added inline explanatory comment block
inside the translations map (the "// NOTE: zh-CN values mirror English..."
comment) in apps/website/src/i18n/translations.ts; edit the translations object
(exported translations constant / translations map) to delete that comment and
any similar redundant comments so only data remains, and instead place any
rationale in the PR description or external docs per repo guidance.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 1a61ad60-fe45-488f-9ebc-d2ddcfe73cb2

📥 Commits

Reviewing files that changed from the base of the PR and between d05ec23 and 5e22059.

📒 Files selected for processing (5)
  • apps/website/astro.config.ts
  • apps/website/src/config/routes.ts
  • apps/website/src/i18n/translations.ts
  • apps/website/src/pages/terms-of-service.astro
  • apps/website/src/pages/zh-CN/terms-of-service.astro
💤 Files with no reviewable changes (1)
  • apps/website/src/pages/zh-CN/terms-of-service.astro

coderabbitai[bot]
coderabbitai Bot previously approved these changes May 15, 2026
CodeRabbit nit: per repo guidance, do not retain redundant comments in
code. The rationale lives in the PR description instead.
@glary-bot
Copy link
Copy Markdown

glary-bot Bot commented May 15, 2026

Re: CodeRabbit nitpick on apps/website/src/i18n/translations.ts:2052-2054 — fixed in b9c8cc852. Removed the inline // NOTE: zh-CN values mirror English… block per the repo's "do not add or retain redundant comments" guidance. The rationale already lives in the PR description, which is the appropriate place for it. Kept the existing // ── Terms of Service ── section divider since that pattern is already used throughout this file as a visual section anchor.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 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 `@apps/website/src/i18n/translations.ts`:
- Around line 2212-2215: The translations contain unresolved legal placeholders
"[URL]" and "[Address]" (see key 'tos.comfy-products.block.13'); before
publishing, locate any translation entries that include these placeholders
(search for "[URL]" and "[Address]") and replace them with the finalized,
approved values (actual privacy/retention URL and physical address or a
configured variable/constant) in the corresponding translation keys so the ToS
text no longer ships with placeholders.
🪄 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: CHILL

Plan: Pro

Run ID: de9bc0cc-fd8a-459a-9ad2-1a24aa62a0cf

📥 Commits

Reviewing files that changed from the base of the PR and between 5e22059 and b9c8cc8.

📒 Files selected for processing (1)
  • apps/website/src/i18n/translations.ts

Comment thread apps/website/src/i18n/translations.ts Outdated
Glary-Bot added 2 commits May 16, 2026 01:44
…pport/data-retention

Replace the [URL] placeholder in \u00a72.7 (Data Retention and Deletion)
with a link to the canonical docs page at docs.comfy.org/support/data-retention,
matching the existing convention used for other support links
(e.g. docsSubscription in routes.ts).
Restore the Chinese ToS route so Chinese visitors stay in their
navigation flow (Chinese header/footer/hero) while the legal body
itself renders from the en translations \u2014 ensuring all visitors see
the same legal-approved English copy, regardless of locale.

This replaces the previous redirect-based approach. Reverts the
locale-invariant termsOfService route override and removes the
/zh-CN/terms-of-service \u2192 /terms-of-service redirect from
astro.config.ts. The page passes locale="en" to ContentSection and
to the effective-date label, so only the BaseLayout title, hero
title, and site chrome remain in Chinese.
coderabbitai[bot]
coderabbitai Bot previously approved these changes May 16, 2026
Glary-Bot added 2 commits May 16, 2026 02:09
Replace the [Address] placeholder in \u00a712.8 with Comfy's mailing
address for legal notices: 201 Spear Street, Ste 17, San Francisco,
CA 94105 (carrying forward the address from the prior live ToS).
Add a contentLocale prop to BaseLayout that controls the <html lang>
and og:locale attributes independently from the site-chrome locale.
The /zh-CN/terms-of-service page sets contentLocale="en" so crawlers,
assistive technology, and link previews see the page as English (which
matches the legal body), while the Chinese hero, header, and footer
remain in zh-CN for users browsing in their preferred locale.
coderabbitai[bot]
coderabbitai Bot previously approved these changes May 16, 2026
…ish page

Drop the zh-CN ToS shell entirely. Since there is no legal-approved
Chinese translation of the 2026-05-13 ToS, serve a single canonical
English version for everyone:

- Remove apps/website/src/pages/zh-CN/terms-of-service.astro.
- Add an Astro redirect from /zh-CN/terms-of-service to
  /terms-of-service as a safety net for stale external links.
- Mark termsOfService as a locale-invariant route in getRoutes() so
  the Chinese footer link emits /terms-of-service directly and avoids
  the redirect hop for normal navigation.
- Revert the BaseLayout contentLocale prop introduced in the prior
  approach; it no longer has a consumer.
coderabbitai[bot]
coderabbitai Bot previously approved these changes May 16, 2026
@nav-tej nav-tej marked this pull request as ready for review May 16, 2026 09:06
@nav-tej nav-tej requested a review from a team May 16, 2026 09:06
@dosubot dosubot Bot added the size:XL This PR changes 500-999 lines, ignoring generated files. label May 16, 2026
@nav-tej nav-tej enabled auto-merge May 16, 2026 09:06
Convert ASCII quotes in the tos.* i18n values to the typographic
quotes (U+201C, U+201D, U+2019) used in the source .docx, so the
rendered page visually matches the legal-approved document
character-for-character. No content changes, no rendering changes
to non-ToS pages.
@dosubot dosubot Bot removed the size:XL This PR changes 500-999 lines, ignoring generated files. label May 16, 2026
@dosubot dosubot Bot added the size:M This PR changes 30-99 lines, ignoring generated files. label May 16, 2026
Copy link
Copy Markdown
Contributor

@christian-byrne christian-byrne left a comment

Choose a reason for hiding this comment

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

LGTM

@nav-tej nav-tej added this pull request to the merge queue May 18, 2026
Merged via the queue into main with commit 4e07fe3 May 18, 2026
50 checks passed
@nav-tej nav-tej deleted the glary/tos-update-2026-05-13 branch May 18, 2026 21:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants