feat(license): add Lite SKU; remove user-facing free trial

Two coupled changes:

1. Lite tier
   - New Tier.LITE in src/license/schema.py.
   - FEATURES_BY_TIER[Tier.LITE] = {Deduplicator, Text Cleaner,
     Format Standardizer}. The three universally-useful tools that
     cover the most common bookkeeping / RevOps / Klaviyo prep
     workflows. Other six tools require Core.
   - i18n: license.tier_lite, license.feature_locked_title,
     license.feature_locked_body, license.upgrade_link,
     license.status_locked (en + es).
   - Per-tool feature gate at every GUI tool page
     (require_feature_or_render_upgrade) and every tool CLI
     (guard(feature=...)). A locked tool renders an upgrade
     prompt + Manage-license button (GUI) or exits with code 2
     (CLI).
   - Home grid: tool cards the user's tier doesn't unlock get a
     red 🔒 Locked badge in place of green Ready.

2. Trial removed
   - Activation form's "Start 1-year trial" button removed.
   - license_cli's `trial` subcommand removed.
   - activation.trial_button / activation.trial_help i18n keys
     dropped (pack parity test stays green).
   - Tier.TRIAL stays in the enum (back-compat with any field-
     tested trial licenses); LicenseManager._mint stays internal
     for tests and the seller's key generator.
   - Decision logged in DECISIONS §9b: a 1-year all-features
     trial undercuts paid Lite; paid-only keeps tier economics
     clean.

Tests (+29 net): +17 Lite-tier unit/guard tests + 13 Lite-tier
GUI tests + 1 trial-absent assertion - 2 trial CLI tests - 1
trial GUI button test. Total: 1995 → 2024.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-13 17:19:30 +00:00
parent e612c751a8
commit d32b58e61a
33 changed files with 621 additions and 153 deletions

View File

@@ -68,8 +68,6 @@
"blob_help": "Empieza con `DTLIC1:` — pega la cadena completa.",
"activate_button": "Activar",
"renew_button": "Aplicar renovación",
"trial_button": "Iniciar prueba de 1 año",
"trial_help": "Omite el código de pago y emite una licencia local de 1 año vinculada a tu nombre y correo. Útil para evaluar antes de comprar.",
"or_separator": "— o —",
"success": "¡Activado! Bienvenido, {name}. Tu licencia es válida hasta el {expires}.",
"renewed": "Licencia renovada. Nueva fecha de caducidad: {expires}.",
@@ -86,13 +84,18 @@
"renewal_warning_30": "⚠️ La licencia caduca en {days} días. Renueva pronto para evitar interrupciones.",
"renewal_warning_expired": "🛑 La licencia caducó el {date}. Renuévala para seguir usando DataTools.",
"tier_trial": "Prueba",
"tier_lite": "Lite",
"tier_core": "Core",
"tier_pro": "Pro",
"tier_enterprise": "Enterprise",
"registered_to": "Registrado a nombre de {name} · {email}",
"expires_on": "Caduca el {date}",
"issued_on": "Emitida el {date}",
"view_details": "Detalles de la licencia"
"view_details": "Detalles de la licencia",
"feature_locked_title": "🔒 Esta herramienta no está incluida en tu licencia {tier}",
"feature_locked_body": "Tu licencia actual incluye: {features}. Actualiza para acceder a esta herramienta.",
"upgrade_link": "Gestionar licencia",
"status_locked": "Bloqueado"
},
"tools": {
"01_deduplicator": {