Commit graph

1652 commits

Author SHA1 Message Date
midzelis
5ac5aa57a8 fix: padding for searchresults/photostream 2025-10-07 01:29:52 +00:00
midzelis
50d462b95f feat: search results keyboard actions 2025-10-07 01:29:52 +00:00
midzelis
0ebf75a96f feat: search results page (without keyboard actions)
fix: missing responsive calculation in UserPageLayout
2025-10-07 01:29:52 +00:00
midzelis
398755e65e feat: Extract common StreamWithViewer component
- Create new StreamWithViewer component to handle asset viewer lifecycle
  and navigation
  - Move beforeNavigate/afterNavigate hooks from Timeline to StreamWithViewer
  - Extract asset viewer Portal rendering and close handler to wrapper
  component
  - Move timeline segment loading logic for viewed assets to StreamWithViewer
  - Simplify Timeline component by removing ~76 lines of navigation/viewer
  code
  - Remove showSkeleton state management from Timeline (now handled by
  PhotostreamWithScrubber)

  This separation of concerns makes the Timeline component more focused on
  rendering while StreamWithViewer handles all viewer-related navigation and state
  management.The new component can be reused by other photostream-like components that
  need asset viewer functionality.
2025-10-07 00:56:15 +00:00
midzelis
79adb016e8 feat: photostream can have scrollbar, style options, standardize small/large layout sizes
- Add configurable header height props for responsive layouts
  (smallHeaderHeight/largeHeaderHeight)
  - Add style customization props: styleMarginContentHorizontal,
  styleMarginTop, alwaysShowScrollbar
  - Replace hardcoded layout values with configurable props
  - Change root element from <section> to custom <photostream> element for
  better semantic structure
  - Move viewport width binding to inner timeline element for more accurate
  measurements
  - Simplify HMR handler by removing file-specific checks
  - Add segment loading check to prevent rendering unloaded segments
  - Add spacing margin between month groups using layout options
  - Change scrollbar-width from 'auto' to 'thin' for consistency
  - Remove unused UpdatePayload type import
2025-10-07 00:56:15 +00:00
midzelis
113082dcaa fix: back/forward navigation won't reset scroll in timeline 2025-10-07 00:56:15 +00:00
midzelis
8d32ec1f18 refactor(web): extract timeline scrolling logic into common Photostream components
- Extract common timeline functionality into Photostream.svelte
  base component
- Create PhotostreamWithScrubber.svelte to handle scrubber
  integration
- Simplify Timeline.svelte by removing ~300 lines of
  scrolling/scrubber logic
- Add findMonthAtScrollPosition utility with binary search for
  better performance
- Maintain all existing functionality while improving code
  organization
2025-10-07 00:56:15 +00:00
midzelis
ed63399181 refactor(web): extract timeline selection logic into SelectableSegment and SelectableDay components
- Move asset selection, range selection, and keyboard interaction logic
  to SelectableSegment
  - Extract day group selection logic to SelectableDay component
  - Simplify Timeline component by removing selection-related state and
  handlers
  - Fix scroll compensation handling with dedicated while loop
  - Remove unused keyboard handlers from Scrubber component
2025-09-30 00:08:14 +00:00
midzelis
0168353c2d refactor(web): extract asset grid layout logic into AssetLayout component
- Extracts the asset grid rendering logic from `MonthSegment` into a
  dedicated `AssetLayout` component
- Simplifies `MonthSegment` by delegating layout responsibilities
  while maintaining all existing functionality
- Renames `customLayout` prop to `customThumbnailLayout` for clarity
  across Timeline components


## Changes
  - Created new `AssetLayout.svelte` component that handles:
    - Asset grid rendering with proper positioning
    - Animation transitions
    - Filtering of intersecting viewer assets
  - Updated `MonthSegment.svelte` to use `AssetLayout` via composition
  pattern
  - Renamed `customLayout` to `customThumbnailLayout` in Timeline and
  related components
  - Moved thumbnail click and selection logic to Timeline parent
  component using snippets
2025-09-30 00:08:14 +00:00
midzelis
c44b315117 refactor(web): consolidate asset operations in PhotostreamManager base class
Moves common asset operation methods (upsertAssets, removeAssets, 
updateAssetOperation) from TimelineManager into PhotostreamManager 
base class, making them available to all photostream implementations. 
Updates all consuming components to use the more accurate 'upsertAssets' 
naming instead of separate 'addAssets' and 'updateAssets' methods.

- Move asset operation methods to PhotostreamManager base class
- Replace addAssets/updateAssets calls with unified upsertAssets method
- Update type imports to use PhotostreamManager instead of TimelineManager
- Remove operations-support.svelte.ts (functionality moved to base class)
- Add abstract upsertAssetIntoSegment method for subclass customization
2025-09-30 00:00:50 +00:00
midzelis
98ab224791 refactor: adjust favorite, delete, and archive actions for timeline
- Pass TimelineManager instance to timeline action components
  instead of callbacks
- Move asset update logic (delete, archive, favorite) into
  action components
2025-09-29 01:26:59 +00:00
midzelis
e5fce47c0c Rename TimelineDateGroup to MonthSegment 2025-09-28 19:41:41 +00:00
midzelis
3a468a3f50 refactor(web): extract common timeline functionality into PhotostreamManager base classes
Create abstract PhotostreamManager and PhotostreamSegment base classes to enable reusable      
timeline-like components. This refactoring extracts common viewport management, scroll         
handling, and segment operations from TimelineManager and MonthGroup into reusable             
abstractions.                                                                                  
                                                                                                  
Changes:                                                                                       
 - Add PhotostreamManager.svelte.ts with viewport and scroll management                         
 - Add PhotostreamSegment.svelte.ts with segment positioning and intersection logic             
 - Refactor TimelineManager to extend PhotostreamManager                                        
 - Refactor MonthGroup to extend PhotostreamSegment                                             
 - Add utility functions for segment identification and date formatting                         
 - Update tests to reflect new inheritance structure
2025-09-28 19:41:41 +00:00
midzelis
e600cf64b0 refactor(web): extract asset viewer logic from Timeline into TimelineAssetViewer component
- Extracted asset viewer navigation and action handling logic from Timeline.svelte into a dedicated TimelineAssetViewer component
- Reduces Timeline.svelte complexity by ~150 lines and improves separation of concerns
- No functional changes - purely a refactoring to improve code organization

## Changes
- Created new TimelineAssetViewer.svelte component containing all asset viewer-related logic
- Moved handlePrevious, handleNext, handleRandom, handleClose, handlePreAction, and handleAction methods
- Timeline.svelte now only passes required props to the new component
- Maintained all existing functionality including navigation, asset actions, and stack management
2025-09-28 19:41:41 +00:00
midzelis
41066b1c31 refactor(web): extract timeline keyboard actions into separate component
Extracts keyboard shortcuts and related functionality from Timeline component into a dedicated TimelineKeyboardActions component for better separation of concerns and maintainability.
2025-09-28 19:41:41 +00:00
midzelis
9051fa6949 refactor(web): Clarify property names in Timeline and Scrubber
Renamed properties across Timeline/Scrubber components for clarity:
  - scrubOverallPercent → timelineScrollPercent
  - scrubberMonthPercent → viewportTopMonthScrollPercent
  - scrubberMonth → viewportTopMonth
  - leadout → isInLeadOutSection

  Additional changes:
  - Updated ScrubberListener signature to accept object parameter
  - Added detailed JSDoc comments for all Scrubber props
  - Fixed callback invocations to use new object syntax
  - Aligned Timeline's local state variables with Scrubber prop names
