2026-04-01 - 2026-10-01

Overview

63 Active Pull Requests
76 Active Issues
Excluding merges, 1 author has pushed 23 commits to main and 153 commits to all branches. On main, 44 files have changed and there have been 4554 additions and 500 deletions.

62 Pull requests merged by 1 user

Merged #138 TODO.md workflow: branch from and merge into next (closes #137) 2026-09-29 05:54:36 +02:00

Merged #136 README development workflow: branch from and merge into next (closes #135) 2026-09-29 05:38:37 +02:00

Merged #133 Bring README and TODO.md in line with next after the milestone merge (closes #132) 2026-09-29 05:22:58 +02:00

Merged #31 next → main: pre-1.0 milestone 2026-09-29 03:12:32 +02:00

Merged #131 Test the live-photo writer's fsyncs (closes #130) 2026-09-28 18:45:48 +02:00

Merged #128 Store live photos as their image and their video (closes #107) 2026-09-28 18:06:01 +02:00

Merged #129 Sync next2 into next: hardening, backup and CLI fixes 2026-09-24 12:21:38 +02:00

Merged #127 Mark the package private and declare engines and exports (closes #6) 2026-09-23 14:17:53 +02:00

Merged #126 Bring README and TODO.md in line with the tree on next2 2026-09-23 10:08:03 +02:00

Merged #125 Test quak login and backup-metadata --exif 2026-09-23 09:27:41 +02:00

Merged #124 Write each backed-up original once and skip the precache (closes #106) 2026-09-23 08:48:03 +02:00

Merged #123 Refresh before backup-metadata and the thumbnail helpers answer (closes #100) 2026-09-23 08:11:37 +02:00

Merged #122 Make backup wait for the server refresh and fail when it fails 2026-09-23 08:07:44 +02:00

Merged #121 Print CLI errors as one line instead of a stack trace 2026-09-23 07:33:26 +02:00

Merged #120 Keep another process's downloads when opening a library (closes #105) 2026-09-23 07:25:29 +02:00

Merged #112 Make lint and test phases of the Dockerfile (closes #96) 2026-09-23 07:18:46 +02:00

Merged #119 Skip thumbnail repairs the server always refuses (closes #109) 2026-09-23 07:03:33 +02:00

Merged #118 Test the live-photo hash check error paths (closes #117) 2026-09-23 06:56:15 +02:00

Merged #116 quak logout ends the session on the server (closes #108) 2026-09-23 06:51:12 +02:00

Merged #115 Give backup album folders distinct names and remove stale entries 2026-09-23 06:36:13 +02:00

Merged #98 Check downloaded originals against their recorded content hash (closes #68) 2026-09-23 06:16:57 +02:00

Merged #113 Start empty when the cache directory holds another account's cache (closes #104) 2026-09-23 05:56:14 +02:00

Merged #114 backup-metadata: keep going when an ML data request fails (closes #101) 2026-09-23 05:49:38 +02:00

Merged #95 Single-source the version from package.json 2026-09-23 05:07:47 +02:00

Merged #94 Test that close() waits for the originals precache (closes #93) 2026-09-23 04:54:46 +02:00

Merged #92 Fix two intermittently failing library tests (closes #90) 2026-09-23 04:38:00 +02:00

Merged #91 Pin three untested guards: download timer, URL fragment, short APP1 2026-09-23 03:44:45 +02:00

Merged #88 Make the download deadline an idle deadline and cancel failed bodies (closes #24) 2026-09-23 03:14:42 +02:00

Merged #87 Build every ApiClient request URL in one place (closes #18) 2026-09-23 02:57:42 +02:00

Merged #86 Move CLI commands into testable functions and test them 2026-09-23 02:47:47 +02:00

Merged #85 Harden the backup tree's atomic copy (closes #22) 2026-09-23 02:44:47 +02:00

Merged #83 Harden the retry classifier and pin per-attempt deadlines 2026-09-23 02:38:02 +02:00

Merged #84 Harden the JPEG EXIF scan against malformed input 2026-09-23 02:28:15 +02:00

Merged #82 Keep make test from collecting tests in nested checkouts 2026-09-23 02:18:32 +02:00

Merged #81 Drop the deprecated @types/libsodium-wrappers-sumo stub (closes #27) 2026-09-23 02:15:08 +02:00

