562 Commits

Author SHA1 Message Date
SuQingyao
a93904686e feat(builder): add mp4 extension support for Live Photos in storage providers (#218)
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-22 17:41:16 +08:00
Innei
76b7d47acd refactor: enhance accessibility and optimize EXIF data handling across components
- Added aria-labels to buttons and icons for improved accessibility.
- Refactored EXIF data formatting to utilize a shared function, reducing code duplication.
- Updated various components to use memoization for performance optimization.
- Adjusted styles for consistency in hover effects and transitions.

Signed-off-by: Innei <tukon479@gmail.com>
2026-01-18 15:46:02 +08:00
Innei
e1d1d73364 refactor: remove landing page components and configurations 2026-01-14 23:21:18 +08:00
dependabot[bot]
a25b2ccc07 chore(deps-dev): bump hono from 4.11.3 to 4.11.4 in /packages/renderer (#217)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-14 22:58:41 +08:00
Innei
8a20fef4a9 refactor: reorganize Vite configuration for route generation and static web build plugins
- Renamed and reordered plugins for clarity, separating route generation from static web build plugins.
- Integrated route generation plugins into the Vite configuration to streamline the build process.

Signed-off-by: Innei <tukon479@gmail.com>
2026-01-11 22:49:40 +08:00
Innei
e938237fa9 chore: update build workflow to generate routes using Vite
- Added a step to build the web application using Vite, replacing the previous build command.
- Updated the workflow to ensure the correct generation of routes during the build process.

Signed-off-by: Innei <tukon479@gmail.com>
2026-01-11 22:47:39 +08:00
Innei
08b045e176 chore: update package dependencies and configurations across the monorepo 2026-01-10 23:35:37 +08:00
Innei
7e216d90d7 feat: introduce @afilmory/typing package and update imports across the codebase
- Added a new package `@afilmory/typing` to centralize type definitions.
- Updated various files to import types from `@afilmory/typing` instead of individual modules.
- Adjusted package dependencies in `package.json` files for affected packages.
- Modified `pnpm-lock.yaml` to include the new package and its dependencies.

Signed-off-by: Innei <tukon479@gmail.com>
2026-01-10 23:31:41 +08:00
Innei
e09159dad0 fix: suppress TypeScript error for generated routes import in router.tsx
Signed-off-by: Innei <tukon479@gmail.com>
2026-01-10 22:50:03 +08:00
woolen-sheep
0261e06f8d feat: add ogImagePlugin to build and upload og images (#213) 2026-01-10 22:49:39 +08:00
Innei
e795a998e4 feat: add AppSkeleton component and integrate suspense for loading state
- Introduced a new AppSkeleton component to provide a loading placeholder with a waterfall effect.
- Updated main.tsx to wrap the RouterProvider in a Suspense component, displaying AppSkeleton during loading.
- Modified router.tsx to include AppSkeleton as a hydrate fallback element for improved user experience.

Signed-off-by: Innei <tukon479@gmail.com>
2026-01-07 00:01:36 +08:00
Innei
b0d1177427 chore: update vite-plugin-route-builder to version 0.5.0-alpha.1 and adjust related configurations
- Updated the vite-plugin-route-builder dependency in package.json files for both the web and dashboard applications.
- Modified the pnpm-lock.yaml to reflect the new version.
- Updated the router configuration to utilize generated routes from the new version.
- Added a new layout component for the main page in the web application.
- Adjusted import statements and added a new entry to .gitignore for generated routes.

Signed-off-by: Innei <tukon479@gmail.com>
2026-01-06 23:52:08 +08:00
Innei
ae41e91fec chore: update Terms of Service with new last updated date and inactive account deletion policy
- Changed the last updated date to 2026-01-06.
- Added a new section outlining the inactive account deletion policy, specifying that accounts inactive for 1 month or more may be deleted.

Signed-off-by: Innei <tukon479@gmail.com>
2026-01-06 23:28:47 +08:00
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
Whitewater
4a840097e7 fix: correct gutter value type in Masonry component (#205) 2026-01-05 13:32:14 +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
Chrys
cbbdfc3087 fix: exit animation target on ListView (#210) 2026-01-04 16:33:35 +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
0da12eb301 feat: implement drag-and-drop file upload feature in photo library
- Added PhotoLibraryDropUpload component to handle file drag-and-drop uploads.
- Integrated file type validation to support images and specific video formats.
- Implemented user feedback through modals and toasts for unsupported file types.
- Updated localization files to include new strings for drag-and-drop functionality in English and Chinese.
- Modified PhotoLibraryTab to include the new upload component.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-14 15:37:30 +08:00
Innei
9229ad63dd feat: enhance billing error handling and upgrade prompts
- Updated error codes in the error-codes enum to better reflect billing scenarios, introducing BILLING_PLAN_QUOTA_EXCEEDED and BILLING_STORAGE_QUOTA_EXCEEDED.
- Modified the PhotoAssetService and BillingPlanService to throw specific BizExceptions for storage and plan quota exceedances.
- Implemented a new BillingUpgradeModal to prompt users for upgrades based on error categories.
- Enhanced error handling in photo upload and sync actions to present upgrade prompts when necessary.
- Updated localization files to include new strings for upgrade prompts in both English and Chinese.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-10 15:36:52 +08:00
Innei
883fd37e53 feat: implement storage tenant listing and query enhancements
- Added a new endpoint in SuperAdminTenantController to list tenants with storage plans and their usage statistics.
- Updated TenantRepository and TenantService to support filtering tenants by storage plan requirements.
- Introduced new API functions and hooks in the dashboard for fetching and managing storage tenant data.
- Modified TenantStoragePanel component to utilize the new storage tenant query.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-10 15:11:11 +08:00
Innei
d6b5cf1dda feat: add storage usage tracking and management features for tenants
- Implemented a new method in ManagedStorageService to retrieve usage totals for tenants, including total bytes and file counts.
- Enhanced SuperAdminTenantController to integrate storage usage data into tenant listings.
- Created TenantStoragePanel and TenantSubscriptionsPanel components for managing and displaying tenant storage information.
- Updated localization files to support new storage management features in both English and Chinese.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-10 14:41:43 +08:00
Innei
05ef8a8f4c fix: extend upload request timeout for larger batches and slower networks
- Increased the upload request timeout from 2 minutes to 10 minutes to accommodate larger file uploads and slower network conditions.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-09 21:28:36 +08:00
Innei
7d70361717 refactor: remove outdated documentation and update gallery showcase with last upload feature
- Deleted obsolete documentation files related to color system, discover modal architecture, and store-actions pattern.
- Updated the GalleryShowcase component to replace 'createdAt' with 'lastUpload' for better clarity on photo upload timing.
- Enhanced localization files to include a new key for 'lastUpload' in both English and Chinese.
- Modified the FeaturedGalleriesService to fetch and include the last updated timestamp for galleries.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-06 22:20:03 +08:00
Innei
c9514607b7 fix: update billing plan description and enhance plan card functionality
- Simplified the description of the 'Pro' billing plan in the constants file.
- Added logic to the PlanCard component to conditionally display checkout, downgrade, and coming soon buttons based on the user's plan and account status.
- Improved the handlePortal function to account for the new downgrade button logic.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-06 01:44:47 +08:00
Innei
f2461f61c6 refactor: improve header and user menu components with responsive plan badge
- Updated the Header component to conditionally render the PlanBadge for larger screens.
- Enhanced the UserMenu component to display a loading state for the plan badge on mobile and link to the plan page when available.
- Introduced new props in UserMenu for better plan management and localization support.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-06 01:06:18 +08:00
Innei
7f9dd316f7 feat: enhance registration wizard with localization and improved state management
- Integrated i18next for localization across registration wizard components, including headers, footers, and steps.
- Refactored registration steps to utilize a custom hook for managing localized step titles and descriptions.
- Updated various components to improve user experience, including dynamic button labels and error messages.
- Adjusted initial form values to ensure terms acceptance is set to true by default.
- Enhanced the workspace step to derive the tenant name from the slug automatically.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-06 01:03:50 +08:00
Innei
62e98a9599 feat: enhance locales-json plugin to filter non-locales files
- Added a check to return null for files that do not include 'locales' in their ID, improving the plugin's efficiency by preventing unnecessary transformations.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-06 00:46:08 +08:00
Wenzhuo Liu
a5fc700608 fix: pass projection mode directly (#193) 2025-12-06 00:42:55 +08:00
Innei
fbaf81a62f chore: update Dockerfile and enhance loading skeleton in StoragePlanEditor
- Added build dependencies for native Node.js modules in the Dockerfile, including python3, make, g++, and postgresql-dev.
- Improved the loading skeleton UI in the StoragePlanEditor component for better visual representation during data fetching.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-06 00:42:10 +08:00
Innei
b636c8cc10 feat: add storage plan management to tenant administration
- Introduced functionality to update storage plans for tenants in the SuperAdmin interface.
- Enhanced the SuperAdminTenantController and related services to handle storage plan updates.
- Updated frontend components to include a storage plan selector in the tenant management UI.
- Added necessary DTOs and types for storage plan handling.
- Improved localization for storage plan features in both English and Chinese.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-06 00:30:34 +08:00
Innei
8c9e8a9575 feat: enhance tenant management with search functionality and DTO updates
- Introduced search capability in tenant listing and management components.
- Updated SuperAdminTenantController to utilize new DTOs for tenant ID and query parameters.
- Enhanced tenant repository and service to support search filtering.
- Modified frontend components to include a search input for better tenant management experience.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-06 00:20:00 +08:00
Innei
b8eeb95c4f fix: root account creation
- Introduced an explicit tenant ID parameter in the AuthProvider to allow for tenant-specific authentication.
- Updated the createAuthForEndpoint method to utilize the explicit tenant ID when provided.
- Added a new method, getAuthForTenant, to facilitate fetching authentication for a specific tenant.
- Updated related services to use the new tenant-specific authentication logic.
- Added pg-native as a dependency and updated pnpm-lock.yaml accordingly.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 20:32:47 +08:00
Innei
9b1a1b7bf6 feat: make Creem integration optional and error-prone if misconfigured 2025-12-05 20:13:52 +08:00
Innei
d0c420ba93 refactor: update Reaction component and integrate ReactionRail into PhotoViewer
- Refactored the Reaction component to improve structure and styling, renaming it to ReactionRail.
- Simplified the reaction handling logic and enhanced the UI for displaying reactions.
- Integrated ReactionRail into the PhotoViewer component to allow users to react to photos directly.
- Removed unused imports and optimized the code for better performance.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 19:17:38 +08:00
Innei
a4927c5240 feat: add comment count API and integrate with InspectorPanel
- Implemented a new API endpoint to count comments for a specific photo.
- Updated the InspectorPanel to fetch and display the comment count using React Query.
- Enhanced the UI to indicate the presence of comments with visual cues.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 18:02:42 +08:00
Innei
a71025a65c refactor: enhance ActivitySkeleton and StatSkeleton components for improved styling and responsiveness
- Updated the layout and styling of the ActivitySkeleton component to improve visual consistency and responsiveness.
- Added additional placeholder elements in ActivitySkeleton for better loading representation.
- Adjusted padding and dimensions in StatSkeleton for a more polished appearance.
- Ensured all skeleton elements have consistent animation effects for a smoother user experience.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 17:14:02 +08:00
Copilot
62ec7be029 Fix scrollbar issues in photo upload modal dialog (#189)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: lawvs <18554747+lawvs@users.noreply.github.com>
2025-12-05 16:40:12 +08:00
Innei
5984ca407e chore: update Dockerfile and package dependencies for pg-native support
- Added build dependencies for native Node.js modules in the Dockerfile, including python3, make, g++, and postgresql-dev.
- Installed postgresql-libs and removed build dependencies after installation to reduce image size.
- Updated pnpm-lock.yaml to include pg-native version 3.5.2 and adjusted related package versions accordingly.
- Modified package.json to add pg-native as a dependency.
- Updated vite.config.ts to include pg-native in the external dependencies list.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 16:39:27 +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
MaxtuneLee
f1738ae749 docs: update readme image 2025-12-05 15:30:58 +08:00
Innei
b42bfbc520 feat: implement tenant suspension handling and deletion functionality
- Added a new tenant suspension page and related components to inform users when their tenant is suspended due to policy violations.
- Implemented deletion functionality for tenants in the SuperAdminTenantManager, allowing super admins to permanently delete tenant accounts.
- Updated localization files to include new strings for tenant suspension and deletion prompts.
- Enhanced the DataManagementService to handle tenant deletion with metadata checks.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 15:28:21 +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
b28b03c40b refactor: replace lazy loading feature with domMax in LazyMotion components
- Removed the framer-lazy-feature module and updated LazyMotion components in both landing and dashboard providers to use domMax directly.
- This change simplifies the feature loading process and improves performance by eliminating unnecessary imports.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 00:41:16 +08:00
Innei
20da96018d chore: update docker build
Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 00:35:32 +08:00
Innei
84128e8668 chore: lazy import and saas build base url
Signed-off-by: Innei <tukon479@gmail.com>
2025-12-05 00:34:40 +08:00
Innei
1507b695c2 chore: cleanup auth code
Signed-off-by: Innei <tukon479@gmail.com>
2025-12-04 21:15:20 +08:00
Innei
ed4fcada7d refactor: simplify authentication instance creation in AuthProvider
- Removed unnecessary cookie prefix handling and streamlined the instance creation process in the AuthProvider class.
- Updated the SuperAdminTenantManager component by removing unused button properties and cleaning up the status badge rendering logic.

Signed-off-by: Innei <tukon479@gmail.com>
2025-12-04 16:17:58 +08:00