spacetrace
FR
Télécharger

Ce qui a changé

Chaque version, de la plus récente à la plus ancienne. Le même texte est embarqué dans les applications : ce que vous lisez ici est ce que l'application vous dira après sa mise à jour.

étape de développementLes versions marquées comme étapes de développement n'ont jamais été étiquetées et n'ont aucun fichier téléchargeable. Elles figurent ici parce que le travail a eu lieu, pas parce que vous pouvez les installer.

Application de bureau

0.9.0

Téléchargements et sommes de contrôle

Ajouté

  • La carte peut désormais être dessinée en coussins, l'aspect popularisé par SequoiaView et WinDirStat : chaque rectangle est éclairé comme un relief et chaque dossier comme un relief plus grand sous ce qu'il contient, si bien que ce qui va ensemble se lit comme une seule forme, sans suivre de lignes. Les couleurs gardent leur sens, type ou âge ; seule la lumière varie sur un rectangle. Choisissez Plat ou Coussin à côté de Carte et Anneaux. Le choix est mémorisé et la carte reste plate tant que vous ne l'avez pas choisi.

Modifié

  • Sous Linux, les analyses de btrfs et XFS comptent désormais une seule fois les blocs partagés entre fichiers, comme le disque les stocke : les copies reflink (cp --reflink, le comportement par défaut de coreutils 9) et les instantanés btrfs ne sont plus comptés une fois par nom. Trois copies reflink d'un fichier de 100 Mo affichaient 300 Mo sur le disque et affichent maintenant 100 Mo, ce que dit df. Les totaux sur ces systèmes de fichiers baissent donc, et une comparaison avec un instantané pris par une version antérieure montre une baisse qui n'a jamais eu lieu sur le disque. Les fichiers btrfs compressés gardent leur taille non compressée, car mesurer ce qu'ils occupent demande les droits root.

Performances

  • Les analyses sous macOS sont 15 à 33% plus rapides et occupent un tiers de mémoire en moins. Les clones copie-sur-écriture étaient repérés dans une étape distincte après le parcours, en ouvrant chaque fichier candidat un par un - le compteur « clones candidats vérifiés » en fin d'analyse. APFS indique la famille de clones dans le listage du répertoire que le parcours lit déjà, donc cette étape a disparu. Mesuré : 415 503 entrées de 485 à 412 ms, 1 064 452 entrées de 2133 à 1431 ms, mémoire maximale sur la plus grande de 299 à 200 Mio. Les clones de moins de 64 Kio sont désormais comptés une seule fois eux aussi, donc un dossier plein de petits clones affiche un peu moins sur le disque, plus près de ce que le disque occupe vraiment. Les analyses utilisent 6 threads au lieu de 8, ce qui s'est révélé plus rapide une fois le parcours allégé.
  • L'enregistrement d'une analyse dans l'historique prend environ 17 % de temps en moins : sa somme de contrôle est calculée pendant l'écriture des lignes, et non lors d'une seconde passe.
  • Les analyses sous Linux sont de 6 à 14 % plus rapides : les dossiers sont lus par grands lots et chaque entrée est interrogée relativement à son dossier. Sur XFS avec des fichiers reflinkés, plus de threads ne ralentissent plus l'analyse : 100 000 de ces fichiers ont pris 200 ms au lieu de 855 ms.
  • Sous Linux, les disques rotatifs sont détectés et analysés avec un seul thread, les entrées de chaque dossier dans l'ordre où elles se trouvent sur le disque : une analyse à froid d'un disque rotatif simulé a pris 0,9 s au lieu de 11,5 s.
  • Sous Windows, quand l'application tourne en administrateur, l'analyse d'un volume NTFS entier lit la table de fichiers maître (MFT) du volume au lieu d'ouvrir chaque fichier, avec le même résultat. Toute autre analyse se fait comme avant.

Corrigé

  • Sous macOS, l'espace d'une famille de clones APFS est désormais attribué au même fichier à chaque analyse : le moins profond, et à égalité celui dont le chemin vient en premier. Il revenait jusqu'ici à la copie qu'un thread d'analyse atteignait d'abord ; le total était juste, mais avec des clones dans des dossiers différents les octets passaient de l'un à l'autre d'une analyse à la suivante sans que rien ne change sur le disque, et comparer deux instantanés d'un disque inchangé montrait un dossier grandir et un autre rétrécir. Une comparaison avec un instantané plus ancien peut montrer un tel déplacement une dernière fois.
  • Colorer la carte par Âge n'affichait aucun âge pour un instantané ouvert depuis la base ou depuis un agent, et son profil d'âge indiquait 0 B dans chaque bande ; seule une analyse fraîche les avait. Un instantané est désormais coloré et profilé comme l'analyse à partir de laquelle il a été enregistré.
  • Sur la carte, l'étiquette d'un dossier et celle de son premier sous-dossier se superposaient : toutes deux allaient dans le même coin, à un pixel d'écart, si bien qu'un dist/ contenant un gros cache/ se lisait « dist/ache/ ». Une étiquette qui en masquerait une autre descend désormais juste en dessous, à l'intérieur de sa propre tuile, et est omise s'il n'y a plus de place ; deux étiquettes ne se chevauchent plus.

0.8.0

Téléchargements et sommes de contrôle

Ajouté

  • Une analyse en cours s'affiche désormais à mesure qu'elle se remplit : la même liste de dossiers, la même carte et le même inspecteur qu'une analyse terminée, sur une arborescence qui grandit chaque seconde. Jusqu'ici, l'écran n'affichait qu'un pourcentage jusqu'à la fin de l'analyse. Chaque chiffre correspond à ce qui a été lu jusqu'à présent : la vue est donc marquée comme partielle, et ni la suppression ni l'enregistrement n'y sont autorisés ; ce que vous avez ouvert, sélectionné ou agrandi survit aux rafraîchissements et à l'instant où l'analyse se termine.
  • Les analyses s'ouvrent désormais dans des onglets. L'accueil reste à gauche et ne se ferme jamais : lancer une autre analyse ne coûte plus celle que vous êtes en train de lire. Chaque analyse a son onglet et l'on passe librement de l'une à l'autre. Fermer un onglet rend sa mémoire — une analyse d'un million d'entrées pèse une centaine de mégaoctets tant qu'elle reste ouverte.
  • L'écran d'accueil liste les disques. Analyser un système de fichiers entier était déjà possible et n'avait de bouton nulle part : il fallait savoir que le sélecteur de dossier accepte la racine d'un disque. Chaque disque est affiché avec son espace libre, les disques externes compris.

