Commit Graph

153 Commits

Author SHA1 Message Date
cea414fe60 refactor: split ImageRefPort into ImageRefCommand and ImageRefQuery 2026-05-12 15:10:49 +02:00
696e3e170c feat: async image conversion service (avif/webp) with backfill 2026-05-12 15:05:28 +02:00
4269eca582 feat: implement movie listing functionality with pagination and search 2026-05-12 13:57:55 +02:00
fb81aa10c1 feat: enable TMDb enrichment with conditional event handling 2026-05-12 13:29:43 +02:00
78c2d9b1d3 feat: implement database connection and event bus handling 2026-05-12 13:28:13 +02:00
38d13fbff1 feat: implement TMDb enrichment for movie profiles
- Add SqliteMovieProfileRepository for managing movie profiles in SQLite.
- Create TmdbEnrichmentClient to fetch movie details from TMDb API.
- Implement enrichment event handling with EnrichmentHandler.
- Introduce periodic jobs for cleaning up expired import sessions and checking for stale movie profiles.
- Update application context to include movie profile repository.
- Add API endpoint to retrieve movie profiles.
- Extend domain models with new structures for movie enrichment (Genre, Keyword, CastMember, CrewMember, MovieProfile).
- Modify event system to include MovieEnrichmentRequested event.
- Enhance tests to cover new functionality and ensure stability.
2026-05-12 13:23:41 +02:00
c696a3b780 feat: add endpoint to retrieve user by username 2026-05-12 12:02:30 +02:00
99ce81efe5 refactor: deps cleanup, split openapi, extract api-types crate 2026-05-12 11:54:00 +02:00
5c918accbc feat: add GET /health endpoint for Docker/k8s liveness probes 2026-05-12 02:05:37 +02:00
6eeba2cf57 feat: review delete/update AP propagation, remote actor avatars, OpenAPI updates
- Send Delete activity when a review is deleted
- Send Update(Note) activity when a review is edited
- Remote actor avatars shown in followers/following pages
- OpenAPI spec updated with profile, blocked domains, blocked actor endpoints
- Fix: worker wire() call missing allow_registration argument
2026-05-12 02:02:41 +02:00
8cd90624bb feat: move Settings/Blocked/Admin links to profile page own-account section 2026-05-12 01:14:43 +02:00
40c0f634d4 feat: add Settings, Blocked, and Admin nav links; add is_admin to HtmlPageContext 2026-05-12 01:12:16 +02:00
f0620f5aa1 feat: discoverability (NodeInfo, hashtags) and moderation (domain/actor blocking)
- NodeInfo at /.well-known/nodeinfo + /nodeinfo/2.0
- Hashtags #MoviesDiary + #MovieTitle on review posts; /tags/{tag} redirect
- Domain blocking: blocked_domains table, admin API + HTML, inbox enforcement
- Per-actor blocking: blocked_actors table, user API + HTML, BlockActivity send/receive
- Delivery filter excludes blocked actors and blocked-domain inboxes
2026-05-12 01:05:46 +02:00
80f620c840 feat: image storage generalization, user profile, and federation polish
- Replace PosterStorage with generic ImageStorage port (IMAGE_STORAGE_BACKEND/PATH env vars)
- Rename poster-storage crate to image-storage; serve at /images/{*key}
- Add bio and avatar_path to User model (migration 0009_user_profile)
- update_profile use case with avatar upload, mime validation, old avatar cleanup
- GET/PUT /api/v1/profile and GET/POST /settings/profile HTML page
- Enrich AP Person actor with summary, icon, url, discoverable fields
- Store remote actor avatar_url (migration 0010_ap_remote_actor_avatar)
- Shared inbox delivery via collect_inboxes deduplication
- Broadcast Update(Person) to followers on UserUpdated event
- Paginated outbox: OrderedCollection + OrderedCollectionPage with cursor
- Announce/boost tracking in ap_announces table (migration 0011_ap_announces)
2026-05-11 22:59:52 +02:00
8a254346f4 inbox rate limiting + poster storage cleanup 2026-05-11 01:07:21 +02:00
b2a2aa4262 movie detail page + importer architecture fix 2026-05-10 23:59:26 +02:00
f2f1317660 importer feature 2026-05-10 21:23:56 +02:00
e461c689d9 feat: add axum dependency and implement wiring functions for federation repositories 2026-05-10 18:58:41 +02:00
810d051dee Refactor event payload handling across adapters
- Introduced `event-payload` crate to centralize event payload definitions.
- Updated NATS and PostgreSQL adapters to use the new `EventPayload` type.
- Removed redundant event payload definitions and conversion implementations from NATS and PostgreSQL adapters.
- Simplified SQLite event queue to utilize the new `EventPayload`.
- Refactored wiring functions for PostgreSQL and SQLite to improve database connection handling and migration.
- Cleaned up presentation and worker crates by removing unused event publisher dependencies and related wiring functions.
2026-05-10 18:41:42 +02:00
af25a43bbc feat: add federation support with SQLite and Postgres repositories 2026-05-10 18:22:24 +02:00
9ca5bebe59 feat: refactor database connection handling to use DbPool enum for better abstraction 2026-05-10 18:03:08 +02:00
c2a5541706 feat: implement event bus backend configuration for DB and NATS 2026-05-10 17:55:51 +02:00
dca50b46d1 feat: add SQLite and PostgreSQL event queue adapters with migrations 2026-05-10 17:46:16 +02:00
37b0e07055 feat: implement SQLite and Postgres event queue adapters
- Added SQLite and Postgres event queue implementations with migrations and payload structures.
- Created migration scripts for both SQLite and Postgres event queues.
- Implemented event publishing and consumption logic for both adapters.
- Added serialization and deserialization for domain events to database payloads.
- Updated presentation and worker crates to support new event queue features.
- Refactored event handling to utilize the new database-backed event queues.
2026-05-10 16:09:36 +02:00
8678bbf391 nats adapter 2026-05-10 13:42:28 +02:00
05b44e17a1 background worker 2026-05-10 11:12:52 +02:00
e8b1685c9e feat: add futures workspace dep, upgrade EventConsumer to BoxStream 2026-05-10 02:52:37 +02:00
a8092a140d feat: add EventConsumer port to domain 2026-05-10 02:50:58 +02:00
9c11ac2bcc feat: add TMDB metadata provider, prefer over OMDB when TMDB_API_KEY is set 2026-05-10 02:30:53 +02:00
ebf74a59fd feat: feature flags 2026-05-10 02:26:18 +02:00
597685520c feat: postgresql adapter 2026-05-10 01:57:10 +02:00
9be7af50d2 feat: admin role 2026-05-10 01:15:48 +02:00
be30a1d77c feat: show profile RSS in footer when viewing another user's profile 2026-05-10 00:46:51 +02:00
66f9ef887e feat: ux improvements 2026-05-10 00:41:43 +02:00
9f894ebdf2 feat: feed ux improvements 2026-05-10 00:16:29 +02:00
a078d5315e feat: integrate axum-governor for rate limiting and update dependencies 2026-05-09 22:35:08 +02:00
d89d373a91 feat: implement CSRF protection across forms and routes 2026-05-09 22:09:19 +02:00
e8874f9220 feat: add activity feed and user profile endpoints with corresponding DTOs 2026-05-09 21:40:45 +02:00
fa501706cd feat: add documentation crate and integrate OpenAPI specifications
- Added a new crate `doc` for API documentation.
- Integrated `utoipa` for OpenAPI support in the presentation layer.
- Updated routes to include social features (follow, unfollow, etc.) and diary export.
- Enhanced API request and response structures with new DTOs for social interactions.
- Updated `Cargo.toml` files to include new dependencies and features.
- Modified Dockerfile to copy the new documentation crate.
- Refactored existing handlers and routes to accommodate new API endpoints.
- Updated tests to cover new functionality and ensure proper API behavior.
2026-05-09 21:29:20 +02:00
f66f8745c7 feat: add export diary functionality and update API routes 2026-05-09 20:59:30 +02:00
dcfc17f542 export feature 2026-05-09 20:51:29 +02:00
1eaa3ca8a6 Refactor test stubs and consolidate panic implementations
- Removed redundant panic repository implementations in `event_handlers.rs` and `extractors.rs`.
- Introduced a single `Panic` struct to serve as a stub for various repository and service traits.
- Simplified test state creation by using a factory function `make_test_state` to reduce code duplication.
- Updated tests to utilize the new panic implementation and streamlined router setup for better readability.
2026-05-09 20:07:44 +02:00
89e78a0d1f Refactor application context and repository structure
- Updated `AppContext` to include separate repositories for movies, reviews, diaries, and stats.
- Modified use cases to utilize the new repository structure, ensuring that the correct repositories are called for their respective operations.
- Introduced `DiaryRepository` and `StatsRepository` traits to encapsulate diary and statistics-related operations.
- Updated all relevant use cases, handlers, and tests to reflect the changes in repository usage.
- Ensured that panic repositories are updated to implement the new traits for testing purposes.
2026-05-09 18:58:29 +02:00
29a5972c01 refactor: remove unused actor_handler import from ActivityPubService 2026-05-09 18:42:57 +02:00
eb4d17885e refactor: standardize user ID route parameter in ActivityPubService 2026-05-09 18:37:55 +02:00
e1f84b6796 Implement local follow and unfollow functionality in ActivityPubService 2026-05-09 18:28:44 +02:00
2120044f1a Refactor ActivityPub integration and add SQLite federation support
- Removed event-publisher dependency from Cargo.lock and Cargo.toml.
- Introduced sqlite-federation crate with necessary dependencies and implementation.
- Updated activitypub crate to use new ActivityPubPort trait for better abstraction.
- Refactored event handling to utilize domain ports instead of direct dependencies.
- Adjusted presentation layer to accommodate new ActivityPub service structure.
- Removed unused test setup for ActivityPub service in favor of NoopActivityPubService.
- Cleaned up SQLite adapter to remove unnecessary dependencies and streamline functionality.
2026-05-09 18:21:16 +02:00
7a43eb4de6 activitypub: remove files moved to activitypub-base 2026-05-09 17:27:57 +02:00
8819266cf9 separation of activitypub 2026-05-09 17:23:06 +02:00
69f6587623 federation improvements 2026-05-09 15:45:08 +02:00