Skip to content

Releases

6.1.0

Choose a tag to compare

@20syldev 20syldev released this 22 Oct 12:35
6.1.0
e07d7cb

Version 6.1.0 - October 2026

  • This is the first real release of the API under its new name @moxon/api, and the documentation moves to moxon.dev.
  • A new experimental export, @moxon/api/manifest, describes the endpoints as data (method, path, category, parameters and a request example) for tools that document or call the API, as shown in the Endpoint manifest section of the README.
  • The hash endpoint is the first one declared this way, and it behaves exactly as before on every version, from v4 to v6.
  • The dependencies receive their security fixes, including the critical one in proxy-addr.
  • The server no longer serves /favicon.ico, which also makes the package about 250 kB lighter.

If you still use @20syldev/api, switching only takes npm uninstall @20syldev/api && npm i @moxon/api and a rename in your imports.


Version 6.1.0 - Octobre 2026

  • C'est la première vraie version de l'API sous son nouveau nom @moxon/api, et la documentation déménage sur moxon.dev.
  • Un nouvel export expérimental, @moxon/api/manifest, décrit les endpoints sous forme de données (méthode, chemin, catégorie, paramètres et exemple de requête) pour les outils qui documentent ou appellent l'API, comme le montre la section Endpoint manifest du README.
  • L'endpoint hash est le premier déclaré de cette façon, et il se comporte exactement comme avant sur toutes les versions, de v4 à v6.
  • Les dépendances reçoivent leurs correctifs de sécurité, dont celui, critique, de proxy-addr.
  • Le serveur ne sert plus /favicon.ico, ce qui allège aussi le paquet d'environ 250 ko.

Si vous utilisez encore @20syldev/api, il suffit de npm uninstall @20syldev/api && npm i @moxon/api et de renommer vos imports.

6.0.0-pre

6.0.0-pre Pre-release
Pre-release

Choose a tag to compare

@20syldev 20syldev released this 17 Oct 12:40
6.0.0-pre
fd93aa8

Version 6.0.0-pre - October 2026

  • The API is renamed: @20syldev/api becomes @moxon/api, and the repository becomes 20syldev/moxon.
  • The code is exactly that of @20syldev/api@6.0.0: same exports (., ./v4, ./v5, ./v6, ./server), same /v6 HTTP API, nothing new.
  • To migrate, switch packages with npm uninstall @20syldev/api && npm i @moxon/api, then replace the name in your imports, as described in the Migrating from @20syldev/api section of the README.
  • The old @20syldev/api package remains installable, but future releases will ship only as @moxon/api.

6.1.0 will be the first real release of moxon.


Version 6.0.0-pre - Octobre 2026

  • L'API change de nom : @20syldev/api devient @moxon/api, et le dépôt devient 20syldev/moxon.
  • Le code est exactement celui de @20syldev/api@6.0.0 : mêmes exports (., ./v4, ./v5, ./v6, ./server), même API HTTP /v6, rien de nouveau.
  • Pour migrer, il suffit de changer de paquet avec npm uninstall @20syldev/api && npm i @moxon/api, puis de remplacer le nom dans vos imports, comme l'explique la section Migrating from @20syldev/api du README.
  • L'ancien paquet @20syldev/api reste installable, mais les prochaines versions sortiront uniquement sous @moxon/api.

La 6.1.0 sera la première vraie version de moxon.

6.0.0

Choose a tag to compare

@20syldev 20syldev released this 10 Sep 20:27
6.0.0
889b40c

