audiobookshelf/server
Barnabas 25577f5eea Add finishedDates history to keep multiple finished dates per book
Adds a finishedDates JSON column to mediaProgresses that records a
timestamp for every finish event, so re-listening to a book no longer
loses the previous finished date.

- Marking finished (manually or automatically) appends to finishedDates
- Explicitly un-marking finished removes the most recent entry
- Re-listening to a finished item keeps the history
- Migration backfills finishedDates from the existing finishedAt
- finishedDates is exposed on media progress API responses
- Year in review stats now include books re-finished in later years
- Item page shows previous finished dates with a tooltip

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 10:21:51 -06:00
..
auth Add unique UUID to access and refresh tokens 2026-05-21 17:08:39 -07:00
controllers Add ignoreDuplicates for bookAuthor when renaming to respect unique index 2026-05-21 21:06:17 -07:00
finders Improved subtitle parsing to account for bare colon in title 2026-02-06 14:31:09 -05:00
libs Add fuse.basic.min.js in libs instead of full npm package, use lower threshold for quick matching 2025-06-13 17:23:24 -05:00
managers fix: set correct Content-Type for RSS feed audio files 2026-05-02 22:13:35 -04:00
migrations Add finishedDates history to keep multiple finished dates per book 2026-06-10 10:21:51 -06:00
models Add finishedDates history to keep multiple finished dates per book 2026-06-10 10:21:51 -06:00
objects Fix android device sdkVersion not handling it using number type, causing android session device names to show as iOS 2026-05-15 13:13:14 -05:00
providers Fix server crash on audible match #4931 2025-12-23 16:44:29 -06:00
routers Fix item_removed payload to include libraryId 2026-03-31 22:02:52 +03:00
scanner Cleanup abmetadata file parsing & fix server crash #5268 #4287 #5142 2026-05-27 17:33:14 -05:00
utils Add finishedDates history to keep multiple finished dates per book 2026-06-10 10:21:51 -06:00
Auth.js Add additional debug logs for OIDC login 2025-08-15 17:23:20 -05:00
Database.js Update API Keys to be tied to a user, add apikey lru-cache, handle deactivating expired keys 2025-06-30 14:53:11 -05:00
Logger.js Simplify log level determination 2025-03-08 12:46:36 -07:00
Server.js Update for nextjs client, pass all remaining requests through to nextjs 2025-09-28 09:41:15 -05:00
SocketAuthority.js Update socket events to check client is admin & validate log level 2026-05-12 16:57:28 -05:00
Watcher.js Add: generic function to ignor files 2025-02-22 12:28:51 -07:00