Skip to content

fix(weread): recover book details from cached shelf fallback#628

Merged
jackwener merged 1 commit intojackwener:mainfrom
Astro-Han:fix/weread-book-fallback
Mar 31, 2026
Merged

fix(weread): recover book details from cached shelf fallback#628
jackwener merged 1 commit intojackwener:mainfrom
Astro-Han:fix/weread-book-fallback

Conversation

@Astro-Han
Copy link
Copy Markdown
Contributor

Description

Fix WeRead book detail fallback when private API auth has expired.

This PR improves the detail fallback chain in two cases:

  • reuse the first parsed shelf snapshot instead of reloading /web/shelf before search fallback
  • allow a safe raw-order fallback when shelfIndexes never hydrate but rendered shelf reader links still cover the cached entries

It also adds regression tests for:

  • ordinary book fallback through public search
  • rejecting same-title results when the visible author does not match
  • raw-order fallback for cached entries when shelf indexes remain empty

Related issue:

Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • 🌐 New site adapter
  • 📝 Documentation
  • ♻️ Refactor
  • 🔧 CI / build / tooling

Checklist

  • I ran the checks relevant to this PR
  • I updated tests or docs if needed
  • I included output or screenshots when useful

Documentation (if adding/modifying an adapter)

  • Added doc page under docs/adapters/ (if new adapter)
  • Updated docs/adapters/index.md table (if new adapter)
  • Updated sidebar in docs/.vitepress/config.mts (if new adapter)
  • Updated README.md / README.zh-CN.md when command discoverability changed
  • Used positional args for the command's primary subject unless a named flag is clearly better
  • Normalized expected adapter failures to CliError subclasses instead of raw Error

Screenshots / Output

$ node dist/main.js weread shelf --limit 200 -f json
⚠  WeRead private API auth expired; showing cached shelf data from localStorage. Results may be stale, and detail commands may still require re-login.

$ node dist/main.js weread book 29196155 -f json
[
  {
    "title": "文明、现代化、价值投资与中国",
    "author": "李录",
    "publisher": "中信出版集团"
  }
]

@jackwener jackwener merged commit 33ca81b into jackwener:main Mar 31, 2026
11 checks passed
@jackwener
Copy link
Copy Markdown
Owner

Merged after review. I specifically looked at the design intent here: make weread book detail resilient when the private API path is unavailable, while keeping fallback resolution conservative and safe. I validated with targeted Vitest, typecheck, and build before merge. Thanks for the contribution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants