Commit Graph
22 Commits
Author SHA1 Message Date
Andy DixonandClaude Opus 5.5 1387e52064 Release 1.0.0
Declare the snapshot format (v1) stable, bump the version, ship the man
page in release archives and deb/rpm/apk/Arch packages, add a Homebrew
formula template with make brew-formula, and update the changelog,
roadmap, README and development notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:46:13 +01:00
Andy DixonandClaude Opus 5.5 68e6a07cdd Add mapsize(1) manual page and make install
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:43:18 +01:00
Andy DixonandClaude Opus 5.5 0fa49c662c Release target: cross-platform archives and Linux packages
Stamp brand.Version via ldflags; build tar.gz/zip for linux, darwin,
windows and the BSDs plus .deb/.rpm/.apk/Arch packages via nfpm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 08:56:04 +01:00
Andy Dixon f4ef12a0dd Fix review findings: hostile snapshots, stale async results, trash safety
- snapshot: depth limit (stack overflow in exporters), decompressed-size
  limit (gzip bombs), per-node size cap and saturating aggregation
- export: sanitise exclusion patterns from snapshot metadata
- tui: drop duplicate/trash/filter results that belong to a replaced
  tree; cancel duplicate search on rescan
- trash: refuse symlinked or foreign shared-filesystem trash dirs; never
  overwrite an existing trashed item
- scan: no symlink following without inode identity; correct unscanned
  count and keep real read errors after cancellation
2026-10-02 08:46:52 +01:00
Andy Dixon 11a0e401ee Evaluate path predicates incrementally from cached directory paths 2026-10-02 08:40:10 +01:00
Andy Dixon 0aa93a00d9 Add export tests for terminal-safe output 2026-10-02 08:39:29 +01:00
Andy Dixon 2d72e5b32e Document 16-colour mapping 2026-10-02 08:39:14 +01:00
Andy Dixon 830f2e7fc3 Align usage text 2026-10-02 08:39:08 +01:00
Andy Dixon cb8ae54258 Add perceptual 16-colour mapping
Dark shades map to black and greys to the grey/white entries while
saturated category colours keep their hue, instead of the stock
conversion's bright yellow/cyan shadows.
2026-10-02 08:38:36 +01:00
Andy Dixon d7e1d3e620 Fix CSV path joining and relative exclusions; add scan benchmark script 2026-10-02 08:37:18 +01:00
Andy Dixon 8559616b65 Add mouse tests; tidy TUI idioms 2026-10-02 08:36:23 +01:00
Andy Dixon 71556b76de Speed up snapshot loading; polish help and table bars
Decompression and checksumming overlap with parsing via a pipe, and a
concrete-typed varint reader removes per-byte interface calls
(0.39s -> 0.29s for 458K nodes).
2026-10-02 08:35:47 +01:00
Andy Dixon 6bb8ddc0f7 Fix 32-bit build, add 386 to CI, log scan completion 2026-10-02 08:33:47 +01:00
Andy Dixon b771a57bc4 Add performance measurements, trash test and documentation 2026-10-02 08:31:42 +01:00
Andy Dixon 0e5b9f7cc3 Add interactive snapshot comparison, CLI tests and treegen
--compare opens the TUI with growth/shrink colouring unless a report is
requested. treegen builds deterministic synthetic trees (Unicode,
hostile names, sparse files). MAPSIZE_DEBUG_PANIC verifies terminal
restoration on UI and scanner panics.
2026-10-02 08:28:52 +01:00
Andy Dixon df8b10c6dd Add Bubble Tea TUI with interactive treemap
Cell canvas renderer with frame cache and a perceptual 256-colour
quantizer; responsive geometry (large/medium/small/too-small);
squarified treemap with nested previews, LOD grouping, category
colouring and adaptive labels; spatial arrow navigation with stable
NodeID selection; zoom and breadcrumbs; modal system (info, help,
confirm, save); list, file-type, top-N, scan-info, duplicate and
comparison views; live search/filter; mouse support; move-to-trash.
2026-10-02 08:25:35 +01:00
Andy Dixon e8c831cb47 Add squarified treemap layout and spatial navigation
Edge-snapped integer layout that partitions its bounds exactly,
level-of-detail selection, and a deterministic geometric neighbour
search for arrow-key navigation. Fuzz-tested.
2026-10-02 08:09:52 +01:00
Andy Dixon 4350da0f16 Add filter query language
Lexer, recursive-descent parser (AND/OR/NOT, parentheses, implicit AND,
IN lists, size/age/date units) and an evaluator that computes filtered
subtree sizes in two linear passes without double counting.
2026-10-02 08:06:21 +01:00
Andy Dixon 900931ae26 Add CLI reports, snapshot format and duplicate detection 2026-10-02 08:02:32 +01:00
Andy Dixon 8233ddcfba Add bounded concurrent scanner
Single-writer controller with a select loop that offers jobs and accepts
results simultaneously, so bounded channels cannot deadlock. statx/fstatat
relative to the directory fd on Linux/macOS, portable fallback elsewhere.
Hard links counted once, symlink loops detected, virtual filesystems
skipped, errors classified and surfaced.
2026-10-02 08:02:32 +01:00
Andy Dixon 61fd9bf711 Add filesystem inventory model
Append-only chunked node arena with stable NodeIDs, intrusive child
lists, per-directory category totals and batched ancestor propagation.
2026-10-02 08:02:32 +01:00
Andy Dixon 8feaf44a2a Initial Go project structure, docs, build and CI 2026-10-02 08:02:32 +01:00