Conversation
commit 1fb394e109263188a16c4addeaab87bbdfdf882e
Author: AJ Slater <aj@slater.net>
Date: Wed Feb 11 17:09:25 2026 -0800
generate-schema scripts
commit fc9b4f5c27db827ae1592010b01708865cf3733e
Author: AJ Slater <aj@slater.net>
Date: Wed Feb 11 17:09:08 2026 -0800
format schemas
commit 9ccdf70d8c2318220c443714e509b6746f19a90e
Author: AJ Slater <aj@slater.net>
Date: Wed Feb 11 16:39:04 2026 -0800
fix schema
commit 1a082c52887571cd258ebbc467846461c8e9686f
Author: AJ Slater <aj@slater.net>
Date: Wed Feb 11 13:29:02 2026 -0800
add marshmallow jsonschema
Squashed commit of the following: commit 4f712ddc46859bb82eb6383d41a72502bf49f7be Merge: 2b0b5db 06af8e3 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 14:01:25 2026 -0800 Merge branch 'develop' into validate commit 2b0b5db77d073da699cdf26e9481e5efd69ad424 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 13:32:39 2026 -0800 better validate cli help commit f78dd859c3c8c8adf44399f723de171da9d5467a Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 13:25:48 2026 -0800 xsd printWidth to 120. fixes CoMet xsd. commit d1563e96bbc944dc0669e4df0d647c44cce8c7dd Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 13:03:47 2026 -0800 format test files with validator commit 59350c9e3c13e9248368146e403a1cc05c755523 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 13:01:09 2026 -0800 no available validator is a warning commit f80fc325bc1cfecc9a9286f7538ac02eb6391ad6 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 13:00:40 2026 -0800 use original schema definitions unreformatted commit 8eb5d884136e215a19754f1d6ae2fdc9c0cd2cd3 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 11:51:35 2026 -0800 fix symlink commit bffef02777ba01b6c4f54ba36df7f433c45841da Merge: 3547d24 6478b78 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 11:26:18 2026 -0800 Merge branch 'develop' into validate commit 3547d24639eed74841fb76b49aa49ab238b820a4 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 11:25:50 2026 -0800 update deps commit 29dba04deaf029466ca6794060c55b81d5c0a054 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 01:44:30 2026 -0800 update deps commit 273da7ab3e87d60eea56167199e466c61867c57c Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 01:43:55 2026 -0800 only catch and warn on validation errors commit 5ec0ad1928c709388facb054b3f6915285a4e4a8 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 01:35:41 2026 -0800 move xmlschema and jsonschema into regular deps commit 0887cf1e07daec89b59972e9cf8ffc59c143dba2 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 01:33:33 2026 -0800 fix getting format from input files. change validation exception to warning commit 4e7be5f44225522398a407c94d76c26fbd22a925 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 01:32:54 2026 -0800 fix guess_format commit 2342605b4b08ce641f056a38b5b634bae75bcfec Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 01:13:41 2026 -0800 fix script for new location of validate_cli commit b2ab1995e543204d15e83c00e8596681e52b70f7 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 01:12:08 2026 -0800 move schema to schema_definitions commit deacf119c2d0823af5c6405162d23b7e32f8fb37 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 22:23:05 2026 -0800 better validation logging commit c9a615f5885b53dd8e8b81c9d735808f4eaa7736 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 22:15:10 2026 -0800 fix validation format assignment. validation info logging commit 914d35d15f536a6a042cbe66346b2cb4a38d636a Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 22:05:04 2026 -0800 basically working validation with definitions dir commit 7e860e8f6110dd868dbec2f724a8bff1bd0a980d Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 21:22:04 2026 -0800 ignore bad typecheck warnings commit 3d5ae84354b772ce8fc08793a2c7db64e95c46ac Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 21:13:02 2026 -0800 fix validate tests commit 324a0c6fd9935c153fc5a172020a8c02b6f901d0 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 18:26:12 2026 -0800 most tests pass. validate test fails. typecheck fails. schemas need moving into the package commit 5c3d4cd77020b5318a0f45c8d72d432d50ad158e Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 17:16:27 2026 -0800 update deps commit 112a71aece1adba12e4d380359da3a167456af8c Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 17:16:19 2026 -0800 pin comicbox-pdffile
Squashed commit of the following: commit b6296ee49b49556b04adaefb12bed332f4fee857 Merge: 5bf0007 bdd3879 Author: AJ Slater <aj@slater.net> Date: Wed Feb 18 14:07:16 2026 -0800 Merge branch 'develop' into pdf2cbz commit 5bf0007 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 14:44:53 2026 -0800 bump news and version commit 362123c Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 14:39:19 2026 -0800 update pdffile to released version commit f09571c Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 13:36:29 2026 -0800 switch image_pdf to more powerful pdf_page_format commit b1d2d1b Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 12:37:12 2026 -0800 fix pdf cover compare test commit 5aaeae0 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 12:36:39 2026 -0800 move pdf format decision to _archive_readfile() commit 2107241 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 10:32:34 2026 -0800 update deps commit 566e426 Merge: cdc2250 38bcfe2 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 01:58:28 2026 -0800 Merge branch 'develop' into pdf2cbz commit cdc2250 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 01:57:57 2026 -0800 fix cli help commit 1190fe4 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 01:52:12 2026 -0800 fix cli option collision" commit 63bf418 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 01:49:48 2026 -0800 cli option for image_pdf commit 1d7d852 Merge: db7061c f5f03b5 Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 01:39:49 2026 -0800 Merge branch 'develop' into pdf2cbz commit db7061c Author: AJ Slater <aj@slater.net> Date: Tue Feb 17 01:36:11 2026 -0800 basic support for extract image from pdf
mokkari 4.3.0 added `alt_names` to its Series and IssueSeries schemas. Map them to comicbox reprints, the same representation MetronInfo.xml's Series/AlternativeNames already round-trip through. ComicVine has exposed volume `aliases` all along and comicbox ignored them. Map those too: `get()` injects them from the volume it already fetches for the publisher, so no extra API call. Alternative names also feed online matching. `s_series` scores best-of over the candidate's primary name and its aliases, and the pre-call volume filter keeps a volume when any alias clears the threshold, so a comic filed under a localized title matches its canonical volume. Aliases only ever widen the gate; they cannot drop a volume the primary name would have kept. Metron's search results carry no alternative names — mokkari's BasicSeries lacks the field, unlike the IssueSeries on issue detail — so its candidates score exactly as before. Reading them at match time would cost an API call per candidate. The contributing-signals gate counts alternative names as candidate series data. Since s_series can now score from them alone, omitting them would drop W_SERIES from the renormalization denominator and inflate the remaining signals. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Keys like "series:178012" mirror the urn form comicbox writes to notes/GTIN, but were interpolated verbatim into issue-shaped URL templates, producing broken links for ComicVine, Metron, Grand Comics Database, and League of Comic Geeks. A new normalize_key() strips urn/source/type prefixes (a type prefix overrides the positional id type) and runs in create_identifier and the computed url pass, which now also emits corrected keys, so native YAML/JSON/CLI input gets comicvine long-code normalization too. Also: source:type:key tag strings no longer truncate to the type word, every notes urn is read instead of only the first, online-tagged story arcs get arc-typed urls, and keys with unrecognized prefixes emit no url rather than a broken one. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
mokkari 4.4.0 added an `api_token` parameter that authenticates with a
Bearer token and takes precedence over username/passwd. Comicbox
hard-coded "user AND password" for Metron in three places, so token
holders could not authenticate.
Reuse the generic `key` credential field rather than adding a new
`token` field: `--auth metron:key=`, `COMICBOX_METRON_KEY`, and
`online.auth.metron.key` already flowed through the CLI, env, confuse,
and redacting-repr plumbing; only the consumers needed changing.
The shared-session cache key grows to (user, password, key) so
token-only sessions do not all collide on ("", ""), which would have
made every distinct token share one account's rate-limit state.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Metron is moving to API tokens, so warn once per process when a run authenticates with a username and password. The warning names both migration paths (--auth metron:key=TOKEN and COMICBOX_METRON_KEY) and where to generate a token. It fires only when basic auth is what mokkari will actually use: a configured token wins over username/passwd inside mokkari, so a stale username/password alongside a token is not worth nagging about. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Point the README, --auth help, the -h sources table, and the default config at API tokens, and mark Metron's username/password fields deprecated in each. Token examples now lead the --auth help. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
`--auth metron:TOKEN` and `--auth comicvine:KEY` now set the source's API token without naming a field, which is the form the docs teach. The named `<source>:key=VALUE` form still parses but is no longer advertised anywhere. An entry with no "=" is the token; one with an "=" is still field=value and the field must be known, so a mistyped field name is an error rather than a token that silently fails to authenticate. Metron issues hex/JWT tokens, so a token never contains "=" to make that ambiguous. An empty value is now an error too, instead of silently setting a blank credential. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every named --auth field is source-specific, so the generic <source>: placeholder claimed more than it delivered. url only works for ComicVine (mokkari has no base-URL override), and user/pass only exist for Metron, so the help now shows comicvine:url=URL and metron:user=/metron:pass= and says what url does. Also fix the Metron ignored-url warning, which named an --api-url flag that does not exist. --auth metron:url= is what a user would have typed to trigger it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A source with a pinned issue id fetches it directly while the other enabled sources search, so one session can mix id retrieval and search and merge both results. The lookup engine already honored OnlineLookupSettings.ids per source; only the session facade lacked the parameter. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
simyan 3.1.0 deprecates the generic Comicvine.search(resource, ...) in favor of resource-specific search methods; the old form now emits a DeprecationWarning on every call. Switch the ComicVine volume search to search_volumes() and raise the floor to simyan >= 3.1.0. Same wire request, so no behavior change. Nothing else in 3.1.0 affects comicbox: schemas, errors, the constructor, caching, and rate limiting are byte-identical to 3.0.0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
radon flagged the file at MI B (16.86). It had accumulated three sections that test other modules entirely: CoverHashUrlCache, the matcher's candidate-hash-fetcher hook, and ComicVineApiTransform field mapping. Each already has a home. - CoverHashUrlCache tests -> test_cover_hash.py, whose docstring already claims the cover_hash module. - Matcher fetcher-wiring test -> test_online_matcher.py, next to the existing cover-hashing tests. Its function-local imports are top-level there. - Transform tests -> test_rich_transforms.py's ComicVine section. Most assertions were already duplicated there; the section gains a store_date field plus date and volume-alias/reprint coverage. test_transform_handles_missing_fields was verbatim-equivalent to test_comicvine_handles_minimal_input, so it is dropped rather than moved. test_comicvine.py is now MI A (21.22) and only tests the ComicVine online source. make complexity is clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
search_volumes()API.