Make every uploaded ZIP reachable in the mobile file list #5

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

On a phone, a collection with three ZIP files reports three parts but exposes only two entries. The status panel obscures the final item.

Acceptance criteria:

  • Let the file list expand or provide an obvious, usable scroll region.
  • Keep every file and its controls reachable without overlap or clipped corners.
  • Preserve the selected file and the status panel when switching between entries.
  • Test narrow screens, long filenames, at least three files and a longer list, including touch and keyboard access.
  • Keep cross-browser monitoring working.
On a phone, a collection with three ZIP files reports three parts but exposes only two entries. The status panel obscures the final item. Acceptance criteria: - Let the file list expand or provide an obvious, usable scroll region. - Keep every file and its controls reachable without overlap or clipped corners. - Preserve the selected file and the status panel when switching between entries. - Test narrow screens, long filenames, at least three files and a longer list, including touch and keyboard access. - Keep cross-browser monitoring working.
Author
Owner

Starting owner-requested #5 after reading #14 and all comments. Scope: make every ZIP and its controls reachable on narrow/mobile layouts, retain selection and the status panel while switching entries, and preserve cross-browser monitoring. I will work from current main in an isolated branch, inspect the existing layout, and verify three-file and longer lists with long filenames, touch and keyboard access. Held #12/PR #19 and its checkout remain untouched. No deployment, rebuild/restart of running services, or interruption of uploads/tasks is planned.

Starting owner-requested #5 after reading #14 and all comments. Scope: make every ZIP and its controls reachable on narrow/mobile layouts, retain selection and the status panel while switching entries, and preserve cross-browser monitoring. I will work from current main in an isolated branch, inspect the existing layout, and verify three-file and longer lists with long filenames, touch and keyboard access. Held #12/PR #19 and its checkout remain untouched. No deployment, rebuild/restart of running services, or interruption of uploads/tasks is planned.
Author
Owner

Finding: the mobile 360px limit covered the whole sidebar, so expanded upload help could consume the list area and clip the third ZIP. A synthetic 320px regression reproduced this before the fix. Implementation now limits only a labelled native ZIP scroll region, with wrapping names, separate keyboard-accessible selection/removal buttons and 44px touch targets; the mobile status panel follows the rail without overlap. Focused Chromium checks pass for 3/16 ZIPs at 320/390/760/761/1280px, expanded help, actual emulated touch dragging/tapping, keyboard scrolling/Enter/Space/Tab, selection retention and two independent owner sessions through monitoring outage/reconnect. Existing activity/cancellation checks, lint/build and dependency audit pass. The disposable full walkthrough exposed an initial-navigation timing race in its harness before any upload UI checks; I am stabilizing that wait and rerunning it. No deployed services were touched.

Finding: the mobile 360px limit covered the whole sidebar, so expanded upload help could consume the list area and clip the third ZIP. A synthetic 320px regression reproduced this before the fix. Implementation now limits only a labelled native ZIP scroll region, with wrapping names, separate keyboard-accessible selection/removal buttons and 44px touch targets; the mobile status panel follows the rail without overlap. Focused Chromium checks pass for 3/16 ZIPs at 320/390/760/761/1280px, expanded help, actual emulated touch dragging/tapping, keyboard scrolling/Enter/Space/Tab, selection retention and two independent owner sessions through monitoring outage/reconnect. Existing activity/cancellation checks, lint/build and dependency audit pass. The disposable full walkthrough exposed an initial-navigation timing race in its harness before any upload UI checks; I am stabilizing that wait and rerunning it. No deployed services were touched.
Author
Owner

Implemented and published for review in draft PR #24, commit e274c617aa64ace46a6a53a558de717083f37545, based on main 44c36de10d3c4c8a4a72c01750e20bd2e88ab969.

Changes:

  • Replace the constrained mobile sidebar/Radix viewport with a labelled native ZIP scroll region. Upload help and controls grow above it; the selected status panel follows below without overlap. Long names wrap in both places.
  • Provide a visible count/scroll hint, real selection buttons with pressed state and status-panel association, separate 44px remove controls, visible keyboard focus and an accessible empty-state action.
  • Retain selection while scrolling, resizing and monitoring updates. Local row removal retains the current selection unless that row is removed, when it falls back to the first remaining ZIP.
  • Add ui/tests/mobile-file-list.mjs to the CI browser gate and update walkthrough selectors. Stabilize the walkthrough's initial collection-redirect wait before Administration navigation. Document behavior and the remaining installation/device checklist.

