Commit graph

1679 commits

Author SHA1 Message Date
tapframe
289ea2c45f Remove redundant xml declaration 2026-08-01 13:12:47 +05:30
tapframe
232a54fc5c Merge branch 'simkl' into cmp-rewrite 2026-08-01 13:03:17 +05:30
tapframe
e356e373f9 Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-08-01 13:02:29 +05:30
Nayif
a234646fe2
Merge pull request #1608 from NuvioMedia/simkl
feat(tracking): add Simkl integration and provider neutral tracking pipeline
2026-08-01 12:47:33 +05:30
tapframe
e9b4005391 Merge branch 'cmp-rewrite' into simkl 2026-08-01 12:45:12 +05:30
Nayif
fe22f4660c
Merge pull request #1637 from skoruppa/feat/simkl-anime-tracking
Simkl: port watched badge resolution and anime ID preference from TV
2026-08-01 12:33:44 +05:30
tapframe
a1e8c77d42 Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-08-01 03:26:33 +05:30
tapframe
ad1b8b79c6 fix: handle torrent cache pressure on Android 2026-08-01 03:26:23 +05:30
skoruppa
ebbc9709fc Take videoid from meta for track services in progress items 2026-07-31 23:20:45 +02:00
tapframe
d92b4d4c2e fix(search): remove recent history icons 2026-07-31 23:37:39 +05:30
skoruppa
abbfb62b4e Add badges to TmdbEntityBrowser 2026-07-31 12:46:59 +02:00
mmsw
2de02d53f0
Add Slovak language strings for settings and features
Added new Slovak language strings for various settings and features in the application.
2026-07-31 11:36:16 +02:00
mmsw
c53b21739f
Update Slovak translations for parental content strings 2026-07-31 10:57:37 +02:00
tapframe
db87075b6b Remove realtime sync support 2026-07-31 14:12:32 +05:30
skoruppa
0e1e12a8fc Fix "mark as unwatched" for whole series 2026-07-31 09:58:06 +02:00
tapframe
e4911b7742 fix(simkl): preserve posters during library updates 2026-07-30 15:52:59 +05:30
tapframe
15ec233025 Merge branch 'cmp-rewrite' into simkl
# Conflicts:
#	composeApp/src/commonMain/kotlin/com/nuvio/app/features/library/LibraryRepository.kt
2026-07-30 14:42:22 +05:30
skoruppa
e51d2b047c Add a setting to let user select anime ids, fix stale sibbilings watched checkmarks and don't use anime ids when providing seasons 2026-07-30 10:58:50 +02:00
tapframe
c2fc373234 fix(simkl): reconcile mutations locally 2026-07-30 14:27:10 +05:30
skoruppa
c96cda9287 Store sibilings and use correct meta path and change 2026-07-29 02:24:00 +02:00
tapframe
1b05c222b7 feat(library): add incremental delta sync 2026-07-29 01:06:46 +05:30
skoruppa
1b57a66551 Merge branch 'simkl' into feat/simkl-anime-tracking 2026-07-28 15:43:02 +02:00
skoruppa
b21b36f8e0 fix: bulk watched badge resolution with sibling expansion and anime fallback 2026-07-28 11:11:34 +02:00
tapframe
247afcbf00 test(simkl): cover local scrobble reconciliation 2026-07-28 12:37:37 +05:30
tapframe
2ebaf3b5a9 fix(simkl): reconcile scrobble responses locally 2026-07-28 12:37:24 +05:30
tapframe
d55ed7ae2a fix(auth): sanitize authentication errors 2026-07-27 23:49:58 +05:30
tapframe
db64bada04 Merge branch 'cmp-rewrite' into simkl 2026-07-27 22:00:21 +05:30
Nayif
4ba3df8b4e
Merge pull request #1631 from skoruppa/feat/simkl-anime-tracking
fix: Simkl anime - prevent show wipe, reactive CW update, next episode resolution
2026-07-27 21:53:57 +05:30
Nayif
a4e886fb6b
Merge pull request #1548 from darkflame91/imgsubs
fix(android): correct exoplayer image based subtitle rendering
2026-07-27 14:11:28 +05:30
skoruppa
82159fea47 fix: next episode calculation resolves anime watched via fallback
seriesPrimaryAction now accepts watchedKeys and synthesizes watched records
for episodes resolved via anime videoId fallback. This fixes next-up showing
S1E1 when entering via franchise parent MAL ID (e.g. mal:60636) while all
episodes are correctly shown as watched in the UI.
2026-07-27 10:28:26 +02:00
skoruppa
807f561f75 fix: skip series-level removal in Simkl delete to prevent wiping entire show
When reconcileSeriesWatchedState removes the series-level watched marker,
it calls delete() with a WatchedItem without season/episode. This was being
sent to Simkl as a show-level removal, which deleted the entire entry from
the user's library. Now we filter out items without season/episode — those
are local-only reconciliation markers.
2026-07-27 09:41:53 +02:00
Nayif
00cc012193
Merge pull request #1618 from quiettinkerer/fix/card-depth-effect-shape-clip
fix(ui): clip CardDepthEffect sheen overlay to container shape
2026-07-27 01:09:33 +05:30
tapframe
b3f22a6be2 feat(auth): register official client devices 2026-07-26 20:34:08 +05:30
tapframe
8937dc7b6b Update Play account and foreground service compliance 2026-07-26 18:20:48 +05:30
tapframe
26e7b23f02 Merge branch 'simkl' of https://github.com/NuvioMedia/NuvioMobile into simkl 2026-07-26 10:00:29 +05:30
tapframe
011cee0dab Merge branch 'cmp-rewrite' into simkl 2026-07-26 10:00:23 +05:30
tapframe
b60995324b Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-07-26 09:56:37 +05:30
skoruppa
f2bf839e29 feat: Simkl anime tracking — per-season MAL/Kitsu ID resolution
Write path:
- resolveAnimeEpisodeForSimkl() overrides IDs from video ID (Path B)
- Only the anime-specific ID from videoId is sent (no shared IDs)
- videoId flows through WatchedItem → push/delete → Simkl API

