7e8a1b8379
feat: batteries-included deployment — compose, .env.example, sane defaults
CI / Check / Test (push) Failing after 6m21s
2026-06-04 17:32:34 +02:00
49728f8cd7
fix: fall back to converted extensions in object storage get
CI / Check / Test (push) Failing after 6m36s
2026-06-04 16:22:57 +02:00
5334312d64
refactor: extract reindex + enrichment logic from handlers into use cases
CI / Check / Test (push) Failing after 6m45s
2026-06-04 16:09:35 +02:00
dacc057af6
fix: lazy-load wrapup backgrounds, cap sqlite pool to 4 connections
...
CI / Check / Test (push) Failing after 6m32s
backgrounds were decoded to RGBA at startup (~173MB for 9 images).
now only store paths, decode on demand during video generation.
2026-06-04 14:57:47 +02:00
bd7dc648c4
feat: search reindex, worker improvements, person IDs, user display names
...
- add admin POST /api/v1/admin/reindex-search endpoint + event-driven handler
- backfill persons from movie_cast/movie_crew into persons table
- paginate person list_page/backfill_from_credits_batch to cap memory
- concurrent worker event dispatch with semaphore (max 8)
- graceful worker shutdown (drain in-flight tasks on SIGINT)
- always ack events, log handler errors as warnings (no infinite retry)
- NATS ack_wait 600s, AtomicBool guard against concurrent reindex
- add username/display_name to UserSummaryDto and users list
- add person_id to CastMemberDto/CrewMemberDto via get_movie_profile use case
- add movie_id to wrapup MovieRef, person_id to wrapup PersonStat
- thread tmdb_person_id through wrapup cast pipeline
- add is_federated to FeedEntryDto
- cap orphaned persons query with LIMIT 500
- add SPA link to classic site footer
2026-06-04 14:43:28 +02:00
4206bb4b06
fix: diary sort_by rating_desc/rating_asc in all/movie queries
2026-06-04 01:28:35 +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
c18d4eebc1
fix: use array instead of vec for clippy
2026-06-03 10:14:20 +02:00
3f6e01ed65
feat: add embed snippet to profile settings
2026-06-03 10:09:38 +02:00
fad73a9fab
feat: add embed_profile.html template
2026-06-03 10:07:45 +02:00
627db45a56
feat: add embed_base.html template shell
2026-06-03 10:07:43 +02:00
976d872eed
feat: add EmbedProfileTemplate struct
2026-06-03 10:07:41 +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
3cec726e3d
refactor: move VideoRenderConfig from domain to adapter, inject at construction
CI / Check / Test (push) Failing after 44s
2026-06-03 01:18:52 +02:00
e8e83d3f16
assets + fmt
CI / Check / Test (push) Has been cancelled
2026-06-03 01:13:06 +02:00
e378191045
fix: clippy — collapse nested if in cast photo store
CI / Check / Test (push) Has been cancelled
2026-06-03 01:12:07 +02:00
bca07b7824
fix: clippy — collapse nested ifs, use div_ceil
CI / Check / Test (push) Failing after 41s
2026-06-03 01:11:17 +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
83103e5eb5
feat: redesign wrapup HTML with glass cards, ranked lists, better layout
CI / Check / Test (push) Failing after 42s
2026-06-03 01:00:50 +02:00
fc086de7f7
refactor: move DateRange validation to value object, add delete/cleanup
CI / Check / Test (push) Failing after 40s
2026-06-03 00:58:07 +02:00
3a66f89609
fix: reverse rating bar order to 5★→1★ in video slides
CI / Check / Test (push) Failing after 42s
2026-06-03 00:55:43 +02:00
45d6183ea4
fix: reverse rating bar order to 5★→1★
CI / Check / Test (push) Failing after 41s
2026-06-03 00:54:59 +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
3f483f8f81
fix: alpha-blend glass panels instead of opaque overwrite
CI / Check / Test (push) Failing after 41s
2026-06-03 00:46:09 +02:00
c842ad6a55
feat: download top-5 cast photos during TMDb enrichment
CI / Check / Test (push) Failing after 41s
2026-06-03 00:42:25 +02:00
a5cf62e281
fix: cover-fill backgrounds, bigger highlight posters
CI / Check / Test (push) Failing after 42s
2026-06-03 00:40:35 +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
e57ddd78ac
feat: frutiger aero visual overhaul for wrapup video slides
2026-06-03 00:32:39 +02:00
0d02f23f4f
fix: decode AVIF posters via ffmpeg fallback for mosaic slide
CI / Check / Test (push) Failing after 41s
2026-06-03 00:23:39 +02:00
86639853d2
fix: render genres via SlideRenderer, enable AVIF decoding, add poster fetch logging
CI / Check / Test (push) Failing after 42s
2026-06-03 00:19:18 +02:00
7155bea78e
fix: disable plotters axis labels to avoid system font lookup
CI / Check / Test (push) Failing after 43s
2026-06-03 00:10:56 +02:00
8429d13db0
fix: enable ab_glyph font backend for plotters
CI / Check / Test (push) Failing after 42s
2026-06-03 00:09:10 +02:00
bf0350c87a
fmt
CI / Check / Test (push) Failing after 6m39s
2026-06-02 23:50:20 +02:00
9e13f04e9c
fix: clippy warnings in wrapup compute + renderer
CI / Check / Test (push) Has been cancelled
2026-06-02 23:49:39 +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
efd1214a4c
feat: font rendering + logo branding on wrapup slides
CI / Check / Test (push) Failing after 43s
2026-06-02 23:16:55 +02:00
d45d8aa913
feat: video renderer adapter w/ slides + charts + ffmpeg
2026-06-02 22:31:45 +02:00
f00a2cbbb8
feat: HTML wrap-up page with Askama template
2026-06-02 22:28:28 +02:00
ac05cdfeaf
fix: add WrapUp events to NATS subject mapping
2026-06-02 22:09:57 +02:00
59b42ce810
feat: add WrapUpRequested/Completed domain events
2026-06-02 22:06:06 +02:00
5a6abdcc23
feat(adapters): WrapUpStatsQuery + WrapUpRepository for postgres/sqlite
2026-06-02 22:04:46 +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
6bd728fd50
feat: replace instance actor decorator with real DB row
...
CI / Check / Test (push) Failing after 52s
Migrations (postgres + sqlite) insert a service actor with a well-known
UUID. Removes the InstanceActorUserRepo wrapper.
2026-05-30 03:16:03 +02:00
1b9a6617f3
feat: add instance actor for signed fetch (Secure Mode support)
CI / Check / Test (push) Has been cancelled
2026-05-30 03:11:16 +02:00