Modifié

  • La barre supérieure comptait quatorze boutons et passait à trois lignes à la largeur à laquelle la fenêtre s'ouvre réellement, repoussant la carte vers le bas. Chaque commande se trouve désormais à côté de ce qu'elle modifie : la barre porte l'application et la provenance de l'arborescence, les actions sur l'analyse ouverte sont derrière le ⋯ à côté de son chemin, et la forme et la couleur de la carte sont sur la carte. La mesure utilisée se choisit en cliquant sur le total voulu : les deux sont affichés de toute façon, celui retenu en clair et souligné. « Réinitialiser le zoom » a disparu ; le premier élément du chemin au-dessus de la carte le faisait déjà.
  • La liste des dossiers démarre plus étroite. Plus de la moitié de sa largeur revenait à la colonne des chiffres ; celle-ci a été resserrée de 16px — les espaces et la longueur de la barre, aucun chiffre n'en dit moins qu'avant — et la largeur de départ a suivi. Une largeur que vous définissez reste mémorisée, et un double-clic sur le séparateur la réinitialise.
  • La fenêtre ne peut plus être réduite au point de devenir inutilisable. La taille minimale passe de 900 × 600 à 1080 × 700 : avec l'ancienne, la carte finissait plus petite que la liste de dossiers à côté d'elle.
  • Relancer l'analyse, Enregistrer un instantané et Historique ne sont plus cachés derrière un seul bouton sans libellé. Ce sont des boutons nommés sur la ligne qui indique ce qui est ouvert, ils figurent au bas du menu contextuel, et Historique — le seul qui n'exige pas une analyse ouverte — est aussi sur l'écran d'accueil.

Corrigé

  • L'aperçu dessiné par une première analyse restait vide pendant toute l'analyse : sa zone de dessin ne pouvait prendre aucune hauteur, elle ne demandait donc jamais rien et il ne restait à l'écran que le titre « Lecture du niveau supérieur ».
  • La carte se superposait à la colonne de détails à droite dès que la liste des dossiers était élargie — ou la fenêtre rétrécie — au point de laisser à la carte moins de place que la largeur de sa propre légende. Les deux panneaux latéraux cèdent désormais du terrain, la carte conserve une largeur minimale et aucun des trois ne recouvre les autres.
  • La carte s'effondrait dès qu'une erreur était signalée au-dessus d'elle : le bandeau d'erreur prenait la place qui lui revenait. Elle disparaissait donc au moment précis où la fenêtre tentait d'expliquer ce qui n'allait pas.
  • La carte est nettement plus rapide, sans rien perdre en détail. Déplacer le pointeur faisait saccader toute la fenêtre : chaque déplacement redessinait les quelque 112 000 rectangles pour décaler un fin contour — 39,4 ms par déplacement, désormais 0,13 ms. L'image elle-même est tracée en quelques dizaines de chemins au lieu d'un appel par tuile (40,6 ms ramenées à 21,4 ms), et les coordonnées traversent la frontière sous une forme plus courte, ce qui fait passer la réponse d'une carte de 10,4 Mo à 5,2 Mo.
  • Les liens Site web et Code source du panneau À propos, ainsi que le lien du journal des modifications dans le bandeau de mise à jour, ne faisaient rien. L'autorisation qui permet à cette application de confier une adresse au navigateur ne laisse passer aucune adresse tant qu'on ne lui donne pas une liste, et elle n'en avait aucune ; l'échec était ensuite ignoré à chaque appel, si bien qu'un bouton qui ne pouvait pas fonctionner ressemblait exactement à un bouton qui fonctionnait.
  • Un clic droit là où l'application n'a pas de menu à elle ouvrait celui de la vue web, avec Recharger — qui jetait toutes les analyses ouvertes et ressemblait à un plantage plutôt qu'à une action demandée. Ce menu est désormais supprimé partout sauf dans les champs de texte, où il est le seul accès au copier-coller.
  • Une arborescence imbriquée au-delà d'environ 210 niveaux ne ferme plus l'application. Le parcours récurse une fois par niveau et ses threads disposaient de la pile par défaut ordinaire ; un arbre assez profond la débordait — et comme l'analyse s'exécute dans l'application elle-même, toute la fenêtre disparaissait sans laisser de message. Les threads reçoivent désormais une pile de 16 MiB et s'arrêtent à 1024 niveaux : le répertoire figure parmi les éléments illisibles et l'analyse se poursuit.

0.7.0

Téléchargements et sommes de contrôle

Ajouté

  • Une première analyse montre désormais ce qu'elle trouve pendant qu'elle travaille, au lieu d'un panneau vide et d'un compteur. Les dossiers de premier niveau apparaissent sous forme de carte et grandissent à mesure que leur contenu est lu ; le gros se signale généralement bien avant la fin. Les chiffres sont ce qui a été trouvé jusqu'ici et la vue le dit : un dossier qui a cessé de grandir ressemble exactement à un dossier terminé. La même routine de disposition dessine ceci et la carte finale, donc rien ne se réorganise quand l'analyse se termine. Une nouvelle analyse laisse intacte la carte que vous consultez, comme avant.
  • Le même dossier peut désormais être dessiné en anneaux plutôt qu'en rectangles. Un anneau par niveau, et l'angle d'une entrée est sa part du dossier qui la contient : la profondeur et l'imbrication deviennent l'image, au lieu d'être déduites de l'emboîtement. La carte reste l'affichage par défaut et ceci est un second avis, pour une raison qu'il vaut mieux connaître : un arc plus éloigné du centre couvre plus d'écran à taille égale, alors comparez les angles et non les surfaces. Un clic sélectionne, un double-clic sur un dossier y entre, et le sélecteur de couleurs fonctionne ici aussi.

0.6.2

Téléchargements et sommes de contrôle

Corrigé

  • La légende de la carte des âges nommait chaque bande « undefined » au lieu de « Moins d'une semaine », « 1 à 3 mois » et ainsi de suite. Les couleurs et les chiffres en octets à côté étaient justes ; seuls les mots manquaient, ce qui rendait illisible la seule partie de la vue qui explique les couleurs.

0.6.1

Téléchargements et sommes de contrôle

Ajouté

  • La carte peut être colorée par âge plutôt que par type. Le bleu correspond à cette semaine, le rouge à plus de deux ans, et un dossier prend l'âge de son octet médian : la moitié de son contenu est plus ancienne que ce que dit sa couleur. La légende donne les octets de chaque bande pour le dossier affiché, ce qui transforme « rouge veut dire ancien » en « 48 Go ici n'ont pas été touchés depuis deux ans ». La date du dossier lui-même est ignorée volontairement : elle change dès qu'on ajoute quelque chose à côté et ne dit rien du contenu.

Corrigé

  • Les instantanés importés avec spacetrace import s'ouvrent dans l'application. Ils étaient enregistrés avec une racine mal formée et l'application les refusait comme arbre inutilisable.

0.6.0

Téléchargements et sommes de contrôle

