feat: resume saved collection pagination - #126
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. |
|
Codex review: needs maintainer review before merge. Reviewed August 29, 2026, 9:14 AM ET / 13:14 UTC. ClawSweeper reviewWhat this changesThe PR adds an Xurl-only Merge readinessThe PR is still necessary: current main does not expose this resume cursor. The implementation follows Birdclaw’s existing pagination plan and has credible live Xurl proof, but the repository owner should explicitly accept the new public cursor-and-cache contract before merge. Priority: P2 Review scores
Verification
How this fits togetherBirdclaw sync commands fetch X Likes and Bookmarks into the local SQLite archive. This change carries a supplied cursor from the CLI into the shared page walker, then to Xurl requests and the local response cache. flowchart LR
A[Sync CLI command] --> B[Cursor option]
B --> C[Xurl mode validation]
C --> D[Shared page walker]
D --> E[Xurl collection request]
E --> F[Local tweet archive]
E --> G[Cursor-specific cache]
Decision needed
Why: This is a new public CLI capability with durable local-state behavior, so implementation correctness alone cannot determine the intended product contract. Before merge
Agent review detailsSecurityNone. Review metrics
Technical reviewBest possible solution: If accepted, merge the documented Xurl-only cursor contract; otherwise keep continuation state internal rather than adding a parallel pagination path. Do we have a high-confidence way to reproduce the issue? Not applicable as a bug reproduction: the PR’s supplied terminal trace does demonstrate the new real Xurl resume flow with non-overlapping pages. Is this the best way to solve the issue? Yes technically: it reuses the established cursor-capable sync plan, preserves Xurl-only behavior, and prevents head-cache reuse for resumed requests. AGENTS.md: not found in the target repository. Codex review notes: model internal, reasoning high; reviewed against c184cf5f1b5e. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (20 earlier review cycles; latest 8 shown)
|
|
@clawsweeper re-review |
|
🦞👀 Re-review progress:
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
# Conflicts: # src/lib/timeline-collections-live.test.ts # src/lib/timeline-collections-live.ts
Summary
--pagination-tokenoption tosync likesandsync bookmarksVerification
./scripts/bun-canary.sh run --bun check./scripts/bun-canary.sh ./scripts/run-vitest.mjs run src/lib/timeline-collections-live.test.ts(25 tests)./scripts/bun-canary.sh run --bun test(1,351 tests)./scripts/bun-canary.sh run --bun buildBIRDCLAW_BACKUP_AUTO_SYNC=0 ./scripts/bun-canary.sh src/cli.ts sync likes --helpLive behavior proof
Executed from commit
52820c66141927eebb92427bd70301c58e3709bbon August 18, 2026. The account identifier, tweet IDs, and opaque pagination cursors are redacted. Both requests used--refreshand reportedsource: "xurl".First page:
Resumed page using that response cursor:
Comparison of the unredacted local responses:
{ "firstPageCount": 5, "resumedPageCount": 5, "overlapCount": 0 }The resumed request returned five additional tweets with no overlap and a non-null continuation cursor, demonstrating that the supplied cursor was honored and the walk can continue.