Commit Graph

31 Commits

Author SHA1 Message Date
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
Some checks failed
CI / Check / Test (push) Has been cancelled
2026-06-10 02:47:04 +02:00
988e15eac6 fix: add missing common.edit i18n key
All checks were successful
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
All checks were successful
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
All checks were successful
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
Some checks failed
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
Some checks failed
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
Some checks failed
CI / Check / Test (push) Failing after 6m35s
2026-06-04 16:56:09 +02:00
5e6bc93a6a feat: SPA quick wins — refresh, back nav, watchlist add, dates, haptics, export
Some checks failed
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
Some checks failed
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
Some checks failed
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()
Some checks failed
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
Some checks failed
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