Ajouté

  • Quand une analyse n'avance plus, le bandeau de progression le dit et nomme le dossier attendu, au lieu d'animer une barre au-dessus d'une analyse qui ne va nulle part. Un partage réseau qui ne répond plus bloque dans le noyau et aucune application ne peut y remédier — mais savoir ce qui est attendu permet de choisir entre patienter et arrêter.
  • L'historique complet d'un dossier sur une seule ligne. Historique affiche sous forme de graphique tous les instantanés enregistrés d'un dossier, avec à côté ce qui a changé entre chaque paire ; cliquer sur une étape ouvre la comparaison correspondant exactement à ce saut. L'axe part de zéro : la hauteur de la ligne est donc la taille elle-même.

Performances

  • Les analyses utilisent au plus huit threads au lieu d'un par cœur, ce qui les a accélérées sur chaque arborescence mesurée — 39% sur une petite, 11% sur une grande. Un parcours est limité par les appels système : passé un certain point, les threads attendent dans le noyau au lieu de travailler.
  • Les analyses sur macOS sont environ 2,3 fois plus rapides, grâce à la même modification du moteur d'analyse : le système peut indiquer les noms d'un dossier et la taille de ses fichiers en une seule requête au lieu d'une par fichier.

Corrigé

  • Le bandeau de progression semblait se figer à la fin de chaque analyse : après le parcours vient une seconde passe qui recherche les clones en copie sur écriture, et aucun compteur ne bougeait pendant ce temps. Cette phase affiche désormais « Finalisation » et compte ce qu'elle vérifie, au lieu d'un nombre de fichiers arrêté.

0.5.0

Téléchargements et sommes de contrôle

Ajouté

  • Les instantanés portent désormais une somme de contrôle de leur contenu. Un instantané récupéré depuis un agent et modifié en chemin est refusé plutôt que dessiné : un bit inversé laisse un arbre parfaitement valide, et une treemap affiche un chiffre faux avec autant d'aplomb qu'un vrai.

Modifié

  • La base d'instantanés que cette application partage avec l'outil en ligne de commande passe à un nouveau schéma. Cette version lit l'ancienne sans difficulté ; l'inverse n'est pas vrai, donc mettez les deux à jour ensemble si vous utilisez les deux.

0.4.2

Téléchargements et sommes de contrôle

Corrigé

  • Le .dmg ne s'ouvrait plus sous macOS. L'identité de signature ajoutée en 0.4.1 s'appliquait aussi à l'image disque, et une image signée par un certificat que macOS ne reconnaît pas est refusée dès le montage : l'avertissement arrivait donc à l'ouverture du téléchargement, avant même le lancement de l'application. L'image n'est plus signée ; l'application qu'elle contient garde son identité.

0.4.1

Téléchargements et sommes de contrôle

Corrigé

  • macOS oubliait toutes les autorisations accordées à chaque mise à jour : sans identité de signature stable, le système considère chaque version comme une application différente. L'Accès complet au disque s'affichait comme activé tout en étant ignoré, et chaque analyse redemandait dossier par dossier. L'application porte désormais une seule identité d'une version à l'autre, donc une autorisation accordée une fois le reste.

0.4.0

Téléchargements et sommes de contrôle

Ajouté

  • Scripts d'installation temporaires pour macOS et Windows qui récupèrent le paquet avec curl ou Invoke-WebRequest, le vérifient contre SHA256SUMS et l'installent. Un téléchargement fait ainsi ne porte aucune des marques qu'écrit un navigateur, donc Gatekeeper et SmartScreen ne se déclenchent pas. Ils disparaîtront une fois l'application signée.
  • Sans l'Accès complet au disque, macOS demande l'autorisation pour chaque dossier protégé séparément — en pleine analyse, dans un ordre imprévisible. L'écran d'accueil le dit désormais avant la première analyse et propose un bouton vers le bon panneau des Réglages Système. La boîte de dialogue du système explique enfin, elle aussi, pourquoi un analyseur de disque lit vos fichiers.

Modifié

  • Le panneau Nouveautés ne liste plus que les versions publiées. Les entrées déjà intégrées mais absentes de toute version décrivaient un travail que votre copie ne contient pas.

Corrigé

  • Les instructions d'installation pour macOS décrivaient l'astuce du clic droit puis Ouvrir, retirée par Apple dans macOS 15. Elles indiquent désormais le chemin Réglages Système → Confidentialité et sécurité → Ouvrir quand même.

0.3.1

Téléchargements et sommes de contrôle

Corrigé

  • La vérification des mises à jour fonctionne. La 0.3.0 l'annonçait, mais aucun manifeste de mise à jour n'a été publié avec elle : l'application n'avait donc rien à consulter.

0.3.0

Téléchargements et sommes de contrôle

Ajouté

  • Les messages d'erreur sont eux aussi dans votre langue. Ce que dit le système d'exploitation — Permission denied et consorts — reste dans ses propres mots, car ce sont ceux qui aident quand on les recherche.
  • Au démarrage, l'application vérifie s'il existe une version plus récente et propose de l'installer. Rien n'est téléchargé tant que vous ne le demandez pas. Sur macOS l'application n'est toujours pas signée : le système peut donc vous demander de la confirmer à nouveau après une mise à jour.
  • L'application parle cinq langues : anglais, turc, italien, français et allemand. Au premier lancement elle suit la langue de votre système, et ce choix peut être modifié à tout moment.
  • Un panneau indiquant la version et la build en cours d'exécution, ainsi que les nouveautés des dernières versions. Il fonctionne hors ligne : le journal des modifications est intégré à l'application.

Performances

  • Ouvrir une analyse volumineuse consomme moins de mémoire, grâce à la représentation d'arbre plus compacte du moteur d'analyse.

0.2.0

· étape de développement

Ajouté

  • Des paquets installables pour macOS, Windows et Linux, construits à chaque push.
  • Un sélecteur pour la mesure suivie par la carte et les listes : ce que les fichiers annoncent, ou ce que le disque occupe.

Modifié

  • La fenêtre ne se fige jamais. Les traitements longs s'exécutent hors du fil principal en indiquant leur progression, et une analyse peut être annulée en cours de route.

0.1.0

· étape de développement

Ajouté

  • La première application de bureau : la treemap d'un dossier, l'arborescence à côté, et le détail de l'élément sélectionné à droite.
  • Ouvrez une nouvelle analyse, un instantané enregistré, ou un instantané lu directement depuis un agent tournant sur un serveur ou un NAS.
  • Déplacez des éléments vers la Corbeille depuis l'application, derrière une confirmation qui nomme exactement ce qui part.

Toutes les versions · Télécharger

Ligne de commande

0.10.0

Téléchargements et sommes de contrôle

