spacetrace
IT
Scarica

Cosa è cambiato

Ogni versione, dalla più recente. Lo stesso testo è incluso nelle app: quello che leggete qui è ciò che l'app vi dirà dopo l'aggiornamento.

tappa di sviluppoLe versioni segnate come tappe di sviluppo non sono mai state taggate e non hanno file scaricabili. Sono elencate perché il lavoro è stato fatto, non perché possiate installarle.

App desktop

0.9.0

Download e checksum

Aggiunto

  • La mappa ora può essere disegnata a cuscino, l'aspetto reso familiare da SequoiaView e WinDirStat: ogni rettangolo è illuminato come un rilievo e ogni cartella come un rilievo più grande sotto ciò che contiene, così ciò che sta insieme si legge come un'unica forma senza seguire linee. I colori significano ciò che significavano, tipo o età; lungo un rettangolo varia solo la luce. Scegli Piatta o A cuscino accanto a Mappa e Anelli. La scelta viene ricordata e la mappa resta piatta finché non la scegli.

Modificato

  • Su Linux le scansioni di btrfs e XFS ora contano una sola volta i blocchi condivisi tra file, come li conserva il disco: le copie reflink (cp --reflink, il comportamento predefinito di coreutils 9) e gli snapshot btrfs non vengono più contati una volta per nome. Tre copie reflink di un file da 100 MB mostravano 300 MB su disco e ora mostrano 100 MB, quanto dice df. I totali su questi filesystem quindi scendono, e un confronto con uno snapshot preso da una versione precedente mostra un calo mai avvenuto sul disco. I file btrfs compressi mantengono la dimensione non compressa, perché misurare quanto occupano richiede root.

Prestazioni

  • Le scansioni su macOS sono più veloci del 15-33% e occupano un terzo di memoria in meno. I cloni copy-on-write venivano individuati in un passaggio a sé stante dopo la visita, aprendo ogni file candidato uno alla volta - il contatore "candidati clone controllati" alla fine di una scansione. APFS riporta la famiglia di cloni dentro l'elenco della directory che la visita legge già, quindi quel passaggio è sparito. Misurato: 415.503 voci da 485 a 412 ms, 1.064.452 voci da 2133 a 1431 ms, memoria di picco sulla più grande da 299 a 200 MiB. Anche i cloni più piccoli di 64 KiB ora vengono contati una sola volta, quindi una cartella con molti cloni piccoli mostra un po' meno su disco, più vicino a quanto il disco occupa davvero. Le scansioni usano 6 thread invece di 8: rimisurato dopo che la visita è diventata più leggera, è risultato più veloce.
  • Salvare una scansione nella cronologia richiede circa il 17% di tempo in meno: il suo checksum viene calcolato mentre le righe vengono scritte, non in un secondo passaggio.
  • Le scansioni su Linux sono dal 6 al 14% più veloci: le cartelle vengono lette in grandi blocchi e ogni voce viene interrogata rispetto alla propria cartella. Su XFS con file reflink, più thread non rallentano più la scansione: 100.000 file di questo tipo hanno richiesto 200 ms invece di 855 ms.
  • Su Linux i dischi rotanti vengono riconosciuti e scansionati con un solo thread, le voci di ogni cartella nell'ordine in cui si trovano sul disco: una scansione a freddo di un disco rotante simulato ha richiesto 0,9 s invece di 11,5 s.
  • Su Windows, quando l'app è eseguita come amministratore, la scansione di un intero volume NTFS legge la master file table (MFT) del volume invece di aprire ogni file, con lo stesso risultato. Ogni altra scansione procede come prima.

Corretto

  • Su macOS lo spazio di una famiglia di cloni APFS viene ora attribuito allo stesso file a ogni scansione: quello meno profondo e, a parità, quello con il percorso che viene prima. Prima andava alla copia che un thread di scansione raggiungeva per prima; il totale era giusto, ma con cloni in cartelle diverse i byte passavano dall'una all'altra da una scansione all'altra senza che nulla cambiasse sul disco, e confrontare due snapshot di un disco invariato mostrava una cartella crescere e un'altra ridursi. Un confronto con uno snapshot più vecchio può mostrare un tale spostamento un'ultima volta.
  • Colorare la mappa per Età non mostrava alcuna età per uno snapshot aperto dal database o da un agent, e il suo profilo di età riportava 0 B in ogni banda; solo una scansione nuova le aveva. Ora uno snapshot viene colorato e profilato come la scansione da cui è stato salvato.
  • Sulla mappa, l'etichetta di una cartella e quella della sua prima sottocartella venivano disegnate una sopra l'altra: finivano nello stesso angolo, a un pixel di distanza, così un dist/ con dentro un grande cache/ si leggeva "dist/ache/". Ora un'etichetta che ne coprirebbe un'altra scende subito sotto, all'interno del proprio tassello, e viene omessa se lì non c'è più spazio; due etichette non si sovrappongono più.

0.8.0

Download e checksum

Aggiunto

  • Una scansione in corso viene ora mostrata mentre si riempie: lo stesso elenco di cartelle, la stessa mappa e lo stesso ispettore di una scansione completata, su un albero che cresce ogni secondo. Finora lo schermo mostrava solo una percentuale fino alla fine della scansione. Ogni cifra è ciò che è stato letto finora, quindi la vista è contrassegnata come parziale e non è consentito né eliminare né salvare mentre è in corso; ciò che avete aperto, selezionato o ingrandito sopravvive agli aggiornamenti e al momento in cui la scansione termina.
  • Le scansioni ora si aprono in schede. La home resta a sinistra e non si chiude mai, quindi avviare un'altra scansione non significa più perdere quella che stai leggendo; ogni scansione ha una scheda propria e si passa liberamente dall'una all'altra. Chiudere una scheda restituisce la sua memoria — una scansione da un milione di voci è circa un centinaio di megabyte finché resta aperta.
  • La schermata iniziale elenca i dischi. Scansionare un intero file system era già possibile e non aveva un pulsante da nessuna parte: bisognava sapere che il selettore di cartelle accetta la radice di un disco. Ogni disco è mostrato con il suo spazio libero, quelli esterni inclusi.

