Skip to content

v4.8.1 - #162

Merged
ajslater merged 446 commits into
mainfrom
develop
Aug 14, 2026
Merged

v4.8.1#162
ajslater merged 446 commits into
mainfrom
develop

Conversation

@ajslater

Copy link
Copy Markdown
Owner
  • Dev
    • Require simyan >= 3.1.0 and use its new search_volumes() API.

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
ajslater and others added 29 commits July 24, 2026 13:15
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>
@ajslater
ajslater merged commit aef82a6 into main Aug 14, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants