Repository navigation
v0.2.0
Stamped now runs on macOS, and it reads a leaked archive the way it usually arrives: a folder per mailbox, each split into parts.
New
- macOS builds for Apple Silicon and Intel, as a zipped
Stamped.app. - Folder imports.
stamped importreads a tree of mailboxes, names each mailbox after its folder, and imports the rest of the archive when one file is damaged. - A key store that you fill from the archive, from files or, only if you ask, from DNS (
stamped keys). Stamped still never looks up a key on its own. - Every verdict explained in plain language, next to the evidence.
- People and Timeline views, also on the command line (
stamped people). - A status button in the header bar shows imports and key lookups while you keep working;
stamped statusshows the same in a terminal.
Fixed
- After a small import, the window did not reload and kept showing the old count.
- Blank lines in CRLF messages were changed on import, which could break a signature that was intact.
- An archive key lookup counted rate-limited answers as missing keys.
- On macOS, an interrupted import was shown as still running.
Known limits
- On a very large archive the window can stop responding for a while. Moving the queries off the window's thread is planned for 0.3.0.
- On a Mac without Homebrew, text can render in the wrong typeface (body text in Adwaita Mono), and the buttons and menus that come from GTK itself stay in English under a German locale. The bundled GTK runtime lacks a fontconfig configuration; the fix (gjsify/gjsify#2350) reaches Stamped in 0.2.1.
- The Windows builds have not been tested.
First start on macOS
The app bundle is not signed or notarised, so macOS asks once per download:
- Unpack the zip and move
Stamped.appto/Applications. - Double-click it. macOS says it cannot verify the developer; close the dialog.
- Open System Settings → Privacy & Security, scroll to Security, click Open Anyway next to Stamped and confirm with your password.
Or run xattr -dr com.apple.quarantine /Applications/Stamped.app in Terminal.
What's Changed
- ci: rebuild site after each release by @JumpLink in #4
- feat: key store, lookups and keys CLI by @JumpLink in #5
- Import mail archives into a case folder, and search them by @JumpLink in #6
- Fetch missing keys automatically after import by @JumpLink in #7
- ci: cover packages in format and lint by @JumpLink in #8
- Verification window: verdicts, keys and the store screenshots by @JumpLink in #9
- CLI UX: case argument, caveat counts, concurrent key fetch by @JumpLink in #10
- Separate a wrong key from edited headers by @JumpLink in #11
- Orange site branding by @JumpLink in #12
- fix(store): name the errno when a write fails by @JumpLink in #15
- perf(store): faster import, --progress=jsonl by @JumpLink in #16
- Bundle the Node and GTK runtimes for macOS and Windows by @JumpLink in #17
- docs: narrow real-leak screenshot exception by @JumpLink in #18
- feat(gui): import via subprocess and lazy list by @JumpLink in #19
- feat(import): import a folder tree of mailboxes by @JumpLink in #20
- fix(import): name mailboxes in every progress line by @JumpLink in #21
- feat: explain every verdict in plain language by @JumpLink in #23
- Spike: local embedding models for semantic search by @JumpLink in #14
- feat(semantic): add vector store and RRF fusion by @JumpLink in #24
- feat(semantic): add node-llama-cpp embedder by @JumpLink in #25
- feat: full case summary in report and overview by @JumpLink in #26
- fix(gui): make case open and import work by @PhilippWaack in #22
- perf(import): faster import on Gjs by @JumpLink in #27
- feat: Personen and Zeitleiste views and CLI by @JumpLink in #28
- fix(import): keep CRLF blank lines byte-exact by @JumpLink in #29
- feat: import status file, stamped status, GUI banner by @JumpLink in #30
- Reader: mail-like sheet and open in mail program by @JumpLink in #32
- fix(import): surface sqlite errors in write path by @JumpLink in #33
- feat(semantic): background vector indexer and probe by @JumpLink in #37
- perf(gui): chunk refresh, async key lookup by @JumpLink in #35
- fix(gui): one open-with button in header by @JumpLink in #38
- fix: archive bulk lookup treated rate limits as misses by @JumpLink in #39
- feat(gui): status button replaces import banner by @JumpLink in #40
- perf(store): reuse prepared statements on import by @JumpLink in #36
- ci(release): install pinned appimagetool by @JumpLink in #44
- ci: run the pinned gjsify CLI after install by @JumpLink in #50
- feat(gui): icon tabs, evidence help, slimmer verdict by @JumpLink in #43
- fix(store): detect a dead import PID on macOS by @JumpLink in #47
- fix(gui): start import subprocess on node by @JumpLink in #51
- fix(keys): store each fetched key as it arrives by @JumpLink in #53
- chore(gjsify): bump to 0.64.4 and drop hex BLOB shim by @JumpLink in #66
- feat(semantic): state model and controller by @JumpLink in #49
- fix(gui): reload after an import too fast to see by @JumpLink in #69
- Import order, body height, and a page while a case opens by @JumpLink in #70
- fix(cli): refuse an empty case folder by @JumpLink in #67
- test: check the macOS app without Homebrew by @JumpLink in #54
- test(keys): pin the clock in the 429 retry test by @JumpLink in #72
- chore(release): 0.2.0 by @JumpLink in #71
- feat(search): fuse text and semantic hits by @JumpLink in #48
- fix(ship): bundle the soup bridge typelib on Linux by @JumpLink in #73
- feat(release): ship the embedding model by @JumpLink in #52
- ci(release): assert the arch-specific Linux names by @JumpLink in #80
- fix(gui): drop the dark strip behind mail bodies by @JumpLink in #78
- fix(gui): show the mailbox on archive rows by @JumpLink in #77
New Contributors
- @PhilippWaack made their first contribution in #22
Full Changelog: v0.1.0...v0.2.0