Commit Graph

539 Commits

Author SHA1 Message Date
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
Innei
e8550cee42 feat: enhance tenant management with pagination and sorting options
- 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>
2025-12-04 15:54:47 +08:00
Innei
9fb7f5525f feat: add website field to CommentUser and update comment components
- 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>
2025-12-03 21:16:35 +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
1aac293020 refactor: comment out domain navigation and its usage in settings page
- 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>
2025-12-03 19:02:01 +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
Bojin Li
885a1734e7 fix(ssr): serve SPA HTML for deep links instead of 404 (#183) 2025-12-03 18:27:06 +08:00
Vincent He
08d42521f3 fix: Update photo detail page link path (#181) 2025-12-01 23:11:33 +08:00
Zeno
aedaac2fee Fix import path for handler in dev.ts (#182) 2025-12-01 23:10:53 +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
7b02aeaba6 feat: enhance InspectorPanel and PhotoViewer with inspector visibility controls
- Updated InspectorPanel to include a close button for collapsing the panel.
- Refactored PhotoViewer to manage inspector visibility based on device type, replacing the previous EXIF panel state.
- Introduced conditional rendering for the inspector button in PhotoViewer, improving user experience on mobile and desktop.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-30 23:34:28 +08:00
Innei
9618a68b9b refactor: remove thumbnail padding constants for cleaner calculations
- Eliminated `THUMBNAIL_PADDING` constants to simplify thumbnail height calculations in the viewer.
- Updated `computeViewerImageFrame` to directly use `THUMBNAIL_SIZE` for determining thumbnail height based on device type.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-30 23:23:52 +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
b6b7941ea2 feat: implement ShareModal and related components for enhanced photo sharing
- Introduced `ShareModal` to replace the deprecated `SharePanel`, providing a more streamlined sharing experience.
- Added `CopyButton` and `ShareActionButton` components for improved user interaction when sharing photos.
- Updated `PhotoViewer` to utilize the new `ShareModal` for sharing functionality.
- Removed `SharePanel` and updated localization files to include new sharing strings in multiple languages.
- Enhanced the handling of share links and download options within the modal.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-30 22:50:33 +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
b9d06fe6f2 feat: implement active filters feature in gallery module
- Added `useHasActiveFilters` hook to determine if any filters are active based on selected tags, cameras, lenses, and ratings.
- Introduced `ActiveFiltersHero` component to display active filters and related actions, including options to edit or clear filters.
- Created `FilterChip`, `FilterChips`, and `FilterStats` components for managing and displaying individual filter selections.
- Updated `PhotosRoot` to integrate the new active filters UI, enhancing user experience by providing immediate feedback on applied filters.
- Added localization strings for active filters in multiple languages.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-30 20:38:40 +08:00
Innei
48bfa238d6 refactor: reduce logging in OAuth callback processing
- 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>
2025-11-30 19:24:02 +08:00
Innei
4769673099 fix: enforce required state secret for OAuth processing
- 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>
2025-11-30 19:18:13 +08:00
Innei
1090aff397 feat: enhance OAuth callback logging and error handling
- 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>
2025-11-30 19:09:05 +08:00
Innei
7accb1f6c3 refactor: simplify target host resolution and remove explicit host handling
- 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>
2025-11-30 18:58:51 +08:00
Innei
5774b99cbc refactor: streamline OAuth callback processing and configuration handling
- 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>
2025-11-30 18:33:41 +08:00
Innei
f81b3d0ae9 feat: implement sign-out functionality in auth API and user menu
- 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>
2025-11-30 18:10:37 +08:00
Innei
8f0e9e7fd7 refactor: improve tenant slug handling in OAuth callback processing
- 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>
2025-11-30 14:24:42 +08:00