estoile log
142 commits, newest first
- 2026-10-092fe149cview: draw sonar's mark in the toolbar
- 2026-10-098ebbaaaview: float action notices as toasts in the lower left
- 2026-10-0911f2796app: record each path a request changes in the audit trail
- 2026-10-09bd84364history: keep an audit trail of changes made on disk
- 2026-10-09816040ascan: merge the 24-byte node into the batched macOS walker
- 2026-10-09ebef4d8walk: add a gentle pace that reads with at most 4 threads
- 2026-10-09365d326walk: count only the CPUs a cgroup quota allows
- 2026-10-0995efcb0walk: fit the number of readers to the cores and the medium
- 2026-10-093a185d8scan: learn whether a volume is on flash or a spinning disk
- 2026-10-095e2d809walk: record macOS mount points without walking them
- 2026-10-09003f725walk: charge a hard-linked file once
- 2026-10-09ad210d1walk: read macOS directories in batches with getattrlistbulk
- 2026-10-089024e07survey: keep totals and child lists by directory, not by node
- 2026-10-08dc779f5scan: name a node by a handle into a pool, not a string
- 2026-10-0856aa93entfs: drop an MFT entry's logical size, which nothing reads now
- 2026-10-08a696f24scan: drop a node's logical size, which nothing reads
- 2026-10-08e8ace79just: run the hot recipe's watch loop with BSD stat and date
- 2026-10-08532d95creclaim: offer and empty the Finder's Trash on macOS
- 2026-10-08f596faaapp: run the window's tests where the temp directory is not /tmp
- 2026-10-08ccd2212scan: find a directory's mount on macOS through statfs
- 2026-10-08fb6b1dahistory: keep the store under Application Support on macOS
- 2026-10-08815da97files: move to the Trash, rename and measure space on macOS
- 2026-10-08a8e3602jm: move to main, with the expand and collapse merge (9d00e63)
- 2026-10-084c1bb3aview: open a folder of the chart's tree on a reader's expand
- 2026-10-084c82ebdview: say each chart to a screen reader a layer at a time
- 2026-10-08320c334walk: ask about a directory's entries in inode order
- 2026-10-089b91dc1history: keep each scan, and colour the next by what changed since
- 2026-10-08ef70869reclaim: offer what rebuilds itself, and delete it for good
- 2026-10-08bba5d42view: show what was there until a directory just opened is answered
- 2026-10-089a3b310view: light a kind from its chip, and colour only the kinds turned on
- 2026-10-085a10c15view: keep the legend's row in either colouring, and name each kind in a word
- 2026-10-087cc0249view: lay out every window size from the smallest up without a clash
- 2026-10-0844bdb13view: show the lit entry in every chart, and light it from either list
- 2026-10-089601477view: colour the kinds with seven colours that can be told apart
- 2026-10-0815c4af0view: an icicle view, and colouring by type as well as by folder
- 2026-10-08e3da162view: scroll the location bar a full step a notch, under its border
- 2026-10-08b746977app: wait for the listing in tests that use its rows
- 2026-10-0894efa6agui: hot-reload the view with just hot
- 2026-10-08c52bdd3view: light an entry's arc or box while its contents row is hovered
- 2026-10-08225b704view: draw the directory as a treemap, picked by a mode switch
- 2026-10-0860708b5view: one location bar for where the window is and what to scan
- 2026-10-08332d2dfview: say what is hovered in a block of fixed height above the disc
- 2026-10-086eaee5eview: keep the sunburst in the middle of its room both ways
- 2026-10-08ba6999eview: share the window between grips, folding the side column away
- 2026-10-083965880view: hide the side panels from the panel, into a rail
- 2026-10-08e23cb17view: hide the side panels to give the sunburst the window
- 2026-10-08a6b7d62view: set the window's name larger, between Primer's title steps
- 2026-10-08cfa8663view: ease the sunburst's arcs toward each new layout
- 2026-10-08f9c70e8view: clip and fade list names that run longer than their cell
- 2026-10-08f817950gui: right-click menus on the contents and largest files rows
- 2026-10-08069fb75gui: show the disk's free space beside what the scan found
- 2026-10-0887172f4gui: free Locate's path with the allocator that made it
- 2026-10-08c4d8b1egui: walk the history with the mouse and act on entries from a menu
- 2026-10-08565bfc3survey: forget a node removed from the disk after it was read
- 2026-10-084ce16a4view: put the side panels' scroll bars at the window's edge
- 2026-10-07f281e3cgui: draw the open directory as a sunburst
- 2026-10-0720bd0ddgui: show a scan in a Primer window as it streams in
- 2026-10-0740c11b8sonar: pin jm as a submodule and build the window
- 2026-10-0781208d5survey: move the scan driver and totals out of main
- 2026-09-24ea224f9sonar: test every imported package in one run
- 2026-09-246f4e288sonar: follow the collection rename from jfm to jm
- 2026-09-23a266c75sonar: import flow from the jfm collection
- 2026-09-23599c622sonar: import the debug allocator from the jfm collection
- 2026-09-23620f76bsonar: replace makefile with justfile
- 2026-09-200e96291main: charge the tree once, however it was read
- 2026-09-20262baddscan: move the snapshot to the package that uses it
- 2026-09-20a55548cmain: reach the tree through the fill that is filling it
- 2026-09-20cf8be8dwalk: name the entry point for what it reads
- 2026-09-205e1620fscan: widen file-private helpers to the package
- 2026-09-20e247b0cmain: run a reader from one place
- 2026-09-2060efb2cmain: let any reader fill a live scan
- 2026-09-20564dc3cscan: choose a reader from whether the volume opens
- 2026-09-20956dcddmain: parse the command line with core:flags
- 2026-09-20d8d1bb6main: say what TOP_N counts
- 2026-09-20f5d0117flow: stop the manage tests racing on one thread's arena
- 2026-09-20f929178style: run odinfmt over the repository
- 2026-09-2063847c8build: settle the formatting rules in the repository
- 2026-09-2017d958estyle: run odinfmt over the files this branch touched
- 2026-09-20c853f8bbuild: run the walk tests
- 2026-09-20f2ded2bwalk: test what a walk records
- 2026-09-2090ccc9bwalk: read directories with linux syscalls
- 2026-09-20b612a0awalk: read a directory behind a seam
- 2026-09-20f58720bscan: resolve a target on unix
- 2026-09-205eb2ae2scan: name the top of a target and the path below it
- 2026-09-20295a060scan: build paths with the host's separator
- 2026-09-20e226b37ntfs: test the unix volume against an image file
- 2026-09-20c8e5117ntfs: read volumes on unix
- 2026-09-205097ba0walk: drop the allocator nobody reads
- 2026-09-203e69628walk: drop the error a directory that will not open never raises
- 2026-09-2003b698fmain: refuse an option it does not understand
- 2026-09-2005918e2main: stop a parent chain that leaves the tree
- 2026-09-20183118dmain: stop emptying the tree under the thread reading it
- 2026-09-20a2e9d3fntfs: put extra names at a fixed slot so a replay repeats itself
- 2026-09-20b65b98bmain: free the table when projecting it fails
- 2026-09-20d9269bfwalk: free the directories a stopped scan never reached
- 2026-09-206319df6flow: hand back the work a stopped run never took
- 2026-09-208059c60scan: answer the elevation question on every platform
- 2026-09-1833cca93flow: let the manager judge a failed item
- 2026-09-182c30a33walk: free a directory path when the scan is cancelled
- 2026-09-1869a16c1walk: traverse with manage instead of rounds
- 2026-09-1846562aeflow: add the manager shape for work that discovers itself
- 2026-09-186517805scan: give the snapshot retry count a reason
- 2026-09-18d918c91main: move the graph work onto a builder thread
- 2026-09-18813560cscan: publish snapshots so a frame never waits on a build
- 2026-09-187bc10afmain: time each phase of a simulated frame
- 2026-09-18e47006amain: keep directory totals across frames instead of rebuilding them
- 2026-09-18caf098dntfs: let a scan be watched while it runs, and watch one
- 2026-09-18bbd06a1main: let the walker's width be set from the command line
- 2026-09-18a94743fmain: report from the tree rather than the table
- 2026-09-1869f47ecntfs: project the table into the shared tree
- 2026-09-1841cc602walk: add a portable directory reader
- 2026-09-189531748scan: add the tree every reader writes into
- 2026-09-186f5c729main: resolve the target before choosing a reader
- 2026-09-18e3bb973scan: add the seam between readers and the tree
- 2026-09-1885353cbntfs: pass each the same load the workers were sized with
- 2026-09-180c616a1main: expose the reader's knobs
- 2026-09-1813ee0a6ntfs: read the MFT in parallel
- 2026-09-18ddd3faantfs: let a volume be reopened for concurrent reads
- 2026-09-18ac798c6flow: add a package for this project's concurrency shapes
- 2026-09-1868d04bcntfs: skip dead record runs using $MFT's own bitmap
- 2026-09-18fbed86antfs: read the volume unbuffered, with a flag to compare
- 2026-09-18b351ce9main: report where scan time goes
- 2026-09-18385967emain: check the attributed sum against $Bitmap
- 2026-09-1858ce957ntfs: count allocated clusters from $Bitmap
- 2026-09-187890196ntfs: count files whose data lives inside their MFT record
- 2026-09-173aa3d09build: run debug and test targets under AddressSanitizer
- 2026-09-17a5103b3debug: poison guards and freed blocks for AddressSanitizer
- 2026-09-1615e4760ntfs: size decoded run lists to their length before returning
- 2026-09-169f8e834debug: replace lifetime allocator with a bug-finding debug allocator
- 2026-09-16babaf2fbuild: replace build.cmd with a Makefile writing to build/
- 2026-09-1691d48e5build: add build script with debug, release, test, and check targets
- 2026-09-162f6bf90main: print largest files and directories from the MFT
- 2026-09-16d66668cntfs: measure allocation from run lists instead of header sizes
- 2026-09-163bff5eentfs: add parser tests
- 2026-09-162a1da12ntfs: read $MFT from a Windows volume or image
- 2026-09-164c32ba4ntfs: build entry table from records
- 2026-09-16dc6fe10ntfs: parse FILE records and attributes
- 2026-09-16fb720cfntfs: decode run lists
- 2026-09-162ae0666ntfs: parse the boot sector
- 2026-09-1682bbccentfs: add package doc, error type, and file references
- 2026-09-16fe70feclifetime: add debug allocator with grouped leak report
- 2026-09-16c6d0c19build: ignore compiler outputs