Checks actually passed:

  • Original 320px/expanded-help clipping was reproduced before the fix. Fixed UI passes 3/16 ZIPs at 320/390/760/761/1280px with long names and expanded help; hit testing checks selection/remove controls and panel separation. Emulated touch drag/tap, keyboard scrolling/Enter/Space/Tab, selection retention, removal and two independent owner sessions through status outage/reconnect pass.
  • UI lint/build and full dependency audit: zero reported vulnerabilities. Existing activity/cancellation, task-email and advanced-import browser suites pass. Screenshots with synthetic filenames were inspected locally.
  • Fresh Linux AMD64 local runtime build and full disposable browser/container walkthrough pass: authentication/non-root, admission, application replacement during upload, offset/SHA-256 resume, real queue/SQLite reports, full upload/pause/stop/reselection/recovery flow, result panels, settings persistence and redaction. The first browser attempt exposed the harness redirect race described above; the rerun passes. Unchanged runner/processor images from the validated #13 tree were reused; cmd/internal/importer/dependency/Dockerfile source equality was checked. Disposable containers, networks and volumes were removed.
  • All nine CI policy tests, documentation links/anchors/encoding, workflow/tracked-file contracts, Git diff checks and redacted full-history/staged secret scans pass. The initially missing local YAML dependency was installed from the pinned hashed requirements in a disposable environment; the full rerun passes.

State/limits: source is committed and pushed, not merged, release-image-published or deployed. Native Forgejo run 23 for this exact commit is waiting. Native AMD64/ARM64 suites and the aggregate release gate remain required; no waiver is claimed. The existing bundle-size advisory remains. Emulated Chromium touch is not physical-device/Safari validation; perform the documented device and actual-instance monitoring checks after coordinated installation. No real photo library or email was used, and no deployed service or active upload/task was interrupted. Held #12/PR #19 and its checkout remain unchanged at dc6003743056822cca9c4e81fc1f436bc5ac8635.

Next handoff: review PR #24, complete native CI, then coordinate idle installation and actual-device/pilot checks. #5 remains open for review; #14 remains the coordination index.

