Commit Graph
119 Commits
Author SHA1 Message Date
Cursor Agentandrmcrackan 4187712c8d Add HasSubtitle and TitleHasColon search fields
<title short> stops at the first colon, so it shortens Audible titles that
contain one just as readily as it drops Audible's subtitle, and distinct books
then collapse onto the same name. A colon cannot be searched for: the analyzer
discards punctuation and Lucene reads a colon in a query as a field separator.
Two bool index fields find the affected books instead.

Document how the two title tags differ, since <audible title> already drops
Audible's subtitle without ever cutting a title, and how to audit for names
that actually collide in a spreadsheet export.

Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-16 23:43:53 +00:00
rmcrackan 1999307dfa Merge pull request #1952 from rmcrackan/cursor/no-rights-retry-backoff-0844
Fix #1947: refused licenses re-requested every run, missing and misplaced PDFs, unbounded log
2026-08-16 14:28:32 -04:00
Cursor Agentandrmcrackan a297715b8a Revert "docs: the PDF and log fixes ship in 13.7.10, not 13.7.9"
This reverts 6daaf33d. Master is 13.7.8 and the next release is the 0.0.1
increment from it, so the original 13.7.9 references were correct.

Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-16 18:24:25 +00:00
Cursor Agentandrmcrackan 6daaf33dbc docs: the PDF and log fixes ship in 13.7.10, not 13.7.9
Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-16 18:21:12 +00:00
Cursor Agentandrmcrackan b212c47cad docs: correct how the wait applies to a title's PDF
Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-16 17:08:27 +00:00
Cursor Agentandrmcrackan 87e2ea0ad3 docs: cover both PDF fixes and the cost of dropping <id> from a template
Troubleshooting gains an entry for missing and misplaced PDFs, including the
naming-template cause, since a library with no <id> in its folder and file
templates is one Libation cannot recognise the output of at all. The CLI
reference notes what a plain liberate run now covers, and that the
Audiobookshelf upload is deliberately not part of the PDF back-fill.

Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-16 17:03:01 +00:00
Cursor Agentandrmcrackan 69c4f9f0d1 docs: document waiting before retrying a refused download
Adds a Features page covering the wait schedule, what clears it, and what the
CLI and app show, plus cross-links from the CLI reference, the daily download
limit page and troubleshooting. Troubleshooting also gains an entry for a log
too large to attach to a bug report, which is how the reporter in issue #1947
found this.

Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-16 16:32:24 +00:00
Cursor Agentandrmcrackan 4d8075927f fix(logging): roll the log on size, not only on the calendar month
The default Serilog config set rollingInterval only, so Serilog's own defaults
applied: no size-based roll and a 1 GB ceiling after which the sink silently
stops writing. A busy install (many accounts scanned several times an hour)
reaches tens of MB in a month, past the point where the log can be attached to
a bug report.

Add fileSizeLimitBytes, rollOnFileSizeLimit and retainedFileCountLimit to the
default File sink, and fill in whichever of the three an existing Settings.json
is missing so installs that already have a Serilog section benefit too. Only
absent keys are written, so a hand-tuned config is left alone.

Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-16 16:03:27 +00:00
Cursor Agentandrmcrackan bc69d6fc22 docs(faq): clarify Audible Standard after subscription ends
Reflect community testing: once the subscription is inactive, Libation
cannot obtain a license and will not download those books.

Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-16 16:00:04 +00:00
Jonathan Grotelüschen 5d2aad045d docs(faq): add entry about Audible Standard 2026-08-16 11:39:06 +02:00
Cursor Agentandrmcrackan fe92737066 docs: document the per-run download limit
Gives the three liberate options their own section on the command line page,
and cross-references them from the daily download limit page so the two
limits are not confused for each other.

Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-14 19:53:17 +00:00
Cursor Agentandrmcrackan 3129221531 docs(limit): document the daily download limit and add a history seeding script
Adds a feature page covering the rolling window, what counts, the MB/GB
estimate and the Docker/CLI keys, plus a one-line pointer from getting started
where a new user with a large Plus library clicks Begin Book Backups.

Scripts/seed-download-history.cs seeds fake completed downloads so the limit
can be exercised without downloading, including dating rows just under 24 hours
old to turn the multi-day pause-and-resume behavior into a one minute test.

Also shortens the queue status text: the process queue column clips rather than
wrapping, so the resume time was being cut off.

Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-14 18:03:23 +00:00
rmcrackan 5af29b6bed Merge pull request #1918 from caiowilson/caiowilson/cli-audiobookshelf-upload
Add CLI abs upload for Audiobookshelf backfill
2026-08-13 15:36:25 -04:00
Cursor Agentandrmcrackan b6e0f4b6ab Correct the claim that solution-level dotnet test fails on Linux
Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-13 19:06:44 +00:00
Cursor Agentandrmcrackan 325be98bc0 Fix the solution filename in the dev getting-started guide
Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-13 18:38:30 +00:00
Cursor Agentandrmcrackan 739f1a273a Document how to test changes in the developer docs
Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-13 18:34:41 +00:00
Caio Wilson edc73629be fix(cli): match nested commands case-insensitively 2026-08-13 14:14:20 -03:00
Cursor Agentandrmcrackan c09a08b7b6 Test the Audible Plus badge and widen the WinForms Liberate column
Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-13 15:14:35 +00:00
Caio Wilson 8240d29eae feat(cli): remove legacy abs-upload alias 2026-08-13 01:51:39 -03:00
Caio Wilson 26e603d94d docs: document nested Audiobookshelf CLI command 2026-08-13 00:03:28 -03:00
Cursor Agentandrmcrackan f36e302c93 docs: fix missing -> in <has series#-> example
The conditional open tag requires the -> delimiter. Written as
<has series#>, the engine does not recognize a conditional, so the
later <-has> closes the enclosing <if series-> instead and the template
reports "Missing <-if series> closing conditional." while leaking the
literal text "<has series#>" into the name.

