- Introduced multiple Vite plugins including `ogImagePlugin`, `feedSitemapPlugin`, `localesJsonPlugin`, and `manifestInjectPlugin` to enhance the build process and support dynamic content generation.
- Implemented a custom hot module replacement (HMR) for JSON localization files to improve development experience.
- Added a new `createDependencyChunksPlugin` for better chunk management in the build process.
- Established a structure for handling localization files and generating corresponding assets, improving internationalization support.
Signed-off-by: Innei <tukon479@gmail.com>
- Changed the icon color in the FloatingActionButton component from 'text-accent' to 'text-white' for better visibility.
- Removed the unused animation for the button's background when it is open, simplifying the component's rendering logic.
Signed-off-by: Innei <tukon479@gmail.com>
- Changed the default fallback language from Chinese (zh-CN) to English (en) in the i18n configuration.
- This adjustment ensures a more accessible experience for English-speaking users.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a new localization entry for successful photo reactions, enhancing user feedback in the Chinese version of the app.
- This addition improves the overall user experience by providing clear confirmation of actions taken on photos.
Signed-off-by: Innei <tukon479@gmail.com>
- Eliminated the 'edge' runtime export from multiple SSR route files to streamline the codebase.
- This change simplifies the routing logic and prepares for future enhancements in server-side rendering.
Signed-off-by: Innei <tukon479@gmail.com>
- Added a new analysis API endpoint to aggregate view and reaction data based on a reference key.
- Introduced DTOs for type safety in the analysis API.
- Integrated SWR for data fetching in the PhotoViewer component, improving reaction handling and user feedback.
- Replaced the previous reaction handling logic with a more efficient approach using the new analysis API.
- Updated the package.json to include the @lobehub/fluent-emoji dependency for enhanced emoji support.
Signed-off-by: Innei <tukon479@gmail.com>
- Refactored the database connection logic to utilize `neondatabase`, ensuring correct imports and type safety.
- Implemented atomic upsert operations in the views API, allowing for efficient insertion and updating of records using PostgreSQL's `ON CONFLICT` clause.
- Added new dependencies `ast-kit` and `unplugin-ast` for improved AST manipulation in the project.
- Enhanced the UI components with toast notifications for user feedback on reactions and improved styling with Tailwind CSS.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a Vite plugin to inject the photos manifest into the HTML, enabling dynamic updates and hot reloading.
- Updated ESLint configuration to ignore build errors during SSR.
- Modified package.json scripts for concurrent development of SSR and web applications.
- Adjusted paths and imports for better module resolution and consistency across the codebase.
- Added type definitions for the global __MANIFEST__ variable to ensure type safety.
Signed-off-by: Innei <tukon479@gmail.com>
- Added a link to the Chinese version of the README in the English version.
- Updated feature descriptions in both English and Chinese, changing "Smart Tags" to "File System Tags" for clarity.
- Included a new image in the Chinese README for better visual appeal.
Signed-off-by: Innei <tukon479@gmail.com>
- Implemented a height check to hide the EXIF information grid when the photo item height is less than 300px.
- Ensured that other information such as title, description, and tags remain visible regardless of the photo height.
- Updated the PhotoMasonryItem component to conditionally render the EXIF grid based on the calculated height.
Signed-off-by: Innei <tukon479@gmail.com>
- Removed opacity transition from the EXIF information grid to ensure it is always visible.
- Simplified the layout for better accessibility of EXIF data.
Signed-off-by: Innei <tukon479@gmail.com>
- Enhanced the ProgressiveImage component to utilize the new LoadingState enum for better loading state management.
- Updated the WebGLImageViewerEngine to notify loading states using the LoadingState enum, improving clarity in loading messages.
- Refactored spring animations to use the Transition type for better type safety.
- Updated localization files to include new loading messages for WebGL operations in both English and Chinese.
Signed-off-by: Innei <tukon479@gmail.com>
- Removed the totalViews calculation from the ManifestStats component to streamline data handling.
- Adjusted the layout to accommodate the removal of the views stat, changing the grid columns from 5 to 4.
Signed-off-by: Innei <tukon479@gmail.com>
- Changed the PhotoManifest type to PhotoManifestItem across various components and services for consistency.
- Removed the views property from the PhotoInfo interface to streamline photo data.
- Updated rules in color.mdc and project.mdc to adjust glob patterns and application behavior.
- Enhanced the feed-sitemap plugin to utilize the new PhotoManifestItem type for better data management.
Signed-off-by: Innei <tukon479@gmail.com>
- Adjusted the styling of the ExifDataRow component to use 'self-start' for better alignment of labels.
- Modified the container div in RawExifViewer to ensure a minimum width, enhancing layout consistency.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the HistogramChart component to calculate drawing width based on the canvas's bounding rectangle, enhancing accuracy in rendering.
- Added anti-aliasing settings for smoother lines and improved visual quality.
- Adjusted hover interaction logic to ensure accurate positioning of the hover indicator, improving user experience.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced ExifTool support by adding the '@uswriting/exiftool' package to manage EXIF metadata extraction.
- Updated ExifPanel component to conditionally render raw EXIF data based on ExifTool availability.
- Enhanced localization files to include new EXIF metadata categories and descriptions for better user experience across multiple languages.
- Added a new atom to manage the loading state of ExifTool, improving state management in the application.
Signed-off-by: Innei <tukon479@gmail.com>
- Replaced existing favicon images with updated versions for better visual quality.
- Modified the favicon generation script to add rounded corners to the generated images, improving aesthetics.
- Ensured the script checks for the presence of the logo file before generating favicons.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the title in the document head to include the site configuration title for better SEO.
- Modified Open Graph and Twitter meta tags to append the site configuration title to the photo ID, improving clarity and branding in social media shares.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated ExifPanel to use translation for tone analysis title.
- Improved HistogramChart by enhancing canvas resolution and rendering quality, including anti-aliasing and smoother histogram drawing.
- Added device pixel ratio handling for better display on high-DPI screens.
Signed-off-by: Innei <tukon479@gmail.com>
- Removed optional logger parameters in several functions, replacing them with global loggers for consistency.
- Updated logging statements to ensure they are always executed, enhancing the visibility of processing steps and errors.
- Cleaned up unused imports and commented-out code to improve code clarity and maintainability.
Signed-off-by: Innei <tukon479@gmail.com>
- Deleted the builder-storage.mdc file, which contained outdated documentation for the storage abstraction layer.
- Removed deprecated functions related to S3 operations from the storage adapters, encouraging the use of the new StorageManager API.
- Updated various components to utilize the StorageManager for file retrieval and URL generation, enhancing consistency and maintainability across the codebase.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the HistogramChart component to display channel values (red, green, blue, and luminance) formatted to two decimal places for improved readability and precision in the user interface.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced maxFileLimit property in builder.config.ts and S3Config interface to allow dynamic control of the maximum number of files retrieved from S3.
- Updated S3StorageProvider to utilize maxFileLimit for fetching objects, enhancing flexibility in file management.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the S3 client creation logic to utilize builderConfig for improved configuration management.
- Added error handling to ensure that the storage provider is set to 's3' and that required credentials are provided.
- Streamlined the S3 client configuration by directly using values from builderConfig, enhancing maintainability.
Signed-off-by: Innei <tukon479@gmail.com>
- Changed the initial state of showFloatingActions from true to false to improve user experience by hiding floating actions by default.
- This adjustment aims to streamline the interface and reduce visual clutter upon initial render.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the SSR routing to conditionally load development and production handlers based on the NODE_ENV variable.
- Introduced a new dev.ts file to handle requests in development mode, including asset proxying and HTML response generation.
- Removed the not-found.tsx file and streamlined the photoId route logic for better maintainability.
- Added support for Open Graph and Twitter meta tags in the production handler for improved SEO.
- Updated README with new S3 endpoint configuration.
Signed-off-by: Innei <tukon479@gmail.com>
- Removed unused S3 configuration variables from .env.template to streamline environment setup.
- Added ARG directives for S3_ACCESS_KEY_ID and S3_SECRET_ACCESS_KEY in Dockerfile to facilitate secure access to S3 resources during build.
Signed-off-by: Innei <tukon479@gmail.com>
- Replaced 'dotenv/config' with 'dotenv-expand/config' in env.ts and cli.ts for enhanced environment variable handling.
- Added 'dotenv-expand' as a dependency in package.json and updated pnpm-lock.yaml accordingly.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a new COLUMN_WIDTH_CONFIG object to manage responsive column widths for mobile and desktop views.
- Updated the column width calculation logic to dynamically adjust based on available width and maximum column constraints.
- Improved handling of auto and custom column modes to ensure optimal layout across different screen sizes.
Signed-off-by: Innei <tukon479@gmail.com>
- Added a new FloatingActionButton component to provide quick access to various actions in the gallery.
- Integrated animation effects for button visibility and action selection.
- Updated MasonryRoot to include the FloatingActionButton, allowing for dynamic action handling based on user interactions.
Signed-off-by: Innei <tukon479@gmail.com>
- Removed unnecessary type export for WorkerLoggers from the photo processor module.
- Simplified the export statement for PhotoProcessorOptions and processPhoto for better clarity and maintainability.
Signed-off-by: Innei <tukon479@gmail.com>
- 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>
- Introduced a new markdown file with guidelines for maintaining code quality in TypeScript and React projects.
- Emphasized the importance of avoiding code duplication, managing component complexity, and adhering to React best practices.
Signed-off-by: Innei <tukon479@gmail.com>
- 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>
- Changed the customDomain value from "cdn.example.com" to "https://cdn.example.com" in both English and Chinese README files for clarity and security.
Signed-off-by: Innei <tukon479@gmail.com>
- Implemented logic to calculate and maintain the original aspect ratio for images displayed within the film frame.
- Adjusted the frame dimensions dynamically based on the image's aspect ratio to ensure consistent visual presentation.
- Enhanced the image display structure to center the image while preserving its proportions, improving the overall aesthetic of the photo viewer.
Signed-off-by: Innei <tukon479@gmail.com>
- Implemented a new method to validate image blobs, checking MIME types and file size to ensure they are valid images before processing.
- Enhanced the image loading process to reject invalid image responses, improving error handling and user feedback.
Signed-off-by: Innei <tukon479@gmail.com>
- 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>