Skip to content

feat(web): host legal pages on marketing site with PDF downloads#1679

Merged
yannickmonney merged 2 commits into
mainfrom
feat/web-legal-pages
May 7, 2026
Merged

feat(web): host legal pages on marketing site with PDF downloads#1679
yannickmonney merged 2 commits into
mainfrom
feat/web-legal-pages

Conversation

@yannickmonney

Copy link
Copy Markdown
Contributor

Summary

  • Move privacy-policy, terms-of-service, data-processing-agreement, and personalization out of docs.tale.dev into the marketing site at app/content/legal/{en,de,fr}/, served by new /legal/<slug> and /<lang>/legal/<slug> routes through a shared LegalPage component.
  • Add a post-prerender Playwright step that prints each legal route to a static dist/<route>.pdf, powering the in-page Download-PDF button. The script reuses prerendered HTML and emulateMedia('print') so the printed PDF matches the on-screen page (chrome hidden via print:hidden).
  • Footer now routes through internal legal slugs; docs.json drops the legal section and the docs hero footer points at tale.dev/legal/... instead.
  • Incidental polish: ExternalLink helper, hover state on compare-table rows, slider transition tweak, hardware/software/cloud-provider copy refinements, guard for non-string navigator.language.

Pre-PR checklist

  • Ran bun run check (format, lint, typecheck, all tests) — 30/30 tasks green.
  • Updated services/web/messages/{en,de,fr}.json for the new legal.* keys (platform messages N/A).
  • Updated docs/{,de/,fr/} — legal pages were moved out of docs/ to the web app; docs.json updated to drop the legal nav and point footer links at tale.dev.
  • Ran bun run --filter @tale/docs lint — covered by bun run check.
  • N/A — no README changes.

Test plan

  • bun --filter @tale/web run build and confirm dist/legal/*.pdf and dist/{de,fr}/legal/*.pdf are produced (Playwright Chromium auto-installs in the build script).
  • Visit /legal/privacy-policy, /legal/terms-of-service, /legal/data-processing-agreement, /legal/personalization and the /de/... and /fr/... equivalents — content renders, anchor links work, Download PDF resolves.
  • Spot-check footer links across en, de, fr — they now link to internal /legal/<slug> instead of docs.tale.dev.
  • Confirm docs.tale.dev no longer surfaces the legal nav after deploy.
  • Visual pass on compare-table hover and pricing-compare layout (rows for custom-development / consulting are now span rows; hardware / cloud-provider copy updated).

Move privacy-policy, terms-of-service, data-processing-agreement, and
personalization out of docs.tale.dev into the marketing site so legal
content lives on tale.dev with consistent branding and SEO. Markdown
sources move to app/content/legal/{en,de,fr}/, served by new
/legal/<slug> and /<lang>/legal/<slug> routes that share rendering via
the LegalPage component.

Add a post-prerender step that uses Playwright to print each legal
route to dist/<route>.pdf so each page exposes a Download-PDF button
with a static asset behind it. The PDF script reuses the prerendered
HTML and emulateMedia('print'), keeping the on-screen and printed
output identical and hiding chrome (header/footer/download button)
via print:hidden.

Also includes the assorted polish that landed alongside this work:
external-link helper, footer routing through the new internal legal
slugs, hover state on compare-table rows, sticky pricing slider tweaks,
and a guard for non-string navigator.language values.
@coderabbitai

coderabbitai Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

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

To continue reviewing without waiting, purchase usage credits in the billing tab.

⌛ 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: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 847fd3e6-f399-4b9a-a668-8f31499c9f6d

📥 Commits

Reviewing files that changed from the base of the PR and between f68264b and 596b9be.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (34)
  • docs/docs.json
  • packages/ui/src/components/forms/slider.tsx
  • services/web/app/components/blocks/compare-table.tsx
  • services/web/app/components/blocks/hardware-compare.tsx
  • services/web/app/components/blocks/pricing-compare.tsx
  • services/web/app/components/layout/external-link.tsx
  • services/web/app/components/layout/site-footer.tsx
  • services/web/app/components/layout/site-header.tsx
  • services/web/app/content/legal/de/data-processing-agreement.md
  • services/web/app/content/legal/de/personalization.md
  • services/web/app/content/legal/de/privacy-policy.md
  • services/web/app/content/legal/de/terms-of-service.md
  • services/web/app/content/legal/en/data-processing-agreement.md
  • services/web/app/content/legal/en/personalization.md
  • services/web/app/content/legal/en/privacy-policy.md
  • services/web/app/content/legal/en/terms-of-service.md
  • services/web/app/content/legal/fr/data-processing-agreement.md
  • services/web/app/content/legal/fr/personalization.md
  • services/web/app/content/legal/fr/privacy-policy.md
  • services/web/app/content/legal/fr/terms-of-service.md
  • services/web/app/pages/legal-page.tsx
  • services/web/app/routeTree.gen.ts
  • services/web/app/routes/$lang/legal/$slug.tsx
  • services/web/app/routes/legal/$slug.tsx
  • services/web/lib/i18n/locales.ts
  • services/web/lib/legal/content.ts
  • services/web/lib/legal/slugs.ts
  • services/web/messages/de.json
  • services/web/messages/en.json
  • services/web/messages/fr.json
  • services/web/package.json
  • services/web/scripts/generate-legal-pdfs.ts
  • services/web/scripts/legal-routes.ts
  • services/web/scripts/prerender.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/web-legal-pages

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.

@yannickmonney yannickmonney merged commit 5952fa1 into main May 7, 2026
20 checks passed
@yannickmonney yannickmonney deleted the feat/web-legal-pages branch May 7, 2026 15:31
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