immich/e2e
Min Idzelis 8764a1894b
feat: adaptive progressive image loading for photo viewer (#26636)
* feat(web): adaptive progressive image loading for photo viewer

Replace ImageManager with a new AdaptiveImageLoader that progressively
loads images through quality tiers (thumbnail → preview → original).

New components and utilities:
- AdaptiveImage: layered image renderer with thumbhash, thumbnail,
  preview, and original layers with visibility managed by load state
- AdaptiveImageLoader: state machine driving the quality progression
  with per-quality callbacks and error handling
- ImageLayer/Image: low-level image elements with load/error lifecycle
- PreloadManager: preloads adjacent assets for instant navigation
- AlphaBackground/DelayedLoadingSpinner: loading state UI

Zoom is handled via a derived CSS transform applied to the content
wrapper in AdaptiveImage, with the zoom library (zoomTarget: null)
only tracking state without manipulating the DOM directly.

Also adds scaleToCover to container-utils and getAssetUrls to utils.

* fix: don't partially render images in firefox

* add passive loading indicator to asset-viewer

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2026-03-11 09:48:46 -05:00
..
src feat: adaptive progressive image loading for photo viewer (#26636) 2026-03-11 09:48:46 -05:00
test-assets@163c251744 feat: exif medium tests (#23561) 2025-11-04 16:03:02 -05:00
.gitignore feat: timeline e2e tests (#23895) 2025-11-18 21:08:55 -06:00
.nvmrc chore(deps): update node.js to v24.13.1 (#26275) 2026-02-17 11:45:57 +01:00
.prettierignore chore: linting (#7532) 2024-02-29 11:26:55 -05:00
.prettierrc chore: linting (#7532) 2024-02-29 11:26:55 -05:00
docker-compose.dev.yml fix: development containers init race conditions (#25876) 2026-02-16 18:34:42 -05:00
docker-compose.yml chore(deps): update docker.io/valkey/valkey:9 docker digest to 3eeb097 (#26807) 2026-03-10 17:34:20 +01:00
eslint.config.mjs chore: finish migrating eslint config files; bump unicorn (#17200) 2025-03-31 12:18:25 +01:00
mise.toml feat: mise monorepo tasks (#23691) 2025-11-10 15:55:15 +01:00
package.json chore(deps): update dependency @types/node to ^24.11.0 (#26808) 2026-03-10 16:46:21 +00:00
playwright.config.ts chore: run maintenance test (e2e) in isolation too, share containers (#26246) 2026-02-18 09:39:13 -05:00
tsconfig.json chore: vitest 4 for web, cli, and e2e (#26668) 2026-03-04 14:19:13 +00:00
vitest.config.ts chore: vitest 4 for web, cli, and e2e (#26668) 2026-03-04 14:19:13 +00:00
vitest.maintenance.config.ts chore: vitest 4 for web, cli, and e2e (#26668) 2026-03-04 14:19:13 +00:00