Modificato

  • La barra superiore conteneva quattordici pulsanti e andava a capo su tre righe alla larghezza a cui la finestra si apre davvero, spingendo la mappa in basso. Ora ogni comando sta accanto a ciò che modifica: la barra porta l'applicazione e la provenienza dell'albero, le azioni sulla scansione aperta stanno dietro il ⋯ accanto al suo percorso, e forma e colore della mappa stanno sulla mappa. La misura in cui sono espresse le cifre si sceglie facendo clic sul totale desiderato: entrambi sono stampati comunque, quello scelto chiaro e sottolineato. «Reimposta zoom» non c'è più: il primo passo del percorso sopra la mappa faceva già lo stesso.
  • L'elenco delle cartelle parte più stretto. Più della metà della sua larghezza andava alla colonna delle cifre; quella colonna è stata ristretta di 16px — spaziature e lunghezza della barra, nessuna cifra dice meno di prima — e la larghezza iniziale è scesa con lei. Una larghezza impostata da voi resta memorizzata e un doppio clic sul divisore la reimposta.
  • La finestra non può più essere rimpicciolita al punto da non poterci lavorare. La dimensione minima ora è 1080 × 700 invece di 900 × 600: con quella precedente la mappa finiva per essere più piccola dell'elenco delle cartelle accanto.
  • Ripeti scansione, Salva istantanea e Cronologia non sono più nascosti dietro un unico pulsante senza etichetta. Sono pulsanti con un nome sulla riga che dice cosa è aperto, sono in fondo al menu contestuale, e Cronologia — l'unico che non richiede una scansione aperta — è anche nella schermata iniziale.

Corretto

  • L'anteprima disegnata da una prima scansione restava vuota per tutta la scansione: la sua area di disegno non poteva assumere un'altezza, quindi non chiedeva mai nulla e sullo schermo restava solo l'intestazione «Lettura del livello superiore».
  • La mappa si sovrapponeva alla colonna dei dettagli a destra non appena l'elenco delle cartelle veniva allargato — o la finestra ristretta — al punto da lasciare alla mappa meno spazio della larghezza della sua stessa legenda. Ora i due pannelli laterali cedono, la mappa mantiene una larghezza minima e nessuno dei tre si sovrappone agli altri.
  • La mappa collassava non appena veniva segnalato un errore sopra di essa: la striscia dell'errore occupava lo spazio che spettava alla mappa. Spariva proprio nel momento in cui la finestra cercava di spiegare cosa fosse andato storto.
  • La mappa è diventata molto più veloce senza perdere alcun dettaglio. Muovere il puntatore faceva scattare l'intera finestra: ogni movimento ridisegnava tutti i circa 112.000 rettangoli per spostare un sottile contorno — 39,4 ms per movimento, ora 0,13 ms. L'immagine stessa viene disegnata con qualche decina di tracciati invece di una chiamata per tassello (da 40,6 ms a 21,4 ms), e le coordinate attraversano il confine in forma più breve, portando la risposta di una mappa da 10,4 MB a 5,2 MB.
  • I collegamenti Sito web e Codice sorgente nel pannello Informazioni, e il collegamento al registro delle modifiche nella barra di aggiornamento, non facevano nulla. Il permesso che consente a questa app di passare un indirizzo al browser non lascia passare alcun indirizzo finché non gli si fornisce un elenco, e non ne aveva nessuno; l'errore veniva poi scartato a ogni chiamata, così un pulsante che non avrebbe mai funzionato era identico a uno che funzionava.
  • Il clic destro ovunque l'app non avesse un menu proprio apriva quello della vista web, con Ricarica — che buttava via ogni scansione aperta e sembrava un crash più che qualcosa di richiesto. Quel menu ora è soppresso ovunque tranne nei campi di testo, dove è l'unica via per copia e incolla.
  • Un albero di directory annidato oltre circa 210 livelli non chiude più l'applicazione. La visita ricorre una volta per livello e i suoi thread avevano lo stack predefinito ordinario, quindi un albero abbastanza profondo lo faceva traboccare — e poiché la scansione viene eseguita dentro l'applicazione stessa, se ne andava l'intera finestra senza lasciare alcun messaggio. I thread ricevono ora uno stack di 16 MiB e si fermano a 1024 livelli: la directory compare tra le voci che non è stato possibile leggere e la scansione prosegue.

0.7.0

Download e checksum

Aggiunto

  • Una prima scansione mostra ora ciò che sta trovando mentre procede, invece di un pannello vuoto e un contatore. Le cartelle di primo livello compaiono come una mappa e crescono man mano che il contenuto viene letto, così quella grande si annuncia di solito molto prima della fine. Le cifre sono ciò che è stato trovato finora e la vista lo dice: una cartella che ha smesso di crescere è indistinguibile da una completata. La stessa routine di disposizione disegna questa e la mappa finale, quindi nulla si riorganizza quando la scansione termina. Una nuova scansione lascia intatta la mappa che stai leggendo, come prima.
  • La stessa cartella può ora essere disegnata ad anelli invece che a rettangoli. Un anello per livello, e l'angolo di una voce è la sua quota nella cartella che la contiene: quanto in profondità arriva qualcosa, e cosa sta dentro cosa, diventa l'immagine invece di qualcosa da dedurre dall'annidamento. La treemap resta l'impostazione predefinita e questa è una seconda opinione, per un motivo che vale la pena conoscere: un arco più lontano dal centro copre più schermo a parità di dimensione, quindi confronta gli angoli e non le aree. Il clic seleziona, il doppio clic su una cartella ci entra, e l'interruttore dei colori funziona anche qui.

0.6.2

Download e checksum

Corretto

  • La legenda della mappa dell'età indicava ogni banda come "undefined" invece di "Meno di una settimana", "1–3 mesi" e così via. I colori e le cifre in byte accanto erano corretti; mancavano solo le parole, il che rendeva illeggibile l'unica parte della vista che spiega i colori.

0.6.1

Download e checksum

Aggiunto

  • La mappa può essere colorata per età invece che per tipo. Blu è questa settimana, rosso è oltre due anni, e una cartella prende l'età del suo byte mediano: metà di ciò che contiene è più vecchio di quanto dica il colore. La legenda accanto indica i byte di ogni banda per la cartella mostrata, trasformando «rosso vuol dire vecchio» in «qui ci sono 48 GB non toccati da due anni». La data della cartella stessa è ignorata di proposito: cambia quando le si aggiunge qualcosa accanto e non dice nulla del contenuto.

Corretto

  • Gli snapshot importati con spacetrace import si aprono nell'app. Venivano salvati con una radice malformata e l'app li rifiutava come albero inutilizzabile.

0.6.0

Download e checksum

