185 Commits

Author SHA1 Message Date
Innei
efe2875636 refactor: implement photo processing pipeline and modularize photo handling
- Introduced a comprehensive photo processing pipeline that integrates various processing steps including thumbnail generation, EXIF data extraction, and tone analysis.
- Modularized the photo handling logic into distinct files for better organization and maintainability.
- Added support for Live Photo detection and processing.
- Implemented a global logger system to streamline logging across different processing stages.
- Enhanced caching mechanisms for reusing existing data, improving performance and efficiency.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-22 23:45:09 +08:00
MaxtuneLee
8c962dfd24 feat: add .tif format to supported image formats (#18) 2025-06-22 11:00:18 +08:00
Innei
8c60382f18 feat: add tone analysis and histogram features to photo viewer
- Introduced a new HistogramChart component to visualize tone analysis data.
- Enhanced the ExifPanel to display tone analysis results, including brightness, contrast, shadow, and highlight ratios.
- Updated the formatExifData function to support tone analysis data.
- Implemented histogram compression and decompression logic for efficient data handling.
- Added localization support for new histogram-related terms in multiple languages.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-21 02:10:48 +08:00
J2ephyr
fbb31bda30 feat: Add S3_EXCLUDE_REGEX configuration option for file exclusion support. (#15) 2025-06-19 14:39:41 +08:00
Innei
02d844a771 refactor: simplify photo deletion handling and manifest saving
- Streamlined the handling of deleted photos by directly passing the manifest to the `handleDeletedPhotos` function.
- Removed unnecessary options checks and logging parameters from the `saveManifest` function, enhancing clarity and reducing complexity.
- Updated thumbnail deletion logic to ensure thumbnails not present in the manifest are removed efficiently.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-17 17:15:51 +08:00
Innei
066d9ef961 refactor: remove dynamic module imports and storage manager initialization from worker
- Eliminated dynamic imports for StorageManager and builderConfig within the worker process.
- Removed the initialization of the storage manager, streamlining the worker's setup process.
- Maintained the restoration of shared data structures from the main process.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-17 16:42:30 +08:00
Innei
be6fdce89a feat: enhance EXIF data processing and worker initialization
- Updated the EXIF data formatting logic to conditionally include GPS information only when latitude and longitude are available.
- Introduced a new worker initialization message structure to facilitate the transfer of shared data between the main process and workers.
- Enhanced the worker process to handle initialization messages and deserialize shared data for improved task management.
- Refactored the manifest loading and saving functions to support a new manifest structure, ensuring compatibility with the updated data handling.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-17 16:37:42 +08:00
Innei
c0c58e5629 feat: enhance EXIF data handling and localization updates
- Improved the EXIF data extraction logic to include additional fields such as GPS references and color temperature settings.
- Updated the translation keys in localization files for various languages to reflect changes in EXIF data representation, including dynamic range and white balance settings.
- Refactored the formatting logic to ensure accurate display of GPS information and other EXIF attributes.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-15 13:32:00 +08:00
Innei
dad7e67858 feat: add GPS information display to ExifPanel and update localization
- Implemented GPS data display in the ExifPanel, including latitude, longitude, and altitude.
- Added a link to view the GPS location on a map.
- Updated localization files for Japanese, Korean, and various Chinese dialects to include new GPS-related translation keys.
- Refactored EXIF data formatting to support GPS information extraction.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-14 17:35:20 +08:00
Innei
ece05078b1 feat: migrate from exif-reader to exiftool-vendored and update EXIF handling
- Replaced `exif-reader` with `exiftool-vendored` for improved EXIF data processing.
- Updated related components to utilize the new `PickedExif` type for better type safety.
- Refactored EXIF data extraction and formatting logic to align with the new library's structure.
- Removed deprecated dependencies and cleaned up related code for better maintainability.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-14 17:19:28 +08:00
Innei
8b57c878e8 chore: rename project to Afilmory and update related configurations
- Changed project name and title from "Photo Gallery" to "Afilmory" across multiple files including configuration, README, and web manifest.
- Updated descriptions and URLs to reflect the new branding.
- Adjusted OG image plugin and favicon generation scripts to align with the new project name.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-13 01:15:41 +08:00
Innei
8f28d75266 chore: change namespace
Signed-off-by: Innei <tukon479@gmail.com>
2025-06-12 21:51:25 +08:00
Innei
ac52350b6d chore: update package dependencies across multiple packages
- Bumped versions of several packages including zod (3.25.63), tailwindcss (4.1.10), tsx (4.20.2), and others to their latest releases for improved performance and security.
- Updated @types/node and @types/react to 24.0.1 and 19.1.8 respectively in various package.json files to ensure compatibility with the latest TypeScript features.
- Adjusted dependencies in the builder and webgl-viewer packages to reflect the latest versions.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-12 18:34:08 +08:00
tunan
a03db929dd Fix original URL generation for Aliyun OSS (#6) 2025-06-11 20:08:39 +08:00
Innei
71ec6fefbb feat(WebGLImageViewer): add resize observer for canvas resizing
Signed-off-by: Innei <tukon479@gmail.com>
2025-06-11 15:52:45 +08:00
MaxtuneLee
d7397c60e2 feat: BMP format support (#4)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-11 02:50:40 +08:00
Innei
491e8ddb6e fix: type error
Signed-off-by: Innei <tukon479@gmail.com>
2025-06-11 00:44:54 +08:00
Innei
c62f8b1628 refactor: extract builder as a package
Signed-off-by: Innei <tukon479@gmail.com>
2025-06-11 00:37:01 +08:00
Innei
898bd18c44 Refactor code structure for improved readability and maintainability
Signed-off-by: Innei <tukon479@gmail.com>
2025-06-10 14:45:38 +08:00
Innei
caa09110dd feat: add SlidingNumber component and integrate scale indicator in ProgressiveImage
Signed-off-by: Innei <tukon479@gmail.com>
2025-06-09 00:52:26 +08:00
Innei
2eb3020daa release: v0.1.0 2025-06-09 00:39:15 +08:00
Innei
945a8ebe1a refactor: simplify LOD levels and remove unused device detection constants
Signed-off-by: Innei <tukon479@gmail.com>
2025-06-09 00:28:03 +08:00
Innei
972893b2da Refactor WebGL viewer interfaces and remove LOD worker
- Updated DebugInfo interface to replace tiling properties with a new tileSystem structure for better management of tile-related data.
- Deleted the lodWorker.ts file, which contained the LOD processing logic, as it is no longer needed.
- Introduced a new texture.worker.ts file to handle tile creation using OffscreenCanvas, improving performance and memory management.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-09 00:12:15 +08:00
Innei
67a948ddeb feat: introduce @photo-gallery/data package for centralized photo management
- Added a new package `@photo-gallery/data` to manage photo data and metadata.
- Updated various components to utilize the new photoLoader from the data package.
- Adjusted dependencies in `pnpm-lock.yaml` and `package.json` files to include the new package.
- Refactored imports across the application to streamline photo data access.

Signed-off-by: Innei <tukon479@gmail.com>
2025-06-08 20:46:19 +08:00
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
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
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
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
f841d2ada2 feat: init 2025-06-05 13:27:09 +08:00