Merged #79 Validate session snapshots and wipe keys on logout (closes #10) 2026-09-23 02:08:02 +02:00

Merged #78 Sanitize file names taken from server metadata (closes #9) 2026-09-23 02:04:32 +02:00

Merged #77 Rewrite the README API reference for the shipped library surface 2026-09-23 00:27:31 +02:00

Merged #74 Port the quak CLI to the library API (closes #52) 2026-09-23 00:00:55 +02:00

Merged #76 Add fresh read variants that await a server round-trip (closes #75) 2026-09-22 23:29:15 +02:00

Merged #73 Precache all thumbnails and pinned originals from Library.open (closes #48) 2026-09-22 21:21:34 +02:00

Merged #72 Content-similarity search surface over the CLIP index (closes #50) 2026-09-22 20:45:59 +02:00

Merged #70 Rebuild backup on the library API with a durable failure ledger 2026-09-22 20:21:50 +02:00

Merged #71 Bound the originals cache with adaptive LRU eviction (closes #47) 2026-09-22 20:13:22 +02:00

Merged #66 On-disk content and thumbnail cache with per-photo fetch and prefetch 2026-09-22 18:38:23 +02:00

Merged #69 Revert ML search (#50): it breaks make build (tsc) and reddened next 2026-09-22 18:21:55 +02:00

Merged #67 Content-similarity search surface over the CLIP index 2026-09-22 18:14:14 +02:00

Merged #65 Fetch, store, and index per-file ML data and CLIP embeddings (closes #49) 2026-09-22 17:54:42 +02:00

Merged #64 In-process read surface: albums, photos, and timeline grouping 2026-09-22 17:21:48 +02:00

Merged #63 Three bounded request pools for metadata, content, and thumbnails (closes #45) 2026-09-22 15:31:21 +02:00

Merged #62 Plain-record library snapshot and change subscription 2026-09-22 15:22:52 +02:00

Merged #61 Accumulate streamDecrypt reads linearly, not quadratically (closes #21) 2026-09-22 15:13:09 +02:00

Merged #60 Library.open with a transparent background refresh loop 2026-09-22 14:52:02 +02:00

Merged #59 Stream decrypted downloads to disk with bounded memory (closes #40) 2026-09-22 13:54:21 +02:00

Merged #58 On-disk JSON metadata store for the local cache (closes #41) 2026-09-22 12:52:51 +02:00

Merged #57 Resumable, deletion-aware collection and file enumeration (closes #38) 2026-09-22 12:37:11 +02:00

Merged #56 feat(download): durable atomic writer and per-chunk progress hook (closes #39) 2026-09-22 12:01:06 +02:00

Merged #55 Carry file size, thumbnail size, and deletion flag through decryptFile 2026-09-22 12:01:04 +02:00

Merged #28 Make the image build multi-stage and cache-proof (closes #4) 2026-08-09 16:53:05 +02:00

Merged #26 Compile bin/ alongside src/ so the package can be built (closes #3) 2026-08-09 12:21:47 +02:00

Merged #23 Retry transient network failures with exponential backoff (closes #2) 2026-08-09 08:03:10 +02:00

Merged #20 Verify secretstream TAG_FINAL and write downloads atomically (closes #1) 2026-08-09 04:59:44 +02:00

1 Pull request proposed by 1 user

Proposed #134 next → main: docs brought in line with the code 2026-09-29 05:23:13 +02:00

75 Issues closed from 1 user

Closed #139 Run every build, test and lint step in the Dockerfiles at nice -n 19 2026-09-29 13:12:08 +02:00

Closed #137 TODO.md workflow: branch from and merge into next, not main 2026-09-29 05:54:37 +02:00

Closed #135 README development workflow: branch from and merge into next, not main 2026-09-29 05:38:37 +02:00

Closed #132 Bring README.md and TODO.md in line with next after the milestone merge 2026-09-29 05:22:58 +02:00

Closed #111 Bring README and TODO.md in line with the tree on next2 2026-09-29 03:12:33 +02:00

Closed #80 Retry classifier hardening and per-attempt deadline tests (from issue 24, items 3-9) 2026-09-29 03:12:33 +02:00