Aggiunto

  • Quando una scansione non avanza più, la barra di avanzamento lo dice e indica la cartella su cui è in attesa, invece di animare un indicatore su una scansione che non va da nessuna parte. Una condivisione di rete che ha smesso di rispondere si blocca nel kernel e nessuna app può sbloccarla — ma sapere su cosa è in attesa permette di decidere se aspettare o fermarsi.
  • L'intera cronologia di una cartella su una linea. Cronologia mostra in un grafico tutti gli snapshot archiviati di una cartella, con accanto ciò che è cambiato tra una coppia e l'altra; un clic su un passaggio apre il confronto per quel salto preciso. L'asse parte da zero, quindi l'altezza della linea è la dimensione stessa.

Prestazioni

  • Le scansioni usano al massimo otto thread invece di uno per core, risultando più veloci su ogni albero di directory misurato: 39% su uno piccolo, 11% su uno grande. Una scansione è limitata dalle chiamate di sistema: oltre un certo punto i thread aspettano nel kernel invece di lavorare.
  • Le scansioni su macOS sono circa 2,3 volte più rapide, grazie alla stessa modifica nel motore di scansione: il sistema può indicare i nomi di una cartella e le dimensioni dei suoi file in un'unica richiesta invece di una per file.

Corretto

  • La barra di avanzamento sembrava bloccarsi alla fine di ogni scansione: dopo la scansione c'è un secondo passaggio che cerca i cloni copy-on-write, e nessun contatore si muoveva. Ora quella fase indica “Completamento” e conta ciò che controlla, invece di mostrare un numero di file fermo.

0.5.0

Download e checksum

Aggiunto

  • Gli snapshot ora portano un checksum del proprio contenuto. Uno snapshot scaricato da un agente e alterato durante il trasferimento viene rifiutato invece che disegnato: un bit invertito lascia un albero perfettamente valido, e una treemap rappresenta un numero sbagliato con la stessa sicurezza di uno giusto.

Modificato

  • Il database degli snapshot che questa app condivide con lo strumento da riga di comando passa a un nuovo schema. Questa versione legge senza problemi quello vecchio; il contrario non vale, quindi aggiorna entrambi insieme se usi entrambi.

0.4.2

Download e checksum

Corretto

  • Il .dmg non si apriva più su macOS. L'identità di firma introdotta nella 0.4.1 veniva applicata anche all'immagine disco, e un'immagine firmata da un certificato di cui macOS non si fida viene rifiutata già al montaggio: l'avviso compariva quindi all'apertura del file scaricato, prima ancora di avviare l'app. L'immagine torna non firmata; l'app al suo interno mantiene la propria identità.

0.4.1

Download e checksum

Corretto

  • macOS dimenticava tutti i permessi concessi a ogni aggiornamento: senza un'identità di firma stabile il sistema considera ogni versione un'app diversa. L'Accesso completo al disco risultava attivo pur essendo ignorato, e ogni scansione chiedeva di nuovo cartella per cartella. Ora l'app mantiene una sola identità fra le versioni, quindi un permesso concesso una volta resta concesso.

0.4.0

Download e checksum

Aggiunto

  • Script di installazione temporanei per macOS e Windows che scaricano il pacchetto con curl o Invoke-WebRequest, lo verificano con SHA256SUMS e lo installano. Un download fatto così non porta i contrassegni scritti da un browser, quindi Gatekeeper e SmartScreen non scattano. Spariranno quando l'app sarà firmata.
  • Senza Accesso completo al disco, macOS chiede il permesso per ogni cartella protetta separatamente — durante la scansione, in un ordine imprevedibile. La schermata iniziale ora lo dice prima della prima scansione e offre un pulsante che porta direttamente al pannello giusto delle Impostazioni di Sistema. Anche la finestra di sistema spiega finalmente perché un analizzatore di disco legge i tuoi file.

Modificato

  • Il pannello Novità ora elenca solo le versioni pubblicate. Le voci già pronte ma non incluse in nessuna versione descrivevano lavoro che la tua copia non contiene.

Corretto

  • Le istruzioni di installazione per macOS descrivevano il trucco del clic destro e Apri, rimosso da Apple in macOS 15. Ora indicano il percorso Impostazioni di Sistema → Privacy e sicurezza → Apri comunque.

0.3.1

Download e checksum

Corretto

  • Il controllo degli aggiornamenti funziona. La 0.3.0 lo annunciava, ma non è stato pubblicato alcun manifest di aggiornamento, quindi l'app non aveva nulla da controllare.

0.3.0

Download e checksum

Aggiunto

  • Anche i messaggi di errore sono nella sua lingua. Ciò che dice il sistema operativo — Permission denied e simili — resta nelle sue parole, perché sono quelle che aiutano quando le si cerca.
  • All'avvio l'app verifica la presenza di una versione più recente e propone di installarla. Nulla viene scaricato finché non lo si chiede. Su macOS l'app non è ancora firmata, quindi dopo un aggiornamento il sistema potrebbe chiedere di confermarla di nuovo.
  • L'app parla cinque lingue: inglese, turco, italiano, francese e tedesco. Al primo avvio segue la lingua del sistema e la scelta si può cambiare in qualsiasi momento.
  • Un pannello con la versione e la build in esecuzione e le novità delle ultime versioni. Funziona anche offline: il changelog è compilato dentro l'app stessa.

Prestazioni

  • Aprire una scansione grande consuma meno memoria, grazie alla rappresentazione dell'albero più compatta nel motore di scansione.

0.2.0

· tappa di sviluppo

Aggiunto

  • Pacchetti installabili per macOS, Windows e Linux, compilati a ogni push.
  • Un interruttore per scegliere quale misura seguono la mappa e gli elenchi: quella dichiarata dai file o quella occupata sul disco.

Modificato

  • La finestra non si blocca mai. Le operazioni lunghe girano fuori dal thread principale e riportano l'avanzamento, e una scansione può essere annullata mentre è in corso.

0.1.0

· tappa di sviluppo

Aggiunto

  • La prima app desktop: la treemap di una cartella, l'albero accanto e i dettagli dell'elemento selezionato sulla destra.
  • Apri una nuova scansione, uno snapshot salvato o uno snapshot letto direttamente da un agente in esecuzione su un server o NAS.
  • Sposta elementi nel Cestino dall'app, dietro una conferma che indica esattamente cosa verrà rimosso.

Tutte le release · Scarica

Riga di comando

0.10.0

Download e checksum

