c4908b7765
feat: API endpoints for any user's following/followers
2026-06-04 02:34:01 +02:00
dbc78a1ff4
feat: add user_id to FeedEntryDto
2026-06-04 02:22:08 +02:00
b1d667d3cb
fix: user profile returns social counts when viewing own profile
2026-06-04 02:18:28 +02:00
bf73d4a695
feat: CORS, role in auth, banner_url, diary sort, cleanup
...
- CORS layer on API routes via CORS_ORIGINS env var
- role field in login + profile responses
- banner_url in profile response
- diary sort_by: rating_desc/rating_asc/date_asc/date_desc
- UserRole::as_str() to deduplicate role mapping
- typed DTOs for import preview (replace ad-hoc JSON)
- warn on invalid CORS origins
2026-06-04 02:06:51 +02:00
7b9b0f9ffe
feat: API preview endpoint for import sessions
2026-06-04 01:59:09 +02:00
7d6f874ae7
feat: activity feed accepts sort_by param
2026-06-04 01:35:45 +02:00
004243dcbb
fix: use embed=true for serde bool compat
CI / Check / Test (push) Failing after 6m35s
2026-06-03 10:17:43 +02:00
c798b851dc
fmt
CI / Check / Test (push) Has been cancelled
2026-06-03 10:14:53 +02:00
3f6e01ed65
feat: add embed snippet to profile settings
2026-06-03 10:09:38 +02:00
19642175eb
feat: wire embed param to EmbedProfileTemplate
2026-06-03 10:08:51 +02:00
6c7ce24e1f
feat: add embed param to ProfileQueryParams
2026-06-03 10:07:39 +02:00
6668ba511c
fmt
CI / Check / Test (push) Failing after 6m32s
2026-06-03 01:38:25 +02:00
430fbb21ea
refactor: rename image-storage crate to object-storage
CI / Check / Test (push) Failing after 44s
2026-06-03 01:37:14 +02:00
f262417971
refactor: rename ImageStorage → ObjectStorage
CI / Check / Test (push) Failing after 46s
2026-06-03 01:33:08 +02:00
d94ccbe057
refactor: store typed WrapUpReport in domain, serialize in adapters
CI / Check / Test (push) Failing after 45s
2026-06-03 01:25:16 +02:00
e8e83d3f16
assets + fmt
CI / Check / Test (push) Has been cancelled
2026-06-03 01:13:06 +02:00
8cabc6af70
fix: clippy — redundant closure in AdminApiUser
CI / Check / Test (push) Has been cancelled
2026-06-03 01:12:36 +02:00
857896f057
feat: add video download link to wrapup HTML page
CI / Check / Test (push) Failing after 41s
2026-06-03 01:06:11 +02:00
241063c914
feat: wrapup date validation, delete endpoint, failed record cleanup
CI / Check / Test (push) Failing after 41s
2026-06-03 00:54:08 +02:00
d52120d6a9
feat: frutiger aero visual overhaul — backgrounds, glass panels, cast photos, full mosaic
CI / Check / Test (push) Failing after 42s
2026-06-03 00:34:13 +02:00
bb503f3ce8
feat: AdminApiUser extractor for Bearer-token admin endpoints
CI / Check / Test (push) Has been cancelled
2026-06-03 00:00:45 +02:00
bf0350c87a
fmt
CI / Check / Test (push) Failing after 6m39s
2026-06-02 23:50:20 +02:00
1e063b6580
feat: streaming video download via ImageStorage::get_stream
CI / Check / Test (push) Failing after 41s
2026-06-02 23:45:31 +02:00
21c33b169e
feat: gate wrapup generate behind admin role
2026-06-02 23:14:06 +02:00
490bd97a40
feat: wire video renderer pipeline + download endpoint
CI / Check / Test (push) Failing after 41s
2026-06-02 22:34:55 +02:00
f00a2cbbb8
feat: HTML wrap-up page with Askama template
2026-06-02 22:28:28 +02:00
ea43911984
feat: wire real wrapup adapters into presentation + worker
2026-06-02 22:19:29 +02:00
5a15bea3d4
feat: wrap-up REST API endpoints
2026-06-02 22:17:11 +02:00
5e740ba2a1
fix: add async_trait + exhaustive match for wrapup events in tests
2026-06-02 22:14:50 +02:00
b171d2d1e2
feat(application): wrapup generate/get/list use cases
2026-06-02 22:09:08 +02:00
4c75113c4f
chore: wire WrapUpStatsQuery panic stub into binaries
CI / Check / Test (push) Failing after 44s
2026-06-02 21:49:54 +02:00
c878c0358f
fix: add 403 response to confirm/dismiss OpenAPI annotations
CI / Check / Test (push) Failing after 6m22s
2026-06-02 21:06:22 +02:00
4067dedb28
refactor: add DomainError::Forbidden + centralize error-to-HTTP mapping
...
Ownership checks (delete_review, confirm/dismiss watch events) now
return Forbidden instead of Unauthorized. Presentation layer maps
DomainError→StatusCode via domain_error_response helper, replacing
verbose per-handler match arms.
2026-06-02 21:00:22 +02:00
28170c95d4
chore: fmt + remove dead federation module
CI / Check / Test (push) Failing after 5m58s
2026-06-02 20:44:08 +02:00
62fd6682c6
refactor: extract view-model mappers from presentation handlers
...
CI / Check / Test (push) Has been cancelled
Move mapping logic (domain→DTO/template structs) into mappers/ module.
Handlers now call mapper fns instead of inline conversions.
2026-06-02 20:43:33 +02:00
b9210b6c4e
fix: batch N+1 queries in import duplicate check and watch event dismiss
...
CI / Check / Test (push) Failing after 5m54s
apply_mapping: 2 batch queries instead of up to 2N per-row lookups
dismiss: single fetch + single update instead of 2N per-event queries
2026-06-02 20:05:15 +02:00
ac7edd6953
WIP: federation + integrations
CI / Check / Test (push) Failing after 5m56s
2026-06-02 19:50:19 +02:00
dcc9244d4e
refactor: group use cases into DDD bounded contexts
...
Flat use_cases/ (44 files) + monolithic commands.rs/queries.rs
split into diary/, movies/, watchlist/, import/, auth/, users/,
integrations/, search/, person/, federation/ — each with own
commands.rs, queries.rs, and use case modules.
Inline tests extracted to sibling tests/ dirs.
2026-06-02 19:49:09 +02:00
aadad3cfb0
feat: Jellyfin/Plex auto-import via watch queue
...
CI / Check / Test (push) Failing after 6m5s
Webhook ingestion from media servers — movies land in a pending
watch queue, user rates and confirms to create diary entries.
- domain: WatchEvent, WebhookToken models, MediaServerParser port
- adapters: jellyfin + plex parser crates, SQLite + Postgres repos
- application: ingest/confirm/dismiss/cleanup use cases, token mgmt
- presentation: webhook endpoints (bearer + query param auth),
watch queue + integrations settings HTML pages, OpenAPI docs
- worker: WatchEventCleanupJob (daily, 30d retention)
Movie resolution deferred to confirm — single canonical path
through log_review for enrichment, poster fetch, federation.
2026-06-02 17:34:16 +02:00
84ddf04d28
harden federation: sanitize incoming AP content, fix error handling, tighten rate limits
CI / Check / Test (push) Successful in 10m54s
CI / Release build (push) Failing after 1m20s
2026-05-29 12:23:29 +02:00
c3b89f6dc6
refactor: extract business logic from handlers to application layer
...
CI / Check / Test (push) Has been cancelled
CI / Release build (push) Has been cancelled
Move domain logic out of 7 handlers into use cases:
- activity feed: FollowingFilter construction
- user profile: social counts + pending followers
- users list: parallel local+remote actor loading
- watchlist page: local-vs-remote branching
- sync_poster: movie lookup + validation
- get_profile: avatar URL construction
- post_register: register+login orchestration
Add SocialQueryPort.{count_following,count_accepted_followers,
get_pending_followers} to AppContext behind federation feature gate.
2026-05-29 11:41:16 +02:00
2355f89bed
refactor: fix all clippy warnings properly
...
- UserProfile struct groups display_name/bio/avatar/banner/also_known_as/profile_fields
- User::from_persistence takes UserProfile (6 args, was 11)
- PersistedReview struct for Review::from_persistence (1 arg, was 8)
- WatchlistApInput struct for watchlist_to_ap_object (1 arg, was 8)
- ActivityPubDeps struct for activitypub::wire (1 arg, was 11)
- FederationRepos type alias for wire() return types
- FeedSortBy: impl std::str::FromStr instead of inherent from_str
- postgres users.rs: row_to_user takes &PgRow like sqlite
- collapse nested ifs in multipart handlers
- type alias for complex return types (image-converter, worker)
- tui: allow large_enum_variant at crate level (pre-existing, unrelated)
2026-05-29 11:19:02 +02:00
68a939f6c4
Refactor code for improved readability and consistency
...
- Simplified error handling in `PostgresApContentQuery` and `SqliteApContentQuery` by aligning the formatting of `try_get` calls.
- Removed unnecessary line breaks and improved formatting in various repository implementations for better readability.
- Consolidated imports in `lib.rs` and `factory.rs` to maintain a cleaner structure.
- Enhanced consistency in async function signatures across multiple files.
- Updated test helpers and use cases to streamline code and improve clarity.
- Refactored `InMemory` repositories to enhance readability by aligning method implementations.
2026-05-29 10:58:44 +02:00
624cfe5799
feat: migrate k-ap 0.1.10→0.3.1, fix AP gaps
...
- split FederationRepository into FollowRepository, ActorRepository, BlocklistRepository, ActivityRepository
- RemoteActor: 5 new fields (bio, banner_url, followers_url, following_url, also_known_as)
- ApObjectHandler split: get_local_objects_page/count_local_posts → ApContentReader trait
- builder API: positional args → named setters
- broadcast_create_note/update_note: add ApVisibility + mentioned_inboxes params
- backfill_outbox → import_remote_outbox
- ApUser: also_known_as Option<String> → Vec<String>, new fields
AP gaps fixed:
- add GET /users/{id}/followers + /following with content negotiation
- wire EventPublisher into builder via FederationEventBridge adapter
- add display_name field full stack (domain→DB→API→AP)
- DB-side outbox pagination (get_local_reviews_page)
- set featured_url on ApUser
2026-05-29 10:42:53 +02:00
4ebd593293
feat: add OpenAPI doc for update_profile_fields endpoint
...
CI / Check / Test (push) Failing after 43s
CI / Release build (push) Has been skipped
Add ProfileFieldDto and UpdateProfileFieldsRequest to api-types,
annotate update_profile_fields_handler with utoipa::path, register
in UsersDoc. Coverage now 100%.
2026-05-28 04:03:41 +02:00
51bd580a04
watchlist backfill
CI / Check / Test (push) Failing after 57s
CI / Release build (push) Has been skipped
2026-05-28 03:52:38 +02:00
edc1f6c850
feat: domain mocks, TestContextBuilder, use case tests, factory pattern
...
- Add test-helpers feature to domain crate with in-memory mocks and panic stubs for all ports
- Add TestContextBuilder to application crate for zero-database test setup
- Add unit tests for log_review, register, login, add_to_watchlist, delete_review use cases
- Extract DatabaseAdapters factory and build_* helpers into presentation/src/factory.rs
- Refactor wire_dependencies() in main.rs to use factory module
2026-05-14 00:41:25 +02:00
19171806b9
fmt
CI / Check / Test / Build (push) Has been cancelled
2026-05-13 23:38:57 +02:00
c420826474
fix: update tests for expanded User profile signature
2026-05-13 23:27:36 +02:00
fdd61ae701
feat: refactor user profile handling and integrate ApProfileField structure
2026-05-13 22:59:38 +02:00