Closed #33 lint-once.test.ts misses the path CI actually runs, and its lockfile assertion checks the wrong branch 2026-09-29 03:12:33 +02:00

Closed #30 Run all linting in Docker via Dockerfile.lint + script/lint 2026-09-29 03:12:33 +02:00

Closed #29 make check runs prettier --check . twice 2026-09-29 03:12:33 +02:00

Closed #12 Add tests for the CLI (bin/quak.ts) 2026-09-29 03:12:33 +02:00

Closed #130 Test that the live-photo writer syncs its files before and after the rename 2026-09-28 18:45:49 +02:00

Closed #107 Live photos are saved as a ZIP under the image's extension 2026-09-28 18:06:01 +02:00

Closed #6 Package metadata for release: engines, exports, prepublishOnly 2026-09-23 14:17:53 +02:00

Closed #16 Decision needed: does quak publish to npm? 2026-09-23 13:50:31 +02:00

Closed #97 Review toward 1.0: identify and file all next steps 2026-09-23 10:08:10 +02:00

Closed #110 Test quak login and backup-metadata --exif 2026-09-23 09:27:41 +02:00

Closed #106 quak backup writes every original twice and precaches the whole account 2026-09-23 08:48:03 +02:00

Closed #100 backup-metadata and the thumbnail helpers answer from the cache without refreshing 2026-09-23 08:11:37 +02:00

Closed #99 backup does not wait for the server refresh and ignores its failure 2026-09-23 08:07:44 +02:00

Closed #102 CLI prints a raw stack trace instead of an error message 2026-09-23 07:33:26 +02:00

Closed #105 Opening a library deletes another process's download in progress 2026-09-23 07:25:29 +02:00

Closed #96 Re-vendor the lint and test setup from the canonical template (lint and test as Dockerfile phases) 2026-09-23 07:18:46 +02:00

Closed #109 fix-missing-thumbnails retries files the server will always refuse 2026-09-23 07:03:33 +02:00

Closed #117 Test the live-photo hash check against an unreadable ZIP and a missing image or video entry 2026-09-23 06:56:16 +02:00

Closed #108 quak logout leaves the session valid on the server 2026-09-23 06:51:12 +02:00

Closed #103 Backup album folders drop files with the same title and never remove old entries 2026-09-23 06:36:13 +02:00

Closed #68 Wire content-integrity hash comparison once the hash construction is confirmed 2026-09-23 06:16:58 +02:00

Closed #104 A cache directory reused by a second account mixes the two accounts' data 2026-09-23 05:56:15 +02:00

Closed #101 backup-metadata stops the whole dump when one ML data request fails 2026-09-23 05:49:38 +02:00

Closed #32 Rename LINT_EPOCH to CHECK_EPOCH in Dockerfile.lint (blocked on a policy ruling) 2026-09-23 05:28:05 +02:00

Closed #5 Single-source the version string 2026-09-23 05:07:47 +02:00

Closed #93 Test that close() waits for the originals precache sweep 2026-09-23 04:54:46 +02:00

Closed #90 Fix two intermittently failing library tests 2026-09-23 04:38:01 +02:00

Closed #89 Pin three guards reviewers found untested (download timer, URL fragment, short APP1 segment) 2026-09-23 03:44:46 +02:00

Closed #24 Retry/timeout follow-ups: idle deadline, reader cancellation, and classifier hardening 2026-09-23 03:14:42 +02:00

Closed #18 Unify URL construction in ApiClient 2026-09-23 02:57:42 +02:00

Closed #22 Atomic download writes: durability, orphan reaping, and untested failure paths 2026-09-23 02:44:48 +02:00

Closed #11 Harden the JPEG EXIF scanner against malformed input 2026-09-23 02:28:15 +02:00

Closed #19 Prune stale remote branches 2026-09-23 02:18:48 +02:00

Closed #25 make test silently runs the suite N+1 times when a git worktree exists inside the checkout 2026-09-23 02:18:32 +02:00

Closed #27 Drop the deprecated @types/libsodium-wrappers-sumo stub dependency 2026-09-23 02:15:08 +02:00

Closed #10 Client session handling: stop reaching into private state, validate snapshots, clear keys on logout 2026-09-23 02:08:02 +02:00

Closed #9 Sanitize server-controlled filenames used as output paths 2026-09-23 02:04:32 +02:00

