github Bothari/Athenaeum v1.0.2

3 hours ago

Search failures are now reported instead of being returned as "no results".

A Hardcover rate limit, auth failure or timeout reached the user as an empty
result list — indistinguishable from "this book does not exist" — with nothing
logged and a 200 response. That is why the two outages fixed in v1.0.1 took
hours to diagnose.

What changed

  • search_books no longer discards exceptions from its page fetches. A total
    failure raises, and the search routes translate it into the error field
    their response contract already carried. A partial failure still returns the
    pages that worked.
  • The Hardcover client moved to services/hardcover.py so search and the sync
    engine share one implementation. Interactive lookups may spend the reserve
    that background linking holds back, and now contribute to quota tracking.
  • The frontend was discarding the error field entirely, so even the existing
    "API key not configured" case had always rendered as "No results found". It
    now shows the reason with a retry link.
  • get_series_missing and get_author_also_by wrote their result into a
    14-day metadata cache before checking it, so a momentary outage became a
    fortnight of "this series has no books". Failures are no longer cached.

Don't miss a new Athenaeum release

NewReleases is sending notifications on new releases.