Check downloaded originals against their recorded content hash (closes #68)
check / check (push) Successful in 2m40s

downloadFile, shared by quak get, the content cache and backup, hashes
the decrypted bytes (unkeyed BLAKE2b-512, standard base64) and stores
nothing on a mismatch, failing with an error naming the file ID. A live
photo ZIP is unpacked with fflate and its image and video hashed
separately as <imageHash>:<videoHash>. decryptFile reads the older
imageHash/videoHash fields for live photos. A file with no recorded
hash is stored unchecked.

Model: opus-5-5
This commit is contained in:
2026-09-23 03:32:05 +00:00
parent d05b53d560
commit 474298272a
13 changed files with 300 additions and 17 deletions
+8
View File
@@ -18,6 +18,14 @@ Tag v1.0.0.
# Completed Steps
- 2026-09-23: Checked downloaded originals against their recorded content hash
(issue 68). `downloadFile`, which `quak get`, the content cache and backup all
use, hashes the decrypted bytes (unkeyed BLAKE2b-512, standard base64) and
stores nothing on a mismatch, failing with an error naming the file ID. A live
photo ZIP is unpacked with `fflate` and its image and video hashed separately
as `<imageHash>:<videoHash>`. `decryptFile` reads older clients' `imageHash`
and `videoHash` fields for live photos. A file with no recorded hash is stored
unchecked.
- 2026-09-23: Single-sourced the version string (issue 5). `package.json` is the
only place it is written: `src/index.ts` imports it for `VERSION` and
`bin/quak.ts` passes `VERSION` to commander. tsc copies `package.json` to