4683a408d7
fix(spa): use import type for UpdateUserSettingsRequest
CI / Check / Test (push) Successful in 38m33s
2026-06-12 02:29:50 +02:00
ca7ca51949
feat: per-entity federation privacy toggles for reviews and watchlist
...
- add federate_reviews + federate_watchlist to UserSettings (default true)
- new UserFederationSettingsQuery port with FederationFlags struct
- remove get_user_federate_goals from LocalApContentQuery
- gate ReviewLogged, ReviewUpdated, WatchlistEntryAdded, on_poster_synced on flags
- goals gating migrated to UserFederationSettingsQuery
- ReviewDeleted and WatchlistEntryRemoved ungated (tombstones always fire)
- sqlite + postgres migrations and adapter impls
- settings API and SPA toggles
2026-06-12 02:26:01 +02:00
96c753c2c6
spa: silent refresh on 401, persistent login
2026-06-11 14:39:10 +02:00
db285b513b
fix: swap import/export icons
2026-06-11 14:13:51 +02:00
2617c77b42
feat: add arrow navigation to horizontal scroll strips
2026-06-11 14:12:42 +02:00
e618e1aa84
feat: horizontal poster strip for person filmography
2026-06-11 14:10:20 +02:00
7dc372a7b6
feat: redesign person page with Cards, SwipeTabs, collapsible bio
2026-06-11 14:07:27 +02:00
e39fcf6802
feat: show person age calculated from birthday
2026-06-11 14:04:52 +02:00
8cb90b256c
fix: guard also_known_as access when undefined
2026-06-11 13:52:44 +02:00
b2a41db290
feat: rich person detail page with bio, dates, links
2026-06-11 13:42:04 +02:00
549923b92e
feat: show relative watched date and comment preview in profile entries
2026-06-11 13:03:49 +02:00
3cbb406ea7
feat: add export route to settings in route tree
2026-06-11 13:01:12 +02:00
21cc6ed437
fix: move useDocumentTitle before early returns (Rules of Hooks)
2026-06-11 12:59:13 +02:00
5dc90724d3
feat: JSON import + mapping presets in SPA
...
- Accept .json files in import upload, send format to backend
- Backend endpoint PUT /import/sessions/{id}/profile/{profile_id}
- Load saved presets on mapping step, auto-apply and skip to preview
- Save current mapping as preset on confirm step
- Delete presets from mapping step
2026-06-11 12:58:08 +02:00
9a894c3a95
refactor: move export to its own settings page under Data group
2026-06-11 12:46:46 +02:00
acc20d2f43
feat: dynamic page titles across SPA
...
useDocumentTitle hook sets document.title per page.
Dynamic: movie name, person name, username, wrapup year.
Static: diary, profile, search, social, all settings pages.
2026-06-11 12:45:01 +02:00
a95be0b131
feat: add search input on user profile pages
2026-06-11 12:39:14 +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
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
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
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
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
81a377cbb2
docs: proper SPA readme
CI / Check / Test (push) Failing after 6m21s
2026-06-04 15:58:03 +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
01c1082290
feat: SPA bug fixes, interactivity, federation badges, admin reindex
...
CI / Check / Test (push) Failing after 10m55s
- fix wrapup status "completed" → "Ready"
- fix unfollow sending {handle} instead of {actor_url}
- fix missing post import in users.ts
- fix feed/activity cache not invalidated on review delete/log
- add person_id to cast/crew types, link to /people pages
- add movie_id to wrapup MovieRef, link highlights to /movies pages
- add wrapup actor profile images + clickable person links
- add federated review globe badge in feed and movie detail
- add fediverse handle (@user@instance) in follower/following cards
- add admin reindex search button in settings
- add wrapup user picker for admins
- add username/display_name to user summary type
- use tmdbProfileUrl for person search results
2026-06-04 14:43:41 +02:00
af8e58aeb8
fix: use avatar/banner URLs directly, not through posterUrl()
CI / Check / Test (push) Failing after 11m13s
2026-06-04 04:30:38 +02:00
092e769641
fix: 401 redirect uses /app/login instead of /login
CI / Check / Test (push) Has been cancelled
2026-06-04 04:22:20 +02:00
b9c0b10740
feat: add SPA, serve at /app/, update Dockerfile and README
...
- React + TanStack Router + shadcn/ui SPA under spa/
- serve spa/dist at /app/ with index.html fallback for client routing
- Dockerfile: node build stage for SPA, copy dist into runtime image
- README: document SPA, CORS_ORIGINS env var, architecture entry
- vite base set to /app/, manifest.json paths fixed
2026-06-04 04:20:15 +02:00