Skip to content

Add resilient updates and warm CloudDrive artwork#52

Merged
ModerRAS merged 1 commit into
masterfrom
release/static-update-manifest-2.2.0
Jul 22, 2026
Merged

Add resilient updates and warm CloudDrive artwork#52
ModerRAS merged 1 commit into
masterfrom
release/static-update-manifest-2.2.0

Conversation

@ModerRAS

@ModerRAS ModerRAS commented Jul 22, 2026

Copy link
Copy Markdown
Owner

Summary

  • check the fixed GitHub Release asset latest.json before using the rate-limited Releases API fallback
  • generate latest.json beside every stable release APK with explicit version code and download metadata
  • warm lazy CloudDrive WebDAV poster parent directories before MLIP artwork download
  • preserve existing cached poster paths when a refresh cannot replace them
  • share the CloudDrive endpoint predicate with playback warmup
  • bump the release base from 2.1.0 to 2.2.0

Validation

  • ./gradlew --console=plain test :app:assembleDebug
  • BUILD SUCCESSFUL
  • focused AppUpdateRepositoryImpl, MlipLibraryIndexImporter, PlaybackHttpRequestResolver, and settings tests
  • git diff --check

Version decision

Minor release: latest.json is a new externally consumed update contract. The latest stable release is v2.1.603, so the new base is 2.2.0 and CI will supply the patch from github.run_number.

Device note

Existing installations with missing MLIP posters need one rescan after installing this release. HK1 ADB remains unauthorized; app data was not cleared.

Summary by CodeRabbit

  • New Features

    • Added an update manifest to releases for faster and more reliable update checks.
    • Update checks now read the manifest first, with automatic fallback to GitHub Releases.
    • Added support for explicit version codes in update metadata.
    • Improved artwork downloads from cloud storage by refreshing parent directories when needed.
    • Preserved cached artwork paths during library reimports.
  • Improvements

    • Updated the default application version to 2.2.0.
    • Clarified the update-checking status message.

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2bad97c8-1636-41e3-b275-6063f3abdd7c

📥 Commits

Reviewing files that changed from the base of the PR and between 3a098fd and 57deb89.

📒 Files selected for processing (10)
  • .github/workflows/ci.yml
  • app/build.gradle.kts
  • core/model/src/main/kotlin/com/miruplay/tv/model/CloudDriveAutomation.kt
  • core/model/src/main/kotlin/com/miruplay/tv/model/SettingsSectionDisplayConventions.kt
  • core/model/src/test/kotlin/com/miruplay/tv/model/SettingsSectionDisplayConventionsTest.kt
  • data/src/main/kotlin/com/miruplay/tv/data/repository/AppUpdateRepositoryImpl.kt
  • data/src/test/kotlin/com/miruplay/tv/data/repository/AppUpdateRepositoryImplTest.kt
  • player-core/src/main/kotlin/com/miruplay/tv/player/PlaybackHttpRequestResolver.kt
  • scanner/src/main/kotlin/com/miruplay/tv/scanner/MlipLibraryIndexImporter.kt
  • scanner/src/test/kotlin/com/miruplay/tv/scanner/MlipLibraryIndexImporterTest.kt

📝 Walkthrough

Walkthrough

Changes

App update delivery

Layer / File(s) Summary
Release manifest generation
.github/workflows/ci.yml, app/build.gradle.kts
The release workflow generates and uploads latest.json with APK metadata, while the default application version base changes to 2.2.0.
Manifest-first update fetching
data/src/main/kotlin/.../AppUpdateRepositoryImpl.kt, data/src/test/kotlin/.../AppUpdateRepositoryImplTest.kt
Update checks read the manifest first, fall back to the GitHub releases API, parse explicit version codes, and test headers, proxy routing, fallback behavior, and errors.
Update status wording
core/model/src/main/kotlin/.../SettingsSectionDisplayConventions.kt, core/model/src/test/kotlin/.../SettingsSectionDisplayConventionsTest.kt
The checking status now says that the update manifest is being read, with the expected text updated in tests.

WebDAV artwork handling

Layer / File(s) Summary
Shared WebDAV endpoint detection
core/model/src/main/kotlin/.../CloudDriveAutomation.kt, player-core/src/main/kotlin/.../PlaybackHttpRequestResolver.kt
Endpoint detection is centralized in a model extension and used by playback request resolution.
Artwork parent warming and preservation
scanner/src/main/kotlin/.../MlipLibraryIndexImporter.kt, scanner/src/test/kotlin/.../MlipLibraryIndexImporterTest.kt
MLIP imports list artwork parent directories for the default cloud-drive endpoint before streaming and preserve cached poster paths, with corresponding test coverage.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant App as AppUpdateRepositoryImpl
  participant Manifest as latest.json
  participant GitHub as GitHub releases API

  App->>Manifest: Request update manifest
  Manifest-->>App: Return release metadata
  App->>GitHub: Request latest release on manifest failure
  GitHub-->>App: Return release metadata
  App->>App: Compare version name and code
Loading

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/static-update-manifest-2.2.0

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Checkov (3.3.8)
.github/workflows/ci.yml

Traceback (most recent call last):
File "/usr/local/bin/checkov", line 2, in
from checkov.main import Checkov
ModuleNotFoundError: No module named 'checkov'

app/build.gradle.kts

Traceback (most recent call last):
File "/usr/local/bin/checkov", line 2, in
from checkov.main import Checkov
ModuleNotFoundError: No module named 'checkov'


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ModerRAS
ModerRAS merged commit 2db9a0a into master Jul 22, 2026
3 of 4 checks passed
@ModerRAS
ModerRAS deleted the release/static-update-manifest-2.2.0 branch July 22, 2026 13:49
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