Closed #15 Tag v1.0.0 2026-09-23 01:36:26 +02:00

Closed #7 listFiles can loop forever when the server stops advancing 2026-09-23 00:30:14 +02:00

Closed #13 Rewrite the README API reference to match the implementation 2026-09-23 00:27:35 +02:00

Closed #53 Rewrite the README API reference for the new library surface 2026-09-23 00:27:31 +02:00

Closed #17 fixMissingThumbnails assumes every file is a JPEG 2026-09-23 00:00:59 +02:00

Closed #52 Port the quak CLI to the new library API 2026-09-23 00:00:55 +02:00

Closed #75 Fresh read variants that await a server round-trip before resolving 2026-09-22 23:29:15 +02:00

Closed #54 Owner decision: quak (priority repo) is starved of worker capacity 2026-09-22 22:11:39 +02:00

Closed #48 Precache thumbnails for the whole account and originals for favorites and the latest week 2026-09-22 21:21:34 +02:00

Closed #50 Content-similarity search surface over the CLIP index 2026-09-22 20:45:59 +02:00

Closed #8 runBackup must not crash on symlink failure, and must repair partial originals 2026-09-22 20:21:54 +02:00

Closed #51 Rewrite the backup command on the library API with a durable failure ledger 2026-09-22 20:21:50 +02:00

Closed #47 Originals cache size limit with least-recently-used eviction 2026-09-22 20:13:22 +02:00

Closed #46 On-disk content and thumbnail cache, with per-photo fetch and thumbnail prefetch 2026-09-22 18:38:28 +02:00

Closed #49 Fetch and store machine-learning (magic) data and build the CLIP index 2026-09-22 17:54:42 +02:00

Closed #44 In-process read surface: albums, photos, and timeline grouping 2026-09-22 17:21:53 +02:00

Closed #45 Three bounded request pools for metadata, content, and thumbnails 2026-09-22 15:31:21 +02:00

Closed #43 Plain-record snapshot and change subscription for the library 2026-09-22 15:22:57 +02:00

Closed #42 Library.open with a background refresh loop and staleness window 2026-09-22 14:53:29 +02:00

Closed #40 Stream decrypted downloads to disk instead of buffering whole files in memory 2026-09-22 13:54:21 +02:00

Closed #21 streamDecrypt buffers quadratically: recopies the whole accumulated buffer on every network read 2026-09-22 13:54:21 +02:00

Closed #41 On-disk JSON metadata store for the local cache 2026-09-22 12:52:51 +02:00

Closed #38 Resumable, deletion-aware collection and file enumeration on Client 2026-09-22 12:37:11 +02:00

Closed #39 Download module: shared atomic writer with fsync, and per-chunk progress 2026-09-22 12:01:06 +02:00

Closed #37 Carry file size, thumbnail size, and deletion flag through file decryption 2026-09-22 12:01:04 +02:00

Closed #35 lint-once: run: >- block scalars are caught only by a test whose name does not say so 2026-09-05 11:32:54 +02:00

Closed #34 lint-once: sh -c indirection is not followed by the invocation walk 2026-09-05 11:32:54 +02:00

Closed #4 Make make docker green and policy-conformant 2026-08-09 16:53:05 +02:00

Closed #14 Decision needed: account credentials committed in test/integration/live-login.ts 2026-08-09 16:10:14 +02:00

Closed #3 Fix the TypeScript build: make build fails with TS6059 on main 2026-08-09 12:21:47 +02:00

Closed #2 Retry policy: no retry on 4xx, exponential backoff on 5xx and network errors 2026-08-09 08:03:10 +02:00

Closed #1 Downloads: verify secretstream TAG_FINAL and write output atomically 2026-08-09 04:59:44 +02:00

76 Issues created by 1 user

Opened #1 Downloads: verify secretstream TAG_FINAL and write output atomically 2026-08-09 03:42:25 +02:00

Opened #2 Retry policy: no retry on 4xx, exponential backoff on 5xx and network errors 2026-08-09 03:43:12 +02:00

Opened #3 Fix the TypeScript build: make build fails with TS6059 on main 2026-08-09 03:43:28 +02:00

Opened #4 Make make docker green and policy-conformant 2026-08-09 03:43:44 +02:00