Ajouté

  • spacetrace scan --ssh host /path analyse une machine joignable en ssh, sans rien y installer, et garde l'instantané dans la base locale, où scans, diff, ls --scan et verify le traitent comme n'importe quel autre. Une copie de cette même version est envoyée dans un répertoire temporaire privé de l'autre côté (ce binaire s'il y tourne, sinon la release publiée pour cette plateforme, vérifiée avec SHA256SUMS et mise en cache), analyse, renvoie sa base et est supprimée : y compris en cas d'échec, sur Ctrl-C et quand spacetrace est tué brutalement, car le côté distant fait le ménage dès que la session se termine. Une seule connexion, donc au plus une demande de mot de passe. L'instantané porte le nom d'hôte et le chemin de la machine distante, et rejoint ainsi son historique. Le prix : un accès ssh, un envoi d'environ 7 Mo par exécution, et de la place dans /tmp ou $HOME pour l'instantané. Pas encore disponible sous Windows.
  • spacetrace scan s3://bucket/prefix analyse un bucket S3 - AWS, ou MinIO, Cloudflare R2, Backblaze B2 et Wasabi via --endpoint - et --save l'enregistre comme un instantané ordinaire que ls --scan, diff --path s3://..., age --scan et export lisent sans changement. Identifiants et région viennent des mêmes sources que la CLI aws, dans le même ordre : clés, rôle assumé, jeton d'identité web, IAM Identity Center après aws sso login, credential_process, identifiants de conteneur ECS/EKS et métadonnées d'instance EC2. Les clés temporaires sont renouvelées avant leur expiration ; un rôle qui exige un code MFA ne le demande pas, exportez donc d'abord ses clés avec aws configure export-credentials. --no-sign-request liste un bucket public. Un bucket AWS est listé avec 16 requêtes à la fois, réparties par dossier (587 000 clés en 30 s au lieu de 175 s, mesuré contre us-west-2) ; tout autre --endpoint reste un flux unique tant que --threads n'en demande pas davantage, car MinIO s'est révélé plus lent en parallèle. Les clés sont présentées en dossiers, découpées sur /. Le total ne compte que les versions courantes : anciennes versions, marqueurs de suppression et envois multipart inachevés sont facturés mais pas listés, et la sortie le dit. Les clés comportant un segment . ou .. ne sont pas présentées : elles comptent comme entrées illisibles et la sortie les nomme. diff --path s3://... ne compare que des instantanés d'un même service, si bien qu'un bucket MinIO et un bucket AWS du même nom ne sont jamais appariés.
  • Nouveau : spacetrace watch <folder> montre en direct quels dossiers grossissent ou diminuent depuis son lancement, à quelle vitesse, les plus gros d'abord - les mêmes lignes que diff rapporterait. Il analyse une fois, puis suit les événements du système de fichiers (FSEvents, inotify, ReadDirectoryChangesW) et ne relit avec le scanner que les dossiers qu'ils désignent, donc les liens physiques, les liens symboliques, --exclude, -x et --depth signifient la même chose que pour scan. Il se met à jour sur place dans un terminal, ajoute des lignes dans un pipe et écrit un objet JSON par rafraîchissement avec --json ; --interval règle le rythme. Un fichier à liens physiques est suivi par son périphérique et son inode et compté une seule fois, si bien qu'un répertoire de build plein de liens physiques ne demande pas de nouvelle analyse complète ; seuls les événements que le système signale comme perdus, ou un lien dont les autres noms restent introuvables, en déclenchent une, et la sortie le dit ; les clones comptent pour leur taille entière. Sous Linux, s'il n'y a plus de watches inotify, il s'arrête en indiquant le sysctl qui relève la limite.
  • spacetrace pkgs indique à quel paquet installé appartiennent les octets d'un dossier, et combien n'appartiennent à aucun - généralement la partie que quelqu'un a déposée à la main. Avec un seul fichier au lieu d'un dossier, il nomme le paquet qui le possède. dpkg, pacman, apk et Homebrew sont lus directement sur le disque, et rpm est interrogé là où une base rpm existe ; une base illisible est signalée dans la sortie au lieu de compter discrètement ses fichiers comme sans paquet. Sur les systèmes à /usr fusionné, une liste qui indique /bin/ls est rapprochée de /usr/bin/ls, où se trouve réellement le fichier : comparé tel quel, 17 % du /usr d'une Debian 12 aurait été déclaré sans paquet. Sous macOS, les reçus d'installation sont lus aussi : tout ce qu'un .pkg a installé - les paquets d'Apple, les Command Line Tools, Office, Node.js - est attribué à son paquet avec la même liste de fichiers que pkgutil --files, lue directement sur le disque en une fraction de seconde au lieu de plusieurs secondes. Une analyse de /System/Volumes/Data/Applications donne la même réponse qu'une analyse de /Applications, et un fichier qu'une mise à jour a renommé avec d'autres majuscules compte toujours pour son paquet. Un reçu endommagé est signalé dans la sortie, et les autres sont lus quand même. Les fichiers générés par le script d'installation d'un paquet, comme le bytecode Python ou les caches de polices, ne figurent dans aucune liste et apparaissent sans paquet. Cela ne fonctionne que sur cette machine : un instantané pris sur un autre hôte est refusé.
  • L'agent expose désormais des métriques Prometheus sur /metrics, derrière le même jeton bearer que le reste de son API. Pour chaque racine configurée : quand l'instantané le plus récent a commencé et combien de temps il a duré, sa taille logique et sa taille sur disque, les fichiers, les répertoires, les chemins illisibles, l'espace libre et total qu'il a relevé, si une analyse est en cours et combien d'instantanés sont conservés ; plus les informations de build et l'heure de démarrage. Une racine jamais analysée apparaît quand même, avec zéro instantané, pour qu'une alerte « jamais analysée » soit possible. Une collecte ne lit que ce qui est déjà stocké - elle ne lance aucune analyse et ne touche pas les disques analysés - et a pris 2,2 ms avec 20 005 instantanés en base. La configuration de collecte est dans docs/AGENT.md.
  • Sous macOS, spacetrace scan --save et les analyses planifiées de l'agent partent du dernier instantané et ne relisent que les dossiers que FSEvents signale comme modifiés : /Applications en 239 ms au lieu de 406 ms. Le résultat est celui d'une analyse complète, ou c'en est une : au moindre doute (pas de curseur, autre volume, journal lent ou perdu, trop de changements, base de plus de deux jours, autres options, base endommagée ou importée), l'analyse est complète et l'instantané en note la raison. --full et incremental = false par racine imposent une analyse complète. Une racine située sur un autre volume que votre dossier temporaire, comme un disque externe, est toujours analysée entièrement : on ne peut pas y compter sur FSEvents pour avoir déjà numéroté une modification faite juste avant l'analyse.
  • scan --json indique rescan (full, incremental ou fallback:<reason>) et un objet incremental (temps de rejeu et de chargement de la base, dossiers relus, entrées réutilisées).
  • spacetrace scan --disk auto|ssd|hdd adapte le rythme de l'analyse au disque sous-jacent. hdd analyse avec un seul thread et, sous Linux, demande les entrées de chaque dossier dans l'ordre où elles se trouvent sur le disque ; auto, la valeur par défaut, détecte les disques rotatifs sous Linux et analyse tout le reste comme avant. Sur un disque rotatif simulé, une analyse à froid a pris 0,9 s au lieu de 11,5 s. --json indique le rythme (disk, threads, disk_decided). L'agent accepte le même réglage par racine sous le nom disk.

