feat: billing/invoice details (full name, address, phone) under Settings > Billing (v0.76.0)

Adds a new user_billing_details table (1:1 with users, separate from the display name) with a form and GET/PUT API route. Full name is required by the form/API; address and phone stay optional. Not wired into Stripe invoicing yet — just captured for future use.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Arnaud
2026-07-24 11:35:26 +02:00
parent 04a911b431
commit 003e8abe22
15 changed files with 6440 additions and 5 deletions
+12
View File
@@ -1600,6 +1600,18 @@
"modelDefault": "Default",
"modelSaving": "Saving…",
"saveModelPrefs": "Save model preferences",
"billingFullName": "Full name",
"billingFullNameRequired": "Full name is required",
"billingAddressLine1": "Address line 1",
"billingAddressLine2": "Address line 2",
"billingCity": "City",
"billingPostalCode": "Postal code",
"billingCountry": "Country",
"billingPhone": "Phone number",
"billingDetailsSaved": "Billing details saved",
"billingDetailsSaveFailed": "Failed to save billing details",
"billingDetailsSaving": "Saving…",
"saveBillingDetails": "Save billing details",
"userUpdated": "User updated successfully",
"userUpdateFailed": "Failed to save",
"adminSettingsSaved": "Settings saved",
+12
View File
@@ -1591,6 +1591,18 @@
"saveModelPrefs": "Enregistrer les préférences de modèle",
"modelDefaultPlaceholder": "Par défaut",
"modelNamePlaceholder": "ex. llama3.2",
"billingFullName": "Nom complet",
"billingFullNameRequired": "Le nom complet est obligatoire",
"billingAddressLine1": "Adresse (ligne 1)",
"billingAddressLine2": "Adresse (ligne 2)",
"billingCity": "Ville",
"billingPostalCode": "Code postal",
"billingCountry": "Pays",
"billingPhone": "Numéro de téléphone",
"billingDetailsSaved": "Coordonnées de facturation enregistrées",
"billingDetailsSaveFailed": "Échec de l'enregistrement des coordonnées de facturation",
"billingDetailsSaving": "Enregistrement…",
"saveBillingDetails": "Enregistrer les coordonnées",
"userUpdated": "Utilisateur mis à jour avec succès",
"userUpdateFailed": "Échec de l'enregistrement",
"adminSettingsSaved": "Paramètres enregistrés",