Skip to content

v1.8.0#1

Merged
sphildreth merged 7 commits into
mainfrom
sph.2026-05-25.01
Jun 17, 2026
Merged

v1.8.0#1
sphildreth merged 7 commits into
mainfrom
sph.2026-05-25.01

Conversation

@sphildreth

Copy link
Copy Markdown
Contributor

Updates Melodee Player for the current v1 API and 1.8.0 branch work, with focus on authentication persistence, Android Auto stability, playback state cleanup, and project documentation.

  • Adds refresh-token persistence and safer 401 refresh handling so transient failures do not force logout.
  • Restores persisted auth in MusicService so Android Auto does not require re-auth when the user is already signed in.
  • Adds exact Android Auto media browser caller validation.
  • Replaces UI-owned playback polling with service-backed playback state flows.
  • Adds OpenAPI v1 contract coverage and focused auth/Android Auto tests.
  • Updates README, changelog, and AGENTS.md.
  • Cleans Android Studio commit-inspection warning noise in touched files.

Testing

  • ./gradlew :app:testDebugUnitTest --stacktrace
  • ./gradlew :app:lintDebug --stacktrace
  • ./gradlew build --stacktrace
  • Manual Android Studio/Android Auto testing confirmed by user.

Bump version to 1.8.0 and upgrade the project toolchain to Gradle 9.5.1,
AGP 9.2.1, Kotlin 2.3.21, and JDK 21. Enhance application security by
migrating sensitive authentication tokens to EncryptedSharedPreferences
and implementing package-based client validation for the
MediaBrowserService.

Additional changes include:
- Improve token refresh logic and network authentication stability
- Refactor playback queue management to use service-side methods
- Optimize ViewModel memory usage and pagination handling
- Update core dependencies including Media3, Room, and Retrofit

BREAKING CHANGE: Minimum supported Android version increased from API 21
to API 23.
…I layer

Bump version to 1.8.0 and upgrade the project toolchain to Gradle 9.5.1, AGP 9.2.1, Kotlin 2.3.21, and JDK 21. Enhance security by migrating authentication tokens to `EncryptedSharedPreferences` and implementing package-based validation for `MediaBrowserService` callers.

Additional changes include:
- Increase minimum supported Android version to API 23 and target SDK to API 36
- Refactor `MusicApi` to align with v1 spec, including updated endpoints, path parameters, and playlist pagination
- Implement an `Authenticator`-based token refresh flow with improved persistence and error handling
- Update `ScrobbleApi` and `ScrobbleManager` with structured error responses and type-safe scrobble types
- Optimize playback queue management with service-side APIs and proactive prefetching
- Improve null safety for `Artist` genres and `AuthenticationResponse` fields
- Update core dependencies including Compose BOM, Media3, Retrofit, and OkHttp

BREAKING CHANGE: Minimum supported Android version increased from API 21 to API 23.
…I layer

Bump version to 1.8.0 and upgrade the project toolchain to Gradle 9.5.1, AGP 9.2.1, Kotlin 2.3.21, and JDK 21. Enhance security by migrating authentication tokens to `EncryptedSharedPreferences` and implementing package-based validation for `MediaBrowserService` callers.

Additional changes include:
- Increase minimum supported Android version to API 23 and target SDK to API 36
- Refactor `MusicApi` to align with v1 spec, including updated endpoints, path parameters, and playlist pagination
- Implement an `Authenticator`-based token refresh flow with improved persistence and error handling
- Update `ScrobbleApi` and `ScrobbleManager` with structured error responses and type-safe scrobble types
- Optimize playback queue management with service-side APIs and proactive prefetching
- Improve null safety for `Artist` genres and `AuthenticationResponse` fields
- Update core dependencies including Compose BOM, Media3, Retrofit, and OkHttp

BREAKING CHANGE: Minimum supported Android version increased from API 21 to API 23.
…security

Migrate `HomeViewModel` and `PlaylistViewModel` to observe reactive flows from `MusicService` for playback state, position, and context, eliminating UI-side polling loops. Replace substring-based package validation for Android Auto with exact matching in a new `AndroidAutoBrowserClientValidator`.

Additional changes include:
- Expand test coverage for API v1 contracts, scrobble payloads, and token refresh edge cases
- Enhance `SettingsManager` to preserve refresh token expiry when tokens are omitted in responses
- Refactor `MusicService` and `MusicPlaybackManager` to expose playback state via `StateFlow`
- Update `README.md` and `CHANGELOG.md` with detailed project overview and technical specs
- Add `AGENTS.md` with repository instructions and validation workflows for coding assistants
Update the GitHub Actions workflow to install Android SDK 36 packages and transition to module-specific Gradle tasks for testing and reporting. Refactor the JaCoCo task in the app module to correctly identify Kotlin and Java class directories and target specific execution data paths.

Additional changes include:
- Add funding configuration via Ko-fi
- Update CI to use `:app:` namespaced Gradle tasks for unit tests and coverage
- Optimize JaCoCo task dependencies by removing redundant coverage report tasks
@sphildreth sphildreth merged commit 7008eed into main Jun 17, 2026
1 check passed
@sphildreth sphildreth deleted the sph.2026-05-25.01 branch June 17, 2026 23:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant