Commit Graph

526 Commits

Author SHA1 Message Date
Innei
b990bd5f65 feat: enhance ProgressiveImage with mobile support and improved image handling
- Added mobile detection to conditionally render either WebGLImageViewer or DOMImageViewer based on device type.
- Refactored image copying logic to improve reliability and user feedback during the copy process.
- Introduced DOMImageViewer component for better handling of image interactions on mobile devices.
- Updated WebGLImageViewer to streamline image loading and context menu interactions.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-07 17:04:10 +08:00
Innei
3a0153d564 feat: enhance WebGL image viewer with new engine and improved LOD management
- Introduced WebGLImageViewerEngine2 for optimized image rendering and interaction.
- Added support for on-demand LOD management, allowing for efficient memory usage and improved performance.
- Updated WebGLImageViewer to utilize the new engine based on image dimensions.
- Enhanced DebugInfo interface to include additional visibility region information.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 22:43:30 +08:00
Innei
7d7d3ca159 chore: update repository URL and simplify main.tsx rendering
- Changed the repository URL in package.json and apps/web/package.json to reflect the new GitHub location.
- Removed StrictMode wrapper from the main.tsx file to streamline rendering of the RouterProvider component.
- Updated ActionGroup component to use dynamic repository URL for GitHub link.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 20:42:45 +08:00
Innei
70a1fe4d8c refactor: improve LoadingIndicator state management and simplify layout
- Updated LoadingIndicator to reset state when visibility is set to false, enhancing state management.
- Removed unnecessary Freeze component from layout, simplifying the rendering logic of the ScrollArea.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 18:31:51 +08:00
Innei
3907a9c732 refactor: optimize image loading and rendering in PhotoViewer and WebGLImageViewer
- Removed the getImageDisplaySize function to directly use original image dimensions, improving WebGL loading efficiency.
- Updated ProgressiveImage and WebGLImageViewer components to accept optional width and height props for better image handling.
- Enhanced WebGLImageViewerEngine to utilize preknown dimensions for optimized loading and rendering strategies.
- Implemented logic to handle dimension mismatches and adjust rendering strategies accordingly.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 16:03:43 +08:00
Innei
3a64e62124 feat: enhance device detection and performance estimation in WebGLImageViewerEngine
- Added utility functions for detecting mobile, iOS, Android, and tablet devices, improving responsiveness based on device type.
- Implemented performance estimation methods to assess device capabilities, allowing for optimized loading strategies.
- Updated WebGLImageViewerEngine to utilize new device detection and performance estimation features, enhancing memory management and loading behavior for large images.
- Refactored image loading and texture creation processes to avoid blocking the main thread, improving overall user experience.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 15:49:52 +08:00
Innei
8f2abb330b feat: implement on-demand LOD management in WebGLImageViewerEngine
- Introduced a new strategy for managing Level of Detail (LOD) textures, allowing only the currently needed LOD to be retained, which optimizes memory usage.
- Updated the image loading method to accept ImageData, enhancing flexibility in image processing.
- Refactored texture creation and cleanup processes to support the new LOD management strategy, ensuring efficient memory handling.
- Removed preloading logic in favor of on-demand LOD creation to further reduce memory pressure.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 14:31:08 +08:00
Innei
b7366368e8 fix: improve LoadingIndicator component visibility and structure
- Added a conditional return to prevent rendering when loadingState.isVisible is false.
- Refactored the LoadingIndicator structure to simplify the JSX and enhance readability.
- Maintained existing loading state messages for conversion, WebGL, and image loading.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 13:22:52 +08:00
Innei
08a58b4486 feat: enhance WebGLImageViewerEngine with drag optimization and tile management
- Introduced drag optimization features to improve performance during image dragging.
- Added methods for throttled tile updates and predictive loading based on drag direction.
- Enhanced tile priority calculation to ensure better loading of visible tiles.
- Adjusted tile loading strategies based on drag state and device type for improved responsiveness.
- Implemented cleanup and state management for drag events to maintain rendering quality.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 02:35:12 +08:00
Innei
0c9784acd7 feat: enhance DebugInfo component with collapsible sections and improved layout
- Introduced CollapsibleSection and StatusIndicator components for better organization of debug information.
- Updated DebugInfoComponent to support collapsible sections for transform, image, memory, and tiling information.
- Improved styling and layout for better readability and user interaction.
- Adjusted debug information display logic to handle null state and added quality and memory pressure indicators.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 01:58:31 +08:00
Innei
25521e2af6 feat: enhance ProgressiveImage and WebGLImageViewerEngine with memory management and tiled rendering
- Updated ProgressiveImage component to conditionally render high-resolution images based on the current image state.
- Enhanced DebugInfo component to include detailed memory usage statistics.
- Introduced a tiled rendering system in WebGLImageViewerEngine for efficient handling of large images, including memory management and cleanup strategies.
- Implemented logic to dynamically adjust loading strategies based on image size and device type.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 01:50:45 +08:00
Innei
26c93dbf9d backup
Signed-off-by: Innei <tukon479@gmail.com>
2025-06-06 00:53:35 +08:00
Innei
e5597cdbe7 feat: integrate react-freeze for improved UI performance
- Added react-freeze package to manage component rendering during state changes.
- Wrapped ScrollArea in Freeze component to prevent unnecessary re-renders when the gallery is closed.
- Updated package.json and pnpm-lock.yaml to include react-freeze version 1.0.4.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 23:08:06 +08:00
Innei
f27915bb62 feat: enhance GalleryThumbnail and PhotoViewer components for better responsiveness
- Added responsive thumbnail sizing and padding based on device type in GalleryThumbnail.
- Implemented state management for scroll container width to improve thumbnail scrolling behavior.
- Wrapped GalleryThumbnail and ExifPanel components in Suspense for better loading management in PhotoViewer.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 22:56:00 +08:00
Innei
47f54ad11c feat: enhance gallery settings with adjustable column layout
- Replaced the gallery settings atom with atomWithStorage to persist settings across sessions.
- Added a new AdjustColumnsButton component to allow users to dynamically adjust the number of columns in the gallery based on device type.
- Implemented responsive column width calculation in the MasonryRoot component to accommodate the new column settings.
- Updated the ActionGroup component to include the new AdjustColumnsButton for better user interaction.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 21:51:15 +08:00
Innei
0b6160f6d5 feat: add DateRangeIndicator component and integrate into MasonryRoot
- Introduced a new DateRangeIndicator component to display the date range and location of visible photos.
- Integrated the DateRangeIndicator into the MasonryRoot component, enhancing the user interface for both mobile and desktop views.
- Implemented a custom hook, useVisiblePhotosDateRange, to calculate the date range of currently visible photos.
- Updated README to reflect the new project name and description.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 21:08:36 +08:00
Innei
b51d81bd47 chore: update package dependencies and versions
- Upgraded `eslint-config-hyoban` from 4.0.7 to 4.0.8.
- Updated AWS SDK packages `@aws-sdk/client-s3` and `@aws-sdk/s3-request-presigner` from 3.823.0 to 3.824.0.
- Bumped `@tanstack/react-query` from 5.80.2 to 5.80.5.
- Updated `@types/react-dom` from 19.1.5 to 19.1.6.
- Incremented `tsdown` version from 0.12.6 to 0.12.7.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 18:43:36 +08:00
Innei
bd6be8ba6e refactor: update HEIC conversion logic and cache management
- Increased the cache size for HEIC images from 5 to 10 to improve performance.
- Refactored the cache key generation to use the source string instead of file properties.
- Updated the HEIC image processing function to accept the original URL as a parameter.
- Removed unused video cache management functions to streamline the codebase.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 18:39:17 +08:00
Innei
2a9990509b refactor: remove unused imports in ProgressiveImage component
- Eliminated unnecessary imports from the ProgressiveImage component to streamline the codebase.
- This change enhances readability and reduces potential confusion regarding unused dependencies.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 18:32:19 +08:00
Innei
5e1c00a3e9 fix: first load thumbnail transition
- Removed the loading progress percentage display from the LoadingIndicator component.
- Updated the ProgressiveImage component to manage thumbnail loading state with a new useState hook.
- Adjusted the thumbnail image rendering to transition opacity based on loading state.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 18:31:23 +08:00
Innei
15a928b4d8 feat: update loading messages for image and video conversion
- Changed the loading message for image format conversion to 'HEIC/HEIF 图片格式转换中...'.
- Updated the loading message for video transcoding to '视频转码中...'.
- Adjusted the default loading message to '图片格式转换中...' when no specific message is provided.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 18:22:44 +08:00
Innei
0fb4cd4c8e feat: enhance font glyph extraction and SVG text rendering
- Added additional characters ('\', '~', '`', "'", '{', '}') to the CHARACTERS array in extract-font-glyphs.ts.
- Updated the font path in extract-font-glyphs.ts to use SF-Pro-Display-Medium.ttf.
- Made adjustments to the character paths and dimensions in svg-text-renderer.ts for improved rendering accuracy.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 18:11:06 +08:00
Innei
238cbb71e7 feat: implement dynamic title and description in HTML template
- Updated index.html to use placeholders for title and description.
- Enhanced vite.config.ts to transform HTML and replace placeholders with site configuration values.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 14:28:42 +08:00
Innei
024df63885 refactor: improve code organization and update documentation for clarity
Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 13:51:41 +08:00
Innei
2244ca8d77 refactor: clean up builder configuration and enhance README with detailed features and setup instructions
Signed-off-by: Innei <tukon479@gmail.com>
2025-06-05 13:43:52 +08:00
Innei
f841d2ada2 feat: init 2025-06-05 13:27:09 +08:00