feat(pricing): remove DeepL from all user-facing surfaces
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m57s

Pricing: 'deepl' removed from plan provider lists and the comparison
table row. Landing and pricing copy (13 locales) no longer mention
DeepL (65 values cleaned, 39 dead keys deleted: pricing.comparison.deepl,
providerTheme.classic.deepl.*).

Providers: available-provider responses are filtered so a DeepL entry
from the backend can never surface in the engine picker or the services
page; DeepL theme entry and static lib/api.ts list entry removed.

Admin: DeepL config card, type fields, defaults and fallback-chain
mentions removed; stats/chart/status maps and mock data cleaned.

Backend adapter untouched — DeepL is invisible app-wide via the UI
filter; removing the Python adapter itself is a separate step if wanted.

Verified: build exit 0, vitest 9/9, eslint clean on touched files,
zero 'deepl' occurrences outside the two intentional UI filters.
This commit is contained in:
2026-08-30 22:20:53 +02:00
parent 017b998941
commit 52748ee653
49 changed files with 75 additions and 150 deletions

View File

@@ -92,7 +92,7 @@ const STATIC_PLANS: Plan[] = [
max_pages_per_doc: 50,
max_file_size_mb: 10,
max_chars_per_month: 500_000,
providers: ["google", "deepl"],
providers: ["google"],
features: [
"pricing.plans.starter.feat1",
"pricing.plans.starter.feat2",
@@ -116,7 +116,7 @@ const STATIC_PLANS: Plan[] = [
max_pages_per_doc: 200,
max_file_size_mb: 25,
max_chars_per_month: 2_000_000,
providers: ["google", "deepl", "openrouter"],
providers: ["google", "openrouter"],
features: [
"pricing.plans.pro.feat1",
"pricing.plans.pro.feat2",
@@ -145,7 +145,7 @@ const STATIC_PLANS: Plan[] = [
max_pages_per_doc: 500,
max_file_size_mb: 50,
max_chars_per_month: 10_000_000,
providers: ["google", "deepl", "openrouter", "openrouter_premium", "openai"],
providers: ["google", "openrouter", "openrouter_premium", "openai"],
features: [
"pricing.plans.business.feat1",
"pricing.plans.business.feat2",
@@ -811,7 +811,6 @@ export default function PricingPage() {
{ label: t('pricing.comparison.pagesMaxPerDoc'), vals: plans.slice(0,4).map(p => p.max_pages_per_doc === -1 ? "∞" : String(p.max_pages_per_doc)) },
{ label: t('pricing.comparison.maxFileSize'), vals: plans.slice(0,4).map(p => p.max_file_size_mb === -1 ? "∞" : `${p.max_file_size_mb} ${t('pricing.comparison.mb')}`) },
{ label: t('pricing.comparison.googleTranslation'), vals: plans.slice(0,4).map(() => true) },
{ label: t('pricing.comparison.deepl'), vals: plans.slice(0,4).map(p => p.providers.includes("deepl") || p.providers.includes("all")) },
{ label: t('pricing.comparison.aiEssential'), vals: plans.slice(0,4).map(p => p.ai_translation && (p.ai_tier === "essential" || p.ai_tier === "premium" || p.ai_tier === "custom")) },
{ label: t('pricing.comparison.aiPremium'), vals: plans.slice(0,4).map(p => p.ai_translation && (p.ai_tier === "premium" || p.ai_tier === "custom")) },
{ label: t('pricing.comparison.apiAccess'), vals: plans.slice(0,4).map(p => p.api_access) },