Commit Graph
21 Commits
Author SHA1 Message Date
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