Aggiunto

  • spacetrace scan --ssh host /path analizza una macchina raggiungibile via ssh, senza installarci nulla, e conserva lo snapshot nel database locale, dove scans, diff, ls --scan e verify lo trattano come qualsiasi altro. Una copia di questa stessa versione viene caricata in una directory temporanea privata dall'altra parte (questo binario se lì gira, altrimenti la release pubblicata per quella piattaforma, verificata con SHA256SUMS e messa in cache), esegue la scansione, rimanda il proprio database e viene rimossa: anche in caso di errore, con Ctrl-C e quando spacetrace viene terminato di colpo, perché il lato remoto fa pulizia appena la sessione finisce. Una sola connessione, quindi al massimo una richiesta di password. Lo snapshot porta il nome host e il percorso della macchina remota, e così entra nella sua cronologia. Il costo: accesso ssh, un upload di circa 7 MB a ogni esecuzione e spazio in /tmp o $HOME per lo snapshot. Non ancora disponibile su Windows.
  • spacetrace scan s3://bucket/prefix analizza un bucket S3 - AWS, oppure MinIO, Cloudflare R2, Backblaze B2 e Wasabi tramite --endpoint - e --save lo salva come un normale snapshot che ls --scan, diff --path s3://..., age --scan ed export leggono senza modifiche. Credenziali e regione arrivano dalle stesse fonti che legge la CLI aws, nello stesso ordine: chiavi, un ruolo assunto, un token di identità web, IAM Identity Center dopo aws sso login, credential_process, le credenziali del container ECS/EKS e i metadati dell'istanza EC2. Le chiavi temporanee vengono rinnovate prima della scadenza; per un ruolo che richiede un codice MFA non viene chiesto nulla, quindi esportare prima le sue chiavi con aws configure export-credentials. --no-sign-request elenca un bucket pubblico. Un bucket AWS viene elencato con 16 richieste alla volta, suddivise per cartella (587.000 chiavi in 30 s invece di 175 s, misurato verso us-west-2); ogni altro --endpoint resta un flusso unico finché --threads non ne chiede di più, perché su MinIO l'elenco parallelo è risultato più lento. Le chiavi sono mostrate come cartelle, divise su /. Il totale conta solo le versioni correnti: versioni vecchie, marcatori di eliminazione e upload multipart incompleti sono fatturati ma non elencati, e l'output lo dice. Le chiavi con un segmento . o .. non vengono mostrate: contano come voci illeggibili e l'output le nomina. diff --path s3://... confronta solo snapshot dello stesso servizio, quindi un bucket MinIO e uno AWS con lo stesso nome non vengono mai accoppiati.
  • Nuovo: spacetrace watch <folder> mostra dal vivo quali cartelle crescono o si riducono da quando è partito, a che velocità, le più grandi per prime - le stesse righe che riporterebbe diff. Scansiona una volta, poi segue gli eventi del filesystem (FSEvents, inotify, ReadDirectoryChangesW) e rilegge con lo scanner solo le cartelle che nominano, quindi collegamenti fisici, collegamenti simbolici, --exclude, -x e --depth significano quello che significano per scan. In un terminale si aggiorna sul posto, in una pipe aggiunge righe, con --json scrive un oggetto JSON per aggiornamento; --interval ne fissa il ritmo. Un file con collegamenti fisici viene seguito tramite dispositivo e inode e contato una volta sola, quindi una cartella di build piena di collegamenti fisici non richiede una nuova scansione completa; solo gli eventi che il sistema segnala come persi, o un collegamento i cui altri nomi non si trovano, ne avviano una, e l'output lo dice; i cloni contano per la loro dimensione intera. Su Linux, se i watch di inotify finiscono, si ferma indicando il sysctl che alza il limite.
  • spacetrace pkgs dice a quale pacchetto installato appartengono i byte di una cartella, e quanti non appartengono a nessuno - di solito la parte che qualcuno ha messo lì a mano. Con un singolo file al posto di una cartella, indica il pacchetto che lo possiede. dpkg, pacman, apk e Homebrew vengono letti direttamente dal disco, e rpm viene interpellato dove esiste un database rpm; un database che non si riesce a leggere viene nominato nell'output invece di contare in silenzio i suoi file come senza pacchetto. Sui sistemi con /usr unificato, una lista che dice /bin/ls viene abbinata a /usr/bin/ls, dove il file si trova davvero: confrontando le stringhe così come sono, il 17% della /usr di Debian 12 sarebbe risultato senza pacchetto. Su macOS vengono lette anche le ricevute di installazione: tutto ciò che un .pkg ha installato - i pacchetti di Apple, i Command Line Tools, Office, Node.js - viene attribuito al suo pacchetto con lo stesso elenco di file che dà pkgutil --files, letto direttamente dal disco in una frazione di secondo invece che in secondi. Una scansione di /System/Volumes/Data/Applications dà la stessa risposta di una di /Applications, e un file che un aggiornamento ha rinominato con maiuscole diverse conta ancora per il suo pacchetto. Una ricevuta danneggiata viene indicata nell'output e le altre vengono lette comunque. I file generati dallo script di installazione di un pacchetto, come il bytecode Python o le cache dei font, non compaiono in nessuna lista e risultano senza pacchetto. Funziona solo su questa macchina, quindi uno snapshot di un altro host viene rifiutato.
  • L'agent ora espone metriche Prometheus su /metrics, dietro lo stesso token bearer del resto della sua API. Per ogni radice configurata: quando è iniziato lo snapshot più recente e quanto è durato, la dimensione logica e quella su disco, file, directory, percorsi illeggibili, lo spazio libero e totale che ha registrato, se una scansione è in corso e quanti snapshot sono conservati; in più la build e l'ora di avvio. Una radice mai scansionata compare comunque, con zero snapshot, così che si possa impostare un avviso su "mai scansionata". Una raccolta legge solo ciò che è già memorizzato - non avvia scansioni e non tocca i dischi scansionati - e ha richiesto 2,2 ms con 20.005 snapshot memorizzati. La configurazione di raccolta è in docs/AGENT.md.
  • Su macOS, spacetrace scan --save e le scansioni pianificate dell'agente partono dall'ultimo snapshot e rileggono solo le cartelle che FSEvents indica come cambiate: /Applications in 239 ms invece di 406 ms. Il risultato è quello di una scansione completa, oppure è una scansione completa: ogni dubbio (nessun cursore, altro volume, journal lento o perso, troppe modifiche, base più vecchia di due giorni, opzioni diverse, base danneggiata o importata) significa una scansione completa, e lo snapshot ne registra il motivo. --full e incremental = false per radice forzano una scansione completa. Una radice su un volume diverso dalla cartella temporanea, come un disco esterno, viene sempre scansionata per intero: lì non si può contare sul fatto che FSEvents abbia già numerato una modifica fatta subito prima della scansione.
  • scan --json riporta rescan (full, incremental o fallback:<reason>) e un oggetto incremental (tempo di replay e di caricamento della base, cartelle rilette, voci riutilizzate).
  • spacetrace scan --disk auto|ssd|hdd regola il ritmo della scansione sul disco sottostante. hdd usa un solo thread e, su Linux, chiede le voci di ogni cartella nell'ordine in cui si trovano sul disco; auto, il valore predefinito, riconosce i dischi rotanti su Linux e scansiona tutto il resto come prima. Su un disco rotante simulato una scansione a freddo ha richiesto 0,9 s invece di 11,5 s. --json riporta il ritmo (disk, threads, disk_decided). L'agente accetta la stessa impostazione per radice come disk.

