v1.4.4 - file-first Smart Matcher, keep or replace, per-issue metadata editing, reader tagging, smarter download matching
🚀 Highlights
- Your files come first in the Smart Matcher: opening Search Match or Edit Metadata now reads the item's own metadata before asking a provider - a loose file's ComicInfo.xml, a folder's scanned data plus its series.json, freshly re-read. The editor pre-fills from your files with provenance badges showing where each value came from, and provider data enters through an explicit "Fill empty fields from provider" button that is built to be incapable of overwriting anything. If your files carry a ComicVine or Metron id (dedicated tags, a Web URL, a ComicTagger/Mylar Notes fingerprint, or series.json's comicid), the matcher resolves the exact series itself - no typing, with a "Matched from your files" note - and a tagged loose file binds its exact issue too. (#199, design shaped by CapitanoNemo78's feedback)
- Keep or replace - curation survives Accept by default: a new choice in the match editor. "Keep my data, fill gaps" (the default) lands your files' metadata on the series and locks it against provider syncs - even if you never open the editor at all. "Replace with provider data" does what it says, and tells you it will rewrite ComicInfo.xml and regenerate series.json before you choose it. Years of hand-cleaned metadata can no longer be silently stamped over by a refresh. (#199)
- Per-issue metadata editing: every issue now opens the full tabbed editor (General / Credits / Story & Tags / Details) with fifteen new per-issue fields - inker, editor, and translator credits (inks finally split from pencils across every provider), tags, story-arc number, alternate series/number/count, GTIN, notes, scan info, review, community rating, main character, and a proper tri-state Black & White. Issue values win over series defaults, embed into each file's ComicInfo.xml, and scans read them back - the durability loop holds through a wipe-and-rescan. (#199, concept and prototype by CapitanoNemo78)
- Tag credits from the reader: admins get a Tag button while reading - accumulate writers, artists, characters, teams and more as you spot them, and everything saves in one write when you close the comic, with an honest report of whether the file was updated. (#199, concept by CapitanoNemo78)
- Know what you matched before you Accept: binding an exact issue ID now shows a confirmation card - cover, title, year, and headline credits - in both the Issue Mapping view and the metadata dialog, updating live as IDs change. A number + refresh control re-resolves a misrecognized file from its issue number. On Metron, issues now receive their real story titles (not "Series #N" composites), and a landed title is never clobbered back by the next sync. (#199)
- The downloader learned to read titles: requesting Batman (2011) no longer downloads Batman '66 - numeric words like the '66 now count as part of a series name, bulk packs face the same sibling-series guard as single issues instead of being exempt, and packs are date-checked against the series' own start year. Wrong-series grabs like "Batman - Arkham City Game Spin-Offs Collection" for a plain Batman request are rejected on their extra words. (#202, reported with logs by anacronismo)
- Half-issues exist now: Unicode fraction issue numbers (½, ¼, ¾, mixed forms like "1½") parse, pair, and search correctly everywhere - no more permanently-parked "#null" requests for interstitial issues, and the series page still displays the "½" your provider uses. (#200, reported by anacronismo)
🛠️ More fixes and improvements
- Title A-Z sorting keeps same-name volumes in year order - X-Men (1991/2004/2013/2019/2021) finally reads oldest-first, in the library, the jump bar, and OPDS (#201, reported by anacronismo)
- Delete dialogs no longer pre-tick "Also delete all physical files from disk" - disk deletion is explicit opt-in on every delete surface (suggested by anacronismo)
- Download tracking's year check compared every torrent's year against the literal text "20" due to a regex capture bug - dated downloads now pair with their requests correctly (#202)
- The Discord invite links across the README, docs, and issue templates point at a fresh permanent invite
📦 Upgrading
Standard three-service compose: docker compose pull && docker compose down && docker compose up -d. Schema changes are additive (new per-issue metadata columns) and apply automatically on boot; SQLite and PostgreSQL both covered. No new environment variables this cycle.
Thanks to CapitanoNemo78 for the concepts, prototypes, and relentless same-day field testing across four feedback rounds of #199, and to anacronismo for three sharp reports (#200, #201, #202) with the logs that made same-day diagnoses possible.