You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Saved posts now use Substack's unified reader API by default. A live parity comparison found it a strict superset of the older posts-only reader API (985 vs 1079 posts on a real account, with the legacy API's count also unstable run-to-run), with saved_at/ordering/wordcount all confirmed at 100%. The legacy API and DOM scraping remain automatic fallbacks; SUBSTACK_SAVED_POSTS_SOURCE (auto/unified/legacy/dom) can force a specific source.
Fixed a silent-truncation bug shared by all three cursor-paginated fetchers (posts, unified posts, notes): a persistent 429 mid-pagination used to return a partial list indistinguishable from a complete one. A --force sync now detects this and skips reconciliation for that run instead of risking soft-deleting posts/notes that were merely unreachable, not actually unsaved. Reported via a new partial sync status.
New diagnostic commands: probe-api (headless GET of any known API URL) and compare-saved-apis (parity report between the legacy and unified endpoints) for verifying Substack API behavior without guesswork.
Fixed inspect-network's response-body capture, which was silently recording zero bodies due to a sync-API deadlock risk; now uses request interception.
Fixed a version-string drift: --version and the package's __version__ had been stuck at 0.1.0 since a previous release.