Modifié

  • Sur btrfs et XFS, l'occupation sur disque compte désormais une seule fois les blocs partagés entre fichiers, comme le disque les stocke : les copies reflink (cp --reflink, le comportement par défaut de coreutils 9) et les instantanés btrfs ne sont plus comptés une fois par nom. Lancé en root sur btrfs, un fichier compressé compte pour sa taille compressée. Mesuré : trois copies reflink d'un fichier de 100 Mo affichaient 300 Mo et affichent maintenant 100 Mo, ce que dit df ; un journal compressé de 100 Mo affiche 3 Mo au lieu de 100 Mo. Les totaux sur ces systèmes de fichiers baissent donc, et une comparaison avec un instantané pris par une version antérieure montre une baisse qui n'a jamais eu lieu sur le disque. Sans root, les fichiers compressés restent à leur taille non compressée et le résumé le signale. Sur ZFS, il indique que les clones de blocs et les blocs dédupliqués sont invisibles pour une analyse. Pour cela, chaque fichier sur btrfs et XFS est ouvert une fois, ce qui coûte de 0,4 à 0,9 ms pour 1 000 fichiers avec un cache chaud, davantage sur XFS quand la plupart des blocs sont partagés. --no-clone-dedupe le désactive et rend le chiffre de du.

Performances

  • L'enregistrement d'un instantané prend environ 17 % de temps en moins : l'empreinte du contenu est calculée pendant l'écriture des lignes, et non lors d'une seconde passe. Le /status de l'agent n'indique plus de phase checksumming.
  • Les analyses sous Linux sont plus rapides : les dossiers sont lus par grands lots et chaque entrée est interrogée relativement à son dossier, sans allocation par entrée. C'est la version statique livrée avec l'agent qui y gagne le plus — de 1,3 à 3,4 fois plus rapide sur les arborescences mesurées — et les versions glibc de 6 à 14 %.
  • Sur les systèmes de fichiers XFS contenant des fichiers reflinkés, les analyses à plusieurs threads ne sont plus plus lentes qu'avec un seul : le système de fichiers est interrogé sur les blocs partagés un thread à la fois, par séries. Une arborescence de 100 000 fichiers reflinkés a pris 200 ms au lieu de 855 ms à chaud, et 248 ms au lieu de 971 ms à froid. XFS sans fichiers reflinkés, btrfs et ext4 sont inchangés.
  • Sous Windows, l'analyse d'un volume NTFS entier lancée en administrateur lit la table de fichiers maître (MFT) du volume en une seule passe séquentielle, au lieu d'ouvrir chaque fichier. Le résultat est identique entrée par entrée, ce que la CI vérifie sur un vrai volume. Tout le reste — un dossier sous la racine du volume, sans droits d'administrateur, ReFS, FAT, un lecteur réseau — est parcouru comme avant. --no-mft parcourt toujours.

Corrigé

  • spacetrace update n'échoue plus sur une connexion lente. Le téléchargement de l'archive tournait sous la même limite de cinq secondes que la vérification de version, et cette limite couvre toute la réponse : une archive de 12 Mo exigeait 2,4 Mo/s, sinon délai dépassé. Les téléchargements disposent maintenant de cinq minutes.
  • spacetrace age --scan ID affichait 0 B dans chaque tranche d'âge pour tout instantané enregistré ; seule une analyse fraîche montrait les vraies tailles. Un instantané donne maintenant la même réponse que l'analyse à partir de laquelle il a été enregistré.
  • Un instantané poussé ou récupéré est vérifié en entier avant d'être enregistré : son arbre doit être cohérent et chaque valeur du bon type. Un instantané à la somme de contrôle correcte mais à l'arbre cassé était jusqu'ici enregistré quand même, et toute commande lisant ensuite cette base échouait dessus ; il est désormais refusé et rien n'en est conservé. Un instantané daté de plus d'un jour dans le futur est refusé lui aussi : il serait resté pour toujours le plus récent de son dossier. La vérification ne retarde pas les analyses propres de l'agent, et un instantané annonçant un nombre absurde de fichiers ne fait plus planter spacetrace à l'ouverture ni échouer l'analyse suivante de ce dossier.
  • Une commande dont la sortie est fermée avant la fin (spacetrace scans | head -1) se termine désormais sans bruit avec le code 0, au lieu de planter sur « failed printing to stdout: Broken pipe ». 0 et non 141, parce qu'un lecteur qui s'arrête a obtenu ce qu'il voulait, et qu'un script sous set -o pipefail échouerait sinon là où rien ne s'est mal passé.
  • Sous macOS, l'espace d'une famille de clones APFS est désormais attribué au même membre à chaque analyse : le moins profond, et à égalité celui dont le chemin vient en premier. Il revenait jusqu'ici au membre qu'un thread d'analyse atteignait d'abord ; le total était juste, mais avec des clones dans des dossiers différents les octets passaient de l'un à l'autre d'une analyse à la suivante sans que rien ne change sur le disque, et un diff de deux instantanés d'un disque inchangé montrait un dossier grandir et un autre rétrécir. Un diff contre un instantané plus ancien peut montrer un tel déplacement une dernière fois. La durée d'analyse ne change pas.

0.9.1

Téléchargements et sommes de contrôle

Modifié

  • Les clones de moins de 64 Kio sont dedupliques eux aussi, et le nombre de threads par defaut passe de 8 a 6. Le seuil de taille existait parce que chaque verification de clone coutait l'ouverture d'un fichier ; cela ne coute plus rien, donc une arborescence pleine de petits clones annonce moins qu'avant - plus proche de ce que df dit que le disque occupe. clones_deduped augmente en consequence. La valeur par defaut des threads a ete remesuree apres que le parcours est devenu moins couteux : 6 est au meilleur niveau ou proche sur les trois corpus de test, la ou 8 coute desormais 22% sur le plus grand. --threads permet de changer.

