Add confirmed advanced preview and import options #23

Merged
jchapman merged 1 commit from codex/issue-13-advanced-import into main 2026-10-27 11:27:20 +00:00
Owner

Users can now review the existing safe defaults or open an initially closed Advanced import options section to customize preview and import. Every supported option has an interactive control and an explanation. Choosing a conflicting combination blocks confirmation with a corrective message, and editing settings clears confirmation.

The app saves a normalized, versioned options snapshot for each attempt. A real import requires a qualifying preview of the same owner, collection, account, verified ZIP receipts and settings. Reload restores the latest saved choices; history retains the settings used for each result. Existing previews without the full settings identity must be rerun.

Implements #13, following the scope and handoff requirements in #14.

Scope and importer compatibility

  • Inclusion toggles, Google/partner album controls, people/session tags, media type, included/excluded extensions, inclusive UTC dates, 1–4 parallel tasks and stop/continue error handling.
  • One shared allowlist, validation and argument builder across the application, runner and isolated processor. Unknown/null/malformed options and contradictory choices are rejected. Connection, TLS, original protection, paths and logging remain fixed.
  • Real importer tests found that pinned v0.32.0 ignores the Takeout media-type flag and can remove JSON before matching when extensions are filtered. Bridge expands reviewed media types into extensions and preserves JSON/XMP sidecars.
  • Grouping/stacking and other unverified or unsafe upstream flags are outside this allowlist. The pinned Takeout command shadows upload grouping flags. See docs/advanced-import.md for boundaries and defaults.

Validation

  • Full Linux AMD64 backend tests and Go vet with the real pinned importer; focused advanced-option and existing lifecycle/security race suites; complete runner race suite.
  • Real Docker processor isolation, cancellation and cleanup test.
  • UI lint/build; focused advanced-option, task activity and task-email browser checks; 320px/mobile screenshots and visual review.
  • Full disposable browser/upload-resume/queue/SQLite/settings walkthrough. No actual Immich library or email delivery used.
  • Nine CI policy tests, documentation/workflow/source contracts, npm audit and source security policy checks. Existing security baselines are unchanged; the source scan retains the existing 29 reviewed findings, with no suppressions. Passing policy does not mean zero findings.
  • Staged and full-history redacted secret scans: no leaks. Clean committed checkout and diff checks.

The existing UI bundle-size advisory remains. This change does not publish or deploy a release: native Forgejo AMD64/ARM64 gates, coordinated installation of all three images and actual-destination pilot checks remain outstanding. No active upload/task or running service was interrupted. Held #12/PR #19 are unchanged.

Users can now review the existing safe defaults or open an initially closed **Advanced import options** section to customize preview and import. Every supported option has an interactive control and an explanation. Choosing a conflicting combination blocks confirmation with a corrective message, and editing settings clears confirmation. The app saves a normalized, versioned options snapshot for each attempt. A real import requires a qualifying preview of the same owner, collection, account, verified ZIP receipts and settings. Reload restores the latest saved choices; history retains the settings used for each result. Existing previews without the full settings identity must be rerun. Implements #13, following the scope and handoff requirements in #14. ### Scope and importer compatibility - Inclusion toggles, Google/partner album controls, people/session tags, media type, included/excluded extensions, inclusive UTC dates, 1–4 parallel tasks and stop/continue error handling. - One shared allowlist, validation and argument builder across the application, runner and isolated processor. Unknown/null/malformed options and contradictory choices are rejected. Connection, TLS, original protection, paths and logging remain fixed. - Real importer tests found that pinned v0.32.0 ignores the Takeout media-type flag and can remove JSON before matching when extensions are filtered. Bridge expands reviewed media types into extensions and preserves JSON/XMP sidecars. - Grouping/stacking and other unverified or unsafe upstream flags are outside this allowlist. The pinned Takeout command shadows upload grouping flags. See `docs/advanced-import.md` for boundaries and defaults. ### Validation - Full Linux AMD64 backend tests and Go vet with the real pinned importer; focused advanced-option and existing lifecycle/security race suites; complete runner race suite. - Real Docker processor isolation, cancellation and cleanup test. - UI lint/build; focused advanced-option, task activity and task-email browser checks; 320px/mobile screenshots and visual review. - Full disposable browser/upload-resume/queue/SQLite/settings walkthrough. No actual Immich library or email delivery used. - Nine CI policy tests, documentation/workflow/source contracts, npm audit and source security policy checks. Existing security baselines are unchanged; the source scan retains the existing 29 reviewed findings, with no suppressions. Passing policy does not mean zero findings. - Staged and full-history redacted secret scans: no leaks. Clean committed checkout and diff checks. The existing UI bundle-size advisory remains. This change does not publish or deploy a release: native Forgejo AMD64/ARM64 gates, coordinated installation of all three images and actual-destination pilot checks remain outstanding. No active upload/task or running service was interrupted. Held #12/PR #19 are unchanged.
Add confirmed advanced preview and import options
Some checks failed
Bridge validation / source (amd64) (push) Has been cancelled
Bridge validation / source (arm64) (push) Has been cancelled
Bridge validation / backend (amd64) (push) Has been cancelled
Bridge validation / backend (arm64) (push) Has been cancelled
Bridge validation / isolation (amd64) (push) Has been cancelled
Bridge validation / isolation (arm64) (push) Has been cancelled
Bridge validation / browser (amd64) (push) Has been cancelled
Bridge validation / browser (arm64) (push) Has been cancelled
Bridge validation / production (amd64) (push) Has been cancelled
Bridge validation / production (arm64) (push) Has been cancelled
Bridge validation / supply_chain (amd64) (push) Has been cancelled
Bridge validation / supply_chain (arm64) (push) Has been cancelled
Bridge validation / release-gate (push) Has been cancelled
bae3961551
Implement issue #13 with a closed advanced section, explained interactive controls, validated option snapshots and matching preview admission. Preserve defaults and importer/proxy protections.
Author
Owner

The owner has confirmed documentation and initial code reviews are complete and explicitly requested merging PR #23. Current main 09085fa is still the exact feature base. Conflict checks show the combined tree equals the validated feature tree a02a51057d9a09bf499ee1610b217ad8f9d663e8; no resolution changes are required. Proceeding with a normal merge commit, preserving bae3961 and its branch. Existing local backend/vet/race, browser/mobile, real Docker isolation, source policies and secret-scan evidence applies to this unchanged source. Native Forgejo checks are still waiting and remain required for release/installation; no force merge or gate changes are planned. No running service or active task/upload will be interrupted.

The owner has confirmed documentation and initial code reviews are complete and explicitly requested merging PR #23. Current main `09085fa` is still the exact feature base. Conflict checks show the combined tree equals the validated feature tree `a02a51057d9a09bf499ee1610b217ad8f9d663e8`; no resolution changes are required. Proceeding with a normal merge commit, preserving `bae3961` and its branch. Existing local backend/vet/race, browser/mobile, real Docker isolation, source policies and secret-scan evidence applies to this unchanged source. Native Forgejo checks are still waiting and remain required for release/installation; no force merge or gate changes are planned. No running service or active task/upload will be interrupted.
jchapman changed title from WIP: Add confirmed advanced preview and import options to Add confirmed advanced preview and import options 2026-10-27 11:27:19 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jchapman/Immich-Bridge!23
No description provided.