Read path:
- animeAlternateWatchedKeys() emits extra watched keys under alternate IDs
- Observer on Simkl snapshot keeps watchedKeys reactive
- SimklAnimeWatchedFallback handles franchise-parent content IDs
- Optimistic removals prevent stale fallback reads

Bootstrap:
- full_anime_seasons + episode_tvdb_id + language=en for both bootstrap and changes

Library:
- Anime entries use type 'anime' and supportedContentTypes includes 'anime'

Infrastructure:
- WatchedItem.videoId field for episode video ID propagation
- WatchedSyncAdapter.observeExtraWatchedKeys() for reactive extra keys
- WatchedRepository observes provider extra keys and re-publishes
2026-07-26 02:57:39 +02:00
Sobhan
6f4c69f536 fix(ui): clip CardDepthEffect sheen overlay to shape path 2026-07-26 04:46:00 +05:30
tapframe
7f254a9f2e refactor: remove catalog header accent line 2026-07-25 16:34:53 +05:30
tapframe
44fc3fa62f fix(tracking): close early scrobble sessions 2026-07-25 13:04:33 +05:30
tapframe
d8ffd18c4d fix(simkl): pace requests after completion 2026-07-24 19:34:52 +05:30
Nayif
2fda777249
Merge pull request #1610 from Laskco/feat/cloud-library-search
feat(library): Search the cloud library
2026-07-24 19:12:46 +05:30
tapframe
c85831df26 feat(simkl): improve sync guidance navigation 2026-07-24 18:42:39 +05:30
tapframe
085b136e5a fix(simkl): hide on-hold items from continue watching 2026-07-24 18:18:25 +05:30
tapframe
327d49d31d fix(simkl): refresh hidden progress immediately 2026-07-24 16:30:41 +05:30
tapframe
94ec538c10 fix(simkl): reconcile completed and dropped progress 2026-07-24 16:09:09 +05:30
tapframe
a69b7efd8b fix(simkl): gate sync reads by activity 2026-07-24 14:25:51 +05:30
tapframe
beecece7e3 Merge branch 'cmp-rewrite' into simkl 2026-07-23 21:41:32 +05:30
Nayif
755f6ff9b8
Merge pull request #1591 from guuilp/feat/mal-rating
feat(mdblist): add MyAnimeList (MAL) rating from MDBList API
2026-07-23 21:30:26 +05:30