Performances

  • Les analyses macOS sont 15 a 33% plus rapides et occupent un tiers de memoire en moins. Les clones copie-sur-ecriture etaient reperes dans une phase distincte apres le parcours, en ouvrant chaque fichier candidat un par un ; APFS indique la famille de clones dans le listage du repertoire que le parcours lisait deja, donc cette phase a disparu. Mesure face a la version precedente, cache chaud, executions entrelacees : 50 189 entrees de 94 a 78 ms, 415 503 entrees de 485 a 412 ms, 1 064 452 entrees de 2133 a 1431 ms. La memoire maximale sur la plus grande est passee de 299 a 200 Mio, parce que le parcours ne construit plus un chemin complet pour chaque entree listee - seulement pour les repertoires ou il descend. La deduplication des clones est desormais gratuite au lieu de couter 15 a 31% de l'analyse, donc --no-clone-dedupe ne fait plus gagner de temps.

Corrigé

  • ca_file dans remotes.toml fonctionne maintenant sous Windows et ne fait confiance qu'au certificat qu'il nomme. S'y connecter a un agent servant son propre TLS echouait avec InvalidCertificate(UnknownIssuer) quelle que soit la validite du certificat : le client l'ajoutait aux racines de la plateforme, et le verificateur Windows ne reexamine une racine ajoutee que si la chaine est revenue incomplete - la chaine d'un certificat auto-signe n'est pas incomplete, elle est complete et non approuvee, donc la racine ajoutee n'etait jamais consultee, et l'auto-signe est le seul cas pour lequel ca_file existe. Le client fait desormais confiance exactement aux certificats de ca_file et a aucune autorite publique, ce que la documentation decrivait deja comme de l'epinglage et ce que les autres plateformes auraient du faire aussi.

0.9.0

Téléchargements et sommes de contrôle

Ajouté

  • L'agent peut désormais servir son API en HTTPS lui-même : tls_cert_file et tls_key_file sous [server] dans la configuration, les deux ou aucun. Il fallait jusqu'ici un reverse proxy en amont, ce qui sur un NAS sans nom de domaine propre revenait à faire circuler le jeton et l'inventaire des fichiers en clair sur le réseau. Un certificat auto-signé suffit ; le client apprend auquel faire confiance via ca_file dans remotes.toml. Là où un nom de domaine existe, un reverse proxy reste préférable, car il renouvelle les certificats et l'agent ne le fait pas : un certificat renouvelé exige un redémarrage. Le certificat doit porter l'adresse utilisée par les clients comme subject alternative name.

0.8.0

Téléchargements et sommes de contrôle

Ajouté

  • L'agent limite désormais le nombre de requêtes qu'une même adresse cliente peut faire, en répondant 429 avec un Retry-After au-delà de la limite. Le comptage a lieu avant la vérification du jeton, car les deux choses qu'un jeton ne peut pas borner sont précisément celles qui en ont besoin : /health ne demande aucun jeton par conception, et un mauvais jeton coûte quand même une réponse. La valeur par défaut de 120 par minute dépasse largement l'usage ordinaire ; ce qu'elle empêche, c'est qu'un client bloqué dans une boucle de tentatives consomme le disque que l'agent existe pour mesurer. Derrière un reverse proxy, toutes les requêtes proviennent du proxy : la limite devient un quota partagé — là où cela compte, mettre rate_limit_per_minute = 0 et limiter dans le proxy.

Modifié

  • L'export CSV place désormais chaque dossier immédiatement suivi de son contenu. Auparavant il écrivait tous les éléments d'un même niveau ensemble et leur contenu bien plus bas, séparant un dossier de ses fichiers de plusieurs pages dans le tableur. Les colonnes et les lignes elles-mêmes sont inchangées.
  • spacetrace scan --save indique désormais ce qu'il fait pendant l'écriture de l'instantané dans la base. Cette écriture n'est pas une courte formalité en fin d'analyse — sur un dossier de 412 983 entrées, le parcours prend 0,8 seconde et l'écriture 0,6 de plus, et à dix millions d'entrées cela représente une quinzaine de secondes — et jusqu'ici la ligne de progression était effacée dès la fin du parcours, la commande paraissant figée. L'agent signale les deux mêmes étapes sur /status.

Corrigé

  • spacetrace dupes listait les mêmes doublons dans un ordre différent à chaque exécution, si bien que comparer deux rapports faisait apparaître des différences inexistantes. L'ordre suit désormais les chemins, qui ne changent pas d'une exécution à l'autre.
  • Une arborescence imbriquée au-delà d'environ 210 niveaux n'interrompt plus l'analyse. Le parcours récurse une fois par niveau et ses threads disposaient de la pile par défaut ordinaire ; un arbre assez profond la débordait et le processus mourait purement et simplement — dans l'agent, cela emportait l'API HTTP et le planificateur, et aucun instantané n'était écrit. Les threads du parcours reçoivent désormais une pile de 16 MiB et s'arrêtent à 1024 niveaux, en enregistrant le répertoire comme illisible et en poursuivant ; un arbre plus profond que ce que le système d'exploitation peut nommer est signalé de la même manière, avec son chemin et sa raison.

0.7.0

Téléchargements et sommes de contrôle

Ajouté

  • spacetrace dupes trouve les fichiers au contenu identique et indique ce que supprimer les copies en trop rendrait. Il lit le moins possible : des fichiers de longueurs différentes ne peuvent pas correspondre et l'analyse connaît déjà toutes les longueurs, ceux de même longueur sont séparés par leurs 16 premiers Kio, et seul ce qui franchit les deux étapes est lu en entier. Sur une arborescence de 33,8 Gio et 375 585 fichiers, cela a représenté 2,6 Gio de lecture — 7,7 % — et une seconde exécution en a lu 30 Mio, car les empreintes des fichiers entiers sont mémorisées d'une exécution à l'autre. Les noms liés par lien physique sont listés à part et comptés comme ne libérant rien, puisqu'ils partagent déjà leurs octets. Rien n'est supprimé : quelle copie garder n'est pas une décision pour laquelle cet outil a le contexte.

Performances

  • L'analyse consomme nettement moins de mémoire. Le parcours construisait auparavant son propre arbre puis le recopiait dans l'arbre final, les deux occupant la mémoire au pic ; il écrit désormais les entrées directement dans l'arbre final à mesure que chaque dossier est lu. Sur un dossier de 412 983 entrées, le pic est passé de 91,5 Mo à 57,6 Mo, et à 49,3 Mo lorsqu'une analyse précédente du même dossier permet de dimensionner la structure. L'analyse prend le même temps qu'avant et tous les chiffres rapportés sont inchangés.

0.6.1

Téléchargements et sommes de contrôle

Corrigé

  • Un instantané créé par spacetrace import pouvait être enregistré puis jamais rouvert : chaque tentative échouait avec « entry 0 is not a root: it claims a parent ». L'import écrivait une racine mal formée, et rien ne le signalait avant la lecture. Les instantanés déjà importés sont lisibles avec cette version sans nouvelle importation.

0.6.0

Téléchargements et sommes de contrôle

