Skip to content

feat(plugins): Add Sideload Plugin System with External Repo Support#313

Open
test01203 wants to merge 2 commits into
ProdigyV21:mainfrom
test01203:feature/sideload-plugins
Open

feat(plugins): Add Sideload Plugin System with External Repo Support#313
test01203 wants to merge 2 commits into
ProdigyV21:mainfrom
test01203:feature/sideload-plugins

Conversation

@test01203
Copy link
Copy Markdown

@test01203 test01203 commented Jun 4, 2026

This PR implements the Sideload Plugin System with External Repo Support, and addresses all recent developer feedback for a clean merge into the main branch.

Key Changes & Fixes:

  1. Clean PR Environment: All plugin-related code (ExternalExtensionRunner, PluginManager, UI views) has been correctly staged.
  2. Build & Dependencies Fixed:
    • Provided the missing quickjs-kt-android-1.0.5-nuvio.aar in app/libs/.
    • Resolved Dagger/MissingBinding and MergeJavaResWorkAction conflicts.
    • Updated build.gradle.kts to use compilerOptions instead of the deprecated kotlinOptions.
    • Project successfully compiles under assembleSideloadDebug with zero errors.
  3. Fixed TV Series Episode Identification:
    • Rewrote the findEpisode() logic in ExternalExtensionRunner.kt.
    • Added robust fallbacks for CloudStream providers that fail to explicitly assign season/episode numbers. The system now falls back to string-title matching (e.g., "Episode 3") and absolute indexing when necessary.

Ready for review and merge!

@test01203
Copy link
Copy Markdown
Author

I've manually included the missing .aar file in the latest commit. Please approve the CI run for the new commit.

@ProdigyV21
Copy link
Copy Markdown
Owner

Great feature, can really improve ARVIO, but before merge we need it cleaned up and Play behavior made explicit.

Required before merge:

  1. Fix the Play build. Right now Play compile fails because shared/main classes inject sideload-only classes like PluginManager and ProfileDataStoreFactory. Add proper shared interfaces or Play stubs so both Play and Sideload flavors compile.

  2. Decide and implement the Play behavior clearly:

    • either enable plugins in Play too, knowing the policy risk,
    • or use a limited/allowlisted Play mode,
    • or keep runtime loading sideload-only while Play shows the UI disabled/hidden.
      But it should not accidentally half-compile or reference sideload-only code.
  3. Clean formatting. git diff --check currently fails with lots of trailing whitespace/new blank-line issues.

  4. Verify both builds:

    • ./gradlew :app:compilePlayDebugKotlin
    • ./gradlew :app:compileSideloadDebugKotlin

After those are fixed, I think this can be a very strong feature.

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.

2 participants