Skip to content

Commit eeac1f5

Browse files
Prithvi-Webclaude
andcommitted
Release v3.2.0
Two features since v3.1.0: stopping a running scan from the Scan button, and a VS Code extension that runs TreeMap inside the editor. Version bump plus the lockfile refresh, and a handoff rewrite recording the traps this session paid for — subagents with write access editing source mid-review, an armed test timer holding the event loop, npm being npm.cmd on Windows, and Write emitting raw control bytes into a regex class. The installers themselves are built by .github/workflows/release.yml on real macOS and Windows runners when the tag is published; Wine is not installed here and building Windows artifacts on a Mac would be strictly worse. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 6a0debd commit eeac1f5

3 files changed

Lines changed: 58 additions & 59 deletions

File tree

‎HANDOFF.md‎

Lines changed: 55 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,60 @@
11
# TreeMap — session handoff
22

3-
**Date:** 3 August 2026
4-
**Status:** **v3.0.0 shipped; six post-release commits on `main` AWAITING THE
5-
USER'S GITHUB DESKTOP PUSH** (`d3aa336` settings-open fix + rounded floating
6-
sidebar · `de867ce` UI performance (backdrop-blur cull, static blobs,
7-
content-visibility, delegation, formatDate memo) · `f731994` three UI defects
8-
(donut legend overflow, light-theme --warn contrast, picker aria-labels) ·
9-
`5fba59a` **session restore** (boot reloads the last scan; contract-tested;
10-
spec in `docs/superpowers/specs/`) · `935c211` polish (row rhythm, amber
11-
reclaim pills, sidebar shadow) · plus the earlier `f1be026`). Suite is now
12-
**829 (827 pass, 2 skips)**. The scroll architecture changed: **the window
13-
never scrolls; `main` is the app's one scroller** — the sidebar is a floating
14-
rounded card pinned in place. `.glass` no longer live-blurs (in-flow cards use
15-
`--glass-strong` tint; only sidebar/modals/search/tm-timebar keep real
16-
backdrop blur). These fixes reach the user's installed app only after a new
17-
release (recipe below) — v3.1.0 is the natural next step when the user is
18-
present to re-grant Full Disk Access and push/publish.
19-
20-
**Previous release status (28 July):** ALL 21 FEATURES SHIPPED · PHASE 5 COMPLETE · v3.0.0 BUILT.
21-
Phase 0 ✅ · Phase 1 ✅ (A1–A5) · Phase 2 ✅ (B1–B5) · Phase 3 ✅ (C1–C8) ·
22-
Phase 4 ✅ (D1, D2, D3) · **Phase 5 ✅ (1–5)** — only the push + publish remain,
23-
and both are the user's to do.
24-
**Suite:** 828 (826 pass, 2 platform-skips) · typecheck clean · zero console errors
25-
Working tree clean, no dev server running, nothing of mine left on the user's
26-
machine (checked: `~/Library/Services` empty, no `fleet.json` in the real
27-
app-data, no stray node processes).
28-
29-
**⚠️ SIX COMMITS ON `main` AWAITING THE USER'S GITHUB DESKTOP PUSH:**
30-
`0dc4136` UI layout fixes + Fleet pairing instructions · `c2fedaa` README sweep
31-
+ views.svg · `80208ee` treemap toolbar wrap · `4d037e2` handoff · `764c18d`
32-
app-owned secrets + tool-owned empty folders · `f6adaf7` **Release v3.0.0**.
33-
34-
**✅ v3.0.0 IS PUBLISHED AND FULLY VERIFIED (29 Jul 2026).** The user pushed
35-
(3-OS Tests green at `c430c90` after the Windows separator fix) and published
36-
"v3.0.0 - 21 Updates"; Build & Release succeeded from `c430c90`, so the release
37-
carries every commit including the CI fix. Verified per recipe step 7:
38-
**9 assets** (one more than v2.x — `TreeMap.3.0.0.exe` is the **D3 portable
39-
Windows build**, from `win.target: ["nsis","portable"]`; GitHub stores the
40-
space as a dot). Both ymls read 3.0.0; zip/dmg/Setup-exe sha512+size match
41-
byte-exact; DMG mounts with a 3.0.0 app, gdu bundled, codesign clean; zip app
42-
codesign clean; both exes have MZ headers; `releases/latest` → v3.0.0; and the
43-
shipped app.asar contains this session's markers (appOwned 5, ownsItsContents
44-
2, fleet-help 10, treemapCanvasHeight 3). **Verification trap: raw `grep` on
45-
app.asar reports zero even for strings that ARE there** (BSD grep chokes on
46-
the binary) — `npx asar extract` first, then grep the extracted files.
47-
48-
**v3.0.0 is built, installed to `/Applications` and smoke-tested** (`/api/system`
49-
answers, `/api/capabilities` reports `version: 3.0.0`, bundle carries
50-
`Resources/gdu/gdu`, `codesign --verify --deep --strict` passes,
51-
`npm rebuild better-sqlite3` done and the suite re-run green afterwards).
52-
53-
**⚠️ THE USER MUST RE-GRANT FULL DISK ACCESS.** The reinstall reset it, and
54-
scans of Desktop/Documents/home now return 0 items and sit at "running". This is
55-
trap 5, not a regression — proven by scanning a TCC-free path in the same
56-
installed build, which completed normally. Tell them:
57-
`open "x-apple.systempreferences:com.apple.preference.security?Privacy_AllFiles"`
58-
→ toggle TreeMap off→on → relaunch.
3+
**Date:** 25 August 2026
4+
**Status:** **v3.2.0 committed, AWAITING THE USER'S GITHUB DESKTOP PUSH + RELEASE.**
5+
Three commits on `main` since the v3.1.0 release: `879eff7` scan cancellation,
6+
`6a0debd` the VS Code extension, and the `Release v3.2.0` version bump.
7+
Suite is **899 (897 pass, 2 platform skips)**; typecheck clean; build clean.
8+
9+
**Two features shipped this session, both from the user's own spec:**
10+
11+
1. **Stop a running scan.** The Scan button becomes a red Stop while a scan is
12+
in flight. `POST /api/scan/:scanId/cancel` settles the record, and a gdu
13+
subprocess is killed rather than left to finish its shard (measured: one
14+
process before, zero after). Design doc:
15+
`docs/superpowers/specs/2026-08-25-scan-cancellation-design.md`.
16+
2. **A VS Code extension** in `vscode-extension/`. Clones or reuses a TreeMap
17+
checkout, builds it, runs its server as a child process, frames the
18+
visualizer in a webview. Design doc:
19+
`docs/superpowers/specs/2026-08-25-vscode-extension-design.md`.
20+
21+
**⚠️ THE RELEASE IS THE USER'S STEP AND IS WHAT THEY ACTUALLY WANT.** Their
22+
stated goal is "people to be easily able to download the .dmg and .exe". That
23+
happens through `.github/workflows/release.yml`, which builds BOTH on real
24+
macOS and Windows runners when a `v*` tag is published. Do NOT try to build
25+
Windows installers on the Mac — electron-builder needs Wine, which is not
26+
installed, and CI does it properly anyway. Steps 6–7 of the release recipe
27+
below are all that remain.
28+
29+
**New traps found this session (all paid for):**
30+
31+
- **A review subagent with write access edited the source mid-review.** One
32+
transiently mutated `gduScanner.ts` to test the new tests and restored it;
33+
another left a `clearTimeout` in `tests/scanCancel.test.ts` that got swept
34+
into a commit and made the file hang. **Use read-only agents (`agentType:
35+
'Explore'`) for review, and `git diff` the whole tree before committing.**
36+
- **Never leave a non-unref'd `setTimeout` armed in a passing test.** The SSE
37+
cancellation test's 8s watchdog held the event loop for its full duration
38+
after the test passed — 8.8s per run of that file. Clear it on BOTH settle
39+
paths from inside the promise; clearing it from the outer `finally` instead
40+
made the test hang.
41+
- **`npm` on Windows is `npm.cmd`.** libuv's PATH search only appends `.com`
42+
and `.exe` and never reads PATHEXT, so `spawn('npm', …, {shell:false})` is
43+
ENOENT there. Spawning `npm.cmd` directly is not the fix either — Node
44+
refuses a `.cmd` without a shell since the CVE-2024-27980 mitigation. Route
45+
npm through `cmd.exe /d /s /c`; keep `git` on a direct spawn, because git is
46+
the one handed user-controlled values.
47+
- **`Write` can emit literal control bytes into a regex character class.** A
48+
`[\s -]` written that way landed on disk as raw `\x00-\x1f`, invisible in
49+
review. Prefer an explicit `charCodeAt` scan over a class with a range.
50+
- **The dashboard's `mount()` is a no-op**, so `switchView` cannot repaint the
51+
three panels `beginScanChrome` turns into skeletons. Any path that ends a
52+
scan without `finishScan` must call `restoreDashboardPanels()`.
53+
54+
**Pre-existing defect found in passing, NOT fixed (out of scope):** the A1
55+
instant-index-open path calls `finishScan` before any scanId exists, firing
56+
three `?scanId=null` requests that 404 on every boot. A background task was
57+
spawned for it.
5958

6059
Spec: `/Users/prithvivinay/Desktop/TreeMap-Master-Implementation-Prompt.md`
6160

‎package-lock.json‎

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "treemap",
3-
"version": "3.1.0",
3+
"version": "3.2.0",
44
"description": "TreeMap — a GrandPerspective-style disk space visualizer for macOS, Linux and Windows",
55
"author": "Prithvi-Web",
66
"main": "electron/main.js",

0 commit comments

Comments
 (0)