Murilo Scolari
11d9aa5c6b
fix(sync): exclude device-local UI preferences from cloud settings sync
2026-10-24 23:49:46 -03:00
Murilo Scolari
e3ce0b331e
fix(simpconnect): stabilize P2P discovery, state sync, playback handoff and multicast lock
2026-10-24 17:59:27 -03:00
Murilo Scolari
d28478c2ad
feat(sync): add reactive real-time library observer and reactive UI flows
2026-10-24 04:23:43 -03:00
Murilo Scolari
a5b687628b
feat(sync): implement zero-knowledge E2EE sync engine, keyring, and payload store
2026-10-24 03:26:18 -03:00
Murilo Scolari
561bd98bad
fix(media-jvm): balanced volume scaling curve for desktop (pow 1.45)
2026-10-24 01:28:10 -03:00
Murilo Scolari
e730b23364
feat(sync): expose recovery in client repository
...
Add recovery credential rotation to the KMP client and domain/data contracts.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-21 20:51:43 -03:00
Murilo Scolari
951fb4c9ba
feat(sync): add repository integration
...
Expose persisted sync configuration and a domain/data repository for authenticated synchronization.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-21 20:50:31 -03:00
Murilo Scolari
ea2f4f98a3
feat(sync): persist client configuration
...
Add sync enablement, server URL, and session storage to the shared DataStore contract.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-21 20:49:30 -03:00
Murilo Scolari
c1ece4b3a9
feat(sync): add websocket notifications
...
Expose authenticated WebSocket notification sessions and client shutdown for sync invalidations.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-21 20:47:50 -03:00
Murilo Scolari
855e91b821
feat(sync): extend authenticated client lifecycle
...
Add session device metadata and logout/device APIs to the KMP sync client.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-21 20:46:47 -03:00
Murilo Scolari
b9a238a1c1
feat(sync): add encrypted sync client module
...
Add the Android and JVM KMP protocol client with AES-GCM envelopes and Ktor REST synchronization.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-21 20:38:47 -03:00
Murilo Scolari
1e7b925469
fix(simpconnect): preserve local playback across remote sessions
...
Only suspend an existing local session and keep its in-memory queue when remote control is active. Avoid restoring unrelated persisted queues after disconnect and rethrow coroutine cancellation.
2026-10-21 20:13:10 -03:00
Murilo Scolari
d19aab5d6e
fix(simpconnect): suspend local player on controller, seal session player transport, and restore dynamic island
2026-10-21 19:16:23 -03:00
Murilo Scolari
e913fa0db5
fix(simpconnect): run listener calls on player thread and isolate command failures
2026-10-21 18:15:01 -03:00
Murilo Scolari
81fc20e051
fix(volume): keep mirrored control state in sync for SimpConnect
...
PlayerEvent.UpdateVolume applied the level to the player but left controlState.volume at its stale value, so the controller's slider bounced back on the next state sync. Update the state on both Android and JVM, and expose repeat/shuffle/volume/seek commands to the remote-aware MediaSession player.
2026-10-21 17:40:12 -03:00
Murilo Scolari
fe6ffa0099
fix(simpconnect): make cross-device control reliable
...
Server/client hardening:
- ordered, conflated state broadcasts plus a single ordered command channel (no dropped handoff PlayTrack, no timeline jumping)
- connect/handshake timeouts, heartbeat, stale-session replacement, approval timeout and persisted auth keys
- cancellable local-network discovery that retries after bind failures
Control and handoff:
- preserve pause state and playback position across handoff, and keep the queue that is actually playing
- add transferToDevice() to move an active session instead of attaching to a second target
- serialize remote PlayTrack handling, clamp seeks and cycle repeat to the requested mode
Android integration:
- expose the remote session to the MediaSession notification via SimpConnectSessionPlayer, so notification/Bluetooth/Android Auto transport, metadata and progress follow the controlled device
- apply PlayerEvent.UpdateVolume to the Android player
2026-10-21 17:35:46 -03:00
Murilo Scolari
3ec25d6b81
fix(media3): restore HyperOS dynamic island and improve SimpConnect real-time state sync
2026-10-21 16:03:43 -03:00
Murilo Scolari
d1934699b5
feat(simpconnect): implement P2P discovery, server, client, domain and data repository
2026-10-21 15:12:42 -03:00
Murilo Scolari
7efa4c9b44
feat(car): expose queue timeline with real durations and isolate SystemUI commands
2026-10-21 13:45:02 -03:00
Murilo Scolari
1c69905f68
Revert "feat(car): expose playback queue to Android Auto"
...
This reverts commit 04406db782 .
2026-10-21 13:26:11 -03:00
Murilo Scolari
04406db782
feat(car): expose playback queue to Android Auto
...
Publish the adapter's real queue through the MediaSession timeline so the Android Auto player shows its native queue button. Map queue selections back to the adapter index, including shuffle order, and keep the synthetic timeline from being overwritten by the single-item ExoPlayer delegate.
2026-10-21 00:30:29 -03:00
Murilo Scolari
158e7f67e4
feat(car): fall back to built-in artwork when covers are missing
2026-10-20 23:19:11 -03:00
Murilo Scolari
d791464ecf
feat(car): bring legacy Android Auto UI closer to the templated layout
2026-10-20 23:12:29 -03:00
Murilo Scolari
a37ad64211
refactor(car): remove Car App Library UI and keep legacy media UI
2026-10-20 23:03:49 -03:00
Murilo Scolari
e85c68bf71
feat(car): use artwork and grid hints on legacy Android Auto home shelves
2026-10-20 22:54:30 -03:00
Murilo Scolari
a4bf94bca1
feat(car): add Android Auto content style hints for grid layouts and album covers
2026-10-20 21:41:01 -03:00
Murilo Scolari
5c260849c8
feat(update): add msix and appinstaller asset URLs to UpdateData
2026-10-19 22:45:00 -03:00
Murilo Scolari
743cd340f9
feat(update): expose appImageUrl and zsyncUrl in UpdateData
2026-10-19 22:22:44 -03:00
Murilo Scolari
fbd4ca4130
fix(car): support Car API levels 1-7 with backward-compatible templates
2026-10-19 21:20:27 -03:00
Murilo Scolari
3244af19ce
fix(lyrics): robust word alignment and syllable merging across TTML and rich sync lyrics
2026-10-19 20:49:59 -03:00
Murilo Scolari
b09ea93cd9
feat(sync): support bidirectional settings and accounts sync over QR code
2026-10-19 20:30:53 -03:00
Murilo Scolari
1b07b15f3b
fix(android-auto): allow all car hosts unconditionally for sideloaded release builds
2026-10-19 19:53:48 -03:00
Murilo Scolari
486b2d5796
fix(lyrics): properly merge TTML syllable spans into words
2026-10-19 19:21:59 -03:00
Murilo Scolari
d9bd613175
fix(discord-rpc): harden native IPC handshake and support Vesktop Flatpak sockets
2026-10-19 18:30:24 -03:00
Murilo Scolari
85189686cd
fix(discord-rpc): set activity type to 0 (PLAYING) for Discord IPC standard compatibility
2026-10-19 18:05:25 -03:00
Murilo Scolari
73d9934978
fix(discord-rpc): remove buttons per user preference, streamline payload, and add info logging
2026-10-19 17:57:54 -03:00
Murilo Scolari
c3ca08bf39
fix(discord-rpc): use official SimpMusic App ID, pass activity name and buttons, and format timestamps in seconds
2026-10-19 17:40:06 -03:00
Murilo Scolari
02e15577b7
feat(discord): implement pure Kotlin/JVM native Discord IPC client with 5-minute pause timeout
2026-10-19 17:10:40 -03:00
Murilo Scolari
99b1ff6ee3
Merge branch 'feat/github-updates-repo' into custom
2026-10-19 16:11:15 -03:00
Murilo Scolari
872187db80
feat(update): point github release check to muriloscolari/SimpMusic
2026-10-19 16:11:15 -03:00
Murilo Scolari
cf946aa2f2
feat(data): add startWithSystem and startMinimizedToTray to DataStoreManager
2026-10-19 02:47:46 -03:00
Murilo Scolari
d39d3ae0dc
feat(data): add lastfmCustomApiKey and lastfmCustomSecret to DataStoreManager
2026-10-19 02:28:12 -03:00
Murilo Scolari
f48759d51f
feat(media-jvm): implement cubic perceptual volume scaling without overriding OS mixer ao-volume
2026-10-19 02:18:53 -03:00
Murilo Scolari
f395504737
fix(car): filter duplicate Liked Music in playlists and limit home playlists to single row
2026-10-18 18:10:02 -03:00
Murilo Scolari
14dfb56bce
feat: show YouTube Music library, liked and local playlists in Android Auto Playlists tab
2026-10-18 17:47:01 -03:00
Murilo Scolari
d001a58043
fix(car): prevent MediaSession from clearing active player on track selection
2026-10-18 17:23:53 -03:00
Murilo Scolari
2ca6f7ba46
Merge branch 'feat/car-home-playlists-and-artwork' into custom
2026-10-18 16:48:44 -03:00
Murilo Scolari
668381686c
feat(android-auto): highlight user playlists with artwork directly on home screen
2026-10-18 16:48:08 -03:00
Murilo Scolari
6a55eb12dc
feat(player): auto-resume playback on skip (next/previous) when paused
2026-10-18 16:41:50 -03:00
Murilo Scolari
a21e4b50a1
Merge branch 'feat/smart-lyrics-and-back-nav' into custom-release
2026-10-17 01:54:21 -03:00