Also add a nested-conditional example, since the reference table only
shows each conditional in isolation, plus regression tests for
<has series#-> nested inside <if series-> when a book is in a series
but has no series number.

Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-12 04:11:39 +00:00
Caio Wilson 9ac1f64056 Fix Audiobookshelf CLI upload follow-ups 2026-08-10 18:47:21 -03:00
Caio WilsonandClaude Opus 5 4a5c81b5e6 Add CLI 'upload' verb to send already-liberated books to Audiobookshelf
Auto-upload only fires when a book is liberated. Books liberated before
Audiobookshelf was configured, or while it was disabled, had no path to the
server short of re-downloading the whole library.

'libationcli upload' backfills them from the files already on disk. Bulk or
targeted by ASIN. Nothing is re-downloaded and no local file is deleted.

Also fixes a latent defect this exposes. Validate() reads a database status
(Book.AudioExists) while GetFilesToUpload() read only FilePathCache. A book
liberated long ago passes validation but has no cache entry, so the upload
found no files and returned success having sent nothing. File lookup now uses
AudibleFileStorage.Audio.GetPaths, which unions the cache with a live scan of
the Books directory.

Other changes:
- Validate() now requires LiberatedStatus.Liberated. It previously accepted
  Error too, whose partial files should not be uploaded.
- New OutcomeDetermined event classifies each book as Uploaded, AlreadyExists,
  NoFilesFound or Failed. Failures travel on this event rather than through
  StatusHandler: the GUI process queue treats a non-success StatusHandler as a
  bad book and raises the Abort/Retry/Ignore dialog, and an upload problem must
  never fail a liberation.
- The verb prints an end-of-run summary and exits 0, matching other verbs.

No database migration. Duplicate detection already runs server-side inside
UploadBookAsync, so repeat runs are safe without local upload state.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 15:16:34 -03:00
Robert McRackan 065118cf6c Fail fast on invalid Settings.json enums and broken Serilog structure: reject unknown enum values at startup with clear errors, accept case-insensitive names, migrate ZipFile sinks, and validate Serilog shape without blocking hand-edited custom sinks 2026-08-07 11:10:43 -04:00
Robert McRackan e0d49b57e1 Encrypt-fail plaintext fallback 2026-08-05 10:02:53 -04:00
Robert McRackan f64824e283 Document last-resort portable master key as a Docker fallback 2026-08-03 10:22:31 -04:00
Robert McRackan 4513a8007b Quiet Docker ConfigApp.dll noise and document login-external via /config 2026-08-03 09:09:59 -04:00
Robert McRackan 712568b188 Surface real CLI/Docker auth failures and fix login-external locales 2026-08-02 11:55:48 -04:00
Marc Urben 98f657a40b Correct log file name and remove superfluous spaces. 2026-08-02 03:03:02 +02:00
Marc Urben 28ce71c1b7 Document on how to access or redirect log files from within docker. 2026-08-02 03:00:17 +02:00
Marc Urben a438dfd82f Offer occational support for docker problems ;:) 2026-08-02 02:51:43 +02:00
Marc Urben 12875993fa Add missing LOG_LEVEL variable to the env variables table. 2026-08-02 02:35:56 +02:00
Marc Urben 40b75185c2 Support user specified cmd by not entering the loop and running the cmd while still setting up the environment. Also expand documentation and example for the interactive shell. 2026-08-02 02:27:21 +02:00
Robert McRackan 2b4cde62e2 Document portable master-key export for Docker and CLI 2026-08-01 12:14:22 -04:00
Robert McRackan 79b6521a4e surfaced encrypted-token decrypt failure for Docker and CLI 2026-08-01 09:38:50 -04:00
Robert McRackan f35530d18b warn that Windows-encrypted tokens fail in Docker 2026-08-01 09:19:00 -04:00
Robert McRackan a6d637c718 Harden Audiobookshelf Server URL handling and connection errors 2026-07-31 14:05:36 -04:00
Robert McRackan 6bc82f7c6e missing entries in index.md 2026-07-28 14:41:25 -04:00
Robert McRackan 43216b2947 Update docs for new Audiobookshelf feature 2026-07-28 14:39:08 -04:00
Robert McRackan 5c67351aba Document pre-Amazon Audible username login in docs and guided walk-through 2026-07-25 12:18:31 -04:00
Robert McRackan 89155e0b0b don't live-link localhost 2026-07-25 11:38:41 -04:00
Robert McRackan fd03c1bd9c point to new donate page 2026-07-25 11:15:24 -04:00
Robert McRackan 123da3c653 new donate page 2026-07-25 11:11:09 -04:00
rmcrackan 8898174507 updtae troubleshooting doc 2026-06-17 09:06:21 -04:00
rmcrackan d955cb7605 #1873 , #1876 - Handle Windows Application Control blocking after in-app upgrades 2026-06-16 17:25:18 -04:00
rmcrackan b7ce96e91d Finish windows installers, phase 1 2026-06-08 14:03:59 -04:00
rmcrackan 9ef5e95801 Clean up docs 2026-06-03 11:04:59 -04:00
rmcrackan b31e7cb819 better atmos docs 2026-06-02 16:44:54 -04:00
rmcrackan 721f09a62b new page for spacial audio info 2026-06-02 16:38:12 -04:00
rmcrackan 2c2ae2c8b0 #1845 - improve error message for common VPN blocking errors. improve troubleshooting docs 2026-06-02 12:53:20 -04:00