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
Cursor Agent
e1811f0e5e
Merge cmp-rewrite and complete Greek translations
...
Resolve the values-el conflict in favor of accurate Greek playback
labels, add translations for 39 new upstream strings (library filters,
P2P cache/profile, torrent status, Upcoming), and fix leftover typos.
Co-authored-by: Nasos V. <nvasedis@gmail.com>
2026-07-24 17:25:09 +00:00
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
tapframe
9b278e6cb0
fix(simkl): refresh watch state after manual sync
2026-07-23 21:27:27 +05:30
tapframe
4f3eaee2cc
fix(simkl): reconcile watched playback
2026-07-23 21:02:19 +05:30
YLaskco
79269f461a
feat(library): search the cloud library
...
The Cloud view only had provider and type filters, so finding a specific
release in a large debrid account meant scrolling the whole list, even
though the item names and file names are already loaded on the client.
Adds a local search field under the toolbar that narrows the already
loaded items. It matches the item name or any of its file names, since
the useful identifier is often in the filename rather than the title,
and it stacks on top of the existing provider and type filters.
2026-07-23 10:20:23 -04:00
tapframe
200851c6f6
fix: scope removal animations to tracking source
2026-07-23 18:06:46 +05:30
tapframe
0aaea4fd2b
change tracking icon
2026-07-23 17:09:32 +05:30
tapframe
bb609bc308
refactor(details): remove Simkl source action
2026-07-23 16:30:07 +05:30
tapframe
38e3e89618
feat(settings): add Simkl attribution
2026-07-23 16:22:36 +05:30
tapframe
544c776bb8
ref: update descriptions for Trakt and Simkl
2026-07-23 15:49:37 +05:30
tapframe
2bca3ffa6b
fix(profiles): activate selected profile once
2026-07-23 15:46:40 +05:30
tapframe
237d2308f2
chore(simkl): trace refresh request origins
2026-07-23 15:35:29 +05:30
tapframe
96d0a31f45
fix(simkl): deduplicate startup activity checks
2026-07-23 14:59:51 +05:30
tapframe
1906518322
fix(library): simplify Simkl watchlist presentation
2026-07-23 00:27:05 +05:30
tapframe
4df54ab89f
fix(simkl): confirm destructive library removals
2026-07-23 00:27:05 +05:30
tapframe
7fb8206107
feat(tracking): redesign tracking settings
2026-07-23 00:27:04 +05:30
tapframe
b817eb5b14
feat(simkl): explain sync cadence
2026-07-23 00:27:04 +05:30
tapframe
b4eba6e0c5
fix(simkl): fetch historical episode state
2026-07-23 00:27:03 +05:30
tapframe
002a54e022
fix(sync): retry incomplete foreground pulls
2026-07-23 00:27:02 +05:30
tapframe
7210e7cc68
fix(sync): restore foreground refresh behavior
2026-07-23 00:27:02 +05:30
tapframe
2f19d06fd3
fix(trakt): restore seek scrobble updates
2026-07-23 00:27:01 +05:30
tapframe
cac2c891c0
fix(trakt): preserve episode mapping identity
2026-07-23 00:27:00 +05:30
tapframe
58e57f2b17
fix(watched): preserve failed Nuvio writes
2026-07-23 00:26:59 +05:30
tapframe
6c61ab150b
fix(simkl): sanitize sync diagnostics
2026-07-23 00:26:59 +05:30
tapframe
dbf2308c9f
fix(tracking): preserve provider attribution
2026-07-23 00:26:58 +05:30
tapframe
9798482fff
fix(simkl): refresh settings from activity changes
2026-07-23 00:26:57 +05:30
tapframe
e020b9700a
fix(simkl): map anime episode coordinates
2026-07-23 00:26:57 +05:30
tapframe
942a111eec
fix(simkl): parse resolved history mutations
2026-07-23 00:26:56 +05:30
tapframe
b0aa543f26
fix(simkl): align request retry policies
2026-07-23 00:26:56 +05:30
tapframe
65817ad73b
fix(simkl): separate completion from library status
2026-07-23 00:26:55 +05:30
tapframe
3064c7aa25
chore(simkl): add watched marker diagnostics
2026-07-23 00:26:55 +05:30
tapframe
e32445238d
fix(simkl): enrich progress and correct artwork
2026-07-23 00:26:54 +05:30
tapframe
e408a2f48c
fix(progress): isolate continue watching sources
2026-07-23 00:26:54 +05:30
tapframe
e930699ae9
fix(simkl): restore compliant library sync
2026-07-23 00:26:53 +05:30
tapframe
56a496a384
chore(simkl): log sync HTTP responses
2026-07-23 00:26:53 +05:30
tapframe
32449a7a15
feat(tracking): expose manual provider refresh
2026-07-23 00:26:52 +05:30
tapframe
adcc829a1a
fix(simkl): centralize oauth request policy
2026-07-23 00:26:52 +05:30
tapframe
c1022e2eb5
fix(simkl): enforce compliant sync cadence
2026-07-23 00:26:51 +05:30
tapframe
b1a7f0757e
refactor(tracking): isolate progress provider policy
2026-07-23 00:26:49 +05:30
tapframe
e7349dd28f
refactor(tracking): remove shared feature coupling
2026-07-23 00:26:48 +05:30
tapframe
eb5bf78c37
refactor(tracking): register progress read providers
2026-07-23 00:26:48 +05:30
tapframe
617bfe298e
refactor(tracking): register watched read providers
2026-07-23 00:26:47 +05:30
tapframe
410a9d4c4b
refactor(tracking): register library read providers
2026-07-23 00:26:46 +05:30
tapframe
5bbe3b9ef0
feat(tracking): add provider-aware settings
2026-07-23 00:26:45 +05:30
tapframe
2dffff3520
feat(tracking): fan out real player scrobbles
2026-07-23 00:26:45 +05:30
tapframe
0f12e61430
feat(simkl): wire tracker state into app repositories
2026-07-23 00:26:44 +05:30
tapframe
caf124e1b4
feat(simkl): add application state projections
2026-07-23 00:26:43 +05:30
tapframe
e4278a2391
feat(simkl): add batched tracking mutations
2026-07-23 00:26:42 +05:30
tapframe
615098e976
feat(simkl): add atomic sync store
2026-07-23 00:26:42 +05:30
tapframe
f7c17e656e
feat(simkl): centralize API policy
2026-07-23 00:26:41 +05:30
tapframe
8f2f7221c2
feat(simkl): add secure PKCE authentication
2026-07-23 00:26:40 +05:30
tapframe
857311cce7
refactor(tracking): add provider-neutral foundation
2026-07-23 00:26:38 +05:30
guuilp
5037f26532
fix(mdblist): replace PNG with cairosvg render — correct centering, 3.2KB
2026-07-20 21:56:07 +00:00
guuilp
b5bbed9e66
fix(mdblist): replace PNG with XML VectorDrawable — native Android vector format
2026-07-20 21:52:55 +00:00
guuilp
9ac946e4ea
fix(mdblist): replace MAL SVG with PNG — Android does not support SVG in painterResource
2026-07-20 21:51:53 +00:00
guuilp
720c6d8b6e
fix(mdblist): reorder ratings — MAL before Rotten Tomatoes pair, fix source_mal import
2026-07-20 21:46:13 +00:00
guuilp
6366142e0b
fix(mdblist): invert MAL SVG colors — blue bg, white text
2026-07-20 21:46:13 +00:00
guuilp
397d0e2ce0
feat(mdblist): add MAL rating icon and display in detail screen
2026-07-20 21:46:13 +00:00
guuilp
a8e64fdfe2
feat(mdblist): add MyAnimeList (MAL) rating from MDBList API
2026-07-20 21:46:13 +00:00
guuilp
05a5f9d7d3
fix: per-profile isolation for Trakt auth and storage
...
1. TraktAuthStorage: Added profileId parameter to loadPayload(profileId)
and savePayload(profileId, payload) in Android and iOS actual
implementations, passing it explicitly to ProfileScopedKey.of().
2. TraktAuthRepository: Added currentProfileId and profileGeneration
for cross-profile operation detection. Methods now accept explicit
profileId to isolate auth state per profile. loadFromDisk() and
persist() use the scoped storage key.
3. TraktCredentialSync: Updated to pass profileId to currentStateForSync()
and replaceStateFromSync().
4. ProfileRepository/LibraryRepository: Updated calls to
TraktAuthRepository.onProfileChanged(profileId).
5. WatchedRepository/WatchProgressRepository: Fixed
pullFromServer/forceSnapshotRefreshFromServer to pass profileId
to TraktAuthRepository.ensureLoaded() before checking
activeOperationGeneration.
6. SyncManager: Passes profileId to ensureLoaded().
2026-07-20 21:46:13 +00:00
tapframe
d514468fef
fix(navigation): defer route cleanup until pop completes
2026-07-20 18:27:13 +05:30
tapframe
1b88c5abef
feat: integrate Nuvio Engine
2026-07-20 16:50:04 +05:30
tapframe
66f4d433ea
Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite
2026-07-20 13:15:05 +05:30
KhooLy
70bdafab48
fix: recycled bitmap crash in Now Playing metadata
2026-07-19 23:38:13 +03:00
darkflame91
ec63003fab
fix(android): correct fill/zoom image based subtitle rendering
2026-07-19 21:01:27 +05:30
darkflame91
d5991c751d
fix(android): correct image based subtitle rendering
2026-07-19 20:53:13 +05:30
tapframe
e695b213bf
Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite
...
# Conflicts:
# composeApp/src/commonMain/composeResources/values/strings.xml
2026-07-19 16:01:55 +05:30
tapframe
109515f17a
fix(settings): normalize section headings
2026-07-19 15:47:18 +05:30
tapframe
1e4c125ca1
feat: add separate upcoming continue watching row
2026-07-19 14:06:02 +05:30
tapframe
0ac38dce43
fix: apply poster depth to remaining surfaces
2026-07-19 03:15:02 +05:30
Cursor Agent
0b8c15c7ce
Improve Greek (el) localization coverage and accuracy
...
Fill missing Greek strings to match English, rename Nuvio Sync and
Library Saved labels correctly, and fix mixed/untranslated leftovers
plus playable-file typos in cloud library copy.
Co-authored-by: Nasos V. <nvasedis@gmail.com>
2026-07-18 15:06:24 +00:00
tapframe
b55be263d9
feat(library): add sortable shelf and grid layouts
2026-07-18 20:16:05 +05:30
tapframe
623844ed84
Merge branch 'pr/ios-profile-hold-menu-fixes' into cmp-rewrite
2026-07-18 18:28:10 +05:30
tapframe
d9eaca52e6
fix(player): update sourceStreamsState to use mutableStateOf
2026-07-18 17:37:08 +05:30
tapframe
9113b5567a
fix(player): make forced subtitle selection audio-aware
2026-07-18 17:35:56 +05:30
tapframe
079b3a7e97
fix(player): enforce preferred-language subtitle filtering
2026-07-18 17:05:32 +05:30
tapframe
a8d6d8d270
fix(player): match forced subtitles to language preferences
2026-07-18 16:54:50 +05:30
tapframe
65e38b0da6
feat: add show catalog type option
...
Closes #1556
2026-07-18 14:17:39 +05:30
Nayif
99d1cf345f
Merge pull request #1567 from luqmanfadlli/fix-ios-collection-header
...
Fix(iOS): Collection Folder catalog filters being obstructed by the native iOS navigation bar
2026-07-18 13:20:15 +05:30
tapframe
f5b75adccb
fix: show player streams progressively
2026-07-18 13:17:01 +05:30
tapframe
83ac09bac3
fix: preserve download metadata and nav layout
2026-07-18 13:05:02 +05:30
tapframe
824f2a22ad
Merge branch 'playerui/tvparity' into cmp-rewrite
2026-07-18 03:46:00 +05:30
tapframe
78b826fdf7
Merge PR #1331 : fix Torbox cloud library on Android
2026-07-18 03:41:12 +05:30
tapframe
50bb2bcc52
fix: bound generic Android raw responses
2026-07-18 03:40:53 +05:30
tapframe
03c6d598ba
feat(player): match overlays to TV UI
2026-07-18 03:29:55 +05:30
tapframe
20d091e907
Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite
2026-07-18 02:06:23 +05:30
Nayif
77049f4e00
Merge pull request #1562 from skoruppa/modern-menu
...
modern floating pill navigation bar with scroll-responsive labels
2026-07-18 02:06:19 +05:30
Nayif
0cc804198a
Merge pull request #1558 from Laskco/codex/tmdb-release-date-toggle
...
Add TMDB release date controls and fix episode availability
2026-07-18 02:05:12 +05:30
Nayif
2adf4bacf2
Merge pull request #1509 from kgenovz/feat/default-video-id
...
feat(details): support behaviorHints.defaultVideoId for series initial play
2026-07-18 01:56:25 +05:30
Nayif
5218ca86b1
Merge pull request #1545 from emgeje/cmp-rewrite
...
Updated Hungarian translations (Add diagnostics and Sentry reporting strings)
2026-07-18 01:55:23 +05:30
tapframe
0165392f75
Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite
2026-07-18 01:54:49 +05:30
Nayif
7f6feddafd
Merge pull request #1552 from neerajlovecyber/feature-player-episode-watched-tick
...
Show watched checkmarks in player episode switcher
2026-07-18 01:54:01 +05:30
tapframe
0cb0e20918
fix(trakt): invalidate rejected refresh tokens
2026-07-17 23:29:03 +05:30
haveAnIssue
2f236e9e3b
Update AppLanguage.kt
...
Enable Hebrew
2026-07-17 14:33:42 +03:00
haveAnIssue
54f6ca9112
Create strings.xml
...
Add Hebrew Translation
2026-07-17 14:28:33 +03:00
skoruppa
e7322071ff
feat: modern floating pill navigation bar with scroll-responsive labels
...
- New floating pill-shaped bottom nav bar
- Scroll down to collapse labels, scroll up to expand (snap animation)
- Haze blur-through effect on the pill background
- Selected tab uses accent color from theme
- Dynamic pill width: shrinks when collapsed, expands with labels
- Settings option (Android only): Adaptive, Always Expanded, Always Compact, Classic
- Classic mode preserves original flat navigation bar
- NavBarStyle syncs to cloud (ignored on iOS where LiquidGlass is used)
- iOS LiquidGlass tab bar remains untouched
- Polish translations added
2026-07-17 10:40:05 +02:00
YLaskco
f4ff269d45
Fix episode release date handling
2026-07-16 16:41:41 -04:00
Luqman Fadlli
6de66cfa76
fix(ios): restore back gesture and navigation
2026-07-17 00:11:44 +07:00
tapframe
c68d996881
fix: fix collection keys dupliation causing sigsegv
2026-07-16 22:40:38 +05:30
tapframe
4ba92f3926
perf: optimize metadata screen scrolling
2026-07-16 22:24:46 +05:30
tapframe
e56fb2e87e
feat: reveall spoiler comments by tapping
2026-07-16 13:50:33 +05:30
tapframe
6ae6f60926
feat: hero overscroll
2026-07-16 13:46:12 +05:30
tapframe
57a8405a54
feat: add hero auto rotation
2026-07-16 12:41:21 +05:30
tapframe
1dbbbdecbc
Refine iOS sheets and ratings
2026-07-16 12:33:27 +05:30
tapframe
f9b5ef8aef
Fix metadata rail scrolling
2026-07-15 23:59:26 +05:30
neerajlovecyber
acaec75b54
Show watched checkmark on player episode list rows.
...
Reuse NuvioAnimatedWatchedBadge so completed episodes match the series detail page.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-15 16:45:48 +05:30
tapframe
1050bc0771
ref: remove contribution summary
2026-07-15 16:09:22 +05:30
tapframe
78ec152b9c
ref: adjust progress color based on theme in AppUpdateBanner
2026-07-15 16:01:18 +05:30
tapframe
cc59387588
feat: update banner layout
2026-07-14 23:12:02 +05:30
emgeje
479153e943
Add diagnostics and Sentry reporting strings
...
Added new strings for diagnostics and Sentry reporting features.
2026-07-14 14:45:42 +02:00
tapframe
409a2e9b01
remove unused seekToMs func
2026-07-14 17:04:49 +05:30
tapframe
0f155c752c
remove duplicate strings
2026-07-14 16:51:46 +05:30
Nayif
5230f2b975
Merge pull request #1471 from nosvasedis/fix-greek-translations
...
Fix and complete Greek (el) translations
2026-07-14 16:38:05 +05:30
tapframe
d2a6206357
Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite
2026-07-14 16:36:19 +05:30
Nayif
f314cfea35
Merge pull request #1530 from luqmanfadlli/crossplatform-nowplayingcontrol
...
feat(android): Add Android support for Now Playing media controls
2026-07-14 16:36:00 +05:30
tapframe
d924a46ca0
Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite
2026-07-14 16:29:03 +05:30
Nayif
ab71682ef6
Merge pull request #1516 from WhiteGiso/translations-it
...
Added new Italian translations
2026-07-14 16:22:44 +05:30
Nayif
d7c88d35f2
Merge pull request #1536 from darkflame91/pipmode
...
fix(android): fix issues with PiP window
2026-07-14 16:22:27 +05:30
tapframe
89149fb063
fix: stabilize continue watching scroll position
2026-07-14 16:20:29 +05:30
tapframe
f74ae8182e
refactor: update library sync logic while in active pull state
2026-07-14 16:02:33 +05:30
WhiteGiso
cc650d0950
fix(ios): stabilize profile switcher menu
2026-07-14 11:06:38 +02:00
Trần Khánh
a1649b0e1b
Update strings.xml
2026-07-14 14:58:17 +07:00
Trần Khánh
b38d446a9f
Update strings.xml
2026-07-14 14:43:46 +07:00
Cursor Agent
0342070fe7
Sync Greek translations with upstream and fix remaining corruption
...
- Add 31 missing settings_card_depth_* strings from upstream Card Depth Effect feature
- Fix remaining mixed Greek/English corruption artifacts (Όχι/no, partial word swaps)
- Translate newly surfaced untranslated strings in continue watching, debrid, trakt, and cloud library areas
- Bring values-el/strings.xml to full parity with the 1958-key English base
Co-authored-by: Nasos V. <nvasedis@gmail.com>
2026-07-14 06:56:05 +00:00
Nasos V.
d52ef9d4c5
Merge branch 'cmp-rewrite' into fix-greek-translations
2026-07-14 09:41:38 +03:00
Trần Khánh
f63b38dbcf
Merge remote-tracking branch 'upstream/cmp-rewrite' into cmp-rewrite
2026-07-14 12:17:39 +07:00
Trần Khánh
a901abf914
Update strings.xml
2026-07-14 12:10:34 +07:00
tapframe
b3be03fb7f
Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite
2026-07-14 01:31:36 +05:30
darkflame91
4db3231c2a
fix(android): fix issues with PiP window
2026-07-14 01:28:11 +05:30
tapframe
b2973df144
Match Trakt CW with TV
2026-07-14 01:25:30 +05:30
tapframe
d9f3ac818c
fix: cw enrichment retry and up next logic
2026-07-13 21:30:13 +05:30
Trần Khánh
fbc8e9534c
Merge branch 'cmp-rewrite' of https://github.com/khanh71/NuvioMobile into cmp-rewrite
2026-07-13 18:51:56 +07:00
Luqman Fadlli
7c7dfbdf64
feat(android): add Now Playing media controls
...
Add Android Now Playing support using Media3 MediaSession and media notifications.
* Publish title, subtitle, artwork, duration, position, and playback state
* Add play, pause, seek, rewind, and fast-forward controls
* Support lock screen, notification, headset, and external media controls
* Integrate with both ExoPlayer and libmpv backends
* Keep playback active in the background while the media session is running
* Clean up the media session, notification, and foreground service when playback ends
2026-07-13 15:44:51 +07:00
Trần Khánh
800c9aa1c7
Update strings.xml
2026-07-13 15:15:05 +07:00
Trần Khánh
07148b0b76
Update strings.xml
2026-07-13 07:50:13 +07:00