Opened #5 Single-source the version string 2026-08-09 03:43:56 +02:00

Opened #6 Package metadata for release: engines, exports, prepublishOnly 2026-08-09 03:44:08 +02:00

Opened #7 listFiles can loop forever when the server stops advancing 2026-08-09 03:44:20 +02:00

Opened #8 runBackup must not crash on symlink failure, and must repair partial originals 2026-08-09 03:44:34 +02:00

Opened #9 Sanitize server-controlled filenames used as output paths 2026-08-09 03:44:48 +02:00

Opened #10 Client session handling: stop reaching into private state, validate snapshots, clear keys on logout 2026-08-09 03:45:01 +02:00

Opened #11 Harden the JPEG EXIF scanner against malformed input 2026-08-09 03:45:13 +02:00

Opened #12 Add tests for the CLI (bin/quak.ts) 2026-08-09 03:45:27 +02:00

Opened #13 Rewrite the README API reference to match the implementation 2026-08-09 03:45:42 +02:00

Opened #14 Decision needed: account credentials committed in test/integration/live-login.ts 2026-08-09 03:45:59 +02:00

Opened #15 Tag v1.0.0 2026-08-09 03:46:09 +02:00

Opened #16 Decision needed: does quak publish to npm? 2026-08-09 03:46:20 +02:00

Opened #17 fixMissingThumbnails assumes every file is a JPEG 2026-08-09 03:46:29 +02:00

Opened #18 Unify URL construction in ApiClient 2026-08-09 03:46:39 +02:00

Opened #19 Prune stale remote branches 2026-08-09 03:46:48 +02:00

Opened #21 streamDecrypt buffers quadratically: recopies the whole accumulated buffer on every network read 2026-08-09 04:00:24 +02:00

Opened #22 Atomic download writes: durability, orphan reaping, and untested failure paths 2026-08-09 05:00:52 +02:00

Opened #24 Retry/timeout follow-ups: idle deadline, reader cancellation, and classifier hardening 2026-08-09 07:38:34 +02:00

Opened #25 make test silently runs the suite N+1 times when a git worktree exists inside the checkout 2026-08-09 08:04:44 +02:00

Opened #27 Drop the deprecated @types/libsodium-wrappers-sumo stub dependency 2026-08-09 12:08:54 +02:00

Opened #29 make check runs prettier --check . twice 2026-08-09 16:53:53 +02:00

Opened #30 Run all linting in Docker via Dockerfile.lint + script/lint 2026-08-10 13:15:52 +02:00

Opened #32 Rename LINT_EPOCH to CHECK_EPOCH in Dockerfile.lint (blocked on a policy ruling) 2026-08-10 15:01:43 +02:00

Opened #33 lint-once.test.ts misses the path CI actually runs, and its lockfile assertion checks the wrong branch 2026-08-10 15:20:43 +02:00

Opened #34 lint-once: sh -c indirection is not followed by the invocation walk 2026-09-04 14:12:21 +02:00

Opened #35 lint-once: run: >- block scalars are caught only by a test whose name does not say so 2026-09-04 14:12:22 +02:00

Opened #36 Design for review: a cache layer (SQLite metadata + on-disk content/thumbnail store) and a crash-safe backup on it 2026-09-10 13:17:05 +02:00

Opened #37 Carry file size, thumbnail size, and deletion flag through file decryption 2026-09-22 09:10:56 +02:00

Opened #38 Resumable, deletion-aware collection and file enumeration on Client 2026-09-22 09:10:57 +02:00

Opened #39 Download module: shared atomic writer with fsync, and per-chunk progress 2026-09-22 09:10:58 +02:00

Opened #40 Stream decrypted downloads to disk instead of buffering whole files in memory 2026-09-22 09:10:59 +02:00

Opened #41 On-disk JSON metadata store for the local cache 2026-09-22 09:11:00 +02:00

Opened #42 Library.open with a background refresh loop and staleness window 2026-09-22 09:11:02 +02:00

Opened #43 Plain-record snapshot and change subscription for the library 2026-09-22 09:11:03 +02:00

Opened #44 In-process read surface: albums, photos, and timeline grouping 2026-09-22 09:11:04 +02:00

