immich/web/src/lib/components
Min Idzelis 4aa31d38bf
fix(web): svelte regression - cancel video preview fetch when bind:this is cleared early (#27713)
fix(web): cancel video preview fetch when bind:this is cleared early

In Svelte 5.53.9, `bind:this` is now cleared earlier in the unmount
sequence ("better bind:this cleanup timing"). The video thumbnail's
$effect was relying on the old order to read the bound `player` element
and clear its `src` to abort the in-flight `/api/assets/{id}/video/playback`
range request — but the bind is now `undefined` by the time the effect
runs, so the cleanup is silently skipped. The detached <video> keeps
its src, and Firefox does not abort an in-flight media fetch when the
element is detached/GC'd. Long-lived 206 range requests then saturate
Firefox's 6-connection HTTP/1.1 per-host limit and freeze the timeline
(see #27585).

Capture the player reference inside the effect and tear down via the
effect cleanup return — Svelte runs the prior cleanup (with the captured
ref) before `bind:this` is cleared. Use the canonical
`pause() / removeAttribute('src') / load()` sequence which actually aborts
the fetch in Firefox, even on a detached element.

Fixes #27585

Change-Id: I4d9fba859955f5c54f603c345e61d4206a6a6964
2026-04-15 20:18:59 -05:00
..
admin-settings refactor: auth manager (#27638) 2026-04-14 08:49:24 -04:00
album-page feat: album map markers endpoint (#27830) 2026-04-15 15:58:34 -04:00
asset-viewer refactor(web): turn thumbhash action into Thumbhash component (#27741) 2026-04-15 20:18:49 -05:00
assets fix(web): svelte regression - cancel video preview fetch when bind:this is cleared early (#27713) 2026-04-15 20:18:59 -05:00
faces-page fix(web): don't cache empty search results for people search (#27632) 2026-04-09 02:33:04 +01:00
layouts feat: restore database backups (#23978) 2026-01-20 09:22:28 -06:00
maintenance fix: timestamp handling for database backup in Web UI (#27359) 2026-04-06 17:27:48 +02:00
memory-page refactor: auth manager (#27638) 2026-04-14 08:49:24 -04:00
onboarding-page feat: upgrade immich/ui (#27792) 2026-04-14 16:18:12 +00:00
pages refactor: auth manager (#27638) 2026-04-14 08:49:24 -04:00
places-page chore: eslint 10 (#26490) 2026-02-24 08:24:18 -05:00
server-statistics feat(web): lazy load library and server statistics (#26406) 2026-04-14 12:54:09 -04:00
share-page refactor: asset select manager (#27329) 2026-03-27 14:23:33 -04:00
shared-components feat: auth logout page (#27831) 2026-04-15 16:33:52 -04:00
sharedlinks-page refactor: clean class (#26885) 2026-03-12 14:47:35 -04:00
sidebar refactor: rename mobileDevice to mediaQueryManager (#25464) 2026-01-23 20:55:10 -06:00
timeline fix: asset multi select download shortcut (#27784) 2026-04-14 12:29:55 -04:00
user-settings-page chore!: rename API key schemas (#27828) 2026-04-15 15:58:26 -04:00
users chore: use fontWeight for Text component (#25262) 2026-01-14 16:25:30 +00:00
utilities-page feat(server): resolve duplicates (#25316) 2026-03-26 18:33:55 +00:00
workflows feat: upgrade immich/ui (#27792) 2026-04-14 16:18:12 +00:00
ActionMenuItem.svelte refactor: download action (#25124) 2026-01-07 22:01:20 +00:00
AdaptiveImage.svelte refactor(web): turn thumbhash action into Thumbhash component (#27741) 2026-04-15 20:18:49 -05:00
AdminCard.svelte refactor: admin card (#24723) 2025-12-19 12:47:04 -05:00
AlphaBackground.svelte refactor: clean class (#26879) 2026-03-12 09:53:46 -05:00
ApiKeyPermissionsPicker.svelte refactor: api key modals (#23420) 2025-10-31 08:58:52 -04:00
AssetViewerEvents.svelte chore: remove random code snippet (#25677) 2026-01-29 16:11:25 +00:00
BreadcrumbActionPage.svelte refactor(web): admin page layout (#25281) 2026-01-15 18:58:43 -05:00
DelayedLoadingSpinner.svelte feat: adaptive progressive image loading for photo viewer (#26636) 2026-03-11 09:48:46 -05:00
HeaderActionButton.svelte feat: header context menu (#24374) 2025-12-04 11:09:38 -05:00
Image.spec.ts refactor: thumbnail components (#26379) 2026-02-23 11:56:20 -05:00
Image.svelte feat: adaptive progressive image loading for photo viewer (#26636) 2026-03-11 09:48:46 -05:00
ImageLayer.svelte fix(web): allow images to be downloaded again(long-press or right click) (#26992) 2026-03-18 12:40:36 +01:00
LinkToDocs.svelte feat(server): resolve duplicates (#25316) 2026-03-26 18:33:55 +00:00
LoadingDots.svelte refactor: clean class (#26879) 2026-03-12 09:53:46 -05:00
OnEvents.svelte refactor: event manager (#25565) 2026-01-29 08:52:18 -05:00
QueueCard.svelte refactor: clean class (#26879) 2026-03-12 09:53:46 -05:00
QueueCardBadge.svelte refactor: clean class (#26879) 2026-03-12 09:53:46 -05:00
QueueCardButton.svelte refactor: clean class (#26879) 2026-03-12 09:53:46 -05:00
QueueGraph.svelte feat: upgrade immich/ui (#27792) 2026-04-14 16:18:12 +00:00
QueuePanel.svelte feat: primary notifications (#26988) 2026-03-17 17:54:11 -04:00
QueueStorageMigrationDescription.svelte refactor(web): routes (#25313) 2026-01-16 16:11:09 -05:00
ServerAboutItem.svelte fix(deps): update typescript-projects (#22809) 2025-10-10 00:50:48 +02:00
SharedLinkExpiration.svelte feat(web): change link expiration logic & presets (#26064) 2026-02-12 18:27:49 +01:00
SharedLinkFormFields.spec.ts feat(web): change link expiration logic & presets (#26064) 2026-02-12 18:27:49 +01:00
SharedLinkFormFields.svelte feat(web): change link expiration logic & presets (#26064) 2026-02-12 18:27:49 +01:00
TableButton.svelte refactor: favorite action (#25121) 2026-01-07 21:21:19 +00:00
TestWrapper.svelte chore(web): bump immich/ui for tooltips (#24632) 2026-01-05 19:51:03 +00:00
Thumbhash.svelte refactor(web): turn thumbhash action into Thumbhash component (#27741) 2026-04-15 20:18:49 -05:00
VersionAnnouncement.svelte refactor: auth manager (#27638) 2026-04-14 08:49:24 -04:00