Version 6.0.0 - Septembre 2026

  • L'endpoint /captcha répond désormais en mode challenge par défaut : l'image arrive avec un jeton signé plutôt qu'avec la réponse en clair, et son rendu est durci contre la lecture automatique. Le générateur historique reste disponible via ?mode=image, pour qui a besoin de récupérer la réponse côté serveur.
  • Les versions v1, v2 et v3 sont retirées, avec tout le JavaScript non typé qu'elles partageaient. L'API ne sert plus que v4, v5 et v6 ; installer @20syldev/api@5.9.0 pour qui en a encore besoin.
  • L'endpoint /levenshtein passe en POST : les deux textes comparés ne transitent plus par l'URL, donc plus par l'historique de navigation ni les journaux d'un intermédiaire.
  • Les identifiants sensibles sortent des URL : DELETE /chat/:token devient POST /chat/clear, et PATCH/DELETE /tic-tac-toe/:game deviennent POST /tic-tac-toe/play et POST /tic-tac-toe/forfeit. Les méthodes PATCH et DELETE disparaissent de l'API.
  • Les réponses d'erreur renvoient status en nombre plutôt qu'en chaîne de caractères.
  • Toute réponse porte désormais les en-têtes X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset, et un Retry-After accompagne les refus 429 — un client peut enfin s'auto-réguler au lieu de découvrir sa limite en la dépassant.
  • L'endpoint /hyperplanning est déprécié : il continue de fonctionner sur toutes les versions, mais v6 ne le liste plus parmi ses endpoints disponibles. Il sera retiré pour de bon en 7.0.0.

5.9.0

Choose a tag to compare

@20syldev 20syldev released this 08 Sep 13:39
5.9.0
f282aa6

Version 5.9.0 - Septembre 2026

  • Ajout de l'endpoint /pow : une preuve de travail en remplacement du captcha — le serveur émet un salt et une difficulté, le client cherche un nonce dont l'empreinte sha256 commence par autant de zéros, puis le renvoie en POST pour vérification. À la difficulté par défaut de 4, la résolution prend moins d'une seconde dans un navigateur et reste imperceptible pour une personne, mais devient ruineuse pour un robot qui la répète des milliers de fois. C'est la seule protection anti-bot qu'un modèle de vision ne sait pas contourner, et la documentation recommande désormais de la préférer au captcha visuel.
  • L'endpoint /captcha gagne un mode challenge : l'image arrive accompagnée d'un jeton signé dans l'en-tête X-Captcha-Token, et la réponse n'est plus livrée en clair. Elle n'existe que dans la signature du jeton — impossible à extraire, même en interceptant la réponse. Un POST /captcha portant token et answer renvoie ensuite { "valid": true }.
  • Le rendu de ce mode challenge est durci contre la lecture automatique : les glyphes se chevauchent pour empêcher leur découpage, suivent une ligne de base sinusoïdale, mélangent plusieurs polices, et sont traversés par des traits de la même couleur que le texte, qu'aucun filtre ne peut donc retirer. Le mode par défaut, lui, ne change pas d'un pixel.
  • Les jetons de captcha et de preuve de travail sont à usage unique et expirent au bout de 5 minutes : un jeton rejoué répond used, un jeton périmé expired, un jeton falsifié ou issu d'une autre instance wrong.
  • La variable CHALLENGE_SECRET signe ces jetons. Tant qu'elle n'est pas définie, chaque processus s'invente sa propre clé : les jetons cessent d'être valides après un redémarrage et sont rejetés par les instances voisines — à définir pour tout déploiement qui fait tourner plus d'un processus.
  • Les en-têtes X-Captcha-Text et X-Captcha-Token sont désormais exposés au JavaScript des navigateurs ; ils restaient jusqu'ici invisibles depuis une page web, faute de déclaration CORS.
  • Les journaux distinguent maintenant les niveaux de gravité : une erreur serveur est enregistrée en error, un refus client en warn, et le reste en info.

5.8.0

Choose a tag to compare

@20syldev 20syldev released this 07 Sep 17:17
5.8.0
99482d5

