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
vite-plugin-dynamic-base 1.4.1 dropped the leading `/` it used to add inside template-element replacements. The codex publicPath stripped APP_PATH's leading slash with `.substring(1)` to avoid a double `/` with the old behavior; under 1.4.1 the strip made chunk URLs relative, so deep routes like /admin/libraries fetched chunks from /admin/static/... and got HTML from the Django catch-all, breaking the admin panel and any lazy-loaded route. Bump version to 1.12.6 and add news entry. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
a709a74 added a "." prefix to _IGNORED_BASENAME_PREFIXES so the poller's walker, the watchfiles filter, and expand_dir_added all skip hidden files before any cover predicate runs. User-supplied folder covers named .codex-cover.jpg / .png / .webp / ... are dotfiles by name but legitimate covers, so the dotfile filter swallowed them and broke custom folder covers from v1.12.5 on. is_ignored_basename now exempts a basename when match_folder_cover claims it. .DS_Store, .git, .Trashes, .codex-cover (no extension), .codex-cover.txt etc. still get filtered. Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
DRF's ``SessionAuthentication`` enforces CSRF on unsafe methods, which rejects proxy-authenticated API clients that legitimately carry no CSRF token. Add ``HttpRemoteUserAuthentication`` (subclass of DRF's stock ``RemoteUserAuthentication`` reading ``HTTP_REMOTE_USER`` instead of ``REMOTE_USER``) and conditionally prepend it to ``DEFAULT_AUTHENTICATION_CLASSES`` when ``CODEX_AUTH_REMOTE_USER`` is enabled, so proxy-forwarded ``Remote-User`` API requests authenticate through the existing ``RemoteUserBackend`` without hitting CSRF. Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
…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]>
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.
startup; back up your
configdirectory before upgrading.mounted writable with write permission for tag editing to work.
moved from
codex.tomlinto the Admin UI and are now editable without arestart. Existing values are imported automatically on upgrade; those
codex.tomlsections are deprecated.(in-library
.codex-cover.*files and the covers-only library) migrateautomatically on first startup.
need re-navigating from the home screen. OPDS apps reconnect on their own.
/api/v3/to/api/v4/.forever on comics with few or no embedded tags.
story arcs, identifiers, and more — written back to your comic files.
interactive match prompts, rate-limit display, and per-source credentials
in the new Admin Tagging tab. Or tag a single comic directly by a known
Metron or Comic Vine issue id or URL, skipping the search.
plus a Custom Covers admin tab.
settings, libraries — via a
user_data.sqlitesidecar, the Admin Restoretab, or
codex restore_user_data. Snapshotted nightly.sign-ups (both require SMTP).
(moved here from the sidebar).
imports almost 4x, and polls that find nothing changed are now nearly
instant — no more rewriting every comic, regenerating every cover, and
refreshing every browser on a no-op poll.
that could take minutes now load in about a second, metadata works on
collections of any size, and browsing stays responsive during imports.