- Added new UI schema for managing storage plans, including catalog, pricing, and product configurations.
- Introduced StoragePlanService to handle storage plan operations and integrate with existing billing services.
- Updated SuperAdmin settings to include managed storage provider configurations.
- Enhanced localization files with new keys for storage plan management.
- Implemented API endpoints for fetching and updating storage plans.
Signed-off-by: Innei <tukon479@gmail.com>
- Added a new endpoint in SuperAdminTenantController to fetch tenant photos.
- Introduced TenantDetailModal for displaying tenant details and associated photos.
- Created TenantUsageCell component to visualize tenant usage metrics.
- Updated localization files to include new keys for tenant photo management.
- Enhanced SuperAdminTenantManager to support modal interactions for tenant details.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a new TenantDomainRepository and TenantDomainService to handle domain-related operations.
- Added endpoints in TenantController for listing, requesting, verifying, and deleting custom domains.
- Implemented domain verification logic with CNAME and TXT record support.
- Enhanced UI components for domain management, including CustomDomainCard and DomainListItem.
- Updated localization files to include new keys for domain management features.
Signed-off-by: Innei <tukon479@gmail.com>
- 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>
- Changed the OG_IMAGE_URL constant to a direct link for the Afilmory readme image on GitHub, ensuring proper display in SEO metadata.
Signed-off-by: Innei <tukon479@gmail.com>
- Deleted SimpleCorsInterceptor, associated decorator, and helper functions to streamline CORS handling.
- Updated CorsMiddleware to use a simplified CORS configuration.
- Refactored StaticAssetController and StaticAssetService to remove references to the removed CORS functionality.
Signed-off-by: Innei <tukon479@gmail.com>
- Applied a black background color to the body element in the global CSS file to enhance the visual design of the landing page.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a new logo image for Afilmory.
- Updated the PageHeader component to display the logo using Next.js Image component for optimized loading.
- Enhanced SEO by updating the title in English and Chinese locale files to reflect the new branding.
Signed-off-by: Innei <tukon479@gmail.com>
- Combined multiple build commands into a single RUN command using background execution and wait to improve build efficiency.
- Ensured that builds for @afilmory/web, @afilmory/dashboard, and core are executed concurrently.
Signed-off-by: Innei <tukon479@gmail.com>
- Changed the artifact path from './packages/docs/dist' to './apps/docs/dist' to reflect the correct directory structure for documentation deployment.
Signed-off-by: Innei <tukon479@gmail.com>
- Added SimpleCorsInterceptor to manage CORS headers for requests.
- Introduced AllowSimpleCors decorator for easy application of CORS settings on controllers and methods.
- Created helper function to apply CORS headers consistently across responses.
- Updated TenantController to utilize the new CORS functionality.
- Added COMMON_FORBIDDEN error code to improve error handling.
Signed-off-by: Innei <tukon479@gmail.com>
- Enhanced Next.js configuration by integrating codeInspectorPlugin for improved bundler support.
- Added dynamic export settings in robots and sitemap files to enforce static generation.
- Removed obsolete components and hooks to streamline the codebase, including error handling, UI elements, and various utility functions.
Signed-off-by: Innei <tukon479@gmail.com>
- Implemented TenantController with a new endpoint to check tenant slug availability.
- Added slug normalization and validation logic to ensure slugs meet specified criteria.
- Integrated SystemSettingService to retrieve base domain for tenant URLs.
- Updated TenantService to include a method for checking slug availability against existing records.
- Modified TenantModule to include the new TenantController and SystemSettingModule dependencies.
- Updated pnpm-lock.yaml to include new dependencies and version updates.
Signed-off-by: Innei <tukon479@gmail.com>
feat: Enhance PhotoAssetService with findPhotosByIds method for batch retrieval of photo manifests
refactor: Move PhotoAsset types to a dedicated file for better organization
feat: Introduce StaticAssetController and StaticShareController for handling static asset requests
feat: Create StaticShareService to manage share page functionality and dynamic data injection
refactor: Consolidate static web controller logic into StaticBaseController for code reuse
fix: Update module imports to reflect new directory structure for AppStateModule
chore: Update pnpm lockfile to include new dependencies
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced UI schema internationalization support by adding translation functions for English and Chinese.
- Updated various controllers and services to accept language headers for localized responses.
- Created new locale files for UI schema in English and Chinese, enhancing user experience for diverse audiences.
- Refactored UI schema generation to utilize translation keys for dynamic content rendering.
Signed-off-by: Innei <tukon479@gmail.com>
- Added StaticAssetHostService to manage static asset host resolution with caching.
- Updated StaticAssetService and StaticDashboardService to utilize the new static asset host resolver.
- Enhanced StaticWebController to pass request host information for improved asset handling.
- Refactored static asset interfaces to support new functionality.
- Integrated CORS headers and cache policies for better asset management.
Signed-off-by: Innei <tukon479@gmail.com>
- Integrated `useTranslation` from `react-i18next` across various components for localization.
- Updated navigation, settings, and photo management components to utilize translation keys for labels and descriptions.
- Refactored error messages and user prompts to support multiple languages.
- Improved user experience by ensuring all relevant text is translatable, enhancing accessibility for non-English users.
Signed-off-by: Innei <tukon479@gmail.com>
- Added i18next and react-i18next for localization support.
- Created i18n configuration in `src/i18n.ts` and set up language detection.
- Introduced `I18nProvider` to manage i18n context and resource updates.
- Added localization files for English and Chinese (Simplified) with necessary translations.
- Updated `ErrorElement` component to utilize translations for error messages.
- Enhanced dashboard documentation with i18n usage guidelines.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated `babel-plugin-react-compiler` and `react-compiler-runtime` to version 1.0.0 across multiple package.json files.
- Refactored `PhotoPage` and related components to utilize new tab structure for better organization.
- Introduced `PhotoPageScaffold` and `PhotoPageTabs` for improved layout and navigation within the photo management section.
- Enhanced `PhotoSyncTab`, `PhotoStorageTab`, and `PhotoUsageTab` components for better functionality and user experience.
- Adjusted imports and component structure for clarity and maintainability.
Signed-off-by: Innei <tukon479@gmail.com>
- Changed photo loading methods to remove unnecessary await for synchronous operations.
- Updated import path for icons in PhotoItem component for better clarity and organization.
- Adjusted class names for consistency in styling.
Signed-off-by: Innei <tukon479@gmail.com>
- Integrated useRequireStorageProvider in AppLayer to manage storage provider requirements.
- Added auto-run functionality in PhotoSyncActions to trigger sync based on user settings.
- Updated useStorageProvidersQuery to accept options for enabling/disabling queries.
- Enhanced StorageProvidersManager to prompt users for immediate photo sync after configuration.
Signed-off-by: Innei <tukon479@gmail.com>
- Added a descriptive paragraph about Afilmory as a photo gallery platform to the LoginStep component.
- Updated layout classes for improved consistency and alignment in the LoginStep and SuperAdminTenantManager components.
Signed-off-by: Innei <tukon479@gmail.com>
- Modified the container class for the SocialAuthButtons component to improve layout consistency.
- Removed unnecessary 'justify-center' class when layout is set to 'row' for better alignment.
Signed-off-by: Innei <tukon479@gmail.com>
- Included a new COPY command to transfer patches into the Docker image.
- Ensured that patches are available in both core and builder stages for application consistency.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a patch for '@creem_io/better-auth' to modify the export in the module.
- Updated pnpm-lock.yaml to include the new patch and reflect changes in dependency versions.
- Modified pnpm-workspace.yaml to register the patched dependency.
- Ensured consistency in versioning for related dependencies across the project.
Signed-off-by: Innei <tukon479@gmail.com>
- 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>
- Added support for creem subscriptions in the AuthProvider, including new fields for creemCustomerId.
- Updated BetterAuthUser interface to include optional creemCustomerId.
- Enhanced plan management components to utilize creemCustomerId for subscription handling.
- Refactored PlanCard and PlanList components to accommodate new subscription logic and improve user experience.
Signed-off-by: Innei <tukon479@gmail.com>
- Added support for billing plan products and pricing settings, allowing for detailed configuration of subscription plans.
- Introduced new constants and types for managing billing plan overrides, products, and pricing.
- Updated the SystemSettingService to handle new billing-related settings and integrated them into the admin interface.
- Enhanced the BillingPlanService to retrieve and apply product and pricing information for tenant plans.
- Updated UI components to reflect the new billing plan configurations and ensure proper display of pricing details.
Signed-off-by: Innei <tukon479@gmail.com>
- Changed website URL and updated SEO metadata to reflect new branding for Afilmory.
- Revised title, description, and keywords to align with the new focus on photography and immersive experiences.
- Removed unused user-related metadata to streamline the layout.
Signed-off-by: Innei <tukon479@gmail.com>
- Eliminated hardcoded navigation items from the PageHeader component to streamline the layout.
- Cleaned up the code by removing the associated navigation rendering logic.
- Improved maintainability of the component by focusing on essential elements.
Signed-off-by: Innei <tukon479@gmail.com>
- Added new pages for Privacy Policy and Terms of Service, including markdown content rendering.
- Integrated `react-markdown` for displaying legal documents.
- Updated layout to include a footer with links to the new pages.
- Refactored layout components to improve structure and maintainability.
- Removed unused footer navigation items to streamline the design.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced billing plans with associated quotas for tenants, including maximum upload sizes and processing limits.
- Added new endpoints and services for managing tenant billing plans and tracking usage events.
- Enhanced the dashboard with components for viewing and updating tenant plans, including a new tenant management interface.
- Implemented database migrations to support billing-related data structures and relationships.
- Updated documentation to reflect the new billing plan features and usage tracking capabilities.
Signed-off-by: Innei <tukon479@gmail.com>
- 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>
- Add ProcessingPanel component to display processing stages and logs.
- Create UploadFileList component to show upload progress for each file.
- Define constants for workflow steps, file statuses, and processing stages.
- Implement steps for completed, error, processing, review, uploading, and uploading steps.
- Create a Zustand store for managing photo upload state and actions.
- Add utility functions for file handling, error messages, and tag sanitization.
- Update hooks to support new upload options and progress tracking.
- Integrate new components and store into the photo upload module.
Signed-off-by: Innei <tukon479@gmail.com>
- 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>
- Replaced the previous application instance with Hono for better routing capabilities.
- Updated OpenAPI route registration to use a new internal path structure.
- Enhanced error handling by utilizing Hono's built-in error management features.
- Adjusted logging to reflect the new route paths for OpenAPI documentation.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced `ManifestPublicController` to handle public requests for the manifest.
- Updated `ManifestModule` to include the new controller.
- Enhanced `ManifestService` to support additional sync statuses in the query logic.
- Updated type imports in `PhotoAssetService` for better type safety.
Signed-off-by: Innei <tukon479@gmail.com>
- Enhanced the AuthController to validate that at least one OAuth provider remains linked when unlinking accounts.
- Introduced a new endpoint in DataManagementController for deleting tenant accounts, ensuring proper checks for tenant slug and permissions.
- Updated DataManagementService to handle the deletion of tenant-related data across multiple tables in the database.
- Added user confirmation prompts in the DataManagementPanel for account deletion to prevent accidental data loss.
- Integrated new hooks and API functions to support tenant account deletion in the dashboard.
Signed-off-by: Innei <tukon479@gmail.com>
- 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>
- Updated the font loading logic in `OgService` to handle potential errors when checking file existence.
- Utilized optional chaining to ensure that the code does not throw an error if the stat call fails, enhancing reliability during font loading.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a global constant `__DEV__` to indicate the development environment in the Vite configuration.
- Updated the `OgService` to conditionally include additional font paths when in development mode, improving font loading flexibility.
- Refactored font loading logic to check for file existence before attempting to read, enhancing reliability.
Signed-off-by: Innei <tukon479@gmail.com>