Skip to content

Release v2.8.3 — migrate license to self-contained signed token#18

Merged
coaxel2 merged 3 commits into
mainfrom
release/v2.8.3
May 25, 2026
Merged

Release v2.8.3 — migrate license to self-contained signed token#18
coaxel2 merged 3 commits into
mainfrom
release/v2.8.3

Conversation

@coaxel2
Copy link
Copy Markdown
Owner

@coaxel2 coaxel2 commented May 25, 2026

Backend notchia.app emits Ed25519-signed self-contained tokens. App now verifies them locally. Old nia_admin_ keys still work. Tested with real lifetime key.

Backend notchia.app a évolué vers le design où la clé EST un token signé
Ed25519 (nia_live_<b64url(payload)>.<b64url(signature)>), au lieu de
l'ancien design opaque + roundtrip serveur. L'app shippée v2.8.x rejetait
les nouvelles clés au format check (Crockford base32 only, < 64 chars).

Refactor LicenseManager.swift :
- Nouveau pubkey Ed25519 embarqué (2f0af78c... — celui qui matche la clé
  privée backend notchia.app, vérifié contre la clé lifetime d'Axel)
- isPlausibleKey : accepte nia_live_<b64url>.<b64url> + garde nia_admin_
- activate() : parse token + Curve25519.Signing.PublicKey.isValidSignature
  100% local, ZÉRO appel serveur à l'activation
- Nouveau LicenseTokenPayload {v, sub, plan, iat, exp?, jti, max}
- Mapping plan → Tier (lifetime/monthly), exp → expiresAt
- Re-check révocation 1×/semaine vers notchia.app/api/license/validate
  (best-effort, offline → on garde le Pro)
- State.proGrace retiré (plus de notion de grâce, le token est self-contained)
- Admin key (nia_admin_) intacte — bypass SHA-256 local

Sync UI :
- LicenseSettings : retire les case .proGrace, ajoute .expired
- NotchIAApp.licenseErrorMessage : ajoute .expired
- 4 nouvelles strings i18n EN/FR/ES/DE

Vérifié : la clé lifetime d'Axel passe Curve25519.Signing.PublicKey.isValid
Signature avec le nouveau pubkey. Smoke test 6s OK.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@coaxel2
Copy link
Copy Markdown
Owner Author

coaxel2 commented May 25, 2026

/release 2.8.3

@github-actions github-actions Bot added the cori-ai-review Cori AI review label May 25, 2026
@coaxel2 coaxel2 merged commit e1ac952 into main May 25, 2026
1 of 2 checks passed
@coaxel2 coaxel2 deleted the release/v2.8.3 branch May 25, 2026 20:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cori-ai-review Cori AI review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant