jake and Claude Opus 5.5
6b56e3eff3
fix(stats): align count windows with chart buckets and fix month rollover
...
Window starts now equal the first chart bucket, and year buckets are built from the 1st of each month so the 29th-31st no longer repeat or skip months.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 22:31:32 -04:00
jake and Claude Opus 5.5
fcd8731a6a
fix(web): settings toggles refresh cache, backup next-run from server, update toast once
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 22:28:20 -04:00
jake and Claude Opus 5.5
436c463cc8
fix(web): show change-password validation messages and failure reason
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 22:27:30 -04:00
jake and Claude Opus 5.5
a6d642616b
fix(cron): start manual jobs in the background and report busy jobs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 22:23:28 -04:00
jake and Claude Opus 5.5
085b681d8a
fix(native): explain change-password failures and block double submit
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 22:15:57 -04:00
jake and Claude Opus 5.5
ea9cb3de8d
fix(native): skip recently-viewed and theming in link previews
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 22:12:30 -04:00
jake and Claude Opus 5.5
ee53f33a79
fix(native): load more titles in Explore rows
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 22:10:14 -04:00
jake and Claude Sonnet 5.5
ecf119c98e
fix(native): show errors for Explore rows, failed pages and Register
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 22:06:42 -04:00
jake and Claude Sonnet 5.5
669fc74653
fix(native): report SSO sign-in failures
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 22:03:06 -04:00
jake and Claude Sonnet 5.5
8a6c32f376
fix(native): translate the recently viewed row's accessibility label
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 21:57:24 -04:00
jake and Claude Sonnet 5.5
3d219ed638
chore(cron): remove query helpers replaced by checked-at stamps
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 21:56:49 -04:00
jake and Claude Sonnet 5.5
911dc7e5f1
fix(tracking): clamp same-day log-a-watch time to now
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 21:50:57 -04:00
jake and Claude Sonnet 5.5
cb5e0c19e7
feat(tracking): remove a single watch and log a watch on a date
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 21:50:56 -04:00
jake and Claude Sonnet 5.5
4669d3b76d
feat(native): add a watch history screen and trim the web phone tab bar
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 21:50:53 -04:00
jake and Claude Opus 5.5
6f0b3b597f
fix(public-api): allowlist telemetry features and keep /v1/version cacheable
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 21:45:43 -04:00
jake and Claude Sonnet 5.5
b292fe37ab
feat(tracking): add a paginated watch history and Last watched library sort
...
Adds tracking.history (cursor-paginated, movies and episodes merged), a
last_watched library sort, and a /history web page.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 14:36:44 -04:00
jake and Claude Sonnet 5.5
6cd99a39a9
fix(upcoming): omit direction in the default view so the loader prefetch key matches
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 14:30:44 -04:00
jake and Claude Sonnet 5.5
e625f319a2
feat(upcoming): add a "Recently aired" view of unwatched episodes
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 14:29:47 -04:00
jake and Claude Sonnet 5.5
e3f7ccca07
fix(dashboard): block duplicate quick-watch clicks until refetch and use logical end inset
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 14:21:47 -04:00
jake and Claude Sonnet 5.5
04bcb66436
feat(dashboard): mark episodes watched from Continue Watching and Upcoming
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 14:20:09 -04:00
jake and Claude Sonnet 5.5
899be96316
fix(cron): judge stale seasons by the latest season fetch
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 14:15:05 -04:00
jake and Claude Sonnet 5.5
6576f21235
perf(cron): refresh ended titles less often and only recent seasons of returning shows
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 14:13:28 -04:00
jake and Claude Sonnet 5.5
66a5e80544
fix(imports): skip specials and refresh shows once for new episodes
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 14:09:14 -04:00
jake and Claude Sonnet 5.5
e7f55d30e9
chore(native): define the root error fallback outside RootLayout
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 14:06:01 -04:00
jake and Claude Sonnet 5.5
51d193b411
perf(metadata): remember empty TMDB lookups instead of refetching every view
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 14:01:22 -04:00
jake and Claude Sonnet 5.5
edd6eb541d
fix(imports): keep date-only values on their calendar day
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:51:49 -04:00
jake and Claude Sonnet 5.5
1ccc138144
test(i18n): cover month labels when Intl defaults to UTC like the native polyfill
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:48:29 -04:00
jake and Claude Sonnet 5.5
c40b6844a0
fix(i18n): format Upcoming month headers in UTC so native shows the right month
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:47:15 -04:00
jake and Claude Sonnet 5.5
b7887eef70
fix(native): make select sheets and row actions usable with VoiceOver and TalkBack
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:43:21 -04:00
jake and Claude Sonnet 5.5
851a188f00
fix(native): recover from render errors and let Close leave deep-linked titles
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:40:39 -04:00
jake and Claude Sonnet 5.5
9d0bede536
fix(native): keep Android headers from covering Upcoming filters and the modal Close button
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:37:47 -04:00
jake and Claude Sonnet 5.5
9209214e98
fix(native): clear every episode's pending state and block taps during Mark All
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:35:27 -04:00
jake and Claude Sonnet 5.5
7770e1a697
fix(native): let Android menus open from their trigger
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:33:15 -04:00
jake and Claude Opus 5.5
ccaacfeae5
feat(native): follow the system language instead of an in-app picker
...
Declare the app's 12 languages to iOS and Android via expo-localization,
resolve the language from the device's preferred languages at start-up and
on Android runtime changes, and make Settings > Language open the system
settings page. Drops the MMKV-stored locale.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 13:24:59 -04:00
jake and Claude Sonnet 5.5
d012280f20
fix(native): add a local-network usage description for LAN servers
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:17:20 -04:00
jake and Claude Sonnet 5.5
55552cd1bf
chore(native): require iOS 17
...
Raise ios.deploymentTarget from 16.4 to 17.0 (app and widget extension) and state the requirement in the mobile app docs.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:13:28 -04:00
jake
12294de522
chore(vscode): update TypeScript settings for improved path resolution and enable experimental features
2026-10-05 13:13:04 -04:00
jake and Claude Sonnet 5.5
0afc60f28c
fix(native): show account edits immediately and save name on first tap
...
Bypass the 5-minute session cookie cache when refetching after name/avatar edits, keep taps on Save/Cancel working with the keyboard open, add Return-to-save, trim the name, and guard against double submit.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:07:54 -04:00
jake and Claude Sonnet 5.5
fbc6ac90a3
fix(native): show "Session expired" for every session loss the user didn't start
...
Replace the session-rejected / server-change / cached-session-seeded flags with a single
session-end reason that deliberate sign-outs mark before signing out. The session-loss
effect now toasts only when no reason was recorded.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 13:03:35 -04:00
jake and Claude Sonnet 5.5
786a4ba7c5
fix(native): re-probe the server on retry and rebuild the auth client before marking a new server reachable
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 12:59:59 -04:00
jake and Claude Sonnet 5.5
b46bc4cdcb
fix(native): make the server-URL check reactive so the reachability monitor and banner work after first setup
...
With the React Compiler, hasServerUrl read from MMKV during render was
memoized forever at the root. Read it through useSyncExternalStore instead.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 12:54:17 -04:00
jake and Claude Sonnet 5.5
8f4cd03715
fix(native): persist the query cache per server+user and clear it with the session
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-05 12:51:00 -04:00
jake and Claude Opus 5.5
870d130261
chore(i18n): extract catalogs after sharing client helpers
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 04:28:17 -04:00
jake and Claude Opus 5.5
778a1356d5
refactor(api): share tracking-dependent query key lists between web and native
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 04:27:43 -04:00
jake and Claude Opus 5.5
88e777d5ce
refactor(api): share sparkline path and luminance helpers between web and native
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 04:27:15 -04:00
jake and Claude Opus 5.5
4b38303404
refactor(i18n): re-export error helpers by name to satisfy no-barrel-file
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 04:27:12 -04:00
jake and Claude Opus 5.5
01a14157c6
refactor(i18n): share integration status text between web and native
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 04:26:05 -04:00
jake and Claude Opus 5.5
4adaa4a73b
refactor(i18n): share error message maps between web and native
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 04:25:28 -04:00
jake and Claude Opus 5.5
d874ae9198
refactor(web): share one import-job flow between import dialogs
...
Extract the job loop into runImportJob (with tests), hold its UI state in
useImportJob, and move the importing/done steps and stat/option components
into import-dialog-parts. Both dialogs now close when an import continues in
the background or the connection drops.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 04:11:48 -04:00
b63fbce60d
feat(search): find titles by IMDb ID
...
Search queries that look like an IMDb ID (e.g. tt0133093) are now resolved
through TMDB's find endpoint, respecting the movie/tv type filter.
Supersedes #60 .
Co-authored-by: Gonçalo Fonseca <gcare.fonseca99@outlook.com >
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 03:57:00 -04:00