mirror-immich/web
midzelis f61b7a8a15 refactor(web): fixed-size scroll plane for timeline virtual scroll
Replaces the timeline's growing virtual scroll height with a fixed
500K-pixel scroll plane that recycles around an anchor month. Removes
the browser max-height ceiling and the O(N) layout cascade that ran on
every month height change.

- Months are positioned by planeTop, derived on demand by walking
  outward from the anchor in positionMonthsOnPlane.
- Soft repoint (trackAnchorToViewportTop) runs on every scroll; hard
  repoint (recenterPlane) slides the plane back toward PLANE_CENTER on
  idle or near plane edges.
- Height changes shift the anchor instead of scrollTop, fixing Safari
  momentum-scroll stutter when a viewport-top month settles.

Change-Id: I39cb61e7c4ff6cd5b0d59a7cc9c65b4e6a6a6964
2026-04-20 17:13:44 +00:00
..
bin chore: build sdk while server is starting (#22083) 2025-09-16 12:48:31 -04:00
src refactor(web): fixed-size scroll plane for timeline virtual scroll 2026-04-20 17:13:44 +00:00
static fix: allow bots to access /s/ urls (#27579) 2026-04-07 09:22:53 -05:00
tests chore(web): bump immich/ui for tooltips (#24632) 2026-01-05 19:51:03 +00:00
.browserslistrc chore: bump browserlists version and load tscompat browserlist from file (#19212) 2025-06-16 10:03:46 -05:00
.dockerignore
.gitignore
.npmrc
.nvmrc chore(deps): update node.js to v24.14.1 (#27412) 2026-03-31 12:46:38 +02:00
.prettierignore chore(web): fix weblate conflicts (#10071) 2024-06-10 13:59:54 +01:00
.prettierrc chore(web): enable prettier json key sorting recursively (#10120) 2024-06-11 12:52:20 +01:00
README.md fix(web): Updated web README.md (#12899) 2024-09-25 12:59:35 +00:00
eslint.config.js chore(deps): update dependency typescript to v6 (#27577) 2026-04-07 17:15:55 +02:00
mise.toml chore: update task commands in web/mise.toml to use pnpm (#26345) 2026-02-19 16:10:55 -05:00
package.json chore(web): bump svelte-check version to silence big warning stack trace (#27935) 2026-04-18 14:42:47 +00:00
svelte.config.js fix: make web build stage deterministic (#27823) 2026-04-15 19:31:23 +02:00
tsconfig.json chore(deps): update dependency typescript to v6 (#27577) 2026-04-07 17:15:55 +02:00
vite.config.ts fix(docs): instructions on how to use local immich ui (#27813) 2026-04-17 12:29:14 +02:00

README.md

Immich web project

This project uses the SvelteKit web framework. Please refer to the SvelteKit docs for information on getting started as a contributor to this project. In particular, it will help you navigate the project's code if you understand the basics of SvelteKit routing.

When developing locally, you will run a SvelteKit Node.js server. When this project is deployed to production, it is built as a SPA and deployed as part of the server project.