Modificato

  • Su btrfs e XFS l'occupazione su disco ora conta una sola volta i blocchi condivisi tra file, come li conserva il disco: le copie reflink (cp --reflink, il comportamento predefinito di coreutils 9) e gli snapshot btrfs non vengono più contati una volta per nome. Eseguito come root su btrfs, un file compresso conta per la sua dimensione compressa. Misurato: tre copie reflink di un file da 100 MB riportavano 300 MB e ora riportano 100 MB, quanto dice df; un log compresso da 100 MB riporta 3 MB invece di 100 MB. I totali su questi filesystem quindi scendono, e un confronto con uno snapshot preso da una versione precedente mostra un calo mai avvenuto sul disco. Senza root i file compressi restano alla dimensione non compressa e il riepilogo lo dice. Su ZFS avverte che i cloni di blocchi e i blocchi deduplicati non sono visibili a una scansione. Per farlo ogni file su btrfs e XFS viene aperto una volta, il che costa da 0,4 a 0,9 ms ogni 1.000 file con cache calda, di più su XFS quando la maggior parte dei blocchi è condivisa. --no-clone-dedupe lo disattiva e restituisce il numero di du.

Prestazioni

  • Salvare uno snapshot richiede circa il 17% di tempo in meno: l'hash del contenuto viene calcolato mentre le righe vengono scritte, non in un secondo passaggio. Il /status dell'agente non riporta più la fase checksumming.
  • Le scansioni su Linux sono più veloci: le cartelle vengono lette in grandi blocchi e ogni voce viene interrogata rispetto alla propria cartella, senza allocazioni per voce. Ne beneficia di più la build statica con cui viene distribuito l'agente — da 1,3 a 3,4 volte più veloce sugli alberi misurati — e le build glibc dal 6 al 14%.
  • Sui filesystem XFS che contengono file reflink, le scansioni con più thread non sono più lente di quelle con uno solo: il filesystem viene interrogato sui blocchi condivisi da un thread alla volta, a gruppi. Un albero di 100.000 file reflink ha richiesto 200 ms invece di 855 ms a cache calda e 248 ms invece di 971 ms a cache fredda. XFS senza file reflink, btrfs ed ext4 restano invariati.
  • Su Windows, la scansione di un intero volume NTFS eseguita come amministratore legge la master file table (MFT) del volume in un solo passaggio sequenziale, invece di aprire ogni file. Il risultato è identico voce per voce, cosa che la CI verifica su un volume reale. Tutto il resto — una cartella sotto la radice del volume, senza privilegi di amministratore, ReFS, FAT, un'unità di rete — viene percorso come prima. --no-mft percorre sempre.

Corretto

  • spacetrace update non fallisce più su una connessione lenta. Il download dell'archivio girava con lo stesso limite di cinque secondi del controllo di versione, e quel limite copre l'intera risposta, quindi un archivio da 12 MB richiedeva 2,4 MB/s o andava in timeout. Ora i download hanno cinque minuti.
  • spacetrace age --scan ID riportava 0 B in ogni fascia di età per ogni snapshot salvato; solo una scansione nuova mostrava le dimensioni reali. Ora uno snapshot dà la stessa risposta della scansione da cui è stato salvato.
  • Uno snapshot inviato o scaricato viene controllato per intero prima di essere salvato: il suo albero deve essere coerente e ogni valore del tipo giusto. Finora uno snapshot con checksum corretto e albero rotto veniva salvato comunque, e da lì ogni comando che leggeva quel database falliva; ora viene rifiutato e non ne resta nulla. Viene rifiutato anche uno snapshot datato più di un giorno nel futuro: sarebbe rimasto per sempre il più recente della sua cartella. Il controllo non rallenta le scansioni dell'agent, e uno snapshot che dichiara un numero assurdo di file non fa più andare in crash spacetrace all'apertura né interrompere la scansione successiva di quella cartella.
  • Un comando il cui output viene chiuso in anticipo (spacetrace scans | head -1) ora termina in silenzio con codice 0, invece di andare in panic con "failed printing to stdout: Broken pipe". 0 e non 141, perché un lettore che si ferma ha avuto ciò che voleva, e uno script con set -o pipefail altrimenti fallirebbe dove nulla è andato storto.
  • Su macOS lo spazio di una famiglia di cloni APFS viene ora attribuito allo stesso membro a ogni scansione: quello meno profondo e, a parità, quello con il percorso che viene prima. Prima andava al membro che un thread di scansione raggiungeva per primo; il totale era giusto, ma con cloni in cartelle diverse i byte passavano dall'uno all'altro da una scansione all'altra senza che nulla cambiasse sul disco, e un diff di due snapshot di un disco invariato mostrava una cartella crescere e un'altra ridursi. Un diff contro uno snapshot più vecchio può mostrare un tale spostamento un'ultima volta. Il tempo di scansione non cambia.

0.9.1

Download e checksum

Modificato

  • Anche i cloni piu piccoli di 64 KiB vengono deduplicati e il numero di thread predefinito e sceso da 8 a 6. La soglia di dimensione esisteva perche ogni controllo di clone costava l'apertura di un file; ora non costa nulla, quindi un albero con molti cloni piccoli riporta meno di prima - piu vicino a quanto df dice che il disco occupa. clones_deduped cresce di conseguenza. Il valore predefinito dei thread e stato rimisurato dopo che il parcorso e diventato piu economico: 6 e al meglio o vicino su tutti e tre i corpus di prova, mentre 8 ora costa il 22% sul piu grande. Si puo cambiare con --threads.