Implemented and published for review in draft [PR #24](https://git.sharedroot.net/jchapman/Immich-Bridge/pulls/24), commit `e274c617aa64ace46a6a53a558de717083f37545`, based on main `44c36de10d3c4c8a4a72c01750e20bd2e88ab969`. Changes: - Replace the constrained mobile sidebar/Radix viewport with a labelled native ZIP scroll region. Upload help and controls grow above it; the selected status panel follows below without overlap. Long names wrap in both places. - Provide a visible count/scroll hint, real selection buttons with pressed state and status-panel association, separate 44px remove controls, visible keyboard focus and an accessible empty-state action. - Retain selection while scrolling, resizing and monitoring updates. Local row removal retains the current selection unless that row is removed, when it falls back to the first remaining ZIP. - Add `ui/tests/mobile-file-list.mjs` to the CI browser gate and update walkthrough selectors. Stabilize the walkthrough's initial collection-redirect wait before Administration navigation. Document behavior and the remaining installation/device checklist. Checks actually passed: - Original 320px/expanded-help clipping was reproduced before the fix. Fixed UI passes 3/16 ZIPs at 320/390/760/761/1280px with long names and expanded help; hit testing checks selection/remove controls and panel separation. Emulated touch drag/tap, keyboard scrolling/Enter/Space/Tab, selection retention, removal and two independent owner sessions through status outage/reconnect pass. - UI lint/build and full dependency audit: zero reported vulnerabilities. Existing activity/cancellation, task-email and advanced-import browser suites pass. Screenshots with synthetic filenames were inspected locally. - Fresh Linux AMD64 local runtime build and full disposable browser/container walkthrough pass: authentication/non-root, admission, application replacement during upload, offset/SHA-256 resume, real queue/SQLite reports, full upload/pause/stop/reselection/recovery flow, result panels, settings persistence and redaction. The first browser attempt exposed the harness redirect race described above; the rerun passes. Unchanged runner/processor images from the validated #13 tree were reused; cmd/internal/importer/dependency/Dockerfile source equality was checked. Disposable containers, networks and volumes were removed. - All nine CI policy tests, documentation links/anchors/encoding, workflow/tracked-file contracts, Git diff checks and redacted full-history/staged secret scans pass. The initially missing local YAML dependency was installed from the pinned hashed requirements in a disposable environment; the full rerun passes. State/limits: source is committed and pushed, not merged, release-image-published or deployed. [Native Forgejo run 23](https://git.sharedroot.net/jchapman/Immich-Bridge/actions/runs/23) for this exact commit is waiting. Native AMD64/ARM64 suites and the aggregate release gate remain required; no waiver is claimed. The existing bundle-size advisory remains. Emulated Chromium touch is not physical-device/Safari validation; perform the documented device and actual-instance monitoring checks after coordinated installation. No real photo library or email was used, and no deployed service or active upload/task was interrupted. Held #12/PR #19 and its checkout remain unchanged at `dc6003743056822cca9c4e81fc1f436bc5ac8635`. Next handoff: review PR #24, complete native CI, then coordinate idle installation and actual-device/pilot checks. #5 remains open for review; #14 remains the coordination index.
Author
Owner

Resuming #5 for owner-requested PR #24 merge readiness after reading #14, #5 and their full comment history. The published feature is already complete; I am independently reviewing the source/test diff, rerunning focused UI and CI contracts, and checking current main/head ancestry and server merge restrictions. If those checks pass, I will remove the draft marker and merge the reviewed source without force or release-gate changes. Native Forgejo jobs are still waiting; native release validation and actual-device/installation checks remain required separately. No deployment or interruption of running services/uploads/tasks is planned. Held #12/PR #19 remains excluded.

Resuming #5 for owner-requested PR #24 merge readiness after reading #14, #5 and their full comment history. The published feature is already complete; I am independently reviewing the source/test diff, rerunning focused UI and CI contracts, and checking current main/head ancestry and server merge restrictions. If those checks pass, I will remove the draft marker and merge the reviewed source without force or release-gate changes. Native Forgejo jobs are still waiting; native release validation and actual-device/installation checks remain required separately. No deployment or interruption of running services/uploads/tasks is planned. Held #12/PR #19 remains excluded.
Author
Owner

Owner-requested review and merge completed: PR #24 merged into main in 0a47f4f6fc2455dc304df49fa8c45084ff4a2d65, preserving feature e274c617aa64ace46a6a53a558de717083f37545 and its branch. #5 was closed by the merge. The earlier keep-open-for-review instruction is superseded by this completed source review and owner-requested merge.

Every ZIP now has reachable selection/remove controls within a labelled native scroll region; mobile help grows above it and the wrapped selected status panel follows below. This review independently re-ran UI lint/build, full dependency audit (zero vulnerabilities), mobile-file-list, task-activity, task-email and advanced-import browser suites; all passed. All nine CI policy tests, source/workflow/document contracts and diff/clean-tree checks passed. Fresh synthetic narrow-screen screenshots were inspected. Responsive evidence covers 3/16 ZIPs at 320/390/760/761/1280px, touch dragging/tapping, keyboard scrolling/Enter/Space/Tab, 44px remove controls, selection retention and independent-session monitoring/reconnect. Earlier full disposable container/upload evidence is retained in comment 370; it was not rerun during this source review.

Post-merge verification: main tree ab083802432b456c4af77d9a8413e706faee2926 exactly equals the validated feature tree; both expected parents and feature ancestry are preserved. No conflicts or force merge; no branch-protection or release-gate changes. The original held #12 checkout and draft PR #19 remain unchanged at dc6003743056822cca9c4e81fc1f436bc5ac8635.

State/next step: source is merged, not deployed or release-image-published. Final-main native run 24 is waiting. Native AMD64/ARM64 suites and the aggregate release gate remain required before release; the existing bundle-size advisory and physical-device/Safari/actual-instance monitoring checks remain recorded in testing and the installation checklist. Development closure does not waive them. Complete native validation, then coordinate idle installation of matching app/runner/processor images and device/pilot checks. No running service or active upload/task was interrupted. #14 stays open for coordination; #12/PR #19 stays on hold.

Owner-requested review and merge completed: [PR #24](https://git.sharedroot.net/jchapman/Immich-Bridge/pulls/24) merged into main in `0a47f4f6fc2455dc304df49fa8c45084ff4a2d65`, preserving feature `e274c617aa64ace46a6a53a558de717083f37545` and its branch. #5 was closed by the merge. The earlier keep-open-for-review instruction is superseded by this completed source review and owner-requested merge. Every ZIP now has reachable selection/remove controls within a labelled native scroll region; mobile help grows above it and the wrapped selected status panel follows below. This review independently re-ran UI lint/build, full dependency audit (zero vulnerabilities), mobile-file-list, task-activity, task-email and advanced-import browser suites; all passed. All nine CI policy tests, source/workflow/document contracts and diff/clean-tree checks passed. Fresh synthetic narrow-screen screenshots were inspected. Responsive evidence covers 3/16 ZIPs at 320/390/760/761/1280px, touch dragging/tapping, keyboard scrolling/Enter/Space/Tab, 44px remove controls, selection retention and independent-session monitoring/reconnect. Earlier full disposable container/upload evidence is retained in comment 370; it was not rerun during this source review. Post-merge verification: main tree `ab083802432b456c4af77d9a8413e706faee2926` exactly equals the validated feature tree; both expected parents and feature ancestry are preserved. No conflicts or force merge; no branch-protection or release-gate changes. The original held #12 checkout and draft PR #19 remain unchanged at `dc6003743056822cca9c4e81fc1f436bc5ac8635`. State/next step: source is merged, not deployed or release-image-published. Final-main [native run 24](https://git.sharedroot.net/jchapman/Immich-Bridge/actions/runs/24) is waiting. Native AMD64/ARM64 suites and the aggregate release gate remain required before release; the existing bundle-size advisory and physical-device/Safari/actual-instance monitoring checks remain recorded in [testing](https://git.sharedroot.net/jchapman/Immich-Bridge/src/branch/main/docs/testing.md#zip-file-list-access) and the [installation checklist](https://git.sharedroot.net/jchapman/Immich-Bridge/src/branch/main/docs/deployment.md#for-each-installation). Development closure does not waive them. Complete native validation, then coordinate idle installation of matching app/runner/processor images and device/pilot checks. No running service or active upload/task was interrupted. #14 stays open for coordination; #12/PR #19 stays 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#5
No description provided.