mordaunt.dev/code

code / leita / log

leita log

177 commits, newest first

  1. 2026-10-11e805937leita: rename estoile to leita, with the found cell as the mark
  2. 2026-10-1194b176dlogo: move the lab out to the logo repository
  3. 2026-10-0927bb561view: ask where to save an exported report
  4. 2026-10-0922853afjm: move to c0e7b21, with the save dialog
  5. 2026-10-092a1890aapp: free a scan problem at the size it was allocated
  6. 2026-10-09a678ee5view: show the export as busy until its notice
  7. 2026-10-09b91e1caapp: free a notice at the size it was allocated
  8. 2026-10-094edb043scan: free a path at the size it was allocated
  9. 2026-10-09a3d9adalicence: license estoile as source-available, free for personal use
  10. 2026-10-099e44b35readme: introduce estoile with its mark and hero art
  11. 2026-10-0963faf5elogo: add the lab the star of cells was chosen in
  12. 2026-10-090a2db50git: ignore the worktrees agents make under .claude
  13. 2026-10-09df89a47query: own KEPT_MIN again so the view links no sqlite
  14. 2026-10-09f86355aapp: wait for Rescan before clicking it in the rescan tests
  15. 2026-10-098b3cc7cversion: say which estoile this is from a package of its own
  16. 2026-10-09ad048b8report: name a kept entry by history's entry_path, not a copy of it
  17. 2026-10-09c4182a6history: own KEPT_MIN, which the window's queries read from it
  18. 2026-10-0938bc007app: export a report of the scan from the window
  19. 2026-10-0962153eereport: write a report as a PDF on A4 or Letter paper
  20. 2026-10-097ca23d7main: say which estoile this is with --version, from git
  21. 2026-10-0974dd7e8main: compare each scan with the last of its place and keep it
  22. 2026-10-095b02e87history: own the rules a finished scan is kept by
  23. 2026-10-09e878c84history: move the scan store out of the window so the command line can share it
  24. 2026-10-0987a11a8pdf: add a demo that writes a sample disk report
  25. 2026-10-092fe3c86pdf: write pages of unicode text with subset fonts
  26. 2026-10-092bde66fpdf: deflate streams with fixed huffman codes
  27. 2026-10-091dc0968main: give a report the space of the volume it walked or made up
  28. 2026-10-096a9961cscan: own the question of how large a filesystem is and what is free
  29. 2026-10-096c90311main: write a report with --report, --format, --top and --reclaim
  30. 2026-10-095055567report: describe a scan as plain data and write it as CSV, JSON or HTML
  31. 2026-10-09210c87dkinds: move the classification of a name out of the window
  32. 2026-10-0901f24f2all: rename sonar to estoile
  33. 2026-10-093934949mark: draw the star of cells
  34. 2026-10-099b034f7scan: read a made-up disk when SONAR_SYNTHETIC names a day
  35. 2026-10-093cf07e1synth: make up a Mac's disk to scan, paced like a walk
  36. 2026-10-092fe149cview: draw sonar's mark in the toolbar
  37. 2026-10-098ebbaaaview: float action notices as toasts in the lower left
  38. 2026-10-0911f2796app: record each path a request changes in the audit trail
  39. 2026-10-09bd84364history: keep an audit trail of changes made on disk
  40. 2026-10-09816040ascan: merge the 24-byte node into the batched macOS walker
  41. 2026-10-09ebef4d8walk: add a gentle pace that reads with at most 4 threads
  42. 2026-10-09365d326walk: count only the CPUs a cgroup quota allows
  43. 2026-10-0995efcb0walk: fit the number of readers to the cores and the medium
  44. 2026-10-093a185d8scan: learn whether a volume is on flash or a spinning disk
  45. 2026-10-095e2d809walk: record macOS mount points without walking them
  46. 2026-10-09003f725walk: charge a hard-linked file once
  47. 2026-10-09ad210d1walk: read macOS directories in batches with getattrlistbulk
  48. 2026-10-089024e07survey: keep totals and child lists by directory, not by node
  49. 2026-10-08dc779f5scan: name a node by a handle into a pool, not a string
  50. 2026-10-0856aa93entfs: drop an MFT entry's logical size, which nothing reads now
  51. 2026-10-08a696f24scan: drop a node's logical size, which nothing reads
  52. 2026-10-08e8ace79just: run the hot recipe's watch loop with BSD stat and date
  53. 2026-10-08532d95creclaim: offer and empty the Finder's Trash on macOS
  54. 2026-10-08f596faaapp: run the window's tests where the temp directory is not /tmp
  55. 2026-10-08ccd2212scan: find a directory's mount on macOS through statfs
  56. 2026-10-08fb6b1dahistory: keep the store under Application Support on macOS
  57. 2026-10-08815da97files: move to the Trash, rename and measure space on macOS
  58. 2026-10-08a8e3602jm: move to main, with the expand and collapse merge (9d00e63)
  59. 2026-10-084c1bb3aview: open a folder of the chart's tree on a reader's expand
  60. 2026-10-084c82ebdview: say each chart to a screen reader a layer at a time
  61. 2026-10-08320c334walk: ask about a directory's entries in inode order
  62. 2026-10-089b91dc1history: keep each scan, and colour the next by what changed since
  63. 2026-10-08ef70869reclaim: offer what rebuilds itself, and delete it for good
  64. 2026-10-08bba5d42view: show what was there until a directory just opened is answered
  65. 2026-10-089a3b310view: light a kind from its chip, and colour only the kinds turned on
  66. 2026-10-085a10c15view: keep the legend's row in either colouring, and name each kind in a word
  67. 2026-10-087cc0249view: lay out every window size from the smallest up without a clash
  68. 2026-10-0844bdb13view: show the lit entry in every chart, and light it from either list
  69. 2026-10-089601477view: colour the kinds with seven colours that can be told apart
  70. 2026-10-0815c4af0view: an icicle view, and colouring by type as well as by folder
  71. 2026-10-08e3da162view: scroll the location bar a full step a notch, under its border
  72. 2026-10-08b746977app: wait for the listing in tests that use its rows
  73. 2026-10-0894efa6agui: hot-reload the view with just hot
  74. 2026-10-08c52bdd3view: light an entry's arc or box while its contents row is hovered
  75. 2026-10-08225b704view: draw the directory as a treemap, picked by a mode switch
  76. 2026-10-0860708b5view: one location bar for where the window is and what to scan
  77. 2026-10-08332d2dfview: say what is hovered in a block of fixed height above the disc
  78. 2026-10-086eaee5eview: keep the sunburst in the middle of its room both ways
  79. 2026-10-08ba6999eview: share the window between grips, folding the side column away
  80. 2026-10-083965880view: hide the side panels from the panel, into a rail
  81. 2026-10-08e23cb17view: hide the side panels to give the sunburst the window
  82. 2026-10-08a6b7d62view: set the window's name larger, between Primer's title steps
  83. 2026-10-08cfa8663view: ease the sunburst's arcs toward each new layout
  84. 2026-10-08f9c70e8view: clip and fade list names that run longer than their cell
  85. 2026-10-08f817950gui: right-click menus on the contents and largest files rows
  86. 2026-10-08069fb75gui: show the disk's free space beside what the scan found
  87. 2026-10-0887172f4gui: free Locate's path with the allocator that made it
  88. 2026-10-08c4d8b1egui: walk the history with the mouse and act on entries from a menu
  89. 2026-10-08565bfc3survey: forget a node removed from the disk after it was read
  90. 2026-10-084ce16a4view: put the side panels' scroll bars at the window's edge
  91. 2026-10-07f281e3cgui: draw the open directory as a sunburst
  92. 2026-10-0720bd0ddgui: show a scan in a Primer window as it streams in
  93. 2026-10-0740c11b8sonar: pin jm as a submodule and build the window
  94. 2026-10-0781208d5survey: move the scan driver and totals out of main
  95. 2026-09-24ea224f9sonar: test every imported package in one run
  96. 2026-09-246f4e288sonar: follow the collection rename from jfm to jm
  97. 2026-09-23a266c75sonar: import flow from the jfm collection
  98. 2026-09-23599c622sonar: import the debug allocator from the jfm collection
  99. 2026-09-23620f76bsonar: replace makefile with justfile
  100. 2026-09-200e96291main: charge the tree once, however it was read
  101. 2026-09-20262baddscan: move the snapshot to the package that uses it
  102. 2026-09-20a55548cmain: reach the tree through the fill that is filling it
  103. 2026-09-20cf8be8dwalk: name the entry point for what it reads
  104. 2026-09-205e1620fscan: widen file-private helpers to the package
  105. 2026-09-20e247b0cmain: run a reader from one place
  106. 2026-09-2060efb2cmain: let any reader fill a live scan
  107. 2026-09-20564dc3cscan: choose a reader from whether the volume opens
  108. 2026-09-20956dcddmain: parse the command line with core:flags
  109. 2026-09-20d8d1bb6main: say what TOP_N counts
  110. 2026-09-20f5d0117flow: stop the manage tests racing on one thread's arena
  111. 2026-09-20f929178style: run odinfmt over the repository
  112. 2026-09-2063847c8build: settle the formatting rules in the repository
  113. 2026-09-2017d958estyle: run odinfmt over the files this branch touched
  114. 2026-09-20c853f8bbuild: run the walk tests
  115. 2026-09-20f2ded2bwalk: test what a walk records
  116. 2026-09-2090ccc9bwalk: read directories with linux syscalls
  117. 2026-09-20b612a0awalk: read a directory behind a seam
  118. 2026-09-20f58720bscan: resolve a target on unix
  119. 2026-09-205eb2ae2scan: name the top of a target and the path below it
  120. 2026-09-20295a060scan: build paths with the host's separator
  121. 2026-09-20e226b37ntfs: test the unix volume against an image file
  122. 2026-09-20c8e5117ntfs: read volumes on unix
  123. 2026-09-205097ba0walk: drop the allocator nobody reads
  124. 2026-09-203e69628walk: drop the error a directory that will not open never raises
  125. 2026-09-2003b698fmain: refuse an option it does not understand
  126. 2026-09-2005918e2main: stop a parent chain that leaves the tree
  127. 2026-09-20183118dmain: stop emptying the tree under the thread reading it
  128. 2026-09-20a2e9d3fntfs: put extra names at a fixed slot so a replay repeats itself
  129. 2026-09-20b65b98bmain: free the table when projecting it fails
  130. 2026-09-20d9269bfwalk: free the directories a stopped scan never reached
  131. 2026-09-206319df6flow: hand back the work a stopped run never took
  132. 2026-09-208059c60scan: answer the elevation question on every platform
  133. 2026-09-1833cca93flow: let the manager judge a failed item
  134. 2026-09-182c30a33walk: free a directory path when the scan is cancelled
  135. 2026-09-1869a16c1walk: traverse with manage instead of rounds
  136. 2026-09-1846562aeflow: add the manager shape for work that discovers itself
  137. 2026-09-186517805scan: give the snapshot retry count a reason
  138. 2026-09-18d918c91main: move the graph work onto a builder thread
  139. 2026-09-18813560cscan: publish snapshots so a frame never waits on a build
  140. 2026-09-187bc10afmain: time each phase of a simulated frame
  141. 2026-09-18e47006amain: keep directory totals across frames instead of rebuilding them
  142. 2026-09-18caf098dntfs: let a scan be watched while it runs, and watch one
  143. 2026-09-18bbd06a1main: let the walker's width be set from the command line
  144. 2026-09-18a94743fmain: report from the tree rather than the table
  145. 2026-09-1869f47ecntfs: project the table into the shared tree
  146. 2026-09-1841cc602walk: add a portable directory reader
  147. 2026-09-189531748scan: add the tree every reader writes into
  148. 2026-09-186f5c729main: resolve the target before choosing a reader
  149. 2026-09-18e3bb973scan: add the seam between readers and the tree
  150. 2026-09-1885353cbntfs: pass each the same load the workers were sized with
  151. 2026-09-180c616a1main: expose the reader's knobs
  152. 2026-09-1813ee0a6ntfs: read the MFT in parallel
  153. 2026-09-18ddd3faantfs: let a volume be reopened for concurrent reads
  154. 2026-09-18ac798c6flow: add a package for this project's concurrency shapes
  155. 2026-09-1868d04bcntfs: skip dead record runs using $MFT's own bitmap
  156. 2026-09-18fbed86antfs: read the volume unbuffered, with a flag to compare
  157. 2026-09-18b351ce9main: report where scan time goes
  158. 2026-09-18385967emain: check the attributed sum against $Bitmap
  159. 2026-09-1858ce957ntfs: count allocated clusters from $Bitmap
  160. 2026-09-187890196ntfs: count files whose data lives inside their MFT record
  161. 2026-09-173aa3d09build: run debug and test targets under AddressSanitizer
  162. 2026-09-17a5103b3debug: poison guards and freed blocks for AddressSanitizer
  163. 2026-09-1615e4760ntfs: size decoded run lists to their length before returning
  164. 2026-09-169f8e834debug: replace lifetime allocator with a bug-finding debug allocator
  165. 2026-09-16babaf2fbuild: replace build.cmd with a Makefile writing to build/
  166. 2026-09-1691d48e5build: add build script with debug, release, test, and check targets
  167. 2026-09-162f6bf90main: print largest files and directories from the MFT
  168. 2026-09-16d66668cntfs: measure allocation from run lists instead of header sizes
  169. 2026-09-163bff5eentfs: add parser tests
  170. 2026-09-162a1da12ntfs: read $MFT from a Windows volume or image
  171. 2026-09-164c32ba4ntfs: build entry table from records
  172. 2026-09-16dc6fe10ntfs: parse FILE records and attributes
  173. 2026-09-16fb720cfntfs: decode run lists
  174. 2026-09-162ae0666ntfs: parse the boot sector
  175. 2026-09-1682bbccentfs: add package doc, error type, and file references
  176. 2026-09-16fe70feclifetime: add debug allocator with grouped leak report
  177. 2026-09-16c6d0c19build: ignore compiler outputs