- 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>
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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- Updated the SuperAdminTenantManager component to support pagination and sorting of tenant data.
- Introduced new parameters for fetching tenants, including page, limit, status, sortBy, and sortDir.
- Enhanced the UI to allow users to filter tenants by status and sort by name or creation date.
- Updated localization files to include new strings for tenant filtering and pagination.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced an optional `website` field in the `CommentUser` interface to allow users to provide their website links.
- Updated `CommentCard` and `CommentHeader` components to utilize the new `website` field, enabling clickable links for user websites in the comment header.
- Refactored user data fetching in `CommentService` to include the website information when retrieving user profiles.
Signed-off-by: Innei <tukon479@gmail.com>
- 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>
- Removed the 'domain' tab from the SETTINGS_TABS array in SettingsNavigation.tsx for cleaner navigation.
- Commented out the usage of <SettingsNavigation active="domain" /> in the domain settings page to prevent rendering issues.
Signed-off-by: Innei <tukon479@gmail.com>
- 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>
- Removed excessive logging statements related to request parameters, state decoding, tenant resolution, and redirection in the OAuth callback logic.
- Streamlined the code for improved readability while maintaining essential error handling and functionality.
Signed-off-by: Innei <tukon479@gmail.com>
- Added a check to ensure AUTH_GATEWAY_STATE_SECRET or CONFIG_ENCRYPTION_KEY is provided, throwing an error if neither is set.
- Updated the configuration parsing to use a resolved state secret variable for clarity and consistency.
Signed-off-by: Innei <tukon479@gmail.com>
- Added detailed logging for OAuth callback processing, including request parameters and state decoding results.
- Implemented error logging for missing provider parameters and invalid state scenarios.
- Improved tenant slug resolution and target host logging to aid in debugging and monitoring.
Signed-off-by: Innei <tukon479@gmail.com>
- Eliminated the explicitHost parameter from the TargetResolutionInput interface and related functions.
- Updated the OAuth callback processing to streamline target host resolution, relying solely on tenant slug.
- Adjusted the GatewayStatePayload to remove targetHost, enhancing clarity in state management.
Signed-off-by: Innei <tukon479@gmail.com>
- Removed the ALLOW_CUSTOM_HOST configuration option from the gateway settings.
- Simplified tenant slug and explicit host handling in the OAuth callback logic, prioritizing state-derived values.
- Updated target host resolution to eliminate dependency on the allowCustomHost setting.
Signed-off-by: Innei <tukon479@gmail.com>
- Added a signOut method to the auth API for handling user sign-out requests.
- Integrated sign-out functionality in the UserMenuButton component, updating session state and invalidating queries upon successful sign-out.
Signed-off-by: Innei <tukon479@gmail.com>
- Renamed variable for clarity and added sanitization for tenant slug derived from state.
- Updated target host resolution to prioritize tenant slug from state if not explicitly provided.
Signed-off-by: Innei <tukon479@gmail.com>
- Included @afilmory/utils as a workspace dependency in the oauth-gateway package.json.
- Updated pnpm-lock.yaml to reflect the addition of @afilmory/utils with the appropriate workspace link.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced encoding and decoding of OAuth state to include tenant metadata, allowing the gateway to route callbacks without hard-coded tenant slugs.
- Updated the AuthController to handle social account linking and sign-in with compatibility for legacy paths.
- Refactored redirect URI construction to simplify tenant slug handling.
- Enhanced documentation to reflect changes in the OAuth flow and state management.
Signed-off-by: Innei <tukon479@gmail.com>
- Eliminated the RSS field from social settings in configuration files and UI schemas.
- Updated related documentation and localization files to reflect the removal of RSS support.
- Adjusted components to ensure compatibility with the updated social configuration.
Signed-off-by: Innei <tukon479@gmail.com>
- Added support for virtualized rendering in ListView using @tanstack/react-virtual for improved performance with large photo sets.
- Integrated new hooks for mobile responsiveness and context management in ListView and PhotoCard components.
- Updated PageHeader and ViewModeSegment for better layout consistency and user experience.
- Increased upload limits in backend configuration to accommodate larger files and requests.
Signed-off-by: Innei <tukon479@gmail.com>