Conversation
Fix clear settings null bug, add global settings clear button
- clearComicSettings was setting book.settings to null, causing
Object.entries() to throw TypeError downstream in getBookSettings
- Add null guard in getBookSettings as defense-in-depth
- Add null guard in isClearDisabled computed
- Add clearGlobalSettings action and clear button to Default Settings panel
- Compare against READER_DEFAULTS to determine if global clear is disabled
…vers Vuetify 4's v-dialog defaults to location 'center center', which activates the connected overlay location strategy. That strategy caps width with parseFloat(props.maxWidth), so "20em" parses to 20 and the em is dropped, collapsing dialogs to a ~20px sliver. Convert every em-based max-width/ min-width on a v-dialog (or forwarded via $attrs) to unitless px at 16px/em. Co-Authored-By: Claude Opus 4.8 <[email protected]>
The UNREAD filter used Q(bookmark=None), a multi-valued relationship test for "comic has no bookmark from anyone" rather than "no bookmark for me". Once any user finished a comic it dropped out of every other user's (and anonymous visitors') unread view. UNREAD now negates the per-user finished predicate (~(my_filter & finished=True)), compiling to a per-user NOT-EXISTS subquery. Also harden get_my_bookmark_filter: an anonymous visitor with no established session_key resolved to `session_id IS NULL`, which matches every authenticated user's bookmarks. Return a match-nothing filter instead; a session key is minted only when a bookmark is written. Adds tests/test_bookmark_filter_isolation.py covering cross-user and anonymous isolation for READ/UNREAD/IN_PROGRESS. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Replace a stale `ty: ignore[no-matching-overload]` with an isinstance guard so `settings` is a Mapping before `_copy_params_into`, clearing the `invalid-argument-type` diagnostic from `make ty`. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Skipping super() left the class-level atomic from setUpTestData uncommitted-but-unrolled-back, leaking the codex_init() "admin" superuser into later test classes and causing UNIQUE constraint failures (e.g. test_bookmark_filter_isolation) in full-suite runs. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Attribute the matched source for every matched comic and tidy the table layout in the admin Online Tagging Status table. - Source column was empty for re-tagged comics. They win via comicbox's stored-id fast path, which (until comicbox a556faa) emitted no AutoWritten event, so codex never learned the source. With merge_all_sources a comic can also be auto-written by both sources, so accumulate every winning source (deduped, order preserved) instead of last-event-wins: matched_source_by_path is now dict[Path, list[str]] and the snapshot row field becomes won_sources (a list). - Render one success chip per matched source; em-dash when unattributed. - Layout: the Comic column claims all slack (width 100% + the max-width:0 cell trick) so the filename fills the space before truncating with an ellipsis (full path on hover); Status and Source shrink to fit their content, so Source is only as wide as the widest source cell present. Requires comicbox emitting AutoWritten on the explicit-id and stored-id fast-path wins (comicbox a556faa). Co-Authored-By: Claude Opus 4.8 <[email protected]>
Give every .0 release a short hyphen-delimited title and convert the existing ### flavor-subtitles to the same format. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Granian assigns url_path_prefix verbatim to the ASGI root_path, which Django strips from the request path with removeprefix(). A value like "codex" (no leading slash) never matches the "/codex/..." request path, so path_info keeps the prefix, ServeStatic 500s on every static file, and STATIC_URL / email verification links come out malformed. Normalize the prefix to the root_path / SCRIPT_NAME convention (one leading slash, no trailing slash) at the single read site, so "codex", "/codex/", etc. all resolve to "/codex". Co-Authored-By: Claude Opus 4.8 <[email protected]>
A bulk online-tag scan handed every comic to comicbox's search path, so a comic codex already holds a Metron/Comic Vine issue id for was re-searched (resolving the series by name and listing issues per candidate) instead of fetched directly by that id. run_session now runs _prefetch_stored_ids first: build_stored_id_map reads numeric issue ids straight from the Identifier table (so it works even when the id never round-tripped into the file), each identified comic is fetched by explicit id in one API call, written through the same BulkTagWriteTask path, and dropped from the search set. Prefetched comics stay in path_to_pk so the status table shows them matched and Resume skips them; unresolved ids fall back to search. Skipped on dry runs and for sources without credentials. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Co-Authored-By: Claude Opus 4.8 <[email protected]>
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.
even ones re-tagged from a stored id or matched by both sources.
column width before truncating.
Comic Vine issue directly instead of running a full search.
also has a web link.
url_path_prefixworks again when set without a leading slash. Rememberto uncomment the [server] block header in codex.toml if you are setting
server values, like `url_path_prefix``