2025-09-28 19:41:41 +00:00
Daniel Dietzler
b2f3bf7079
chore: bump svelte gestures (#22263) 2025-09-21 21:03:06 -05:00
Jason Rasmussen
0bbeb20595
fix(web): only copy images via canvas (#22225) 2025-09-21 14:34:10 -05:00
Alex
aaeac2ab73
fix(web): revert do not upscale small pictures (#22191) (#22233) 2025-09-20 09:25:27 -05:00
Jason Rasmussen
de57fecb69
fix(web): copy to clipboard on safari (#22217) 2025-09-19 17:44:18 -04:00
renovate[bot]
1e0b4fac04
fix(deps): update typescript-projects (#21510)
* fix(deps): update typescript-projects

* chore: downgrade dependencies

* chore: downgrade svelte-gestures

* fix: svelte/no-navigation-without-resolve

* fix: dumb test

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack Pollard <zack@futo.org>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
2025-09-19 12:29:01 -04:00
Jason Rasmussen
34339ea69f
fix(web): show danger/warning when taken dates overlap (#22213) 2025-09-19 12:20:09 -04:00
Jason Rasmussen
3f2e0780d5
feat: availability checks (#22185) 2025-09-19 12:18:42 -04:00
Jason Rasmussen
de897f6069
fix(web): do not upscale small pictures (#22191) 2025-09-18 22:28:06 -04:00
Jason Rasmussen
dfa38ec3ef
fix(web): download panel (#22150) 2025-09-17 15:40:11 -05:00
Jason Rasmussen
98ea3847e5
refactor: server-about-modal (#22138)
* refactor: server-about-modal

* fix: bits-ui scroll lock cleanup
2025-09-17 16:23:23 +00:00
Jason Rasmussen
11e72a0f35
refactor: text-primary (#22141) 2025-09-17 12:12:51 -04:00
Jason Rasmussen
53a6724039
refactor: hot module reload component (#22135) 2025-09-17 12:12:37 -04:00
Jason Rasmussen
0b20d1df9f
feat(web): toggle theme shortcut (#22139) 2025-09-17 12:12:23 -04:00
Stewart Rand
26e0cb3eb4
fix: Refresh photo after updating featured photo (#21971)
fix: Refresh person photo after setting featured photo

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-17 10:22:26 -05:00
Jason Rasmussen
2012b07645
refactor: admin settings (#22109) 2025-09-16 17:15:57 -04:00
Jason Rasmussen
9693d07a8b
refactor: components (#22106) 2025-09-16 16:58:47 -04:00
Jason Rasmussen
c9daefccc4
refactor: loading spinner (#22103) 2025-09-16 16:22:13 -04:00
Jason Rasmussen
6ffd8e679e
refactor: use immich/ui PasswordInput (#22099)
refactor: password-input
2025-09-16 16:09:09 -04:00
Daniel Dietzler
7fe2f19258
chore: migrate to UI lib icon (#22096) 2025-09-16 21:40:43 +02:00
Jason Rasmussen
75322179fd
refactor: more elements (#22095) 2025-09-16 15:01:23 -04:00
Jason Rasmussen
3f4b6a8e7c
refactor: move more elements (#22093) 2025-09-16 14:47:38 -04:00
Jason Rasmussen
7ce1d73c20
refactor: move components/elements to elements/ (#22091) 2025-09-16 18:31:22 +00:00
Jason Rasmussen
2bf484c91c
refactor: timeline components (#22089) 2025-09-16 14:01:12 -04:00
Jason Rasmussen
c21860fb97
refactor: rename timeline actions (#22086) 2025-09-16 13:37:01 -04:00
Jason Rasmussen
31e098517d
chore: rename asset-grid to timeline (#22084) 2025-09-16 13:05:09 -04:00
Alex
8821c251c3
fix: navigate to time (#22078) 2025-09-16 11:40:31 -05:00
Stewart Rand
0f79e0c38e
fix: Use CSS for uppercase text (#22011) 2025-09-15 23:28:42 -04:00
Alex
3d883b27aa
fix: sidebar link hightlight (#22035)
* fix: sidebar link hightlight

* check if current route start with href
2025-09-15 22:19:55 -04:00
Stewart Rand
4059638151
fix: context menu jank (#21844)
* Fix issue with context menu jank by only applying overflow styling when transition is complete

* Remove comment

Co-authored-by: Alex <alex.tran1502@gmail.com>

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
2025-09-12 22:43:22 -05:00
Stewart Rand
1823a28e59
chore: improve date text slide-in transition (#21879)
* Make date text slide-in transition smooth

* fix: lint

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2025-09-13 03:42:42 +00:00
Stewart Rand
b6bf1852cd
fix: keep adequate space around page title (#21881)
Keep space around page title
2025-09-12 22:42:25 -05:00
Stewart Rand
cdc26f2c7b
fix: z-index of top bar on show/hide people view (#21847)
Fix z-index of top bar on show/hide people view
2025-09-12 22:32:50 -05:00
Stewart Rand
994a770921
chore: improve context button accessibility (#21876)
Make context menu button filled on album list and faces page
2025-09-12 22:31:52 -05:00
Stewart Rand
04c9531624
fix: format point count numbers on map view (#21848)
Format numbers on map view
2025-09-12 07:20:05 +00:00