d694df4d8a
spoiler veil for author too; veil history comments
CI / Check / Test (push) Has been cancelled
CI / Check / Test (pull_request) Has been cancelled
2026-10-25 19:50:11 +01:00
bb2001b9cc
Add Spoiler Flag with veil, AP content-warning encoding, and full-stack plumbing
...
Authors can flag a review's comment as containing spoilers; the comment is
blurred behind a reveal control for every viewer except the author, omitted
from RSS, and federates as containsSpoilers plus an AP summary content
warning (ADR-0011) so Mastodon-class clients also collapse it. Flag follows
the general-edit path (ADR-0001) across domain, both DB backends, REST,
HTML templates, SPA (shadcn), TUI fixtures, and exports.
2026-10-17 21:12:56 +02:00
fff5f4af2f
feat: goals — "watch N movies in YEAR" with progress bar
...
Domain: Goal entity, UserSettings (federation toggle), RemoteGoalEntry.
Ports: GoalRepository, UserSettingsRepository, RemoteGoalRepository.
Adapters: sqlite + postgres repos, migrations, AP content query extensions.
Application: CRUD use cases (create/update/delete/get/list), settings use cases.
API: 7 endpoints (/goals CRUD, /users/{id}/goals, /settings) with utoipa docs.
Federation: GoalObject (Note + goal discriminator), outbound broadcast with
per-user toggle, inbound GoalObjectHandler in CompositeObjectHandler.
SPA: API client + hooks, GoalCard (shadcn Card+Progress+DropdownMenu),
GoalSheet (Drawer), profile integration (editable own, read-only others),
federation toggle in settings (Switch).
Classic HTML: glassmorphic goal card on profile, Frutiger Aero styling.
Progress computed from existing reviews — backwards compatible.
2026-06-08 22:37:52 +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
25cd6c9294
fix: handle absolute poster URLs from federated instances in templates
2026-05-13 23:32:08 +02:00
53df90ab1f
feat: MovieDto enrichment, movie detail page, PWA, watchlist, watchlist federation
2026-05-13 00:23:45 +02:00
8cd90624bb
feat: move Settings/Blocked/Admin links to profile page own-account section
2026-05-12 01:14:43 +02:00
b2a2aa4262
movie detail page + importer architecture fix
2026-05-10 23:59:26 +02:00
66f9ef887e
feat: ux improvements
2026-05-10 00:41:43 +02:00
d89d373a91
feat: implement CSRF protection across forms and routes
2026-05-09 22:09:19 +02:00
dcfc17f542
export feature
2026-05-09 20:51:29 +02:00
69f6587623
federation improvements
2026-05-09 15:45:08 +02:00
470b29c9e1
federation refinement
2026-05-09 13:53:45 +02:00
df71748897
activity-pub implementation
2026-05-08 21:26:50 +02:00
06b3761401
fix: windowed pagination — show 1…current±2…last instead of all pages
2026-05-08 13:47:34 +02:00
a282539151
fix: profile delete redirect and open redirect via //
2026-05-08 13:33:59 +02:00
e335b6ea9b
feat: add page-number navigation to paginated views
2026-05-08 13:20:06 +02:00
8919c36ef6
feat: preserve pagination offset after review delete
2026-05-08 13:15:47 +02:00
2934a3c3fd
fix: use pixel bar heights and show avg rating values in trends chart
2026-05-04 21:22:47 +02:00
6565ec6e66
fix: derive heatmap color from primary instead of hardcoded blue
2026-05-04 20:38:13 +02:00
6bd1ce8c4a
fix: pagination underflow, remove |safe, move bar_height_pct to adapter
2026-05-04 19:09:28 +02:00
89dd2f3a47
feat: add activity feed, users, and profile HTML templates
2026-05-04 19:03:44 +02:00