Version 5.8.0 - Septembre 2026

  • Ajout de l'endpoint /base : conversion d'un nombre entre deux bases numériques de 2 à 36 — ?value=255&from=10&to=16 renvoie ff — avec 10 et 16 comme valeurs par défaut. Les très grands nombres conservent leur précision exacte, bien au-delà de ce qu'un entier JavaScript sait représenter.
  • Ajout de l'endpoint /uuid : génère un UUID v4 conforme à la RFC 4122, jusqu'à 50 d'un coup avec count, ou analyse un identifiant existant (?uuid={uuid}) pour en extraire sa version et son variant. Un UUID mal formé répond valid: false au lieu d'une erreur, ce qui permet de s'en servir comme validateur.
  • Ajout de l'endpoint /semver : décompose une version sémantique — 1.2.3-beta.1+build.42 livre ses major, minor, patch, prerelease et build —, l'incrémente (action=bump&part=minor donne 1.3.0) ou compare deux versions (action=compare&other=1.3.0). La comparaison respecte la spécification jusqu'aux identifiants de préversion : 1.0.0-alpha précède 1.0.0-beta, qui précède 1.0.0.
  • Ajout de l'endpoint /read : calcule les scores de lisibilité Flesch d'un texte, avec le détail des mots, phrases et syllabes ainsi qu'un temps de lecture estimé. Le français est pris en charge par lang=fr, qui applique l'adaptation Kandel & Moles ; l'anglais reste la langue par défaut.
  • Ajout de l'endpoint /diff : compare deux textes et renvoie la suite des segments identiques, ajoutés et supprimés, ligne par ligne ou mot par mot (mode=word), accompagnée du décompte des ajouts et des suppressions.
  • L'endpoint /logs est désormais fermé par défaut : sans LOGS_TOKEN, il répond comme un chemin inconnu au lieu de laisser le trafic de l'instance accessible à qui devine l'URL. Il ne s'ouvre qu'une fois le jeton configuré, toujours via l'en-tête X-Logs-Token.
  • Des limites protègent les nouveaux endpoints : 100 caractères pour une valeur à convertir, 256 pour une version, 10 000 caractères et 2000 segments pour un diff, 50 000 caractères pour un texte analysé.

5.7.0

Choose a tag to compare

@20syldev 20syldev released this 07 Sep 12:10
5.7.0
4a0ae24

Version 5.7.0 - Septembre 2026

  • Le paquet s'importe désormais directement : import { evaluate } from '@20syldev/api' cible la dernière version, @20syldev/api/server démarre l'API complète avec toutes ses versions montées, et les déclarations TypeScript sont livrées avec. Les sous-chemins /v1 et /v2 pointaient vers des fichiers inexistants — c'est corrigé.
  • L'endpoint /url renvoie le port par défaut du schéma quand l'URL n'en précise aucun : 443 pour https et wss, 80 pour http et ws, 21 pour ftp ; null reste réservé aux schémas sans port connu.
  • Les métadonnées d'instance deviennent configurables — DOCS_URL, REPO_URL, INSTANCE_CREATED — et chaque champ disparaît de la réponse tant qu'il n'est pas renseigné : une instance auto-hébergée n'affiche plus la documentation ni le dépôt de quelqu'un d'autre.
  • L'endpoint /logs peut être fermé par un jeton, attendu dans l'en-tête X-Logs-Token et défini par LOGS_TOKEN ; sans cette variable il reste ouvert, comme avant.
  • Les journaux ne conservent plus les valeurs passées en paramètre : ?text=secret est tracé en ?text. Les jetons de conversation privée et de partie portés dans le chemin sont également masqués.
  • TRUSTED_PROXIES décrit les sauts de confiance derrière un CDN ou un routeur de plateforme, en blocs CIDR ou via les raccourcis loopback, linklocal et uniquelocal, séparés par des espaces ou des virgules.
  • Les réponses d'erreur sont allégées du lien de documentation qu'elles portaient.
  • Node 22.12 devient le minimum requis, ce qui permet d'utiliser le paquet aussi bien en ESM qu'en CommonJS.

5.6.0

Choose a tag to compare

@20syldev 20syldev released this 17 Aug 20:56
5.6.0
37db5f2

