f10b114e83
feat: expose search param on user profile API endpoint
2026-06-11 12:37:20 +02:00
c020135cd1
feat: move diary export to settings page with CSV/JSON options
2026-06-11 12:36:03 +02:00
ad55897871
i18n: add export and profile search translations
2026-06-11 12:34:29 +02:00
87fcdc12ca
clean up
CI / Check / Test (push) Successful in 37m41s
2026-06-10 11:02:18 +02:00
d14199813f
perf: optimize compile times
...
CI / Check / Test (push) Successful in 37m59s
- Remove sqlx 'macros' feature — migrated to runtime queries in f4fd915 ,
proc-macro crates (sqlx-macros-core, sqlx-macros) were dead weight
- Add [profile.dev] debug=1 (line tables only) + split-debuginfo=unpacked
to speed up linking on macOS
- Add [profile.dev.package.'*'] opt-level=2 to compile deps faster at
runtime; one-time cost on first build, cached after that
2026-06-10 03:33:48 +02:00
f52219b2b7
docs: update architecture diagram — add domain services, Password VO
CI / Check / Test (push) Has been cancelled
2026-06-10 03:25:14 +02:00
6e21ec115d
fmt
CI / Check / Test (push) Has been cancelled
2026-06-10 03:24:17 +02:00
deae83cfd1
fix: Password uses char count not byte length, redact Debug output, tighten test assertion
CI / Check / Test (push) Failing after 49s
2026-06-10 03:23:23 +02:00
c4d6b68ef9
refactor: enforce password min-length via domain Password value object
CI / Check / Test (push) Failing after 49s
2026-06-10 03:15:43 +02:00
d8cff33679
refactor: move profile-field count validation into domain UserProfile
2026-06-10 03:13:19 +02:00
e9aa6131ae
refactor: extract wrapup analytics into domain::services::wrapup_analyzer
2026-06-10 03:10:44 +02:00
43f6c5679d
fmt
CI / Check / Test (push) Successful in 15m39s
2026-06-10 02:56:56 +02:00
956e51530e
refactor: move domain inline tests to separate files under tests/
...
CI / Check / Test (push) Failing after 44s
Match the application crate convention: each source file references its
tests via #[cfg(test)] #[path = "tests/filename.rs"] mod tests; with
the test code in a sibling tests/ directory.
- events.rs -> tests/events.rs
- value_objects.rs -> tests/value_objects.rs
- models/mod.rs -> models/tests/mod.rs (renamed from tests.rs)
- models/person.rs -> models/tests/person.rs
- models/goal.rs -> models/tests/goal.rs
- models/watch_event.rs -> models/tests/watch_event.rs
- services/review_history.rs -> services/tests/review_history.rs
2026-06-10 02:55:47 +02:00
b882569ee1
fix: use correct i18n key for comment placeholder in queue tab
CI / Check / Test (push) Has been cancelled
2026-06-10 02:47:04 +02:00
5dbc02b58f
fix: remove .sqlx copy from Dockerfile
...
CI / Check / Test (push) Has been cancelled
Queries were migrated to the runtime sqlx API (no query! macros) in
f4fd915 , making the pre-verified .sqlx cache obsolete. The directory
is also gitignored, so the COPY would break any fresh build.
2026-06-10 02:41:59 +02:00
d389e26e39
fix: broadcast goal progress on review log, fix goal handler security gaps
...
CI / Check / Test (push) Has been cancelled
- Broadcast GoalUpdated AP note after ReviewLogged so federated goal
progress reflects the new review count without requiring a manual goal edit
- Add attribution check in GoalObjectHandler::on_update (mirrors
review_handler) to prevent any remote actor from overwriting another's goal
- Implement on_actor_removed in GoalObjectHandler via new
RemoteGoalRepository::remove_all_by_actor — remote goals were never
cleaned up when an actor unfollowed or was deleted
- Add remove_all_by_actor to SQLite, Postgres, Noop, and test Panic impls
2026-06-10 02:40:25 +02:00
05d062f4e0
fmt
CI / Check / Test (push) Successful in 15m57s
2026-06-09 02:31:02 +02:00
70b3ca0f5c
refactor: split domain models, move presentation logic out of app layer
...
CI / Check / Test (push) Failing after 47s
Split domain/models/mod.rs (630 lines) into focused files:
movie.rs, review.rs, user.rs, stats.rs, enrichment.rs, feed.rs.
Move URL/date formatting from application use cases to
presentation mappers — use cases now return raw domain data.
Delete watchlist/get_page.rs (was pure presentation logic),
replace with presentation/mappers/watchlist.rs.
Document signature conventions in CONTRIBUTING.md.
2026-06-09 02:29:11 +02:00
ac03182aa6
docs: add ReviewLogger to architecture diagram
CI / Check / Test (push) Has been cancelled
2026-06-09 02:17:49 +02:00
6d3182525f
fmt
CI / Check / Test (push) Has been cancelled
2026-06-09 02:16:18 +02:00
7bcbc59587
fix: implement get_all_reviews_for_user, add crate metadata
...
CI / Check / Test (push) Failing after 43s
Replace todo!() stubs in sqlite/postgres adapters with
actual queries. Add description+license to presentation crate.
2026-06-09 02:12:35 +02:00
d867a14b28
add 400+ unit tests for domain and application layers
...
CI / Check / Test (push) Has been cancelled
Extract ReviewLogger trait to decouple import/integrations
from diary::log_review (cross-module coupling smell).
Add in-memory fakes for all repository ports, enabling
isolated testing of every use case module without a database.
Coverage: domain+application 22% → 80%, 427 tests.
2026-06-09 02:07:26 +02:00
30a6200b5b
remove wrapup video rendering (ffmpeg)
...
CI / Check / Test (push) Successful in 15m34s
SPA handles wrapup visuals client-side; server-side
renderer was dead code pulling in ffmpeg + image crates.
2026-06-09 00:36:44 +02:00
f4fd915e35
refactor: replace sqlx compile-time macros with runtime queries
...
CI / Check / Test (push) Failing after 44s
No longer requires DATABASE_URL at build time.
2026-06-09 00:19:02 +02:00
f3eee9131b
chore: remove stale .sqlx cache, add to gitignore
CI / Check / Test (push) Has been cancelled
2026-06-09 00:09:30 +02:00
9e4370b068
fix: register goal + settings endpoints in OpenAPI spec
CI / Check / Test (push) Has been cancelled
2026-06-09 00:07:29 +02:00
37ab24be74
docs: npm → bun
CI / Check / Test (push) Has been cancelled
2026-06-09 00:06:22 +02:00
307113381f
docs: add CONTRIBUTING.md with setup, architecture, PR guidelines
CI / Check / Test (push) Has been cancelled
2026-06-09 00:04:30 +02:00
6d238b6c3d
docs: mark TUI as deprecated experiment
CI / Check / Test (push) Has been cancelled
2026-06-09 00:02:20 +02:00
a7a11dde08
refactor: split monolithic handlers + testing into domain-grouped modules
...
CI / Check / Test (push) Has been cancelled
handlers/api.rs (1706 LOC) + html.rs (1735 LOC) → 12 domain files:
auth, diary, movies, users, search, watchlist, goals, social,
integrations, helpers + existing import/webhook/wrapup/images/rss.
domain/testing.rs (1309 LOC) → testing/ module:
in_memory, fakes, noops, panics, wrapup.
Update README + architecture.mmd with goals feature.
2026-06-08 23:59:23 +02:00
988e15eac6
fix: add missing common.edit i18n key
CI / Check / Test (push) Successful in 18m44s
2026-06-08 22:38:54 +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
213f9a2433
Remove backdrop filter from input slot in aero-theme.css for improved performance
CI / Check / Test (push) Successful in 17m46s
2026-06-08 21:05:16 +02:00
4dacbbfded
fix: update poster_url on remote review Update activity
...
CI / Check / Test (push) Successful in 21m35s
on_update was ignoring posterUrl from the AP note, so remote instances
never got the poster even after receiving the Update.
2026-06-04 23:21:19 +02:00
886f26c7dc
fix: broadcast AP Update after poster sync to fix missing posters on remote instances
...
CI / Check / Test (push) Has been cancelled
New movies had no poster at AP broadcast time (race between poster sync
and ReviewLogged handler). PosterSynced event now fires after sync
completes, triggering Update notes so remote apps get the poster URL.
2026-06-04 23:12:27 +02:00
6a10ba15c1
feat(spa): comment field in queue review, date picker in log sheet
CI / Check / Test (push) Successful in 17m20s
2026-06-04 22:35:30 +02:00
237f1e7d32
style: fmt persons test
CI / Check / Test (push) Successful in 16m49s
2026-06-04 17:59:05 +02:00
c647f4c13b
fix: clippy 1.96 lints — map_or, duplicate_mod, needless_borrows, slice_refs
CI / Check / Test (push) Failing after 44s
2026-06-04 17:58:01 +02:00
3bb2dbee19
ci: split workflows — Gitea tests only, GitHub tests + Docker push
CI / Check / Test (push) Failing after 6m24s
2026-06-04 17:48:37 +02:00
b0bfc149e1
ci: build + push Docker image to ghcr.io on master/tags
CI / Build & Push Docker Image (push) Has been cancelled
CI / Check / Test (push) Has been cancelled
2026-06-04 17:47:04 +02:00
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
4bd8dcbf05
feat: wrapup wow — animated counters, scroll-reveal, fun facts, component split, budget formatting
CI / Check / Test (push) Failing after 6m25s
2026-06-04 17:15:35 +02:00
ebf9a9f4a8
feat: replace CSS bar charts with recharts, fix label readability
CI / Check / Test (push) Failing after 6m20s
2026-06-04 17:04:29 +02:00
a76386345f
feat: SPA polish — wrapup sections, shareable card, webhook instructions, blocked merge
CI / Check / Test (push) Failing after 6m35s
2026-06-04 16:56:09 +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
81a377cbb2
docs: proper SPA readme
CI / Check / Test (push) Failing after 6m21s
2026-06-04 15:58:03 +02:00
689c8a9ac3
docs: add hexagonal architecture mermaid diagram
CI / Check / Test (push) Has been cancelled
2026-06-04 15:52:38 +02:00
5e6bc93a6a
feat: SPA quick wins — refresh, back nav, watchlist add, dates, haptics, export
...
CI / Check / Test (push) Failing after 7m1s
- feed refresh button with spinning icon
- BackButton component using history.back()
- watchlist bookmark icon on search results
- timeAgo/shortDate date formatting (date-fns)
- haptic feedback on star rating, swipe-to-delete, review log
- global error toasts via QueryClient mutation defaults
- diary CSV export button
2026-06-04 15:45:31 +02:00
4a3a99c6d2
fix: disable vaul repositionInputs to fix iOS keyboard in drawers
CI / Check / Test (push) Failing after 6m35s
2026-06-04 15:35:00 +02:00