Prestazioni

  • Le scansioni su macOS sono piu veloci del 15-33% e occupano un terzo di memoria in meno. I cloni copy-on-write venivano individuati in una fase a se stante dopo la scansione, aprendo ogni file candidato uno alla volta; APFS riporta la famiglia di cloni dentro l'elenco della directory che la scansione stava gia leggendo, quindi quella fase e sparita. Misurato contro la build precedente, cache calda, esecuzioni alternate: 50.189 voci da 94 a 78 ms, 415.503 voci da 485 a 412 ms, 1.064.452 voci da 2133 a 1431 ms. La memoria di picco sulla piu grande di queste e scesa da 299 a 200 MiB, perche la scansione non costruisce piu un percorso completo per ogni voce elencata - solo per le directory in cui scende. La deduplicazione dei cloni ora e gratuita invece di costare il 15-31% della scansione, quindi --no-clone-dedupe non fa piu guadagnare velocita.

Corretto

  • ca_file in remotes.toml ora funziona su Windows e si fida solo del certificato che indica. Collegarsi a un agent che serve il proprio TLS li falliva con InvalidCertificate(UnknownIssuer) per quanto corretto fosse il certificato: il client lo aggiungeva alle radici della piattaforma, e il verificatore di Windows riconsidera una radice aggiunta solo quando la catena torna incompleta - la catena di un certificato autofirmato non e incompleta, e completa e non attendibile, quindi la radice aggiunta non veniva mai guardata, e autofirmato e l'unico tipo per cui ca_file esiste. Il client ora si fida esattamente dei certificati in ca_file e di nessuna autorita pubblica, che e quanto la documentazione descriveva gia come pinning e quanto avrebbero dovuto fare anche le altre piattaforme.

0.9.0

Download e checksum

Aggiunto

  • L'agente può ora servire la propria API su HTTPS da sé: tls_cert_file e tls_key_file sotto [server] nella configurazione, entrambi o nessuno. Finora serviva un reverse proxy davanti, il che su un NAS senza un nome di dominio proprio significava mettere in chiaro sulla rete il token e l'inventario dei file. Basta un certificato autofirmato; al client si indica di quale fidarsi con ca_file in remotes.toml. Dove un nome di dominio esiste un reverse proxy resta la scelta migliore, perché rinnova i certificati e l'agente no: un certificato rinnovato richiede un riavvio. Il certificato deve portare come subject alternative name l'indirizzo usato dai client.

0.8.0

Download e checksum

Aggiunto

  • L'agente ora limita quante richieste può fare un singolo indirizzo client, rispondendo 429 con un Retry-After oltre il limite. Il conteggio avviene prima della verifica del token, perché le due cose che un token non può limitare sono proprio quelle che ne hanno bisogno: /health non richiede token per scelta e un token errato costa comunque una risposta. Il valore predefinito di 120 al minuto è molto al di sopra dell'uso normale; ciò che impedisce è che un client bloccato in un ciclo di tentativi consumi il disco che l'agente esiste per misurare. Dietro un reverse proxy ogni richiesta arriva dal proxy, quindi il limite diventa un'unica quota condivisa: dove questo conta, impostare rate_limit_per_minute = 0 e limitare nel proxy.

Modificato

  • L'esportazione CSV elenca ora ogni cartella seguita subito dal suo contenuto. Prima scriveva insieme tutte le voci allo stesso livello e i loro contenuti molto più in basso, separando una cartella dai suoi file di intere pagine nel foglio di calcolo. Le colonne e le righe stesse non cambiano.
  • spacetrace scan --save ora dice cosa sta facendo mentre scrive l'istantanea nel database. Quella scrittura non è una breve coda in fondo alla scansione — su una cartella di 412.983 voci la scansione richiede 0,8 secondi e la scrittura altri 0,6, e con dieci milioni di voci sono circa quattordici secondi — e finora la riga di avanzamento veniva cancellata appena finita la scansione, lasciando il comando apparentemente bloccato. L'agente segnala le stesse due fasi su /status.

Corretto

  • spacetrace dupes elencava gli stessi duplicati in un ordine diverso a ogni esecuzione, così il confronto fra due report mostrava differenze inesistenti. L'ordine ora segue i percorsi, che non cambiano da un'esecuzione all'altra.
  • Un albero di directory annidato oltre circa 210 livelli non interrompe più la scansione. La visita ricorre una volta per livello e i suoi thread avevano lo stack predefinito ordinario, quindi un albero abbastanza profondo lo faceva traboccare e il processo moriva del tutto — nell'agent questo si portava via l'API HTTP e lo scheduler, e nessuno snapshot veniva scritto. I thread della visita ricevono ora uno stack di 16 MiB e si fermano a 1024 livelli, registrando la directory come illeggibile e proseguendo; un albero più profondo di quanto il sistema operativo possa nominare viene segnalato allo stesso modo, con il suo percorso e il suo motivo.

0.7.0

Download e checksum

Aggiunto

  • spacetrace dupes trova i file con contenuto identico e dice quanto spazio restituirebbe eliminare le copie in più. Legge il meno possibile: file di lunghezza diversa non possono coincidere e la scansione conosce già ogni lunghezza, quelli di pari lunghezza vengono separati dai loro primi 16 KiB, e solo ciò che supera entrambi i filtri viene letto per intero. Su un albero di 33,8 GiB e 375.585 file questo ha significato 2,6 GiB di letture — il 7,7% — e una seconda esecuzione ne ha letti 30 MiB, perché gli hash dei file interi vengono ricordati fra un'esecuzione e l'altra. I nomi collegati da hardlink sono elencati a parte e contati come spazio non recuperabile, perché condividono già i loro byte. Non viene eliminato nulla: quale copia tenere non è una decisione per cui questo strumento abbia il contesto.

Prestazioni

  • La scansione usa molta meno memoria. Prima la scansione costruiva un proprio albero e lo copiava in quello finale, tenendoli entrambi in memoria al picco; ora scrive le voci direttamente nell'albero finale man mano che legge ogni cartella. Su una cartella di 412.983 voci il picco è sceso da 91,5 MB a 57,6 MB, e a 49,3 MB quando esiste una scansione precedente della stessa cartella da cui dimensionare la struttura. La scansione impiega lo stesso tempo di prima e tutti i valori riportati sono invariati.

0.6.1

Download e checksum

Corretto

  • Uno snapshot creato con spacetrace import poteva essere salvato ma non più riaperto: ogni tentativo falliva con "entry 0 is not a root: it claims a parent". L'importazione scriveva una radice malformata e nessuno se ne accorgeva fino alla lettura. Gli snapshot già importati sono leggibili con questa versione senza doverli reimportare.

0.6.0

Download e checksum

