Repository navigation
Fix catalog-backed release matching and EPUB font review - #70
Merged
Merged
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ae57cc8eec
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
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.
Valid releases were held because series positions only accepted digits, known series prefixes were not separated from the full book title, and dotted EPUB packaging/group suffixes were not recognized. EPUB inspection also rejected standard font-obfuscation metadata as encrypted book content.
Changes
docs/issues/2026-10-15-release-matching.md.Fixes #62. Fixes #64. Fixes #66.
Fixes NOR-95, NOR-97, NOR-99.
Related to #56 / NOR-89. Builds on the already-merged #69 / NOR-87 fix.
Validation
All tests ran serially through
python3 scripts/check.py:git diff --checkpassed. Exact commands are in the investigation document.Observed failures before fixes: the exact reported release-name regression and a synthetic standard-font-obfuscation EPUB inspection. Tests include wrong series/position/author, malformed Roman numerals, ranges, collections, partial content, wrong actual medium, and unsupported encryption.
Remaining scope
NOR-89 remains open. Its actual EPUB algorithm/resource list and the exact role/request transitions behind missing actions are unavailable. The supported IDPF case is confirmed independently; other font-obfuscation algorithms remain held. Controlled administrator withdraw/re-request and existing review UI paths passed, so no speculative state workaround or approval override was added. External services use fixtures; the reporter deployment was not tested.
Review follow-up — numbered content warnings
Addressed the review finding in
ea9c974. Numbered warnings such asSample01,Excerpt1,Preview02,Incomplete3andTruncated4remain content warnings rather than removable release groups. Automatic selection and import completeness checks also recognize them in release names and file paths. Existing group names such asGroup42andSampler01remain supported.Reproduced the unsafe selection and import acceptance before the fix. Validation after the fix: 324 focused unit checks and 13 API/import journeys passed via the bounded runner, including a held numbered-partial candidate with no torrent fetch, selection or download attempt. Repository Ruff lint/format and frontend TypeScript checks passed.
Fixed the
backend-checksfailure by regenerating the OpenAPI snapshot and TypeScript contract for matcher version 8. Repeat generation produces no further changes. The failing aggregatebackendcheck was downstream of that snapshot mismatch; all four original backend integration shards had passed.PR review follow-up
The shared library-review browser check could fail when “Save and review next” displayed the completed-link status and the next catalog-search status together. The fixture now holds that next lookup pending, checks both messages separately, and waits for the lookup to finish before continuing. The ambiguous assertion failed under this controlled timing before the fix; no product behavior or timeout was changed.
The shared regression passed on #73, whose LibraryReview, AssetMatchForm, App and SelectMenu files are byte-identical to this branch. It also passed on #71 and #72 with their changed dropdown/onboarding code. Existing runtime validation above remains applicable; this follow-up changes only the browser test.
Release integration follow-up
The final live-browser run exposed a download-preference refresh race: switching back to cached personal defaults could remount the editor after a fresh response, collapsing sections and discarding edits. The editor now preserves its draft and the revision it was based on; stale saves still receive the existing conflict response, and edits made during a pending save survive for a subsequent save.
Reproduced the collapsed editor with a delayed real API response. Three focused live-browser journeys passed after repair, including stale-save rejection, edits during a delayed save, persistence after reload and automatic client defaults. Merged main's #71–74 changes into this branch, preserving both sides of a test-import conflict. All 56 focused combined backend cases passed, and regenerated API snapshots are unchanged. Full release CI remains the publication gate.