Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions blog/2026-09-20-nouvelle-version-2.17.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ We are pleased to announce the release of version **2.17** of ClientXCMS!
Discover the major new features and screenshots in our [complete overview of ClientXCMS 2.17](/blog/clientxcms-v2-17-domaines-securite-facturation).

### Additions

- ➕ Added dynamic CSS variables for the theme's primary color, allowing instant brand palette modification from the admin panel.
- ➕ Added an automated i18n pipeline with French as the source of truth, DeepL/Azure synchronization, and reliable release builds.
- ➕ Added support for JPG/JPEG assets in Vite bundling rules.

- ➕ Officially launched **domain-name management** with progressive search, real-time availability checking, and cached results.
- ➕ Added the [**OpenProvider** registrar module](/extensions/modules/openprovider) with production and sandbox support, automatic TLD import, fixed or percentage-based bulk pricing, and reusable nameserver/DNS configuration.
- ➕ Added filtering and selection when importing registrar catalogs.
Expand All @@ -29,7 +29,6 @@ Discover the major new features and screenshots in our [complete overview of Cli
- ➕ Added [**EU VAT Check**](/extensions/addons/vat-check-eu) to validate European VAT numbers through VIES with configurable caching.
- ➕ Added seller tax identity, VAT regime, tax timezone, activation date, active provider, and public-sector provider settings.
- ➕ Added an electronic-transmission history to follow documents and provider statuses.
- ➕ Added **invoice installment payments** with atomic customer-balance debit and precise VAT preservation on each installment.
- ➕ Added **compromised-password detection** via HaveIBeenPwned and enforced minimum password length.
- ➕ Added a **closed-grammar email-template engine** replacing arbitrary Blade execution, with automatic migration of existing templates and strict content sanitization.
- ➕ Added **extension integrity verification**: SHA-256 checksum and signature validation on downloaded archives, with extraction confined to the extension's own directory.
Expand All @@ -39,6 +38,9 @@ Discover the major new features and screenshots in our [complete overview of Cli
- ➕ Added the [**Brevo newsletter addon**](/extensions/addons/brevo).

### Changes
- 🔄 Standardized console command exit codes (0 for success, 1 for failure).
- 🔄 Uniformized administration route names and view folders to strictly use kebab-case.
- 🔄 Enhanced the `ThemeManager` with improved theme metadata handling and reorganized the `ThemeSeeder`.
- 🔄 Enhanced the Extension Updater: automatic cleanup of obsolete files, exact local version resolution, and auto-registration of unlisted extensions.
- 🔄 Improved theme-section editing: repaired page sections accordion, added a sticky action bar, and ensured ARIA/contrast compliance.
- 🔄 Refactored Dark Mode toggle: moved the `dark` class to the `<html>` tag and fixed toggle-icon synchronization.
Expand All @@ -56,11 +58,18 @@ Discover the major new features and screenshots in our [complete overview of Cli
- 🔄 Vite 8 now preserves symlinks when building theme and addon assets.

### Fixes
- 🔧 Fixed coupon abuse through concurrency protection: pending orders now temporarily reserve coupon quotas to prevent race conditions during simultaneous checkouts.
- 🔧 Fixed the additional pricing toggle (accordion) in the administration which could not be closed after opening.
- 🔧 Fixed the error handler to prevent form validation errors from being transformed into 500 error pages in production.
- 🔧 Fixed the reset of the delivery state when renewing services, and corrected the exact calculation of domain renewal prices.

- 🔧 Fixed the server connectivity test in provisioning and secured stored connection credentials from leaking in the interface.
- 🔧 Fixed the customer factory to generate valid phone numbers (stabilizing `SmsServiceTest`) and maintained `install.php` tracking in git.

### Security
- 🔒 **Secured server credentials**: Passwords are no longer exposed in the admin HTML DOM, and re-entry is required when modifying the host or IP.
- 🔒 **Secured payment webhooks & closed invoice immutability**: Strict validation of paid amount, currency, and status in Stripe/Mollie/PayPal IPN, and blocking the reopening of closed invoices.
- 🔒 **Hardened Client API**: Restricted access to active Sanctum client tokens, enforced 2FA, implemented anti-timing attack hashes, masked sensitive metadata, and bounded pagination.

- 🔒 **Encrypted sensitive data at rest**: TOTP / 2FA secrets and system settings marked as encrypted are now actually encrypted in the database.
- 🔒 **Strict API authentication**: the application API now rejects web sessions as proof; API-key abilities are filtered and expiration is enforced.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,5 @@ This release includes an extensive security overhaul:
Version 2.17 also brings service lifecycle controls, mass-action components, UI harmonization, button and color-palette consistency, Vite 8 compatibility, and the new [Brevo newsletter addon](/extensions/addons/brevo). Brevo connects the footer subscription form to a selected contact list while supporting API-key and server-IP security.

Read the [complete ClientXCMS 2.17 changelog](/blog/nouvelle-version-2.17) for every technical detail.

Ready to upgrade your system? Follow our [Upgrade Guide](/docs/installation/upgrade) to install version 2.17.
8 changes: 3 additions & 5 deletions docs/installation/upgrade.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import TabItem from '@theme/TabItem';
1. Download the latest release from GitHub and save it as `clientxcms.zip`:

```bash
curl -L -o clientxcms.zip "https://github.com/ClientXCMS/ClientXCMS/releases/latest"
curl -fsSL -o clientxcms.zip "https://github.com/ClientXCMS/ClientXCMS/archive/refs/tags/$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/ClientXCMS/ClientXCMS/releases/latest | sed 's#.*/##').zip"
```

2. Put your application in maintenance mode:
Expand All @@ -42,9 +42,7 @@ php artisan down
3. Extract the archive and replace the files:

```bash
unzip clientxcms.zip -d /var/www/clientxcms
mv /var/www/clientxcms/ClientXCMS-*/* /var/www/clientxcms
rm -r /var/www/clientxcms/ClientXCMS-*
unzip -q clientxcms.zip -d /tmp/cx && shopt -s dotglob && mv /tmp/cx/ClientXCMS-*/* /var/www/clientxcms/ && rm -rf /tmp/cx
```

4. Install dependencies and run migrations:
Expand Down Expand Up @@ -77,7 +75,7 @@ php artisan clientxcms:on-update

```bash
cd /var/www/clientxcms
git fetch --all --prune
git fetch --all --tags --prune
git checkout master
git pull origin master
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ Nous sommes heureux de vous annoncer la sortie de la version **2.17** de ClientX
Découvrez les nouveautés principales et les captures dans notre [présentation complète de ClientXCMS 2.17](/fr/blog/clientxcms-v2-17-domaines-securite-facturation).

### Ajouts
- ➕ Ajout de la journalisation systématique et d'un indicateur de santé pour les tâches planifiées (Cron Scheduler), incluant la durée d'exécution et la capture des erreurs.
- ➕ Ajout de la surveillance en temps réel des files d'attente et des workers (Worker Heartbeat) avec alertes et interface dédiée dans la sécurité.
- ➕ Ajout d'un composant modal d'édition riche et multilingue pour les descriptions de produits, avec aperçu en direct.
- ➕ Ajout de la possibilité d'annuler les livraisons de services en attente directement depuis la liste d'administration.

- ➕ Lancement officiel de la **gestion des noms de domaine** avec recherche progressive, vérification de disponibilité en temps réel et mise en cache des résultats.
- ➕ Ajout du [module **OpenProvider**](/fr/extensions/modules/openprovider) avec prise en charge de la production et de la sandbox, importation automatique des TLD, tarification groupée fixe ou en pourcentage et configuration DNS réutilisable.
Expand All @@ -27,7 +31,7 @@ Découvrez les nouveautés principales et les captures dans notre [présentation
- ➕ Ajout de l'identité fiscale du vendeur, du régime de TVA, du fuseau fiscal, de la date d'activation et des providers principal et public.
- ➕ Ajout d'un historique des transmissions électroniques et des statuts retournés par les providers.
- ➕ Ajout du paiement des factures en plusieurs échéances avec débit atomique du solde client et conservation précise de la TVA.
- ➕ Ajout de la détection des mots de passe compromis avec HaveIBeenPwned et d'une longueur minimale renforcée.
- ➕ Ajout d'une **politique globale et configurable de mot de passe** : paramétrage de la longueur, complexité et refus des mots de passe compromis (Pwned) depuis l'administration, avec validation stricte et indicateur frontend.
- ➕ Ajout d'un moteur fermé pour les modèles d'e-mails, avec migration automatique et assainissement strict du contenu.
- ➕ Ajout de la vérification d'intégrité des extensions avec sommes SHA-256, signatures et extraction confinée.
- ➕ Ajout du choix entre une navigation d'administration verticale ou horizontale.
Expand All @@ -39,6 +43,9 @@ Découvrez les nouveautés principales et les captures dans notre [présentation
- ➕ Ajout du support des assets JPG/JPEG dans les règles de bundling Vite.

### Modifications
- 🔄 Standardisation des codes de retour des commandes console (0 pour succès, 1 pour échec).
- 🔄 Uniformisation des noms de routes et répertoires de vues de l'administration en kebab-case.
- 🔄 Amélioration du `ThemeManager` avec une meilleure gestion des métadonnées des thèmes et réorganisation du `ThemeSeeder`.

- 🔄 Refonte de la navigation mobile sous forme de panneau latéral accessible.
- 🔄 Harmonisation des boutons, des contrastes et de la palette de couleurs.
Expand All @@ -55,11 +62,18 @@ Découvrez les nouveautés principales et les captures dans notre [présentation
- 🔄 Refonte de la bascule du Dark Mode : déplacement de la classe `dark` sur la balise `<html>` et correction de la synchronisation de l'icône.

### Corrections
- 🔧 Correction des abus de codes promo via une protection anti-course : les commandes en attente réservent désormais temporairement le quota d'utilisation du coupon.
- 🔧 Correction du repliement des tarifs additionnels dans l'administration (qui ne pouvait plus être refermé après ouverture).
- 🔧 Correction du gestionnaire d'erreurs pour empêcher la transformation des erreurs de validation en pages 500 en production.
- 🔧 Correction de la réinitialisation de l'état de livraison lors du renouvellement des services et calcul exact du tarif de renouvellement des domaines.

- 🔧 Correction du test de connexion des serveurs et protection des identifiants enregistrés.
- 🔧 Correction de la génération des numéros de téléphone dans les tests.

### Sécurité
- 🔒 **Sécurisation des identifiants serveurs** : masquage des mots de passe dans le DOM HTML de l'administration et obligation de les ressaisir lors du changement d'hôte ou d'IP.
- 🔒 **Sécurisation des webhooks de paiement et immuabilité des factures** : validation stricte du montant payé, de la devise et du statut (Stripe, Mollie, PayPal IPN), avec impossibilité de réouvrir ou marquer payée une facture déjà clôturée.
- 🔒 **Durcissement de l'API Client** : accès restreint aux tokens Sanctum actifs, 2FA obligatoire, hash anti-attaque temporelle, masquage des métadonnées sensibles et pagination strictement bornée.

- 🔒 Chiffrement au repos des secrets TOTP/2FA et des paramètres sensibles.
- 🔒 Authentification API stricte, avec expiration et capacités des clés.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,5 @@ Cette version comprend notamment :
La version 2.17 apporte également des contrôles du cycle de vie des services, des actions groupées, une interface harmonisée, la compatibilité Vite 8 et le nouvel [addon de newsletter Brevo](/fr/extensions/addons/brevo). Brevo relie le formulaire du pied de page à une liste de contacts tout en sécurisant l'accès avec une clé API et l'autorisation de l'adresse IP du serveur.

Consultez le [journal complet de ClientXCMS 2.17](/fr/blog/nouvelle-version-2.17) pour découvrir tous les changements techniques.

Prêt à mettre à jour votre système ? Suivez notre [guide de mise à jour](/docs/installation/upgrade) pour installer la version 2.17.
Binary file modified static/img/blog/v2.17/toggle_orientation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading