Commit Graph

  • 6c193a9271 feat(core): add pagination to explore, search, person, and library endpoints jake 2026-03-15 17:37:39 -04:00
  • d0eca7cf32 feat(core): use TMDB combined credits for full person filmography jakeandClaude Opus 4.6 2026-03-15 16:13:43 -04:00
  • 4ce285f721 feat(docs): use parameterized OpenAPI server URL jake 2026-03-15 14:40:33 -04:00
  • d885fc524b refactor(native): extract NativeTabBar component and add Android-specific tab bar implementation jake 2026-03-15 13:25:02 -04:00
  • a2862e5948 feat(config): update turbo.json to include UI setting and modify web package.json dev script to allow external access jake 2026-03-15 12:16:39 -04:00
  • c201006ca2 test(core): replace image-cache module mocks with globalThis.fetch spies jake 2026-03-15 11:38:35 -04:00
  • d060177c67 refactor(web): consolidate change password into account section dialog jake 2026-03-15 11:32:18 -04:00
  • fe81a541b4 refactor(docs): split grouped API reference pages into per-procedure MDX files jake 2026-03-15 11:02:58 -04:00
  • 297eb6b550 feat(admin): add cache purge controls to settings jake 2026-03-15 10:37:35 -04:00
  • 33fd871114 feat(server): serve normalized OpenAPI spec at /api/v1/spec.json with shared schema components jake 2026-03-14 20:05:44 -04:00
  • aede4fc90a feat: generate and display thumbhash blur placeholders for TMDB images jake 2026-03-14 18:58:09 -04:00
  • 76648a6023 refactor(native): replace FlatList with FlashList for search and person screens jake 2026-03-14 14:36:37 -04:00
  • 9b29da21bf feat(native): gracefully handle unreachable servers on app startup jakeandClaude Opus 4.6 2026-03-14 13:52:38 -04:00
  • c6cd061175 refactor(native): list optimizations and cleanup jake 2026-03-14 13:46:12 -04:00
  • 3148574d5b feat(docs): add OpenAPI API reference from oRPC contract jakeandClaude Opus 4.6 2026-03-14 13:07:42 -04:00
  • 17ddffef41 docs: replace GitHub-hosted screenshot with local image in README jake 2026-03-14 11:08:46 -04:00
  • 5acc33e3bf chore: exclude docs app from Docker build context jake 2026-03-14 11:01:28 -04:00
  • 7c3f39f2f0 feat(docs): replace default Fumadocs OG image with custom branded template jake 2026-03-14 10:55:11 -04:00
  • b25e395909 feat(docs): add Vercel Analytics to docs app jake 2026-03-14 10:44:19 -04:00
  • 07dc3923c4 feat: add docs app with Fumadocs jake 2026-03-14 10:39:37 -04:00
  • 98c1143540 refactor(native): scope MMKV storage per server instance and user jake 2026-03-14 09:24:51 -04:00
  • 9278ea6e73 feat: add opt-in anonymous telemetry reporting jake 2026-03-13 21:14:56 -04:00
  • b7bacb352f feat: add change password to web and mobile settings jakeandClaude Opus 4.6 2026-03-13 20:43:34 -04:00
  • 1798107afc feat: add public-api app and route update checks through it jake 2026-03-13 19:53:51 -04:00
  • e7ffceb278 refactor(native): replace custom toast implementation with burnt jake 2026-03-13 19:09:48 -04:00
  • b4c2a1d343 feat(native): add recently viewed history to search screen jake 2026-03-13 19:08:13 -04:00
  • 35bdfc171e refactor(native): replace runOnJS with scheduleOnRN and custom timeAgo with date-fns jake 2026-03-13 18:11:05 -04:00
  • baf203516a refactor(native): align title action buttons with web app design jakeandClaude Opus 4.6 2026-03-13 17:55:01 -04:00
  • c037a64028 feat(native): add HeroBanner and OfflineBanner components with haptic feedback jake 2026-03-13 17:43:46 -04:00
  • d63fb7bac2 refactor(native): move liquid glass effect from backdrop to play button jake 2026-03-13 16:30:54 -04:00
  • b6eb53e9b8 fix(deps): mismatched/multiple react versions jake 2026-03-13 16:28:13 -04:00
  • c021b8157b chore: bump deps jake 2026-03-13 15:55:25 -04:00
  • 893f4c1b76 refactor(native): remove refresh control from TitleDetailScreen jake 2026-03-13 15:51:36 -04:00
  • c3e2d7def6 feat(native): sync Stack header title with active tab selection jake 2026-03-13 15:29:56 -04:00
  • 985030ad26 feat(native): introduce title-accent CSS variable for per-title color theming jake 2026-03-13 15:20:43 -04:00
  • 7b941a8739 refactor(native): enhance title detail screen gradient and remove ambient glow effect jake 2026-03-13 15:13:32 -04:00
  • 781f843372 Limit Docker build workflow to relevant path changes (#12) jakeandGitHub 2026-03-13 12:40:06 -04:00
  • 912b2766ff feat(native): use App Tracking Transparency to gate PostHog analytics (#10) jakeandGitHub 2026-03-13 12:30:38 -04:00
  • 6252ace4c0 Delete .github/workflows/eas-update.yml jakeandGitHub 2026-03-13 12:30:24 -04:00
  • c5d12482e2 feat(native): port title page color tinting from web to mobile (#11) jakeandGitHub 2026-03-13 11:19:24 -04:00
  • 3a57de2ed6 Improve server URL input UX on native app launch (#9) jakeandGitHub 2026-03-13 10:32:38 -04:00
  • 83839a0cd7 Add @sofa/native Expo React Native app (#7) jakeandGitHub 2026-03-12 19:39:54 -04:00
  • a326c968b7 Migrate web app from Next.js to Vite + TanStack Router SPA (#6) 2026-03-10 16:50:34 -04:00
  • 26558b29e4 Migrate from server actions & REST APIs to oRPC for type-safe RPC (#5) 2026-03-10 10:26:26 -04:00
  • dfda2da827 Fix updateTag errors when called from cron jobs and detached promises jakeandClaude Opus 4.6 2026-03-08 19:29:18 -04:00
  • aba84c6979 Update README.md jakeandGitHub 2026-03-08 19:27:46 -04:00
  • e19f29a90f Remove auth redirect logic from proxy middleware jake 2026-03-08 19:17:52 -04:00
  • 271069cc0c Replace server actions with API routes and add SWR data-fetching hooks - Convert discover, stats, status, and system-health server actions to proper API route handlers under app/api/; delete lib/actions/explore.ts, lib/actions/settings.ts, and lib/actions/setup.ts - Add use-discover, use-stats, and use-system-health SWR hooks that call the new routes; update command-palette, title-card, update-toast, and stats-display to consume them - Lift auth centering wrapper from individual login/register pages into (auth)/layout.tsx; switch both pages from auth.api.getSession to the cached getSession() helper - Relocate setup wizard from app/(auth)/setup/ to app/setup/ (outside auth group) with dedicated copy-button and refresh-button client components - Move not-found.tsx and error.tsx to app root so they apply globally instead of only within the pages route group jake 2026-03-08 19:09:21 -04:00
  • 1f3e5e976f Enhance season watch tracking in useTitleActions jake 2026-03-08 17:52:05 -04:00
  • 29b80e304e Add modal={false} to Select/DropdownMenu and polish cast carousel layout jake 2026-03-08 16:02:47 -04:00
  • 5fdc7ebd97 Revert "Persist dashboard periods and explore genre filters in URL via nuqs" jake 2026-03-08 15:14:03 -04:00
  • 2bb5af042b Persist dashboard periods and explore genre filters in URL via nuqs - Add nuqs dependency; define dashboardSearchParams and exploreSearchParams loaders in new search-params.ts files - Thread moviePeriod/episodePeriod from URL into StatsSection and StatsDisplay, replacing local useState with useQueryStates - Rename getUserStats fields moviesThisMonth/episodesThisWeekmovieCount/episodeCount and accept period args so SSR stats match the active URL params - Pre-fetch genre-filtered results server-side on the explore page when movieGenre/tvGenre params are present; pass as initialGenreItems to FilterableTitleRow so first paint is already populated - Render genre chips as <Link> elements (with click-handler fallback) so genre selections produce shareable, bookmarkable URLs jake 2026-03-08 14:32:09 -04:00
  • 0838e5fb74 Replace hand-written TMDB types with openapi-fetch + generated schema jake 2026-03-08 14:07:32 -04:00
  • ad8ec62317 Refactor tmdbImageUrl to accept semantic category instead of size string jake 2026-03-08 12:33:07 -04:00
  • a7b3600d15 Flatten lib/types/title.ts → lib/types.ts and update all imports jake 2026-03-08 12:26:00 -04:00
  • 609f984aa0 Move test utilities from lib/ to test/ directory jake 2026-03-08 12:18:21 -04:00
  • 1328619c43 Merge MobileTabBar into nav-bar and refactor nav indicator to ResizeObserver - Delete components/mobile-tab-bar.tsx; co-locate MobileTabBar export in nav-bar.tsx so both nav components share helpers - Extract isLinkActive helper used by both desktop and mobile nav; fixes /dashboard active match when pathname is / - Replace layoutId-based Framer Motion indicators with a useActiveIndicator hook that measures DOM rects via ResizeObserver, animating left/width directly — avoids cross-tree layout ID conflicts and correctly handles breakpoint visibility changes - Add aria-current="page", aria-label="Primary", and focus-visible ring styles to nav links and tab bar items - Update layout import to pull both exports from @/components/nav-bar jake 2026-03-08 12:10:28 -04:00
  • 66f2447efe Add admin role badge to NavBar and normalize command palette text size - Thread userRole from session through AuthenticatedShellNavBar and show a styled "Admin" badge next to the user name when role is admin - Replace text-sm / text-xs/relaxed with explicit text-[13px] in NavBar search buttons and command palette input, empty, group, and item classes for consistent sizing jake 2026-03-08 11:46:01 -04:00
  • d75d40e63a Fix avatar conditional rendering in NavBar and AccountSection jake 2026-03-08 11:39:46 -04:00
  • 69f04937bc Fix updateTag during render, hide scrollbars, polish type badge and hover styles - Add revalidate option to refreshCredits and refreshRecommendations; pass { revalidate: false } from ensureEnriched to avoid calling updateTag outside Server Actions/Route Handlers - Add hideScrollbar prop to all horizontal ScrollArea instances (continue-watching, title rows, filterable row, cast carousel) - Replace text-only type badge in HeroBanner with icon + label using IconMovie / IconDeviceTv - Fix StatusButton destructive hover overrides with !important so they correctly supersede the status-specific background/text/ring jake 2026-03-08 11:24:07 -04:00
  • 1407571b64 Add inline name editing to account settings jake 2026-03-08 11:11:44 -04:00
  • 17fe19e85b Extract shared constants into lib/constants.ts jake 2026-03-08 11:06:29 -04:00
  • 84c4356a9f Add user avatar upload to account settings and nav bar jake 2026-03-08 11:02:33 -04:00
  • 02466e94f9 Replace Carousel with ScrollArea, remove embla-carousel dependency jake 2026-03-08 09:53:12 -04:00
  • 7ed172d675 Replace Jotai atoms with local state, add Suspense for PPR compatibility jake 2026-03-07 16:00:19 -05:00
  • 8a45aa1c36 Replace tmdb-* URL routing with resolveTitle/resolvePerson server actions jake 2026-03-07 14:27:03 -05:00
  • ccd482db4e Update StarRating animation to simplify scale transition logic jake 2026-03-07 13:30:58 -05:00
  • a5393792c7 Refactor seed script to use 'integrations' and 'integrationEvents' instead of 'webhookConnections' and 'webhookEventLog'. Update logging messages and variable names for clarity. jake 2026-03-07 12:48:27 -05:00
  • c6efbacc1c Add database seed script for demo data (#4) 2026-03-07 12:34:21 -05:00
  • 383f0b819b Polish mobile layouts, extract ExpandableText, fix image sizing - Stack title-hero poster/metadata vertically on mobile (flex-col md:flex-row), switch backdrop tall breakpoint from sm to md - Extract bio expand/collapse logic into reusable ExpandableText component; use it in PersonHero and TitleHero - Fix ContinueWatchingCard image to use fill + sizes instead of fixed width/height to avoid layout shift - Add fade-out gradient on genre chip scrollbar edge on mobile - Show scaled-down ambient glow on mobile instead of hiding it entirely - Humanize knownForDepartment labels (Acting→Actor, Directing→Director, etc.) - Change cast member name from truncate to line-clamp-2 for wrapping - Hide tooltip arrow via [&>:last-child]:hidden instead of color-matching it - Apply safe-area-inset padding to HeroBanner content on notched devices jake 2026-03-07 12:09:51 -05:00
  • 5d63ad699f Replace stats atoms with local state and server action in StatsDisplay - Swap Jotai movieStatsAtom/episodeStatsAtom atoms for useState + useEffect calling getStatsAction directly on period change - Remove dependency on lib/atoms/stats module - Add touch-friendly tap target padding to inlineTriggerClass via negative margin compensation on mobile jake 2026-03-07 11:26:37 -05:00
  • 8d8c49a7f0 Replace API route handlers with server actions across the app - Delete 10 API routes (stats, system-health, update-check, jobs/trigger, backup/restore, person, titles import/resolve, registration/status) and move logic into server actions in lib/actions/settings.ts and lib/actions/watchlist.ts - Refactor SystemHealthCards to accept initialData prop and hydrate Jotai atoms via useHydrateAtoms; replace useSystemHealth SWR hook with a lightweight useSystemHealthRefresh that calls getSystemHealthAction - Convert BackupRestoreSection to use restoreBackupAction + useTransition instead of a raw fetch call - Split SystemStatusCard, BackgroundJobsCard, and StorageCard into standalone components reading from systemHealthDataAtom - Make SetupPage async with connection() to opt into dynamic rendering jake 2026-03-06 17:31:14 -05:00
  • 73b07f5ff6 Refactor auth session handling and server actions across app - Overhaul lib/auth/server.ts and lib/auth/session.ts; update all API routes and server actions to use the revised session pattern - Refactor server actions (settings, titles, watchlist, setup) for consistency with new auth layer - Extract SetupForm into its own client component with useActionState, animated steps, and copyable env snippets - Move landing page redirect logic into app/page.tsx; slim down LandingPage component - Add proxy.ts for local dev proxying - Minor cleanup to NavBar, MobileTabBar, and TitleCard jake 2026-03-06 17:05:49 -05:00
  • 7a3052250d Optimize frontend: memoization, modern React hooks, reduced render overhead jakeandClaude Opus 4.6 2026-03-06 16:15:08 -05:00
  • d805b8b738 Add pre-commit checks section to CLAUDE.md jake 2026-03-06 16:06:25 -05:00
  • 29449fd02a Optimize database queries: add indexes, batch cron scans, transactional writes jakeandClaude Opus 4.6 2026-03-06 15:47:51 -05:00
  • 49cea568a9 Add Sonarr and Radarr list integrations jake 2026-03-06 15:34:34 -05:00
  • 8a3717cea7 Remove tmdbImageUrl mocks to fix cross-file mock poisoning in CI jakeandClaude Opus 4.6 2026-03-06 13:51:55 -05:00
  • 4cf326fa00 Add comprehensive test suite with CI workflow jake 2026-03-06 13:42:58 -05:00
  • 965e8353ac Update job health reporting to use finishedAt timestamp jake 2026-03-06 13:05:25 -05:00
  • a263a6536a Show disabled jobs properly in admin health dashboard jakeandClaude Opus 4.6 2026-03-06 13:02:04 -05:00
  • fb24b25d34 Replace lib/version.ts with APP_VERSION build arg injected via Docker jake 2026-03-06 13:00:41 -05:00
  • 57ce0fd85d Fix mobile pinch zoom and content overlapping header/footer on iOS Safari (#3) 2026-03-06 09:41:47 -05:00
  • 4d966bfbc2 "Claude Code Review workflow" jake 2026-03-05 21:31:08 -05:00
  • 0a06117278 "Claude PR Assistant workflow" jake 2026-03-05 21:31:07 -05:00
  • 11143d0803 Declutter title page metadata row with cleaner visual hierarchy jakeandClaude Opus 4.6 2026-03-05 21:26:47 -05:00
  • 9c68768295 Fix episode progress display in seasons: show mark-all for all users, simplify progress indicators jake 2026-03-05 20:53:05 -05:00
  • 522c03588d Add provider registry with direct watch links and overflow popover jakeandClaude Opus 4.6 2026-03-05 20:46:53 -05:00
  • cd4b2908d8 Add clickable watch links to streaming provider badges jake 2026-03-05 20:35:59 -05:00
  • 926ddfef34 Fix watchlisted shows not appearing in Continue Watching after logging episodes jakeandClaude Opus 4.6 2026-03-05 20:27:29 -05:00
  • 70a2a9f28d Fix missing userStatus on title cards across dashboard, recommendations, and filmography jakeandClaude Opus 4.6 2026-03-05 20:24:17 -05:00
  • 61908778c9 Ensure enrichment data is always available on title pages jakeandClaude Opus 4.6 2026-03-05 20:18:38 -05:00
  • be18531ea7 Add genre and content rating storage and display on title pages jakeandClaude Opus 4.6 2026-03-05 20:02:42 -05:00
  • 9e674f44aa Fix /setup unreachable for unauthenticated users jakeandClaude Opus 4.6 2026-03-05 19:21:23 -05:00
  • b565fb1023 Fix wrong TMDB field for person profile images in search jakeandClaude Opus 4.6 2026-03-05 19:18:27 -05:00
  • ac1cbddf0a Fix SSR crash from window access in webhook-card component jakeandClaude Opus 4.6 2026-03-05 19:17:35 -05:00
  • 436f3d7fad Fix Select trigger display values and add TMDB attribution jakeandClaude Opus 4.6 2026-03-05 19:15:52 -05:00
  • 4773243cda Add error and not-found pages across all route segments jakeandClaude Opus 4.6 2026-03-05 18:23:56 -05:00
  • fc982bee1b Comprehensive Web Interface Guidelines audit: accessibility, motion, and typography jakeandClaude Opus 4.6 2026-03-05 18:20:25 -05:00
  • 999b690796 Update CLAUDE.md to reflect current codebase state jakeandClaude Opus 4.6 2026-03-05 18:10:59 -05:00