Commit Graph

169 Commits

Author SHA1 Message Date
Innei
7e7f0d4ede fix: resolve storage provider auto-switching issue when switching between managed and custom storage (#202)
When users switched from Tencent COS to managed storage and saved, the UI would
incorrectly show Tencent COS as the active provider on reload, and uploads would
fail because the wrong storage backend was being used.

Root cause: The `getActiveStorageProvider` method had a fallback behavior that
automatically set and persisted the first provider as active when only one
provider existed. This caused the managed storage selection to be overwritten.

Changes:
- Remove auto-persist fallback in getActiveStorageProvider (setting.service.ts)
- Add proper validation for managed storage subscription (storage-setting.service.ts)
- Reorder storage resolution to check managed storage first (photo-storage.service.ts)
- Add getActivePlanSummaryForTenant with Creem subscription validation (storage-plan.service.ts)
- Update dashboard UI to handle provider state correctly (StorageProvidersManager.tsx)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-05 15:50:07 +08:00
woolen-sheep
e061ba159c fix: images are dropped when more than 1000 files on S3 (#208) 2026-01-05 13:31:32 +08:00
Innei
17216b7f1f chore: update package dependencies and package manager version
- Upgraded package manager from pnpm@10.24.0 to pnpm@10.26.2 across multiple applications.
- Updated various package dependencies including lucide-react, eslint-plugin-react-refresh, typescript-eslint, and others to their latest versions.
- Adjusted @types/node version from ^24.10.1 to ^25.0.3 in several packages for compatibility with the latest Node.js features.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-29 21:25:53 +08:00
Whitewater
7be1e5e829 chore: add type-check script and integrate type checking in build workflow (#201) 2025-12-23 14:32:33 +08:00
Innei
9a99dd8e07 chore: update deps 2025-12-16 20:57:50 +08:00
Innei
51df233429 chore: update package dependencies and improve documentation
- Updated `vite` to the beta version across multiple applications for enhanced features and performance.
- Removed deprecated dependencies such as `@clack/prompts`, `consola`, and `opentype.js` from `devDependencies`.
- Added new storage provider documentation in `routes.json` and updated last modified dates for existing entries.
- Refactored route imports in `routes.ts` to streamline the structure and improve readability.
- Enhanced the Table of Contents (TOC) data structure for better organization and accessibility.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 15:59:18 +08:00
Innei
b8f1a26ce2 chore: update package dependencies across applications
- Upgraded various package dependencies including:
  - `prettier` to version 3.7.4
  - `tsx` to version 4.21.0
  - `vite` to version 7.2.6
  - `react` and `react-dom` to version 19.2.1
  - `drizzle-orm` to version 0.45.0
  - `jotai` to version 2.15.2
  - `motion` to version 12.23.25
  - Updated several other packages to their latest versions for improved performance and compatibility.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 00:55:30 +08:00
Innei
ced9e747aa feat: implement email notification system for comments
- Added MailModule to handle email notifications for comment events.
- Introduced CommentCreatedEvent to encapsulate comment creation details.
- Implemented CommentNotificationListener to send notifications to relevant users when a comment is created.
- Integrated Resend service for sending emails, with templates for comment notifications.
- Updated various modules to support the new email notification feature.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-03 20:57:26 +08:00
Innei
3fe6ad564c chore: update package dependencies and package manager version
- Upgraded pnpm to version 10.24.0 across multiple applications.
- Updated various package dependencies including:
  - `@shikijs/rehype` to version 3.19.0
  - `shiki` to version 3.19.0
  - `tsx` to version 4.21.0
  - `typescript-eslint` to version 8.48.1
  - `maplibre-gl` to version 5.14.0
  - `@hono/node-server` to version 1.19.6
  - `jotai` to version 2.15.2
  - `motion` to version 12.23.25
- Ensured consistency in package versions across applications.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-03 18:59:38 +08:00
Innei
4cef7cdf26 fix: update RESERVED_SLUGS to include 'demo' for tenant slug validation
- Added 'demo' to the list of reserved slugs in tenant.ts to prevent its use as a tenant identifier.
- This change ensures better management of tenant slugs and avoids potential conflicts with common terms.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-01 23:03:11 +08:00
Chrys
a4ed1ecbc2 feat: custom CDN for GitHub storage (#172) (#174)
Co-authored-by: Innei <tukon479@gmail.com>
2025-11-30 23:36:05 +08:00
Innei
5763ec8dba feat: enhance gallery page header with responsive social media links and view mode options
- Updated `PageHeaderLeft` to conditionally display social media links on larger screens.
- Introduced `MoreActionMenu` in `PageHeaderRight` for mobile users, allowing access to view mode settings and social links.
- Modified `ViewModeSegment` to ensure consistent display across different screen sizes.
- Enhanced `DropdownMenuItem` to support child components for better flexibility in dropdown menus.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-30 23:12:36 +08:00
Innei
d9e09b375b feat: enhance Sonner component with toast functionality
- Imported `toast` from 'sonner' to enable toast notifications.
- Updated styles for the toast icon to improve visual consistency and responsiveness.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-30 21:29:42 +08:00
Innei
2a7336cd6b feat: enhance PageHeader and PageHeaderRight components with improved styling and layout
- Added LinearBlur effect to the PageHeader for a refined visual appearance.
- Updated PageHeaderRight to use background styles instead of borders for a modern look.
- Adjusted ViewModeSegment styling to maintain consistency across components.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-30 13:24:20 +08:00
Innei
62fd908d35 feat: enhance GalleryThumbnail with virtualized rendering and hover card support
- Integrated virtualized rendering using @tanstack/react-virtual for improved performance in the GalleryThumbnail component.
- Added HoverCard functionality for displaying additional photo information on hover.
- Removed unused thumbnail gap and padding size constants to streamline the code.
- Updated scroll behavior to utilize virtual item measurements for accurate thumbnail positioning.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-30 01:11:47 +08:00
Innei
26100b26cd feat: enhance PageHeaderCenter with animation and improve Input component
- Added animation effects to the PageHeaderCenter component using AnimatePresence and motion for a smoother user experience.
- Updated the Input component to support input composition handling, improving text input behavior during composition events.
- Adjusted styling in AutoSelect component for better layout consistency.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-29 23:41:15 +08:00
Innei
ae21438eb7 feat: implement multi-tenancy support in authentication module (#177)
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-29 13:57:18 +08:00
Innei
843ff8130d fix: purge manage storage data when account delete (#176)
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-27 21:19:28 +08:00
Innei
3f3f5f9a79 fix: update import path for AfilmoryManifest type
- Changed the import path for AfilmoryManifest from '@afilmory/builder/types/manifest' to '@afilmory/builder/types/manifest.js' to ensure compatibility with the updated module structure.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-27 01:14:57 +08:00
Innei
8cda0c328e fix: update EXIF GPS altitude reference handling
- Changed the condition for checking GPS altitude reference from string comparison to numeric values for 'Above Sea Level' and 'Below Sea Level'.
- Updated related logic in the EXIF data formatting and migration scripts to ensure consistency with the new numeric representation.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-27 01:07:45 +08:00
Innei
9b929a1694 chore: update package dependencies and versions
- Upgraded various dependencies including es-toolkit, lint-staged, vite, and zod to their latest versions.
- Updated tailwind-variants and tailwindcss-safe-area to newer versions.
- Adjusted types for React and other related packages to ensure compatibility.
- Removed obsolete patch for @creem_io/better-auth.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-27 00:57:14 +08:00
Innei
cb40fe74d0 feat: implement comments feature (#171)
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-27 00:37:52 +08:00
Innei
37825d1def feat: add upload log
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-26 16:56:02 +08:00
Innei
3e96106a16 chore: sign s3 (#170)
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-26 15:23:41 +08:00
Xudong Sun
e15d066e6d feat(rss): enhance rss feed with thumbnail and detailed exif info, and fix feed link (#169) 2025-11-25 16:31:27 +08:00
Innei
d9a5be56e6 feat: add support for Aliyun OSS and Tencent COS storage providers
- Updated documentation to include Aliyun OSS and Tencent COS as storage options.
- Introduced configuration examples for both providers in the storage providers documentation.
- Enhanced the storage provider registration to accommodate new providers.
- Updated the storage configuration interfaces to support OSS and COS.
- Modified the S3 client and provider implementations to handle requests for OSS and COS.
- Added environment variable configurations for OSS and COS.
- Implemented necessary changes in the UI schema and routes to reflect the new providers.
- Updated localization files for new storage provider types.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-24 22:26:47 +08:00
Wenzhuo Liu
58a989c1e4 feat(geocoding): implement reverse geocoding (#157)
Co-authored-by: Innei <tukon479@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-24 14:48:57 +08:00
Innei
848d9af672 refactor: update route imports and improve scroller functionality
- Reorganized route imports in `routes.ts` to enhance clarity and maintainability, adding new storage provider routes.
- Modified `scroller.ts` to use a default scroller element based on window availability, improving compatibility in different environments.
- Updated context creation in `ctx.ts` to ensure proper handling of the scroll element in non-browser environments.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-23 19:50:45 +08:00
Innei
d5a2ea4db2 feat: enhance documentation and add new features for Afilmory
- Introduced a comprehensive `DEVELOPMENT.md` guide for contributors and self-hosters, detailing workspace layout and common commands.
- Updated `README.md` to include links to the new development guide and improved deployment instructions.
- Added new documentation files covering architecture, builder pipeline, configuration, and deployment strategies.
- Implemented new storage provider documentation for Backblaze B2, Eagle, GitHub, and local storage options.
- Enhanced the UI components with new features, including a navigation context and improved theme handling.
- Removed outdated GitHub Action deployment documentation.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-23 19:40:51 +08:00
Innei
9095bb08c8 feat: add normalization helper functions and integrate into services
- Introduced new helper functions for string and date normalization, enhancing input validation across various services.
- Updated SiteSettingService and SystemSettingService to utilize the new normalization functions for improved data handling.
- Refactored existing code to replace custom normalization logic with the new helper methods, ensuring consistency and reducing redundancy.
- Enhanced localization files to support new error messages related to normalization.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-22 01:21:26 +08:00
Innei
ac9f12b172 feat: enhance domain management UI with loading states and improved button styles
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-20 23:25:23 +08:00
Innei
dc23b2868e feat: enhance storage provider management and localization support
- Added support for new storage providers including Backblaze B2 and GitHub.
- Introduced a new UI schema for storage provider configuration, allowing for better user experience.
- Updated localization files to include new keys for storage provider fields and usage metrics.
- Refactored existing storage provider logic to accommodate new categories and improve overall structure.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-20 00:16:46 +08:00
Innei
bc9c87d008 feat: b2 provider
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-19 21:11:47 +08:00
Innei
76debaa386 feat(photo): implement photo tag management and update functionality
- Added UpdatePhotoTagsDto for validating photo tag updates.
- Implemented updateAssetTags method in PhotoAssetService to handle tag updates, including validation and error handling.
- Enhanced PhotoController with a new endpoint for updating photo tags.
- Introduced PhotoTagEditorModal for editing tags in the UI, allowing batch updates for selected photos.
- Updated PhotoLibrary components to support tag editing and display changes in the UI.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-17 15:01:56 +08:00
Innei
a5afd8b233 feat: add photo upload and sync limits configuration
- Introduced new system settings for maximum photo upload size, maximum data sync object size, and maximum photo library items.
- Updated the SystemSettingService to parse and manage these new settings.
- Enhanced the photo upload workflow to enforce these limits during asset uploads and data synchronization.
- Added UI schema components for configuring these settings in the admin interface.
- Integrated progress tracking for photo uploads with server event handling.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-16 16:35:51 +08:00
Innei
1616f866e5 feat: upload modal
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-16 02:09:36 +08:00
Innei
dafc621033 feat(config): update site configuration and enhance author handling
- Changed default site name and URL to reflect new branding.
- Updated author information in the site configuration, including name, URL, and avatar.
- Removed author-related settings from the configuration schema to streamline the setup.
- Enhanced the SiteSettingService to resolve author details dynamically based on tenant context.
- Added a new endpoint to retrieve the status of photo synchronization, improving user feedback on sync operations.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-15 01:08:31 +08:00
Innei
77f16490e4 chore: adjust docs and add cjk font
- Created a new documentation site under `apps/docs` using Vite, React, and MDX.
- Added essential files including `index.html`, `package.json`, and various configuration files.
- Implemented a file-system based routing system with automatic route generation from markdown files.
- Included support for syntax highlighting, responsive design, and TypeScript.
- Established a structure for documentation content with initial deployment guides and storage provider information.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-14 21:52:54 +08:00
Innei
ef19962eb2 feat(docker): optimize Dockerfile and enhance EXIF data extraction
- Updated Dockerfile to use Alpine base image for reduced size and added necessary runtime dependencies including exiftool.
- Refactored EXIF data extraction logic to utilize exiftool with improved error handling and logging.
- Simplified metadata handling by removing unnecessary checks and ensuring consistent extraction of EXIF data.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-14 20:04:53 +08:00
Innei
fa7b953d78 feat(logger): enhance logging functionality with tag support and message relaying
- Updated the ConsolaCompatibleLogger to include a tag parameter for better log categorization.
- Introduced a relayLogMessage function to facilitate message relaying with associated tags and log levels.
- Refactored the createBuilderLoggerAdapter function to utilize the new tagging system, improving log context and traceability.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-14 18:32:00 +08:00
Innei
51a5a51f20 feat(data-sync): enhance error handling in data synchronization process
- Added an 'errors' field to the DataSyncResultSummary and updated related types to track synchronization errors.
- Modified the DataSyncService to categorize certain failures as errors instead of conflicts.
- Updated UI components to display error counts in synchronization summaries and progress panels, improving user feedback during data sync operations.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-14 17:54:01 +08:00
Innei
5e4b4bb4d1 feat(data-management): add data management module for photo asset maintenance
- Introduced the DataManagementModule, including a controller and service for managing photo asset records.
- Implemented functionality to truncate photo asset records from the database, enhancing data management capabilities.
- Updated existing photo asset deletion logic to support optional deletion from storage.
- Added a new DataManagementPanel in the dashboard for user interaction with data management features.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-14 16:38:15 +08:00
Wenzhuo Liu
f2658cf5a5 feat: support hdr motion photo (#155) 2025-11-14 14:26:03 +08:00
Innei
6085335242 chore(builder): update package version and adjust module exports
- Bumped package version from 0.1.3 to 0.2.2 for the builder.
- Changed main entry point and module exports from `.js` to `.mjs` and updated type definitions to `.d.mts` for better compatibility with ES modules.
- Modified GitHub repository synchronization plugin options to allow an optional `enable` flag, enhancing configuration flexibility.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-14 00:31:32 +08:00
Innei
3e60b382e1 feat(builder): integrate GitHub repository synchronization plugin and update configuration
- Added `githubRepoSyncPlugin` to the builder configuration, enabling synchronization with a GitHub repository.
- Removed deprecated repository settings from user configuration and streamlined the plugin's integration.
- Updated CLI and documentation to reflect changes in repository configuration handling, enhancing clarity for users.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-14 00:23:26 +08:00
Innei
6a4f868a5a feat(docker): add Docker Compose configuration for database and caching services
- Introduced a new `docker-compose.yml` file to define services for PostgreSQL and Redis, facilitating local development and testing.
- Configured health checks for both services to ensure they are ready before the core application starts.
- Set up environment variables for the PostgreSQL service to manage user credentials and database initialization.
- Added volume mappings for persistent data storage in both PostgreSQL and Redis.

refactor(auth): streamline tenant context resolution and error handling

- Simplified the `AuthGuard` to throw a `BizException` with a detailed message when tenant IDs do not match.
- Removed unnecessary response header settings in the `TenantContextResolver` and middleware, improving clarity and maintainability.
- Updated various controllers and services to utilize the new tenant context handling logic, ensuring consistent behavior across the application.

feat(super-admin): implement builder debug functionality

- Added `SuperAdminBuilderDebugController` to handle image debugging requests with progress tracking.
- Introduced an in-memory storage provider for debugging purposes, allowing for temporary file uploads and processing.
- Enhanced the dashboard with a new debug page for super admins to test and validate image processing workflows.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-13 23:43:22 +08:00
Innei
936666d8a2 refactor: remove unnecessary window checks across components
- Eliminated checks for `typeof window !== 'undefined'` in various components and utility functions, simplifying the codebase.
- Updated logic to directly access `window` properties, assuming the code runs in a browser environment.
- Improved readability and maintainability by streamlining conditional checks related to window availability.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-13 15:03:46 +08:00
Innei
76a4c251e4 feat(photo): enhance photo asset normalization and logging
- Updated photo asset service to correctly use regex in normalization functions, ensuring proper path formatting.
- Introduced builder log relay functionality in the data sync controller to improve logging during synchronization tasks.
- Added error handling improvements across various components, utilizing a centralized error message function for consistency.
- Enhanced photo page actions and library action bar with new select all functionality for better user experience.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-13 14:52:00 +08:00
Innei
e8f967a7ea refactor(s3): replace AWS SDK S3 types with custom S3ObjectLike interface
- Removed dependencies on AWS SDK's S3 types in favor of a custom S3ObjectLike interface for better type management.
- Updated various services and components to utilize the new S3ObjectLike type, enhancing code clarity and maintainability.
- Introduced a SimpleS3Client interface to streamline S3 client interactions and improve fetch handling.
- Added fast-xml-parser for XML response parsing in S3 operations, enhancing object listing functionality.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-13 13:53:54 +08:00
Innei
ff73de44c8 feat(data-sync): implement logging for data synchronization process
- Added logging functionality to the DataSyncService to track progress and errors during the manifest generation process.
- Introduced DataSyncLogLevel and DataSyncLogPayload types for structured logging.
- Updated emitLog method to handle different log levels (info, success, warn, error) and include relevant details.
- Enhanced PhotoSyncProgressState to maintain a log of synchronization events, displayed in the PhotoSyncProgressPanel.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-13 00:42:43 +08:00