You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The curation verbs land over the 1.19.0 riders, the trash gets a surface, and the live prose layer cleans up
--rename-entity KIND OLD NEW: the fix-the-misspelled-name verb over cquarry 1.19's rename_entity, which had ridden the floor for two releases with zero consumers. Renames a tag, author, series, or publisher everywhere; a rename into an existing name MERGES the rows (links move to the survivor, duplicate links drop); a no-match old name is a clean exit 1 and an unknown kind a usage exit 2. Author renames recompute author_sort and re-lay paths; series merges renumber incoming books.
--set-author-sort / --set-title-sort BOOK SORT: the passthrough sort setters, storing hand-tuned corrections verbatim; a later --set-authors / --set-title deliberately recomputes over them.
The trash surface: --trash lists the library's .caltrash entries (category, book id, age, files) through a pure read-only filesystem inventory, and run trash --empty / --expire DAYS owns the lifecycle through cquarry 1.20's verbs, dry-run listing by default with --apply executing. The apply half opens metadata.db writable to reach the upstream verbs, so the closed-Calibre guard applies; no backup is owed because the database itself never changes. --format json carries the plan/results shape.
restrict's refusal list, SINGLE_BOOK_DESTS, and the setwrite combination guard keep step with the three new write dests, with a test pinning that they must; the README's full-help dump is regenerated byte-identical from the live parser.
The live em-dash layer is gone: all eleven rendered CLI separators (including the catalog header frozen into README's sample output), the README/spec titles, and every live README/spec line are recast; the patchnotes 3.40.0 entry's ASCII-dash sites are recast; the "not crying wolf" echo now appears once; the CalibreQuarry (cquarry-cli) rename injections are down to one first-use mention (fixing the possessive grammar break). Comments keep their dashes by convention.
Comment truths: _fetch_metadata's docstring names the failed return; the download-segment comment no longer names calibredb; integrate's docstring says which verbs actually drive external programs; setwrite's JSON report shape names the ids key; treeaudit's tolerance wording matches its extra_cover_file class; audit_isbns' exit contract names the advisory rider; spot_check's 99 means "99 or more failures"; compress_pdf's workflow names both synced size records; the three "Stdlib only" headers that import vir_tui say so; cli.py and tui.py carry module docstrings.
Polish: the five dead [DRY RUN] conditionals are gone; audit's dead nested quiet-guard is unwound; run_cover counts already-so rows like run_convert; run_flush honors --format json; the FTS extraction-errors preview gains its tail; the run.py/setwrite.py/fetch_library_codes.py pgrep guards fail closed on OSError like integrate and reconcile already did.
Housekeeping: scripts/ exec bits normalized (every shebang'd script executable; the shared db_util.py helper and the JSON template not), and pyproject takes the PEP 639 shape (SPDX license = "MIT" + license-files, the License classifier dropped, Python :: 3 :: Only added; wheel metadata verified). GitHub topics drop the duplicate python3 and near-zero python-314.
New-work boxes recorded on the roadmap: the dest-list constants module, the _backup_db triplication, the per-mode --format corners, bindery's unmirrored manual_watermark_repair decisions, the lossy double-manifest wrinkle, and the UI-only pypi tag policy.