Aggiunto

  • --threads N sceglie con quanta ampiezza gira una scansione, e l'agente accetta la stessa impostazione per ogni radice. Non esiste un numero migliore: l'ottimo si sposta con la dimensione dell'albero, e chi conosce il proprio disco sceglierà meglio di qualsiasi valore predefinito.
  • Quando una scansione non avanza più, la riga di avanzamento lo dice e indica la directory su cui è in attesa, invece di continuare a sostenere di stare scansionando. Una condivisione di rete che ha smesso di rispondere si blocca nel kernel e nessun timeout in questo programma può sbloccarla — ma sapere su cosa è in attesa è ciò che permette di decidere se aspettare o interrompere.
  • spacetrace import legge un export JSON di ncdu o gdu e lo archivia come snapshot, così le scansioni che avete già diventano un termine di paragone — comprese quelle di una macchina che non esiste più per essere riscansionata. La dimensione apparente propria di una cartella viene scartata all'ingresso: contarla è ciò che fa divergere du --apparent-size dalla cifra riportata da questo strumento.
  • spacetrace export --format csv scrive una riga per voce, pronta per un foglio di calcolo, con --depth per fermarsi ai primi livelli di un albero che nessun foglio aprirebbe per intero. Entrambe le misure sono colonne anziché un'impostazione — quanto dichiarano i file e quanto occupa il disco — accanto al costo proprio di ogni voce, così un totale si può ricostruire senza contare un file una volta per ogni cartella sopra di esso. Virgole, virgolette e a capo nei nomi vengono quotati correttamente: sono caratteri legali in un nome di file e un export ingenuo li trasforma in righe silenziosamente sbagliate.
  • spacetrace age risponde all'altra domanda che pone un disco pieno: non cosa è grande, ma cosa non tocca nessuno. I byte sono raggruppati per data di ultima modifica — le fasce le decidete voi con --bands — e pesati per dimensione anziché per numero di file, perché centomila vecchi file sorgente non sono la risposta e una vecchia immagine disco sì. I file senza data di modifica registrata sono riportati a parte invece di essere contati come vecchi di cinquant'anni.

Modificato

  • L'endpoint /status dell'agente ora dice se una scansione in corso sta lavorando o è bloccata. scanning contiene un oggetto per scansione anziché un semplice percorso: contatori in tempo reale, la fase (walking o finishing — dopo la scansione si muove solo il controllo dei clone, quindi chi conta solo i file legge una scansione sana come bloccata) e, quando tutti i contatori si sono fermati, da quanto tempo e quali cartelle sta aspettando. Il blocco è cronometrato da un osservatore interno all'agente, quindi interrogare /status di rado non gonfia il valore.

Prestazioni

  • Le scansioni usano ora al massimo otto thread invece di uno per core, risultando più veloci su ogni albero di directory misurato: 39% su uno piccolo, 11% su uno grande. Una scansione è limitata dalle chiamate di sistema: oltre un certo punto i thread aspettano nel kernel invece di lavorare. --threads N consente di forzare il valore.
  • Le scansioni su macOS sono circa 2,3 volte più rapide. La vecchia scansione chiedeva al kernel i nomi di una cartella e poi, una volta per voce, la dimensione e le date; macOS può rispondere a entrambe con una sola chiamata, e ora lo fa. Misurato da un capo all'altro su due alberi reali: da 1293 ms a 556 ms su uno, da 1554 ms a 646 ms sull'altro, con entrambe le versioni che riportano totali identici byte per byte.

Corretto

  • L'indicatore di avanzamento sembrava bloccarsi verso la fine di ogni scansione. Dopo la scansione c'è un secondo passaggio che cerca i cloni copy-on-write, e non muoveva alcun contatore: su ~/github erano 1193 dei 1989 millisecondi. Ora quella fase si dichiara e conta ciò che controlla.
  • Una condivisione di rete il cui server è sparito non blocca più l'intera scansione. La prima richiesta a un filesystem montato non può essere interrotta una volta bloccata e, poiché una cartella viene elencata su un solo thread, una condivisione morta si portava dietro tutte le cartelle vicine. Le scansioni ora leggono prima la tabella dei mount, si avvicinano al punto di mount tramite un thread che sono disposte ad abbandonare e dopo 60 secondi lo registrano come percorso illeggibile e proseguono — il risultato manca solo di quel filesystem e lo dichiara, invece di non arrivare mai. --mount-timeout 0 ripristina il comportamento precedente; il costo misurato del controllo è circa un millisecondo su un albero di 300.000 voci.

0.5.0

Download e checksum

Aggiunto

  • Gli snapshot ora portano un checksum del proprio contenuto e spacetrace verify lo controlla. Uno snapshot alterato durante il trasferimento viene rifiutato all'importazione invece di essere creduto: un bit invertito lascia un albero perfettamente valido che riporta un numero sbagliato, ed è proprio il guasto che finora nessuno poteva vedere.

Modificato

  • Il database degli snapshot passa a un nuovo schema per fare posto al checksum. Le versioni precedenti non apriranno più un database scritto da questa: lo dicono chiaramente invece di leggerlo male. Se usi l'app desktop sulla stessa cronologia, aggiorna anche quella.

0.4.1

Download e checksum

Corretto

  • install.sh e spacetrace update trovano di nuovo la versione giusta. Tutti e tre i componenti pubblicano nello stesso repository, quindi per un momento la versione più recente secondo GitHub era quella dell'hub — che install.sh non poteva installare e che il controllo aggiornamenti leggeva come nessuna versione.

0.4.0

Download e checksum

Aggiunto

  • L'agente segnala su /status quando esiste una versione più recente. Solo una segnalazione: non installa mai nulla da sé. Una volta al giorno, senza inviare nulla sulla macchina, e update_check = false lo disattiva del tutto.
  • spacetrace update installa la versione più recente al posto di quella in esecuzione, dopo aver verificato il download con il file SHA256SUMS pubblicato.
  • Un controllo giornaliero della presenza di una nuova versione, stampato su stderr in una riga. Funziona solo su una build taggata in un terminale, si spiega la prima volta e si disattiva del tutto con SPACETRACE_NO_UPDATE_CHECK=1.
  • --version indica ora di quale build si tratta: il commit, la data di compilazione e il canale. L'agente riporta gli stessi dati su /health e /status.
  • Ogni versione arriva ora con note di rilascio scritte in cinque lingue, e il repository ha un CHANGELOG.md.

Modificato

  • La promessa che le dimensioni su disco coincidano con du in assenza di blocchi condivisi è ora garantita da un test che esegue davvero du, invece di essere un'affermazione nella documentazione.

