Skip to content

Improve large-library imports and recovery - #141

Merged
DeusExTaco merged 33 commits into
developfrom
feature/v1.3-edge-fixes
Sep 11, 2026
Merged

Improve large-library imports and recovery#141
DeusExTaco merged 33 commits into
developfrom
feature/v1.3-edge-fixes

Conversation

@DeusExTaco

Copy link
Copy Markdown
Contributor

Summary

  • streamline Mylar3 and folder import setup, review, and recovery for large or messy libraries
  • reconcile stale paths, misplaced series files, safety-approved items, and mixed-folder outcomes without invalidating trusted matches
  • add post-import follow-up workflows for safe source cleanup and background clean-library adoption
  • harden library-root removal, import progress/state handling, and large-compendium reading progress
  • expand import, recovery, UI, migration, and security coverage

Validation

  • make ci-full
  • 11,004 Python tests passed with 90.02% coverage
  • 23 accessibility checks passed
  • Chromium: 548 passed, 2 skipped
  • Firefox: 548 passed, 2 skipped
  • Docker build, image scan, health check, and 7 smoke tests passed

Notes

The local import acceptance lab remains intentionally excluded from this PR.

Adam Hernandez added 27 commits September 5, 2026 13:51
Add dependency previews and explicit confirmation for configuration-only root removal without touching files or folders. Revalidate dependencies before deletion and protect referenced roots with restrictive foreign keys.

Preserve removed destinations in import history, prevent silent retry fallback, and retain existing data through SQLite migration and downgrade paths. Include API, service, migration, and browser regression coverage plus usage documentation.
Keep started books visibly in progress when whole-number percentage calculation would otherwise round below one percent. Share the calculation between persisted reader state and reading query projections, with dashboard regression coverage for thousand-page books.
Quarantine unrecorded files that conflict with their Mylar folder identity, including deferred ComicInfo evidence, while preserving authoritative Mylar issue records. Make ComicVine hydration rate-limit resilient, expose retryable archive failures, classify empty archives accurately, and report completed-import follow-up counts truthfully.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 11, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-11T02:52:04.759115Z 7cc76b8 Manual request
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@DeusExTaco DeusExTaco added the ci:full Run the full CircleCI PR gate label Sep 11, 2026
Comment thread src/pullbox/ui/import_routes.py Fixed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4a1a6e5ef1

ℹ️ 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".

Comment thread src/pullbox/services/import_catalog_hydration.py
Comment thread src/pullbox/services/import_completed_cleanup.py
@DeusExTaco

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5127b6211c

ℹ️ 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".

Comment thread src/pullbox/services/import_file_execution.py
@DeusExTaco

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dce2d8805f

ℹ️ 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".

Comment thread src/pullbox/services/import_library_adoption.py
@DeusExTaco

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

library_file.storage_mode = storage_mode
library_file.source_signature = source_signature

P2 Badge Clear stale hashes when reusing a LibraryFile row

When a previously hashed library file is replaced with different bytes—particularly when clean-library adoption normalizes an archive or rewrites ComicInfo—this update preserves the old file_hash while refreshing the path, size, modification time, and source signature. Subsequent integrity exports and Story Arc sync work therefore treat the old content checksum as belonging to the replacement; clear the hash or recompute it from final_path whenever the row is reused.

ℹ️ 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".

Comment thread src/pullbox/ui/import_history.py
Comment thread src/pullbox/ui/import_follow_up.py
@DeusExTaco

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 👍

Reviewed commit: 7cc76b80fb

ℹ️ 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".

@DeusExTaco
DeusExTaco merged commit 9eebbc2 into develop Sep 11, 2026
30 checks passed
@DeusExTaco
DeusExTaco deleted the feature/v1.3-edge-fixes branch September 11, 2026 02:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:full Run the full CircleCI PR gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants