Show honest stage and activity feedback during analysis, preview and import #4

Closed
opened 2026-10-24 13:25:21 +00:00 by jchapman · 5 comments
Owner

Large multi-part exports can spend tens of minutes in analysis or preview with little more than a spinner. Users cannot tell whether work is advancing.

Acceptance criteria:

  • Show the server-confirmed stage, elapsed time and last confirmed activity. Distinguish a worker heartbeat from actual progress.
  • Inspect the pinned Immich-Go output before promising live examined/processed counters. A final report is not a live event feed.
  • Display counters only when measured, and distinguish archive entries, examined assets, processed items and new uploads.
  • Use a percentage only with a meaningful known total and measured completed work. Do not infer it from ZIP size or elapsed time. Accepted upload bytes can support upload progress.
  • Otherwise use an indeterminate activity indicator and explain what is currently known. ETA is optional and must be based on sufficient measured throughput.
  • Restore authoritative status across reconnects and simultaneous owner sessions. Preserve tenant isolation.
  • Test missing/stale progress, stage changes, completion and multiple browsers.
Large multi-part exports can spend tens of minutes in analysis or preview with little more than a spinner. Users cannot tell whether work is advancing. Acceptance criteria: - Show the server-confirmed stage, elapsed time and last confirmed activity. Distinguish a worker heartbeat from actual progress. - Inspect the pinned Immich-Go output before promising live examined/processed counters. A final report is not a live event feed. - Display counters only when measured, and distinguish archive entries, examined assets, processed items and new uploads. - Use a percentage only with a meaningful known total and measured completed work. Do not infer it from ZIP size or elapsed time. Accepted upload bytes can support upload progress. - Otherwise use an indeterminate activity indicator and explain what is currently known. ETA is optional and must be based on sufficient measured throughput. - Restore authoritative status across reconnects and simultaneous owner sessions. Preserve tenant isolation. - Test missing/stale progress, stage changes, completion and multiple browsers.
Author
Owner

Starting implementation together with #7 and #8. I have read #14 and all current descriptions/comments. Scope: persisted, owner-scoped server stages and timestamps; distinguish heartbeat from measured activity; inspect the pinned importer reporting contract before exposing counters; remove unsupported analysis percentages; restore status through polling/reconnects. I will work from the latest existing implementation, add focused backend and browser checks, and report exact validation and publication/deployment states. No server rebuild or restart is planned.

Starting implementation together with #7 and #8. I have read #14 and all current descriptions/comments. Scope: persisted, owner-scoped server stages and timestamps; distinguish heartbeat from measured activity; inspect the pinned importer reporting contract before exposing counters; remove unsupported analysis percentages; restore status through polling/reconnects. I will work from the latest existing implementation, add focused backend and browser checks, and report exact validation and publication/deployment states. No server rebuild or restart is planned.
Author
Owner

Finding: the pinned bridge.4 importer invokes BridgeReport from the final GenerateReport path, not as a live examined/processed event feed. Implementation uses confirmed verification/analysis/import stages and separately labeled worker heartbeat, elapsed time and measured destination activity; it removes the invented analysis 90 percent. Missing/stale status is explicitly unknown. App and processor stage protocol must ship together.

Finding: the pinned bridge.4 importer invokes BridgeReport from the final GenerateReport path, not as a live examined/processed event feed. Implementation uses confirmed verification/analysis/import stages and separately labeled worker heartbeat, elapsed time and measured destination activity; it removes the invented analysis 90 percent. Missing/stale status is explicitly unknown. App and processor stage protocol must ship together.
Author
Owner

Implemented and published for review in commit e980c3778a76c66c280234e29a3c324f5e7ae56c, branch codex/issues-4-7-8-activity, PR #17: #17 . The working tree is clean. This supersedes the earlier tooling/validation limitations.

VALIDATION

  • Local Linux AMD64 Docker backend tests and vet, including the pinned real importer fixtures; focused API cancellation/authorization/completion-race checks under the race detector and the complete runner race suite.
  • Real Docker isolation: fixed verification/analysis stage messages, persistent inputs, container removal, and actual importer cancellation/final private-log transfer.
  • UI lint/build; focused two-owner-browser synthetic activity tests for missing/stale status, stage transitions, offline/reconnect restoration, repeated navigation without cancellation, stage-specific Stop confirmation, Stopping/Stopped, explicit analysis retry and completion winning a late stop. Mobile screenshot inspected.
  • Disposable complete browser/queue/SQLite walkthrough, upload interruption/reselection/resume, history, protected diagnostics and administrator settings. App/runner/processor were rebuilt from the committed source and the final full smoke check passed. HTTPS proxy/upload-resume/readiness smoke also passed during implementation. Only disposable test containers were restarted; no real Immich/media/email was used.
  • Nine CI contract/policy tests, source-tree/document checks, staged diff checks, tracked-source and full-history secret scans (no leaks). Source gosec: 35 production files, 29 previously reviewed findings, no loading errors or suppressions; source govulncheck passed the existing policy. No baseline exceptions or dependency changes were added. The existing UI large-bundle advisory remains.

STATE / LIMITS / HANDOFF
Source is committed and pushed for review; not merged, release-image-published or deployed. Forgejo run https://git.sharedroot.net/jchapman/Immich-Bridge/actions/runs/5 is waiting for the AMD64/ARM64 source jobs, with dependent gates blocked. No native release CI pass or native ARM64 execution is claimed. Real large-library performance and deployed pilot behavior remain unverified.

Review #17. It is stacked on #16, which itself follows #15; after those merge, retarget #17 to main and verify the diff and required gates. Coordinate an idle installation of app, runner and processor together, then run an owner pilot preview and check the task lifecycle before closing this issue. Do not interrupt active uploads/tasks for deployment. No automatic import replay, rollback or unsupported mid-import resume is promised.

ISSUE #4 CHANGES
The shared panel uses owner-scoped persisted server stages, start/finish times, last confirmed activity and a separately labeled heartbeat. Processor stage records identify verification and metadata analysis while work is actually occurring; the old guessed 90-percent analysis update is gone. A heartbeat never becomes item progress; stale/missing status explicitly means unknown, and polling restores saved state across owner sessions/reconnects. Final elapsed duration freezes at completion; missing timestamps remain unconfirmed.

The pinned bridge.4 BridgeReport hook runs at final report generation, not as a live asset feed. No live examined/processed counters, percentage or ETA are invented. Measured destination requests/new-upload acknowledgements remain separate from final reported assets and processed/skipped items. Final asset totals are labeled as report totals rather than archive entries or a live examined count. See docs/results.md and docs/testing.md.

Implemented and published for review in commit `e980c3778a76c66c280234e29a3c324f5e7ae56c`, branch `codex/issues-4-7-8-activity`, PR #17: https://git.sharedroot.net/jchapman/Immich-Bridge/pulls/17 . The working tree is clean. This supersedes the earlier tooling/validation limitations. VALIDATION - Local Linux AMD64 Docker backend tests and vet, including the pinned real importer fixtures; focused API cancellation/authorization/completion-race checks under the race detector and the complete runner race suite. - Real Docker isolation: fixed verification/analysis stage messages, persistent inputs, container removal, and actual importer cancellation/final private-log transfer. - UI lint/build; focused two-owner-browser synthetic activity tests for missing/stale status, stage transitions, offline/reconnect restoration, repeated navigation without cancellation, stage-specific Stop confirmation, Stopping/Stopped, explicit analysis retry and completion winning a late stop. Mobile screenshot inspected. - Disposable complete browser/queue/SQLite walkthrough, upload interruption/reselection/resume, history, protected diagnostics and administrator settings. App/runner/processor were rebuilt from the committed source and the final full smoke check passed. HTTPS proxy/upload-resume/readiness smoke also passed during implementation. Only disposable test containers were restarted; no real Immich/media/email was used. - Nine CI contract/policy tests, source-tree/document checks, staged diff checks, tracked-source and full-history secret scans (no leaks). Source gosec: 35 production files, 29 previously reviewed findings, no loading errors or suppressions; source govulncheck passed the existing policy. No baseline exceptions or dependency changes were added. The existing UI large-bundle advisory remains. STATE / LIMITS / HANDOFF Source is committed and pushed for review; not merged, release-image-published or deployed. Forgejo run https://git.sharedroot.net/jchapman/Immich-Bridge/actions/runs/5 is waiting for the AMD64/ARM64 source jobs, with dependent gates blocked. No native release CI pass or native ARM64 execution is claimed. Real large-library performance and deployed pilot behavior remain unverified. Review #17. It is stacked on #16, which itself follows #15; after those merge, retarget #17 to main and verify the diff and required gates. Coordinate an idle installation of app, runner and processor together, then run an owner pilot preview and check the task lifecycle before closing this issue. Do not interrupt active uploads/tasks for deployment. No automatic import replay, rollback or unsupported mid-import resume is promised. ISSUE #4 CHANGES The shared panel uses owner-scoped persisted server stages, start/finish times, last confirmed activity and a separately labeled heartbeat. Processor stage records identify verification and metadata analysis while work is actually occurring; the old guessed 90-percent analysis update is gone. A heartbeat never becomes item progress; stale/missing status explicitly means unknown, and polling restores saved state across owner sessions/reconnects. Final elapsed duration freezes at completion; missing timestamps remain unconfirmed. The pinned bridge.4 BridgeReport hook runs at final report generation, not as a live asset feed. No live examined/processed counters, percentage or ETA are invented. Measured destination requests/new-upload acknowledgements remain separate from final reported assets and processed/skipped items. Final asset totals are labeled as report totals rather than archive entries or a live examined count. See docs/results.md and docs/testing.md.
Author
Owner

Integration handoff: PR #17 is merged into main in 8230741. The final combined source passed local backend/vet/race, UI/browser, container/isolation/HTTPS, source/image policy and secret checks. Detailed merge/conflict evidence and limitations: #14 (comment). Native Forgejo AMD64/ARM64 release validation remains queued; no release images or deployment are claimed. This issue remains open for its pilot checkpoint. Check authoritative stage/activity feedback against the owner pilot export after a coordinated idle deployment. No active upload/task or pilot service was interrupted.

Integration handoff: PR #17 is merged into main in `8230741`. The final combined source passed local backend/vet/race, UI/browser, container/isolation/HTTPS, source/image policy and secret checks. Detailed merge/conflict evidence and limitations: https://git.sharedroot.net/jchapman/Immich-Bridge/issues/14#issuecomment-175. Native Forgejo AMD64/ARM64 release validation remains queued; no release images or deployment are claimed. This issue remains open for its pilot checkpoint. Check authoritative stage/activity feedback against the owner pilot export after a coordinated idle deployment. No active upload/task or pilot service was interrupted.
Author
Owner

Final development handoff: PR #17 is merged into main in 8230741, preserving feature commit(s) e980c37.

The shared panel shows persisted server stages, elapsed time, last confirmed activity and a separate worker heartbeat. Missing/stale status remains unknown. No live examined-item count, percentage or ETA is invented from final importer reports, ZIP sizes or elapsed time.

Validation: Backend activity/lifecycle regressions and races, actual processor stage checks and the two-owner-browser activity/reconnect suite passed. The combined application also passed backend/vet/race, UI lint/build, container/HTTPS, source/image policies and secret checks; integration evidence.

Documentation is updated on main through PR #21, merge 5ed7191: feature guide, merged scope/evidence, and remaining pilot checks. All nine documentation/policy tests and link/anchor/workflow checks passed.

Closing at the owner's explicit request after merge, local validation and documentation review. This supersedes the earlier request to keep this development issue open through deployment. Native Forgejo AMD64/ARM64 release gates, coordinated idle installation and applicable real-provider/owner pilot checks remain in the release checklist and coordination issue #14. No deployment, native ARM64 pass, real-library capacity result or gate waiver is claimed. PR #19 and scanning remain on hold.

Final development handoff: [PR #17](https://git.sharedroot.net/jchapman/Immich-Bridge/pulls/17) is merged into main in `8230741`, preserving feature commit(s) `e980c37`. The shared panel shows persisted server stages, elapsed time, last confirmed activity and a separate worker heartbeat. Missing/stale status remains unknown. No live examined-item count, percentage or ETA is invented from final importer reports, ZIP sizes or elapsed time. Validation: Backend activity/lifecycle regressions and races, actual processor stage checks and the two-owner-browser activity/reconnect suite passed. The combined application also passed backend/vet/race, UI lint/build, container/HTTPS, source/image policies and secret checks; [integration evidence](https://git.sharedroot.net/jchapman/Immich-Bridge/issues/14#issuecomment-175). Documentation is updated on main through [PR #21](https://git.sharedroot.net/jchapman/Immich-Bridge/pulls/21), merge `5ed7191`: [feature guide](https://git.sharedroot.net/jchapman/Immich-Bridge/src/branch/main/docs/results.md#task-activity-and-stopping), [merged scope/evidence](https://git.sharedroot.net/jchapman/Immich-Bridge/src/branch/main/docs/integration-status.md), and [remaining pilot checks](https://git.sharedroot.net/jchapman/Immich-Bridge/src/branch/main/docs/deployment.md#merged-pilot-feature-checks). All nine documentation/policy tests and link/anchor/workflow checks passed. Closing at the owner's explicit request after merge, local validation and documentation review. This supersedes the earlier request to keep this development issue open through deployment. Native Forgejo AMD64/ARM64 release gates, coordinated idle installation and applicable real-provider/owner pilot checks remain in the release checklist and coordination issue #14. No deployment, native ARM64 pass, real-library capacity result or gate waiver is claimed. PR #19 and scanning remain on hold.
Sign in to join this conversation.
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#4
No description provided.