Prestazioni

  • La scansione di un albero grande usa sensibilmente meno memoria: un nodo è passato da 104 a 72 byte e i nomi sono confluiti in un'unica arena condivisa.

Corretto

  • install.sh verifica il download con il file SHA256SUMS pubblicato. Il file veniva pubblicato a ogni versione e non veniva mai letto.
  • I clone APFS vengono contati una sola volta. Tre cloni da 100 MB occupano 0 MB di spazio aggiuntivo sul disco, e ora spacetrace lo dice mentre du continua a riportare 400 MB. Per disattivarlo: --no-clone-dedupe.
  • Su Windows spacetrace legge ora lo spazio realmente occupato da un file e conta una sola volta i file con collegamenti fisici, invece di ripiegare sulla lunghezza dichiarata.

0.3.0

· tappa di sviluppo

Aggiunto

  • Una scansione in corso può essere annullata e un sottoalbero può essere rimosso da un albero caricato senza invalidare le voci circostanti.
  • Ordinamento e disegno dichiarano ora esplicitamente la misura usata, così un elenco che dice prima i più grandi concorda con il numero stampato accanto.
  • Ogni push lascia una build scaricabile, e install.sh la installa su Linux e macOS.

0.2.0

· tappa di sviluppo

Aggiunto

  • spacetrace-agent: un agente in sola lettura per server e NAS, con scheduler integrato e API HTTP. Non cancella mai nulla.
  • La capacità del filesystem è indicata come spazio libero e totale anziché come percentuale di riempimento, perché su APFS e nei thin pool la percentuale contraddice df.
  • Il motore di layout treemap: riquadri squarified, livello di dettaglio e hit-testing che segue la gerarchia.

Corretto

  • L'apertura di un database non acquisisce più un lock di scrittura, quindi una lettura non può più far fallire una scansione ancora in corso.

0.1.0

· tappa di sviluppo

Aggiunto

  • Scansiona una directory e scopri dove è finito lo spazio, con entrambe le misure affiancate: quella dichiarata dai file e quella realmente occupata sul disco.
  • Snapshot memorizzati in SQLite, così una scansione di oggi può essere confrontata con una del mese prossimo.
  • spacetrace diff indica la cartella responsabile di una variazione invece di elencare ogni file al suo interno.
  • Esportazione nel formato ncdu, così uno snapshot di spacetrace può essere aperto con strumenti già esistenti.
  • I collegamenti simbolici non vengono seguiti, i collegamenti fisici sono contati una volta sola e un file sparso riporta quanto occupa davvero, non la lunghezza dichiarata.

Tutte le release · Scarica

Hub

0.5.1

Download e checksum

Corretto

  • Uno snapshot inviato viene controllato per intero prima di essere salvato: il suo albero deve essere coerente e ogni valore del tipo giusto. Finora uno con checksum corretto e albero rotto veniva salvato comunque, e da lì ogni pagina che lo leggeva falliva; ora viene rifiutato con 400 e non ne resta nulla. Viene rifiutato anche uno snapshot datato più di un giorno nel futuro, perché sarebbe rimasto per sempre il più recente della sua macchina - quindi un agent con l'orologio così avanti riceve 400 a ogni invio finché l'orologio non viene corretto.

0.5.0

Download e checksum

Aggiunto

  • Una regola di avviso può inviare un'email invece di chiamare un webhook. Basta scrivere un indirizzo dove andava l'URL; una regola ha esattamente una destinazione, quindi non c'è nulla che possa disallinearsi. La posta si configura in una sezione [smtp] del file di configurazione dell'hub e non dalla dashboard, perché il database è il file di cui si fa il backup e una password al suo interno viaggia con ogni copia. Una nuova pagina Impostazioni mostra il relay, mai la password, e invia un messaggio di prova lungo lo stesso percorso di un avviso: un successo lì significa che gli avvisi arriveranno, un fallimento dice cosa non va prima che un disco si riempia.
  • Persone, invece di una sola credenziale condivisa. Una nuova pagina Persone assegna un token a testa con uno di due ruoli: chi guarda vede l'intera flotta e non può cambiarne nulla, un amministratore può cambiare tutto, compreso chi altro ha accesso. Le regole di avviso registrano ora chi le ha create, la domanda a cui un accesso condiviso non ha mai potuto rispondere. Token e non password, di proposito: un token generato può essere conservato come hash semplice perché non c'è nulla da indovinare, una password scelta no. Il token nel file di configurazione dell'hub continua a funzionare e resta amministratore: è la via di rientro, ed è anche il motivo per cui l'ultimo amministratore non può revocare se stesso.

0.4.0

Download e checksum

Aggiunto

  • Uno snapshot inviato viene confrontato con il checksum che porta con sé e, se non corrisponde, rifiutato con un 400 anziché entrare nella flotta. Un bit invertito durante il trasferimento lascia un albero valido con un numero sbagliato: su un cruscotto ordinato per urgenza, sarebbe la macchina sbagliata in cima.

Modificato

  • Il database degli snapshot dell'hub passa a un nuovo schema per fare posto al checksum. Tornare a una versione precedente non aprirà più il file: lo dice chiaramente invece di leggerlo male. Mettere da parte una copia prima dell'aggiornamento non costa nulla.

0.3.1

Download e checksum

Modificato

  • La pagina Informazioni ora elenca solo le versioni pubblicate. Le voci già pronte ma non incluse in nessuna versione descrivevano lavoro che la tua copia non contiene.

0.3.0

Download e checksum

Aggiunto

  • La pagina About mostra ora quale build è in esecuzione (commit, data di compilazione e canale) e cosa è cambiato nelle ultime versioni.
  • /health riporta il commit e il canale accanto alla versione, così un container in esecuzione può essere identificato senza autenticarsi.

Prestazioni

  • Il caricamento di uno snapshot grande consuma meno memoria, grazie alla rappresentazione dell'albero più compatta nel motore di scansione.

0.2.0

· tappa di sviluppo

Aggiunto

  • Binari scaricabili per Linux e macOS, e immagini container sia per amd64 sia per arm64.

0.1.0

· tappa di sviluppo

Aggiunto

  • Un pannello della flotta: ogni agente e ogni radice in un'unica tabella, ordinati per chi esaurirà lo spazio per primo.
  • Un andamento di crescita e una previsione, che dichiara apertamente quando non c'è storico sufficiente per prevedere alcunché.
  • Avvisi di soglia con periodo di attesa, recapitati via webhook, più token per gli agenti emettibili e revocabili dal pannello.

Tutte le release · Scarica