Opened #45 Three bounded request pools for metadata, content, and thumbnails 2026-09-22 09:11:05 +02:00

Opened #46 On-disk content and thumbnail cache, with per-photo fetch and thumbnail prefetch 2026-09-22 09:11:06 +02:00

Opened #47 Originals cache size limit with least-recently-used eviction 2026-09-22 09:11:07 +02:00

Opened #48 Precache thumbnails for the whole account and originals for favorites and the latest week 2026-09-22 09:11:08 +02:00

Opened #49 Fetch and store machine-learning (magic) data and build the CLIP index 2026-09-22 09:11:10 +02:00

Opened #50 Content-similarity search surface over the CLIP index 2026-09-22 09:11:11 +02:00

Opened #51 Rewrite the backup command on the library API with a durable failure ledger 2026-09-22 09:11:12 +02:00

Opened #52 Port the quak CLI to the new library API 2026-09-22 09:11:13 +02:00

Opened #53 Rewrite the README API reference for the new library surface 2026-09-22 09:11:14 +02:00

Opened #54 Owner decision: quak (priority repo) is starved of worker capacity 2026-09-22 09:51:50 +02:00

Opened #68 Wire content-integrity hash comparison once the hash construction is confirmed 2026-09-22 18:05:32 +02:00

Opened #75 Fresh read variants that await a server round-trip before resolving 2026-09-22 22:55:49 +02:00

Opened #80 Retry classifier hardening and per-attempt deadline tests (from issue 24, items 3-9) 2026-09-23 01:55:01 +02:00

Opened #89 Pin three guards reviewers found untested (download timer, URL fragment, short APP1 segment) 2026-09-23 03:14:57 +02:00

Opened #90 Fix two intermittently failing library tests 2026-09-23 03:14:57 +02:00

Opened #93 Test that close() waits for the originals precache sweep 2026-09-23 04:24:17 +02:00

Opened #96 Re-vendor the lint and test setup from the canonical template (lint and test as Dockerfile phases) 2026-09-23 05:28:05 +02:00

Opened #97 Review toward 1.0: identify and file all next steps 2026-09-23 05:28:22 +02:00

Opened #99 backup does not wait for the server refresh and ignores its failure 2026-09-23 05:34:57 +02:00

Opened #101 backup-metadata stops the whole dump when one ML data request fails 2026-09-23 05:34:58 +02:00

Opened #111 Bring README and TODO.md in line with the tree on next2 2026-09-23 05:34:58 +02:00

Opened #110 Test quak login and backup-metadata --exif 2026-09-23 05:34:58 +02:00

Opened #109 fix-missing-thumbnails retries files the server will always refuse 2026-09-23 05:34:58 +02:00

Opened #108 quak logout leaves the session valid on the server 2026-09-23 05:34:58 +02:00

Opened #107 Live photos are saved as a ZIP under the image's extension 2026-09-23 05:34:58 +02:00

Opened #106 quak backup writes every original twice and precaches the whole account 2026-09-23 05:34:58 +02:00

Opened #105 Opening a library deletes another process's download in progress 2026-09-23 05:34:58 +02:00

Opened #104 A cache directory reused by a second account mixes the two accounts' data 2026-09-23 05:34:58 +02:00

Opened #103 Backup album folders drop files with the same title and never remove old entries 2026-09-23 05:34:58 +02:00

Opened #102 CLI prints a raw stack trace instead of an error message 2026-09-23 05:34:58 +02:00

Opened #100 backup-metadata and the thumbnail helpers answer from the cache without refreshing 2026-09-23 05:34:58 +02:00

Opened #117 Test the live-photo hash check against an unreadable ZIP and a missing image or video entry 2026-09-23 06:17:09 +02:00

Opened #130 Test that the live-photo writer syncs its files before and after the rename 2026-09-28 18:06:41 +02:00

Opened #132 Bring README.md and TODO.md in line with next after the milestone merge 2026-09-29 03:14:12 +02:00

Opened #135 README development workflow: branch from and merge into next, not main 2026-09-29 05:25:19 +02:00

Opened #137 TODO.md workflow: branch from and merge into next, not main 2026-09-29 05:40:28 +02:00

Opened #139 Run every build, test and lint step in the Dockerfiles at nice -n 19 2026-09-29 13:02:20 +02:00