2026-04-01 - 2026-10-01
Overview
62 Pull requests merged by 1 user
Merged
#138 TODO.md workflow: branch from and merge into next (closes #137)
Merged
#136 README development workflow: branch from and merge into next (closes #135)
Merged
#133 Bring README and TODO.md in line with next after the milestone merge (closes #132)
Merged
#31 next → main: pre-1.0 milestone
Merged
#131 Test the live-photo writer's fsyncs (closes #130)
Merged
#128 Store live photos as their image and their video (closes #107)
Merged
#129 Sync next2 into next: hardening, backup and CLI fixes
Merged
#127 Mark the package private and declare engines and exports (closes #6)
Merged
#126 Bring README and TODO.md in line with the tree on next2
Merged
#125 Test quak login and backup-metadata --exif
Merged
#124 Write each backed-up original once and skip the precache (closes #106)
Merged
#123 Refresh before backup-metadata and the thumbnail helpers answer (closes #100)
Merged
#122 Make backup wait for the server refresh and fail when it fails
Merged
#121 Print CLI errors as one line instead of a stack trace
Merged
#120 Keep another process's downloads when opening a library (closes #105)
Merged
#112 Make lint and test phases of the Dockerfile (closes #96)
Merged
#119 Skip thumbnail repairs the server always refuses (closes #109)
Merged
#118 Test the live-photo hash check error paths (closes #117)
Merged
#116 quak logout ends the session on the server (closes #108)
Merged
#115 Give backup album folders distinct names and remove stale entries
Merged
#98 Check downloaded originals against their recorded content hash (closes #68)
Merged
#113 Start empty when the cache directory holds another account's cache (closes #104)
Merged
#114 backup-metadata: keep going when an ML data request fails (closes #101)
Merged
#95 Single-source the version from package.json
Merged
#94 Test that close() waits for the originals precache (closes #93)
Merged
#92 Fix two intermittently failing library tests (closes #90)
Merged
#91 Pin three untested guards: download timer, URL fragment, short APP1
Merged
#88 Make the download deadline an idle deadline and cancel failed bodies (closes #24)
Merged
#87 Build every ApiClient request URL in one place (closes #18)
Merged
#86 Move CLI commands into testable functions and test them
Merged
#85 Harden the backup tree's atomic copy (closes #22)
Merged
#83 Harden the retry classifier and pin per-attempt deadlines
Merged
#84 Harden the JPEG EXIF scan against malformed input
Merged
#82 Keep make test from collecting tests in nested checkouts
Merged
#81 Drop the deprecated @types/libsodium-wrappers-sumo stub (closes #27)
Merged
#79 Validate session snapshots and wipe keys on logout (closes #10)
Merged
#78 Sanitize file names taken from server metadata (closes #9)
Merged
#77 Rewrite the README API reference for the shipped library surface
Merged
#74 Port the quak CLI to the library API (closes #52)
Merged
#76 Add fresh read variants that await a server round-trip (closes #75)
Merged
#73 Precache all thumbnails and pinned originals from Library.open (closes #48)
Merged
#72 Content-similarity search surface over the CLIP index (closes #50)
Merged
#70 Rebuild backup on the library API with a durable failure ledger
Merged
#71 Bound the originals cache with adaptive LRU eviction (closes #47)
Merged
#66 On-disk content and thumbnail cache with per-photo fetch and prefetch
Merged
#69 Revert ML search (#50): it breaks make build (tsc) and reddened next
Merged
#67 Content-similarity search surface over the CLIP index
Merged
#65 Fetch, store, and index per-file ML data and CLIP embeddings (closes #49)
Merged
#64 In-process read surface: albums, photos, and timeline grouping
Merged
#63 Three bounded request pools for metadata, content, and thumbnails (closes #45)
Merged
#62 Plain-record library snapshot and change subscription
Merged
#61 Accumulate streamDecrypt reads linearly, not quadratically (closes #21)
Merged
#60 Library.open with a transparent background refresh loop
Merged
#59 Stream decrypted downloads to disk with bounded memory (closes #40)
Merged
#58 On-disk JSON metadata store for the local cache (closes #41)
Merged
#57 Resumable, deletion-aware collection and file enumeration (closes #38)
Merged
#56 feat(download): durable atomic writer and per-chunk progress hook (closes #39)
Merged
#55 Carry file size, thumbnail size, and deletion flag through decryptFile
Merged
#28 Make the image build multi-stage and cache-proof (closes #4)
Merged
#26 Compile bin/ alongside src/ so the package can be built (closes #3)
Merged
#23 Retry transient network failures with exponential backoff (closes #2)
Merged
#20 Verify secretstream TAG_FINAL and write downloads atomically (closes #1)
1 Pull request proposed by 1 user
Proposed
#134 next → main: docs brought in line with the code
75 Issues closed from 1 user
Closed
#139 Run every build, test and lint step in the Dockerfiles at nice -n 19
Closed
#137 TODO.md workflow: branch from and merge into next, not main
Closed
#135 README development workflow: branch from and merge into next, not main
Closed
#132 Bring README.md and TODO.md in line with next after the milestone merge
Closed
#111 Bring README and TODO.md in line with the tree on next2
Closed
#80 Retry classifier hardening and per-attempt deadline tests (from issue 24, items 3-9)
Closed
#33 lint-once.test.ts misses the path CI actually runs, and its lockfile assertion checks the wrong branch
Closed
#30 Run all linting in Docker via Dockerfile.lint + script/lint
Closed
#29 make check runs prettier --check . twice
Closed
#12 Add tests for the CLI (bin/quak.ts)
Closed
#130 Test that the live-photo writer syncs its files before and after the rename
Closed
#107 Live photos are saved as a ZIP under the image's extension
Closed
#6 Package metadata for release: engines, exports, prepublishOnly
Closed
#16 Decision needed: does quak publish to npm?
Closed
#97 Review toward 1.0: identify and file all next steps
Closed
#110 Test quak login and backup-metadata --exif
Closed
#106 quak backup writes every original twice and precaches the whole account
Closed
#100 backup-metadata and the thumbnail helpers answer from the cache without refreshing
Closed
#99 backup does not wait for the server refresh and ignores its failure
Closed
#102 CLI prints a raw stack trace instead of an error message
Closed
#105 Opening a library deletes another process's download in progress
Closed
#96 Re-vendor the lint and test setup from the canonical template (lint and test as Dockerfile phases)
Closed
#109 fix-missing-thumbnails retries files the server will always refuse
Closed
#117 Test the live-photo hash check against an unreadable ZIP and a missing image or video entry
Closed
#108 quak logout leaves the session valid on the server
Closed
#103 Backup album folders drop files with the same title and never remove old entries
Closed
#68 Wire content-integrity hash comparison once the hash construction is confirmed
Closed
#104 A cache directory reused by a second account mixes the two accounts' data
Closed
#101 backup-metadata stops the whole dump when one ML data request fails
Closed
#32 Rename LINT_EPOCH to CHECK_EPOCH in Dockerfile.lint (blocked on a policy ruling)
Closed
#5 Single-source the version string
Closed
#93 Test that close() waits for the originals precache sweep
Closed
#90 Fix two intermittently failing library tests
Closed
#89 Pin three guards reviewers found untested (download timer, URL fragment, short APP1 segment)
Closed
#24 Retry/timeout follow-ups: idle deadline, reader cancellation, and classifier hardening
Closed
#18 Unify URL construction in ApiClient
Closed
#22 Atomic download writes: durability, orphan reaping, and untested failure paths
Closed
#11 Harden the JPEG EXIF scanner against malformed input
Closed
#19 Prune stale remote branches
Closed
#25 make test silently runs the suite N+1 times when a git worktree exists inside the checkout
Closed
#27 Drop the deprecated @types/libsodium-wrappers-sumo stub dependency
Closed
#10 Client session handling: stop reaching into private state, validate snapshots, clear keys on logout
Closed
#9 Sanitize server-controlled filenames used as output paths
Closed
#15 Tag v1.0.0
Closed
#7 listFiles can loop forever when the server stops advancing
Closed
#13 Rewrite the README API reference to match the implementation
Closed
#53 Rewrite the README API reference for the new library surface
Closed
#17 fixMissingThumbnails assumes every file is a JPEG
Closed
#52 Port the quak CLI to the new library API
Closed
#75 Fresh read variants that await a server round-trip before resolving
Closed
#54 Owner decision: quak (priority repo) is starved of worker capacity
Closed
#48 Precache thumbnails for the whole account and originals for favorites and the latest week
Closed
#50 Content-similarity search surface over the CLIP index
Closed
#8 runBackup must not crash on symlink failure, and must repair partial originals
Closed
#51 Rewrite the backup command on the library API with a durable failure ledger
Closed
#47 Originals cache size limit with least-recently-used eviction
Closed
#46 On-disk content and thumbnail cache, with per-photo fetch and thumbnail prefetch
Closed
#49 Fetch and store machine-learning (magic) data and build the CLIP index
Closed
#44 In-process read surface: albums, photos, and timeline grouping
Closed
#45 Three bounded request pools for metadata, content, and thumbnails
Closed
#43 Plain-record snapshot and change subscription for the library
Closed
#42 Library.open with a background refresh loop and staleness window
Closed
#40 Stream decrypted downloads to disk instead of buffering whole files in memory
Closed
#21 streamDecrypt buffers quadratically: recopies the whole accumulated buffer on every network read
Closed
#41 On-disk JSON metadata store for the local cache
Closed
#38 Resumable, deletion-aware collection and file enumeration on Client
Closed
#39 Download module: shared atomic writer with fsync, and per-chunk progress
Closed
#37 Carry file size, thumbnail size, and deletion flag through file decryption
Closed
#35 lint-once: run: >- block scalars are caught only by a test whose name does not say so
Closed
#34 lint-once: sh -c indirection is not followed by the invocation walk
Closed
#4 Make make docker green and policy-conformant
Closed
#14 Decision needed: account credentials committed in test/integration/live-login.ts
Closed
#3 Fix the TypeScript build: make build fails with TS6059 on main
Closed
#2 Retry policy: no retry on 4xx, exponential backoff on 5xx and network errors
Closed
#1 Downloads: verify secretstream TAG_FINAL and write output atomically
76 Issues created by 1 user
Opened
#1 Downloads: verify secretstream TAG_FINAL and write output atomically
Opened
#2 Retry policy: no retry on 4xx, exponential backoff on 5xx and network errors
Opened
#3 Fix the TypeScript build: make build fails with TS6059 on main
Opened
#4 Make make docker green and policy-conformant
Opened
#5 Single-source the version string
Opened
#6 Package metadata for release: engines, exports, prepublishOnly
Opened
#7 listFiles can loop forever when the server stops advancing
Opened
#8 runBackup must not crash on symlink failure, and must repair partial originals
Opened
#9 Sanitize server-controlled filenames used as output paths
Opened
#10 Client session handling: stop reaching into private state, validate snapshots, clear keys on logout
Opened
#11 Harden the JPEG EXIF scanner against malformed input
Opened
#12 Add tests for the CLI (bin/quak.ts)
Opened
#13 Rewrite the README API reference to match the implementation
Opened
#14 Decision needed: account credentials committed in test/integration/live-login.ts
Opened
#15 Tag v1.0.0
Opened
#16 Decision needed: does quak publish to npm?
Opened
#17 fixMissingThumbnails assumes every file is a JPEG
Opened
#18 Unify URL construction in ApiClient
Opened
#19 Prune stale remote branches
Opened
#21 streamDecrypt buffers quadratically: recopies the whole accumulated buffer on every network read
Opened
#22 Atomic download writes: durability, orphan reaping, and untested failure paths
Opened
#24 Retry/timeout follow-ups: idle deadline, reader cancellation, and classifier hardening
Opened
#25 make test silently runs the suite N+1 times when a git worktree exists inside the checkout
Opened
#27 Drop the deprecated @types/libsodium-wrappers-sumo stub dependency
Opened
#29 make check runs prettier --check . twice
Opened
#30 Run all linting in Docker via Dockerfile.lint + script/lint
Opened
#32 Rename LINT_EPOCH to CHECK_EPOCH in Dockerfile.lint (blocked on a policy ruling)
Opened
#33 lint-once.test.ts misses the path CI actually runs, and its lockfile assertion checks the wrong branch
Opened
#34 lint-once: sh -c indirection is not followed by the invocation walk
Opened
#35 lint-once: run: >- block scalars are caught only by a test whose name does not say so
Opened
#36 Design for review: a cache layer (SQLite metadata + on-disk content/thumbnail store) and a crash-safe backup on it
Opened
#37 Carry file size, thumbnail size, and deletion flag through file decryption
Opened
#38 Resumable, deletion-aware collection and file enumeration on Client
Opened
#39 Download module: shared atomic writer with fsync, and per-chunk progress
Opened
#40 Stream decrypted downloads to disk instead of buffering whole files in memory
Opened
#41 On-disk JSON metadata store for the local cache
Opened
#42 Library.open with a background refresh loop and staleness window
Opened
#43 Plain-record snapshot and change subscription for the library
Opened
#44 In-process read surface: albums, photos, and timeline grouping
Opened
#45 Three bounded request pools for metadata, content, and thumbnails
Opened
#46 On-disk content and thumbnail cache, with per-photo fetch and thumbnail prefetch
Opened
#47 Originals cache size limit with least-recently-used eviction
Opened
#48 Precache thumbnails for the whole account and originals for favorites and the latest week
Opened
#49 Fetch and store machine-learning (magic) data and build the CLIP index
Opened
#50 Content-similarity search surface over the CLIP index
Opened
#51 Rewrite the backup command on the library API with a durable failure ledger
Opened
#52 Port the quak CLI to the new library API
Opened
#53 Rewrite the README API reference for the new library surface
Opened
#54 Owner decision: quak (priority repo) is starved of worker capacity
Opened
#68 Wire content-integrity hash comparison once the hash construction is confirmed
Opened
#75 Fresh read variants that await a server round-trip before resolving
Opened
#80 Retry classifier hardening and per-attempt deadline tests (from issue 24, items 3-9)
Opened
#89 Pin three guards reviewers found untested (download timer, URL fragment, short APP1 segment)
Opened
#90 Fix two intermittently failing library tests
Opened
#93 Test that close() waits for the originals precache sweep
Opened
#96 Re-vendor the lint and test setup from the canonical template (lint and test as Dockerfile phases)
Opened
#97 Review toward 1.0: identify and file all next steps
Opened
#99 backup does not wait for the server refresh and ignores its failure
Opened
#101 backup-metadata stops the whole dump when one ML data request fails
Opened
#111 Bring README and TODO.md in line with the tree on next2
Opened
#110 Test quak login and backup-metadata --exif
Opened
#109 fix-missing-thumbnails retries files the server will always refuse
Opened
#108 quak logout leaves the session valid on the server
Opened
#107 Live photos are saved as a ZIP under the image's extension
Opened
#106 quak backup writes every original twice and precaches the whole account
Opened
#105 Opening a library deletes another process's download in progress
Opened
#104 A cache directory reused by a second account mixes the two accounts' data
Opened
#103 Backup album folders drop files with the same title and never remove old entries
Opened
#102 CLI prints a raw stack trace instead of an error message
Opened
#100 backup-metadata and the thumbnail helpers answer from the cache without refreshing
Opened
#117 Test the live-photo hash check against an unreadable ZIP and a missing image or video entry
Opened
#130 Test that the live-photo writer syncs its files before and after the rename
Opened
#132 Bring README.md and TODO.md in line with next after the milestone merge
Opened
#135 README development workflow: branch from and merge into next, not main
Opened
#137 TODO.md workflow: branch from and merge into next, not main
Opened
#139 Run every build, test and lint step in the Dockerfiles at nice -n 19