Ajouté

  • --threads N choisit la largeur d'une analyse, et l'agent accepte le même réglage par racine. Il n'existe pas de meilleur nombre : l'optimum varie avec la taille de l'arborescence, et qui connaît son disque choisira mieux que n'importe quelle valeur par défaut.
  • Quand une analyse n'avance plus, la ligne de progression le dit et nomme le répertoire attendu, au lieu de continuer à prétendre analyser. Un partage réseau qui ne répond plus bloque dans le noyau et aucun délai d'attente dans ce programme ne peut y remédier — mais savoir ce qui est attendu permet de choisir entre patienter et abandonner.
  • spacetrace import lit un export JSON d'ncdu ou de gdu et l'enregistre comme instantané : les analyses que vous avez déjà deviennent ainsi comparables — y compris celles d'une machine qui n'existe plus pour être réanalysée. La taille apparente propre d'un dossier est écartée à l'entrée : la compter est précisément ce qui fait diverger du --apparent-size du chiffre annoncé par cet outil.
  • spacetrace export --format csv écrit une ligne par entrée pour un tableur, avec --depth pour s'arrêter aux premiers niveaux d'une arborescence qu'aucun tableur n'ouvrirait en entier. Les deux mesures sont des colonnes plutôt qu'un réglage — ce que les fichiers annoncent et ce que le disque occupe — à côté du coût propre de chaque entrée, de sorte qu'un total se reconstruit sans compter un fichier une fois par dossier au-dessus de lui. Les virgules, guillemets et sauts de ligne dans les noms sont correctement échappés : ce sont des caractères légaux dans un nom de fichier, et un export naïf en fait des lignes silencieusement fausses.
  • spacetrace age répond à l'autre question que pose un disque plein : non pas ce qui est gros, mais ce que plus personne ne touche. Les octets sont regroupés par date de dernière modification — les tranches se règlent avec --bands — et pondérés par la taille plutôt que par le nombre de fichiers, parce que cent mille vieux fichiers source ne sont pas la réponse et qu'une vieille image disque l'est. Les fichiers dont la date de modification n'a jamais été enregistrée sont signalés à part au lieu d'être comptés comme vieux de cinquante ans.

