Resumable, deletion-aware collection and file enumeration (closes #38)
check / check (push) Successful in 24s
check / check (push) Successful in 24s
Add collectionsSince/filesSince on Client: they take a starting cursor, decrypt live records, surface tombstoned ids in a separate `deleted` list, and return the max updationTime seen as the cursor to resume from. A tombstone has no key or metadata to decrypt, so it is a bare id rather than a hollowed-out record that strict tsc would reject. filesSince paginates the diff from the given cursor and, when the server reports hasMore but the page's max updationTime does not exceed the cursor it was fetched with, throws instead of looping forever. listCollections/listFiles become thin wrappers that enumerate from sinceTime 0 and drop deletions, so existing callers and tests are unaffected. Closes #7. Model: opus-4-8
This commit is contained in:
@@ -18,6 +18,15 @@ Update the README API reference section to match the current implementation.
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-09-22: Added resumable, deletion-aware enumeration to `Client` (issue 38,
|
||||
closes issue 7). `collectionsSince`/`filesSince` take a starting cursor,
|
||||
decrypt live records, surface tombstoned ids in a separate `deleted` list (a
|
||||
tombstone has nothing to decrypt, so it is a bare id, not a hollow record),
|
||||
and return the max `updationTime` seen as the cursor to resume from.
|
||||
`filesSince` refuses to loop when the diff reports `hasMore` without advancing
|
||||
the cursor (issue 7). `listCollections`/`listFiles` are now thin wrappers that
|
||||
enumerate from `sinceTime: 0` and drop deletions, so existing callers are
|
||||
unaffected.
|
||||
- 2026-09-22: Carried file size, thumbnail size, and the deletion flag through
|
||||
`decryptFile` (issue 37, foundation for the cache/API design). Live files now
|
||||
populate `file.size`/`thumbnail.size` from the server's `info` (left
|
||||
|
||||
Reference in New Issue
Block a user