mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-07-14 18:15:56 -04:00
* feat: reorganize API around operation domains
Restructure the oRPC contract from 14 resource-oriented routers to 8
domain-oriented routers for a cleaner public API surface.
- Consolidate 7 watch procedures into unified tracking.watch/unwatch
with scope + ids input (movie, episode, season, series)
- Split dashboard across tracking (stats, history), library
(continueWatching, upcoming), and discover (recommendations)
- Merge explore + search + discover into single discover router
- Absorb integrations into account.integrations
- Merge system.authConfig into system.publicInfo
- Collapse 6 admin setting endpoints into admin.settings.get/update
- Deduplicate platforms.list + explore.watchProviders into
discover.platforms
- Add symmetric unwatchMovie/unwatchSeries core functions
- Rename titles.detail→get, titles.recommendations→similar,
people.detail→get
BREAKING CHANGE: All client API paths have changed. REST paths now
mirror router structure.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: address review feedback on API reorganization
- Fix updateRating invalidation in native app — was only invalidating
title queries, now calls invalidateTitleQueries() to also refresh
tracking.userInfo (drives the rating UI)
- Make unwatchMovie status revert consistent with unwatchSeries — revert
any non-watchlist status, not just "completed"
- Add sync invariant comment on handleWatch/handleUnwatch loops
- Remove unused queryClient import in native use-title-actions
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: updateStatus NOT_FOUND error + rate() invalidation in native
- updateStatus now throws NOT_FOUND when quickAddTitle returns null
(title doesn't exist), instead of silently succeeding
- Add NOT_FOUND error to updateStatus contract definition
- Fix rate() in native title-actions.ts to call invalidateTitleQueries()
instead of only invalidating orpc.titles.key() — mirrors the fix
already applied to the hook-based path in d2ddc0f
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs: expand mobile app docs and add Play Store badge
- Add the Google Play badge to the README alongside the App Store badge
- Expand the mobile app docs with the Android/Play Store release details
- Refresh docs site dependencies and related package versions for the updated docs stack
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
75 lines
2.3 KiB
JSON
75 lines
2.3 KiB
JSON
{
|
|
"name": "@sofa/web",
|
|
"version": "0.1.3",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite --host 0.0.0.0",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"lint": "oxlint",
|
|
"format": "oxfmt --config ../../.oxfmtrc.json",
|
|
"format:check": "oxfmt --check --config ../../.oxfmtrc.json",
|
|
"check-types": "tsc --noEmit",
|
|
"test": "vitest run"
|
|
},
|
|
"dependencies": {
|
|
"@base-ui/react": "1.3.0",
|
|
"@fontsource-variable/dm-sans": "5.2.8",
|
|
"@fontsource-variable/geist-mono": "5.2.7",
|
|
"@fontsource/dm-serif-display": "5.2.8",
|
|
"@lingui/core": "catalog:",
|
|
"@lingui/react": "catalog:",
|
|
"@orpc/client": "catalog:",
|
|
"@orpc/contract": "catalog:",
|
|
"@orpc/tanstack-query": "catalog:",
|
|
"@player.style/sutro": "0.2.1",
|
|
"@rolldown/plugin-babel": "0.2.2",
|
|
"@sofa/api": "workspace:*",
|
|
"@sofa/i18n": "workspace:*",
|
|
"@tabler/icons-react": "3.40.0",
|
|
"@tanstack/react-form": "catalog:",
|
|
"@tanstack/react-hotkeys": "0.8.1",
|
|
"@tanstack/react-query": "catalog:",
|
|
"@tanstack/react-router": "1.168.5",
|
|
"@tanstack/zod-adapter": "1.166.9",
|
|
"better-auth": "catalog:",
|
|
"class-variance-authority": "0.7.1",
|
|
"clsx": "2.1.1",
|
|
"cmdk": "1.1.1",
|
|
"jotai": "2.19.0",
|
|
"motion": "12.38.0",
|
|
"react": "catalog:",
|
|
"react-dom": "catalog:",
|
|
"shadcn": "4.1.0",
|
|
"sonner": "2.0.7",
|
|
"tailwind-merge": "catalog:",
|
|
"thumbhash": "catalog:",
|
|
"tw-animate-css": "1.4.0",
|
|
"youtube-video-element": "1.9.0"
|
|
},
|
|
"devDependencies": {
|
|
"@lingui/babel-plugin-lingui-macro": "catalog:",
|
|
"@lingui/vite-plugin": "catalog:",
|
|
"@sofa/tsconfig": "workspace:*",
|
|
"@tailwindcss/vite": "4.2.2",
|
|
"@tanstack/devtools-vite": "0.6.0",
|
|
"@tanstack/react-devtools": "0.10.0",
|
|
"@tanstack/react-query-devtools": "5.95.2",
|
|
"@tanstack/react-router-devtools": "1.166.11",
|
|
"@tanstack/router-plugin": "1.167.6",
|
|
"@types/bun": "catalog:",
|
|
"@types/node": "catalog:",
|
|
"@types/react": "catalog:",
|
|
"@types/react-dom": "19.2.3",
|
|
"@vitejs/plugin-react": "6.0.1",
|
|
"@vitest/browser": "catalog:",
|
|
"@vitest/browser-playwright": "catalog:",
|
|
"babel-plugin-react-compiler": "1.0.0",
|
|
"tailwindcss": "catalog:",
|
|
"typescript": "catalog:",
|
|
"vite": "8.0.3",
|
|
"vitest": "catalog:"
|
|
}
|
|
}
|