Modifié

  • Le /status de l'agent indique désormais si une analyse en cours avance ou est bloquée. scanning contient un objet par analyse au lieu d'un simple chemin : compteurs en direct, la phase (walking ou finishing — après le parcours seule la détection de clones progresse, si bien qu'en ne comptant que les fichiers on prend une analyse saine pour une analyse bloquée) et, une fois tous les compteurs immobiles, depuis combien de temps et sur quels dossiers elle attend. Le blocage est chronométré par un observateur interne à l'agent : interroger /status rarement ne gonfle donc pas la durée.

Performances

  • Les analyses utilisent désormais au plus huit threads au lieu d'un par cœur, ce qui s'est révélé plus rapide sur chaque arborescence mesurée — 39% sur une petite, 11% sur une grande. Un parcours est limité par les appels système : passé un certain point, les threads attendent dans le noyau au lieu de travailler. --threads N permet de forcer une valeur.
  • Les analyses sur macOS sont environ 2,3 fois plus rapides. L'ancien parcours demandait au noyau les noms d'un dossier, puis de nouveau, une fois par entrée, la taille et les dates ; macOS sait répondre aux deux en un seul appel, et c'est désormais le cas. Mesuré de bout en bout sur deux arborescences réelles : de 1293 ms à 556 ms pour l'une, de 1554 ms à 646 ms pour l'autre, les deux versions rapportant des totaux identiques à l'octet près.

Corrigé

  • L'affichage de progression semblait se figer vers la fin de chaque analyse. Après le parcours vient une seconde passe qui recherche les clones en copie sur écriture, et elle ne faisait bouger aucun compteur — sur ~/github, 1193 des 1989 millisecondes. Cette phase s'annonce désormais et compte ce qu'elle vérifie.
  • Un partage réseau dont le serveur a disparu ne bloque plus toute l'analyse. La première requête vers un système de fichiers monté ne peut plus être interrompue une fois figée et, comme un dossier est listé sur un seul thread, un partage mort emportait tous ses voisins avec lui. Les analyses lisent désormais d'abord la table des montages, abordent un point de montage via un thread qu'elles acceptent d'abandonner et, au bout de 60 secondes, l'enregistrent comme chemin illisible et poursuivent — le résultat ne manque que de ce système de fichiers et le signale, au lieu de ne jamais arriver. --mount-timeout 0 rétablit l'ancien comportement ; le coût mesuré de la vérification est d'environ une milliseconde sur une arborescence de 300 000 entrées.

0.5.0

Téléchargements et sommes de contrôle

Ajouté

  • Les instantanés portent désormais une somme de contrôle de leur contenu, et spacetrace verify la vérifie. Un instantané modifié en chemin est refusé à l'import plutôt que cru : un bit inversé laisse un arbre parfaitement valide qui annonce un chiffre faux, et c'est exactement la panne que rien ne voyait jusqu'ici.

Modifié

  • La base d'instantanés passe à un nouveau schéma pour loger la somme de contrôle. Les versions plus anciennes n'ouvriront plus une base écrite par celle-ci : elles le disent clairement au lieu de la mal lire. Si vous utilisez l'application de bureau sur le même historique, mettez-la à jour également.

0.4.1

Téléchargements et sommes de contrôle

Corrigé

  • install.sh et spacetrace update retrouvent la bonne version. Les trois composants publient dans un même dépôt, si bien que la dernière version au sens de GitHub a un temps désigné celle du hub — que install.sh ne pouvait pas installer et que la vérification de mise à jour lisait comme aucune version.

0.4.0

Téléchargements et sommes de contrôle

Ajouté

  • L'agent signale sur /status qu'une version plus récente existe. Une simple information : il n'installe jamais rien de lui-même. Une fois par jour, sans rien transmettre sur la machine, et update_check = false le désactive complètement.
  • spacetrace update installe la dernière version par-dessus celle en cours d'exécution, après avoir vérifié le téléchargement avec le fichier SHA256SUMS publié.
  • Une vérification quotidienne de la présence d'une nouvelle version, affichée en une ligne sur stderr. Elle ne s'exécute que sur une version étiquetée dans un terminal, s'explique la première fois, et se désactive entièrement avec SPACETRACE_NO_UPDATE_CHECK=1.
  • --version indique désormais de quelle build il s'agit : le commit, la date de compilation et le canal. L'agent donne les mêmes informations sur /health et /status.
  • Chaque version s'accompagne désormais de notes de version rédigées en cinq langues, et le dépôt contient un CHANGELOG.md.

Modifié

  • La promesse que les tailles sur disque correspondent à du en l'absence de blocs partagés est désormais vérifiée par un test qui exécute réellement du, au lieu d'être une affirmation dans la documentation.

Performances

  • L'analyse d'une grande arborescence consomme nettement moins de mémoire : un nœud est passé de 104 à 72 octets et les noms ont été regroupés dans une arène partagée.

Corrigé

  • install.sh vérifie le téléchargement avec le fichier SHA256SUMS publié. Ce fichier était publié à chaque version et n'était jamais lu.
  • Les clones APFS ne sont comptés qu'une fois. Trois clones de 100 Mo n'occupent aucun espace supplémentaire sur le disque, et spacetrace le dit désormais là où du annonce encore 400 Mo. Pour le désactiver : --no-clone-dedupe.
  • Sous Windows, spacetrace lit désormais l'espace réellement occupé par un fichier et ne compte qu'une fois les fichiers en lien physique, au lieu de se rabattre sur la taille annoncée.

0.3.0

· étape de développement

Ajouté

  • Une analyse en cours peut être annulée, et un sous-arbre peut être retiré d'une arborescence chargée sans invalider les entrées voisines.
  • Le tri et le rendu indiquent désormais explicitement la mesure utilisée, si bien qu'une liste annonçant les plus gros d'abord concorde avec le nombre affiché à côté.
  • Chaque push laisse une version téléchargeable, et install.sh l'installe sur Linux et macOS.

0.2.0

· étape de développement

Ajouté

  • spacetrace-agent : un agent en lecture seule pour serveurs et NAS, avec planificateur intégré et API HTTP. Il ne supprime jamais rien.
  • La capacité du système de fichiers est indiquée en espace libre et total plutôt qu'en pourcentage de remplissage, car sur APFS et les pools fins un pourcentage contredit df.
  • Le moteur de disposition en treemap : pavés squarified, niveau de détail et détection de clic suivant la hiérarchie.

Corrigé

  • L'ouverture d'une base ne prend plus de verrou en écriture : une lecture ne peut donc plus faire échouer une analyse encore en cours d'écriture.

0.1.0

· étape de développement

Ajouté

  • Analysez un dossier et voyez où l'espace est passé, avec les deux mesures côte à côte : ce que les fichiers annoncent et ce que le disque occupe réellement.
  • Des instantanés stockés dans SQLite, pour comparer une analyse d'aujourd'hui avec une du mois prochain.
  • spacetrace diff désigne le dossier responsable d'un changement au lieu d'énumérer tous les fichiers qu'il contient.
  • Export au format ncdu, pour qu'un instantané spacetrace puisse être ouvert par des outils déjà existants.
  • Les liens symboliques ne sont pas suivis, les liens physiques ne sont comptés qu'une fois, et un fichier creux indique ce qu'il occupe réellement plutôt que la taille annoncée.

Toutes les versions · Télécharger

Hub

0.5.1

Téléchargements et sommes de contrôle

Corrigé

  • Un instantané poussé est vérifié en entier avant d'être enregistré : son arbre doit être cohérent et chaque valeur du bon type. Un instantané à la somme de contrôle correcte mais à l'arbre cassé était jusqu'ici enregistré quand même, et toute page qui le lisait échouait ensuite ; il est désormais refusé avec 400 et rien n'en est conservé. Un instantané daté de plus d'un jour dans le futur est refusé lui aussi, car il serait resté pour toujours le plus récent de sa machine - un agent dont l'horloge avance autant reçoit donc 400 à chaque envoi jusqu'à ce que son horloge soit corrigée.

0.5.0

Téléchargements et sommes de contrôle

Ajouté

  • Une règle d'alerte peut envoyer un e-mail au lieu d'appeler un webhook. Il suffit de saisir une adresse là où allait l'URL ; une règle a exactement une destination, donc rien ne peut se désynchroniser. La messagerie se configure dans une section [smtp] du fichier de configuration du hub plutôt que dans le tableau de bord, car la base de données est le fichier que l'on sauvegarde et un mot de passe à l'intérieur voyage avec chaque copie. Une nouvelle page Réglages montre le relais, jamais le mot de passe, et envoie un message de test par le même chemin qu'une alerte : un succès signifie que les alertes arriveront, un échec nomme le problème avant qu'un disque ne se remplisse.
  • Des personnes, au lieu d'un identifiant partagé. Une nouvelle page Personnes délivre un jeton par personne avec l'un de deux rôles : un observateur voit toute la flotte et n'en change rien, un administrateur peut tout changer, y compris qui d'autre a accès. Les règles d'alerte enregistrent désormais qui les a ajoutées — la question à laquelle un accès partagé n'a jamais pu répondre. Des jetons plutôt que des mots de passe, volontairement : un jeton généré peut être conservé sous forme de simple empreinte car il n'y a rien à deviner, un mot de passe choisi non. Le jeton du fichier de configuration continue de fonctionner et reste administrateur : c'est la porte de retour, et c'est aussi pourquoi le dernier administrateur ne peut pas se révoquer lui-même.

0.4.0

Téléchargements et sommes de contrôle

Ajouté

  • Un instantané poussé est vérifié contre la somme de contrôle qu'il transporte et refusé avec un 400 en cas de désaccord, au lieu de rejoindre la flotte. Un bit inversé en chemin laisse un arbre valide portant un chiffre faux — sur un tableau de bord trié par urgence, c'est la mauvaise machine en tête.

Modifié

  • La base d'instantanés du hub passe à un nouveau schéma pour loger la somme de contrôle. Revenir à une version antérieure n'ouvrira plus le fichier : elle le dit clairement au lieu de le mal lire. Mettre une copie de côté avant la mise à niveau ne coûte rien.

0.3.1

Téléchargements et sommes de contrôle

Modifié

  • La page À propos ne liste plus que les versions publiées. Les entrées déjà intégrées mais absentes de toute version décrivaient un travail que votre copie ne contient pas.

0.3.0

Téléchargements et sommes de contrôle

Ajouté

  • La page About indique désormais quelle build est en cours d'exécution (commit, date de compilation et canal) ainsi que ce qui a changé dans les dernières versions.
  • /health indique le commit et le canal à côté de la version, ce qui permet d'identifier un conteneur en cours d'exécution sans se connecter.

Performances

  • Le chargement d'un instantané volumineux consomme moins de mémoire, grâce à la représentation d'arbre plus compacte du moteur d'analyse.

0.2.0

· étape de développement

Ajouté

  • Des binaires téléchargeables pour Linux et macOS, et des images conteneur pour amd64 comme pour arm64.

0.1.0

· étape de développement

Ajouté

  • Un tableau de bord de flotte : chaque agent et chaque racine dans un seul tableau, triés selon celui qui manquera de place en premier.
  • Une tendance de croissance et une prévision, qui indique franchement quand l'historique est insuffisant pour prévoir quoi que ce soit.
  • Des alertes de seuil avec temporisation, livrées par webhook, ainsi que des jetons d'agent délivrables et révocables depuis le tableau de bord.

Toutes les versions · Télécharger