8117 Commits

Author SHA1 Message Date
midzelis
d14c997ed3 Inline, combine functions, lint 2025-09-11 22:15:29 +00:00
midzelis
3ffa7c9d29 use binary search for perf, refactor, improve readability 2025-09-11 22:15:29 +00:00
midzelis
ccc5f2a16d readability improvements in scroll function 2025-09-11 22:15:29 +00:00
midzelis
4653de3301 Review comments 2025-09-11 22:15:29 +00:00
midzelis
3ff24fc803 rename timeline-day to timeline-month 2025-09-11 22:15:29 +00:00
midzelis
1a754b868c refactor - improve timeline readability, general refactoring, renaming variables, functions, props, etc 2025-09-11 22:15:29 +00:00
midzelis
9e43b0625a Minor scrubber refactor 2025-09-11 22:15:29 +00:00
midzelis
e1303f81ab refactor/split handleTimelineScroll into smaller functions 2025-09-11 22:15:29 +00:00
midzelis
88ca63ff47 refactor scrollCompensation a bit more 2025-09-11 22:15:29 +00:00
midzelis
2a55b05a25 refactor hmr a bit more 2025-09-11 22:15:29 +00:00
midzelis
50d9b1ec60 Move updateSlidingWindow into onScroll 2025-09-11 22:15:29 +00:00
midzelis
abd97c4a93 Improve consistency between scrollTop and scrollTo 2025-09-11 22:15:29 +00:00
midzelis
ff9e3428be Extract HMR logic into reusable component
• Create dedicated Hmr component for hot module replacement handling
• Remove inline HMR code from base-timeline-viewer
• Simplify timeline viewer by delegating HMR concerns to specialized component
2025-09-11 22:15:29 +00:00
midzelis
58a95c5a4b Fix code quality issues in timeline components
• Fix variable naming consistency (leadout → leadOut)
• Remove unused props from timeline-asset-viewer interface
• Add styleMarginRightOverride prop for dynamic margin control
• Simplify skeleton component styling
2025-09-11 22:15:29 +00:00
midzelis
364468afac Create Timeline facade component to unify timeline usage
• Create timeline/timeline.svelte as main entry point for timeline functionality
• Combine BaseTimeline, TimelineKeyboardActions, and TimelineAssetViewer
• Update all route imports from base-timeline to use Timeline component
• Move scrubber.svelte to timeline/base-components/
• Fix timeline-keyboard-actions date handling from result.dateTime to result.date
• Clean up unused imports and props
2025-09-11 22:15:29 +00:00
midzelis
dcc34bd1be Reorganize timeline components into final directory structure
• Move timeline-viewer to timeline/base-components/base-timeline-viewer
• Move base-timeline to timeline/base-components/base-timeline
• Move skeleton to timeline/base-components/
• Move timeline-day to timeline/base-components/
• Move selectable-timeline-day to timeline/internal-components/
• Move timeline-asset-viewer to timeline/internal-components/
• Move timeline actions to timeline/actions/
• Update all imports to reference new locations
2025-09-11 22:15:29 +00:00
midzelis
521825e5e6 Rename asset-grid to base-timeline and reorganize timeline components
• Rename asset-grid.svelte to base-timeline.svelte
• Move asset-grid-actions.svelte to timeline-keyboard-actions.svelte in timeline-viewer/actions/
• Move delete-asset-dialog.svelte to timeline-viewer/actions/
• Update all imports across routes and components
2025-09-11 22:15:29 +00:00
midzelis
8465ce5a22 Rename and relocate timeline-related components
• Move asset-grid-asset-viewer to timeline-asset-viewer in timeline-viewer/
• Move asset-date-group-selection-aware to selectable-timeline-day in timeline-viewer/timeline-day/
• Move asset-date-group-comp to timeline-day in timeline-viewer/timeline-day/
• Update all imports in timeline-viewer.svelte
2025-09-11 22:15:29 +00:00
midzelis
6b564cd63c Rename and relocate asset-grid-without-scrubber to timeline-viewer
• Rename asset-grid-without-scrubber.svelte to timeline-viewer.svelte
• Move timeline-viewer.svelte to lib/components/timeline-viewer/
• Move skeleton.svelte to lib/components/timeline-viewer/
• Update imports in asset-grid.svelte
2025-09-11 22:15:29 +00:00
midzelis
76efc48b1b Merge asset viewer components into asset-grid-asset-viewer
• Rename asset-viewer-actions.svelte to asset-grid-asset-viewer.svelte
• Move AssetViewer rendering from asset-viewer-and-actions into asset-grid-asset-viewer
• Remove asset-viewer-and-actions.svelte intermediate wrapper
• Remove unused isShowDeleteConfirmation prop
2025-09-11 22:15:29 +00:00
midzelis
14954c669b Replace AssetDateGroup with AssetDateGroupSelectionAware throughout - merge/replace temp
• Update asset-grid-without-scrubber to use AssetDateGroupSelectionAware
• Remove original asset-date-group.svelte component
• Remove date-group-actions-lib.svelte.ts class
2025-09-11 22:15:29 +00:00
midzelis
1fb99e7b1c Inline DateGroupActionLib logic into asset-date-group-selection-aware (temp)
• Remove DateGroupActionLib dependency and inline all selection logic
• Implement proper selection state predicates instead of placeholder true values
• Move keyboard event handlers and selection logic directly into component
2025-09-11 22:15:29 +00:00
midzelis
2b02011b9c Split asset date group into (temp) generic and selection-aware components
• Rename asset-date-group.svelte to asset-date-group-comp.svelte as generic base
• Create asset-date-group-selection-aware.svelte wrapper for selection logic
• Extract selection-specific callbacks into separate handlers
• Update onDateGroupSelect to onDayGroupSelect with DayGroup parameter
2025-09-11 22:15:29 +00:00
midzelis
cfdc93e4aa Rename scroll compensation functions for clarity
• Rename handleScrollCompensation to scrollCompensation
• Rename scrollTop prop to onScrollToTop to match event handler pattern
• Add onScrollCompensation alias for consistency with other event handlers
2025-09-11 22:15:29 +00:00
midzelis
9a30198238 Refactor date group actions from Svelte component to TypeScript class
• Convert asset-date-group-actions.svelte to date-group-actions-lib.svelte.ts class
• Remove complex prop binding between asset-grid-without-scrubber and asset-date-group
• Use class instance in asset-date-group with direct method access
2025-09-11 22:15:29 +00:00
Min Idzelis
0beeea6985 Extract asset grid core logic into asset-grid-without-scrubber component
• Move all timeline rendering and scrolling logic to new component
• Keep scrubber logic and interaction handlers in original asset-grid 
• Use composition pattern with header snippet for scrubber integration
• Simplify asset-grid to ~450 lines by extracting ~390 lines of core logic
2025-09-11 22:15:29 +00:00
midzelis
cc6d64e259 Fix and enhance navigate to time functionality
• Add i18n support for navigate button and dialog title
• Update ChangeDate component to return DateTime object alongside ISO string
• Fix closest date finding algorithm to handle cases where exact month doesn't exist
• Add navigate to time (g) shortcut to keyboard shortcuts modal
2025-09-11 22:15:29 +00:00
Min Idzelis
c229b4d71a Extract keyboard shortcuts and asset actions into asset-grid-actions component
• Move all keyboard shortcut handling and focus navigation logic from asset-grid
• Extract asset operation handlers (delete, force delete, stack, archive)
• Move delete confirmation dialog and date picker to new component
• Consolidate ~230 lines of action-related code into dedicated module
2025-09-11 22:15:29 +00:00
Min Idzelis
bedc94d470 Extract asset selection logic into asset-date-group-actions component
• Move multi-asset selection handlers (shift-click range selection) from asset-grid
• Extract date group selection logic for bulk selecting assets by date
• Consolidate keyboard event handling for shift key detection
• Clean up asset-grid by removing ~200 lines of selection-related code
2025-09-11 22:15:29 +00:00
Min Idzelis
1b1ce229c9 Extract asset viewer navigation logic into separate components
• Move navigation handlers (next, previous, random, close) from asset-grid to dedicated asset-viewer-actions component
• Extract asset action handlers (archive, stack, favorite) into reusable module  
• Create asset-viewer-and-actions wrapper to compose viewer with navigation actions
2025-09-11 22:15:29 +00:00
Alex
d84cc450f1
chore: post release tasks (#21834) 2025-09-11 15:15:10 -05:00
github-actions
4153848c68 chore: version v1.142.0 v1.142.0 2025-09-11 19:39:05 +00:00
Jason Rasmussen
f29230c8a6
fix(web): handle buckets before year 1000 (#21832) 2025-09-11 14:36:16 -05:00
Weblate (bot)
03af60e8eb
chore(web): update translations (#21814)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translation: Immich/immich

Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: Taiki M <vexingly-many-mace@duck.com>
2025-09-11 19:34:40 +00:00
bo0tzz
ae827e1406
fix: define call secrets in merge-translations (#21831) 2025-09-11 19:29:58 +00:00
shenlong
7893ac25fb
fix: always use en locale for parsing timeline datetime (#21796)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
2025-09-11 14:20:39 -05:00
Alex
42a03f2556
fix: concurrency issue (#21830) 2025-09-11 19:02:03 +00:00
shenlong
722a464e23
fix: android background backups (#21795)
* upload using dart client

* add connectivity api

* respect backup network setting

* comment as to why we need to wait for setForegroundAsync call

* log assets skipped due to network constraint

* dynamic spawning -> false

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-11 12:01:15 -05:00
bo0tzz
39c1ebf698
fix: proper triggers for weblate checks (#21818) 2025-09-11 14:31:02 +00:00
Jason Rasmussen
ef6e4f4699
docs: update tag details (#21815) 2025-09-11 10:09:18 -04:00
bo0tzz
0700e61d20
fix: trigger for weblate checks (#21816) 2025-09-11 14:07:36 +00:00
trommegutten
7e6cd48783
docs: improve and clarify XMP sidecar behavior (#20334)
* docs: improve and clarify XMP sidecar behavior

- Simplified and reorganized the documentation for XMP sidecars
- Clearly separated CLI import vs. external library behavior
- Clarified what metadata fields are stored in the database
- Documented filename rules and storage behavior
- Explained write-back behavior, including permission requirements

* Clarify sidecar write-back behavior for external libraries

Updated documentation to reflect that Immich does not write metadata to sidecar files in external libraries unless the mount is writable.

Mentions silent fail behavior as described in Issue #10538.

* Update xmp-sidecars.md

* Refactor section 1: clarify XMP fields Immich reads and writes

- Rewrote section 1 with a simplified 3-column table: Metadata · Writes to · Reads from
- Corrected date field logic with prioritized read order
- Clarified that Immich only updates fields that have changed
- Removed incorrect mention of dc:title

* docs: clarify tag reading priority (TagsList, HierarchicalSubject, IPTC:Keywords)

Updated the documentation for tag metadata extraction to clarify the prioritized order in which Immich reads tags from imported media:

1. digiKam:TagsList
2. lr:HierarchicalSubject
3. IPTC:Keywords

This reflects the actual logic used in the getTagList()
2025-09-11 14:00:53 +00:00
Daniel Dietzler
e524c59560
chore: @danieldietzler web codeowners (#21813)
I don't see web PRs otherwise
2025-09-11 14:28:20 +02:00
Jason Rasmussen
b4c72fb609
fix(server): validate token permission (#21802) 2025-09-11 08:09:58 -04:00
bo0tzz
74e14b6495
chore: 10 minute timeout for translations merge (#21810) 2025-09-11 13:22:25 +02:00
Weblate (bot)
03207a13ec
chore(web): update translations (#21624)
Translate-URL: https://hosted.weblate.org/projects/immich/immich/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/be/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/bg/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ca/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/cs/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/da/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/de/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/es/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/et/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/eu/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fi/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/fr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/id/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/it/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ja/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/lv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/mr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/nl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ru/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sl/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sq/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/sv/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/ta/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/tr/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/uk/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/immich/immich/zh_SIMPLIFIED/
Translation: Immich/immich

Co-authored-by: Andrea Toska <toskaandrea@gmail.com>
Co-authored-by: Aravinth <aravinth@tuta.io>
Co-authored-by: Denis Pacquier <denis.pacquier@gmail.com>
Co-authored-by: DevServs <bonov@mail.ru>
Co-authored-by: FarSniper <ozmatlik@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Gustavo de León <alfonso.gus.deleon@gmail.com>
Co-authored-by: Handkep <paulus.handke@gmail.com>
Co-authored-by: Hudio Hizari <hhizari@gmail.com>
Co-authored-by: Indrek Haav <indrek.haav@hotmail.com>
Co-authored-by: Ivan Amela Caldeiro <ivanamca01@gmail.com>
Co-authored-by: Ivan Dimitrov <idimitrov08@gmail.com>
Co-authored-by: JPar99 <github.wad969@passmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Macgyver <macgyver@users.noreply.hosted.weblate.org>
Co-authored-by: Marcelo Popper Costa <marcelo_popper@hotmail.com>
Co-authored-by: Matjaž T <matjaz@moj-svet.si>
Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Co-authored-by: Oleks Povar <acc@zvirja.com>
Co-authored-by: Pajtim Rexhepi <pajtim.rexhepi@gmail.com>
Co-authored-by: Red Cyclops <shown-bleep-spiffy@duck.com>
Co-authored-by: Runskrift <anders@rimfrost.nu>
Co-authored-by: Santiago <santiwever@hotmail.com>
Co-authored-by: Saurabh Nandedkar <extremophilarum@gmail.com>
Co-authored-by: Sebastian <sebastiankiwidk@gmail.com>
Co-authored-by: Sergey Katsubo <skatsubo@gmail.com>
Co-authored-by: Simob98 <simobertuzzi98@gmail.com>
Co-authored-by: Sylvain Pichon <service@spichon.fr>
Co-authored-by: TV Box <realceday.tvbox@gmail.com>
Co-authored-by: Taiki M <vexingly-many-mace@duck.com>
Co-authored-by: Tomi Pöyskö <tomi.poysko@gmail.com>
Co-authored-by: Urko Perez Azkarragaurizar <urkoperez16@gmail.com>
Co-authored-by: User 123456789 <user123456789@users.noreply.hosted.weblate.org>
Co-authored-by: Vegard Fladby <vegard@fladby.org>
Co-authored-by: anton garcias <isaga.percompartir@gmail.com>
Co-authored-by: gablilli <gabriele.lilli0511@gmail.com>
Co-authored-by: pyccl <changcongliang@163.com>
Co-authored-by: shiuh67 <shiuh.cheng@gmail.com>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
Co-authored-by: Яўген <lzref@protonmail.com>
2025-09-11 10:28:48 +00:00
bo0tzz
529b8c285d
fix: only run weblate checks on review (#21809) 2025-09-11 10:20:49 +00:00
bo0tzz
1213f6df10
fix: use correct bot in weblate-checks (#21808) 2025-09-11 12:02:47 +02:00
bo0tzz
9e8132c363
fix: merge-translations workflow cleanup (#21789) 2025-09-11 08:27:49 +00:00
Alex
2d2673c114
fix: repeat timeline migration for first time user (#21794) 2025-09-10 16:27:00 -05:00