The "This book is a collection of other works" search on a series now only returns books already in that series
Added OpenSearch 1.1 support so browsers can register Hardcover as a search engine with one click instead of a manual %s URL setup
Edit forms now warn when an ISBN, ASIN, or slug is already in use and link to the conflicting record
Submit buttons disable while unresolved errors are present
Added a navigation guard so users don't lose edit progress when clicking through to the conflicting record; also fixed a bug where the guard showed two confirmation dialogs for a single edit
Documented what's expected of a librarian so applicants understand why acceptance isn't always immediate
Editions with an explicitly unset cover no longer fall back to the first available image, so librarian unsets stick
Added a new user setting to hide trending books from the Currently Reading widget when it's empty.
Your library now updates automatically while books are being imported, so new additions appear sooner.
Calendar dashboard widget is out of testing and available to all users
New dashboard widget showing a calendar of reading activity with per-day detail
Added /edition/id/:id, /edition/isbn/:isbn, /edition/isbn/:isbn/book, and /book/:id(/*path) redirect routes that always resolve to the current slug
Edition edit form now uses ID-based URLs so links don't break when async normalization changes a book's slug
Fixed bug where all reviews (including private and followers-only) were rendering on book pages
The editing dashboard and list widget features are now available to all users
The book drawer now preloads and opens immediately when tapped, showing content right away instead of a loading spinner
Greyed-out placeholders display while data finishes loading, making the app feel significantly more responsive
Users can now change which edition they read directly from a book's Editions tab page
Users can now set their timezone (auto-detected on first login) so dates are recorded correctly
Added date precision tracking (unknown/year/month/full) for finished dates
Read button now shows a finish date picker with options: "I don't know", "Today", "A specific year/month", "A specific date"
New YearMonthPicker component and precision-aware date display throughout the app
New timezone settings page in account settings