SAM v3.2.1 — The Deliverable
3.2.0 was withdrawn — it did not launch. This is that release plus the one-line fix that makes it start. Everything below is what 3.2.0 was going to bring.
3.2.0 did not launch. Please use this one.
Fixed
-
The packaged app crashed on startup. better-sqlite3 13 moved its native binary from
build/Release/better_sqlite3.nodetoprebuilds/<platform>-<arch>.node, and the code that
points the app at that binary still looked only at the old location. Missing it is silent: the
app then let the library find its own copy, the library looked inside the read-only archive
where no such file can live, and the whole thing died before the first window. Confirmed on
Apple Silicon and Windows.Nothing in the test suite could have caught it — the tests, the type check and the linter all
passed, because none of them run the packaged app. What caught it was the smoke test that
boots the real build, after the installers had already been uploaded. 3.2.0 has been withdrawn.Both layouts are now checked, and a test asserts that the installed library still keeps its
binary somewhere the app looks — so the next version that moves it fails in a second instead of
in a release.
SAM hands you something now. Ask for a deck and get a deck; point it at a spreadsheet and get
what's wrong with the data rather than the data back. And the phone stops being a viewer.
Added
- Slide decks. Ask for one and SAM writes the whole thing — structure, content, a
presentable HTML file saved to your vault. It opens offline and prints to PDF, because the
deck is a single self-contained file with nothing loaded from anywhere. No charts for exactly
that reason: charting libraries come from a CDN, and a deck that needs the internet to render
is not a file you can rely on in a room. - Spreadsheets and CSVs, read properly.
analyse_dataprofiles a file instead of dumping
it: what each column actually is, and then the things that are wrong with it — duplicate rows,
columns that are 90% empty, one column holding two kinds of value because someone typed "N/A"
into a number field, values sitting miles outside the rest. Those findings are the point; the
table is the evidence. Bounded (8 MB / 50k rows) and it tells you when it truncated, because
stats over a silently clipped sample are worse than no stats. - Home and Lock Screen widgets on the phone. Quick actions that open SAM ready to go. A
widget link pre-fills what you're about to say — it does not send it, because any app on your
phone can open a URL and none of them should be able to put words in SAM's ear. @a past task on the phone. Type@, pick something SAM did earlier, and its context
rides along with your next message.
Changed
- The Pocket works on iPad. It claimed to since the day it shipped and nothing in it ever
looked at the window size, so on a 12.9" screen it stretched rather than adapted — chat set to
a thousand-point line, a pairing form running the full width. It now lays out for the window
it is actually in, which is the honest test: an iPad in Slide Over is a phone-shaped sliver and
should look like one. - The app icon is SAM's own mark, drawn at full resolution instead of a different picture
scaled up. brew install --cask richhabits/tap/samtracks releases again. The cask had been stuck at
v1.5.0 for six months while the step meant to bump it skipped in silence. The tap updates
itself now — nothing to provision, nothing to forget.
Fixed
- Seven more read routes were open to any program on your machine. The 3.1.1 sweep stopped at
files; these read you — a running account of what SAM did and what it asked you to approve,
what it has learned about you, the folders you watch, your usage./api/proactivewas the
worst of them: reading it drained it, so anything that asked ate your briefings instead of
copying them. None of it is a credential, which is exactly why it was passed over twice. - Several smaller ones found by turning the security scanner up rather than waiting: a biased
draw in a pairing code, a regex an attacker could make crawl, HTML entities decoded twice so
that text could become a tag, a spreadsheet cell able to break the table it was rendered into. - Zero known vulnerabilities, including a high-severity denial of service in a build
dependency.
Internal
- Node 20 reached end of life in April; everything moved to Node 22, which also unblocked eleven
major dependency upgrades that had been stuck behind it — Express 5, React 19, TypeScript 7. - Two failures that had been hiding themselves: a pull request with a conflict reported nothing
rather than "conflict" (every check silently skipped), and a release step that silently
published nothing. Both are loud now.
🔒 Verify your download (SHA-256)
The one-paste installers verify this automatically. To check by hand, compute the hash and match:
- macOS/Linux:
shasum -a 256 <file> - Windows (PowerShell):
Get-FileHash <file> -Algorithm SHA256
a45320252471dda8dd604325bc2a3a6d56ef6e919631d8932ed8f8ee6af07dad SAM-3.2.1-arm64.dmg
3f85693e5bef563ba1cd42aeae99c5b0f00f503754998e55c813925b94ffb650 SAM-3.2.1.AppImage
8e9a1be59cbfc316cdfcbd61b0553241c15be6afc7811c3ad4ed2d0a22f234d4 SAM-3.2.1.dmg
d4d16462461d281d7a0d6e60227a5b869c12c3dede4a703ef4e2d33af097bc3d SAM-Setup-3.2.1.exe
222c020455336b2407b6bf0fe1da3d3312a8d8250bb72831cd3447cedfd3065e sam_3.2.1_amd64.deb