Version 5.6.0 - Août 2026

  • Ajout de l'endpoint /url : décompose une URL en ses composants — schéma, hôte, port, chemin, paramètres et fragment ; les paramètres de requête dupliqués sont conservés et regroupés en tableau (?tag=js&tag=ts → ["js", "ts"]).
  • Ajout de l'endpoint /csv : conversion bidirectionnelle entre CSV et JSON — parse transforme un CSV en tableau d'objets, format fait l'inverse — avec délimiteur personnalisé (delimiter) et en-têtes optionnels (headers).
  • Le parseur CSV gère les champs entre guillemets, y compris les guillemets échappés ("") et les sauts de ligne à l'intérieur d'un champ.
  • Des limites protègent les deux endpoints : 2048 caractères pour une URL, 50 000 caractères et 1000 lignes pour un CSV.

5.5.0

Choose a tag to compare

@20syldev 20syldev released this 29 Jul 21:43
ea7443a

Version 5.5.0 - Juillet 2026

  • Ajout de l'endpoint /auth : vérifie un token Bearer et renvoie son tier et ses limites (hourly, burst) ; sans token il renvoie le tier default, et un token invalide donne un 401. Idéal pour tester une clé ou surveiller ses quotas (code HTTP 200/401).
  • La redirection /latest vaut désormais pour toutes les méthodes HTTP : un 307 préserve la méthode et le corps, donc POST /latest/…, PATCH et DELETE sont correctement redirigés vers la version courante — avant, seul GET fonctionnait.
  • Le package @20syldev/api est désormais générique : l'endpoint personnel /website est sorti du cœur vers un système de plugins optionnels, exclu du paquet npm.
  • Robustesse interne : correction d'un test temporel non déterministe et passe de formatage.

5.4.0

Choose a tag to compare

@20syldev 20syldev released this 25 Jul 15:20
9eb235a

Version 5.4.0 - Juillet 2026

  • Correction de /address (ordre des mots de rue pour les adresses US, UK et DE, ex. 42 Main Street) et de /text qui écrit désormais correctement soixante et onze en français.
  • Fiabilisation des modules cryptographiques : /otp corrige l'underflow du compteur à zéro et passe à une comparaison à temps constant, /symmetric ajoute un MAC d'intégrité en mode CBC, et /asymmetric calcule sa limite de taille à partir du module réel de la clé.
  • Corrections des modules de calcul et de rendu : /evaluate (priorité de l'unaire - et nombres malformés), /matrix (plus de fausse matrice singulière due à l'arrondi du déterminant), /algorithms (validation des entiers pour isprime et factorial) et /chart (données nulles, à tranche unique ou à label unique).
  • Corrections de /barcode (rendu inversé et chiffre de contrôle EAN-8), /jwt (rejet des header/payload non-objets), /case (rejet des entrées composées uniquement de séparateurs), /chat (éviction de session et purge des salons privés) et /tic-tac-toe (inscription des joueurs, casse et minuteurs de nettoyage).
  • Durcissement des routes GET face aux paramètres en tableau, aux valeurs NaN et aux modules absents, gestionnaire d'erreurs repositionné après les routes, et repli 404 en JSON pour tout endpoint inconnu.
  • Fiabilisation du contrôle de débit (correction d'un off-by-one et éviction des utilisateurs inactifs) et conservation du chemin et des paramètres lors des redirections vers /latest.
  • Ajout d'une large batterie de tests unitaires et d'intégration couvrant ces correctifs.

5.3.0

Choose a tag to compare

@20syldev 20syldev released this 02 Jun 09:03
7b5a89a

Version 5.3.0 - Juin 2026

  • Ajout de l'endpoint /case : conversion de texte entre neuf formats de casse sans dépendance externe (camel, pascal, snake, kebab, constant, title, sentence, upper, lower), avec une tokenisation universelle qui gère automatiquement les séparateurs _, -, ., les espaces et les transitions camelCase.
  • Ajout de l'endpoint /jwt : décodage d'un JSON Web Token (header, payload, signature) sans vérification de la signature, avec détection automatique de l'expiration via le champ exp. Utile pour inspecter le contenu d'un token en débogage ou audit.