- Add ESLint configuration for TypeScript and React.
- Create index.html as the entry point for the application.
- Set up package.json with scripts for development, build, linting, and preview.
- Include Vite logo SVG in the public directory.
- Add App.css for styling the application.
- Implement main App component in App.tsx with basic functionality.
- Add React logo SVG to assets.
- Create global styles in index.css.
- Set up main entry point in main.tsx.
- Configure TypeScript with tsconfig files for app and node environments.
- Create Vite configuration file for React integration.
- Updated async-nats dependency to version 0.45.0 in both libertas_api and libertas_worker.
- Introduced AI-related structures and traits in libertas_core for face detection.
- Added AiConfig and FaceDetectorRuntime enums to support different face detection methods.
- Implemented TractFaceDetector and RemoteNatsFaceDetector in libertas_infra for local and remote face detection.
- Created FaceDetectionPlugin to integrate face detection into the media processing pipeline.
- Enhanced XMP writing functionality to include face region data.
- Updated PluginManager to initialize face detection plugins based on configuration.
- Added `AuthorizationService` and its implementation `AuthorizationServiceImpl` to handle permission checks across various services.
- Refactored `AlbumServiceImpl`, `MediaServiceImpl`, `PersonServiceImpl`, and `TagServiceImpl` to utilize the new authorization service for permission checks.
- Removed direct permission checks from services and replaced them with calls to the `AuthorizationService`.
- Updated repository interfaces to include new methods for checking media permissions in shared albums.
- Enhanced the `authz` module with new permission types for better granularity in access control.
- Adjusted the `AppState` struct to include the new `authorization_service`.
- Added `Person` and `Tag` models to the core library.
- Created `PersonService` and `TagService` traits with implementations for managing persons and tags.
- Introduced repositories for `Person`, `Tag`, `FaceRegion`, and `PersonShare` with PostgreSQL support.
- Updated authorization logic to include permissions for accessing and editing persons.
- Enhanced the schema to support new models and relationships.
- Implemented database migrations for new tables related to persons and tags.
- Added request and response structures for API interactions with persons and tags.
- Updated workspace members to include `libertas_importer`.
- Added a new migration to add `thumbnail_path` column to `media` table.
- Enhanced configuration structures to include `thumbnail_config`.
- Modified `Media` model to include `thumbnail_path`.
- Updated `MediaRepository` trait and its implementation to handle thumbnail path updates.
- Created `ThumbnailPlugin` for generating thumbnails based on media configurations.
- Integrated thumbnail generation into the media processing workflow.
- Updated dependencies in `libertas_worker` and `libertas_importer` for image processing.
feat(libertas_api): add dependency on libertas_infra and async-nats
refactor(libertas_api): consolidate config loading and add broker_url
refactor(libertas_api): integrate NATS client into app state and services
feat(libertas_core): introduce config module for database and server settings
fix(libertas_core): enhance error handling with detailed messages
feat(libertas_infra): create infrastructure layer with database repositories
feat(libertas_infra): implement Postgres repositories for media and albums
feat(libertas_worker): add worker service to process media jobs via NATS