initSplitDeploynow writes exactly one run configuration — TeamCode fast deploy — and nothing else.- Removed all Android Studio / IntelliJ file manipulation: the
.idea/workspace.xmlrun-configuration scrubbing and the watch-feature base-manifest hack are gone. The plugin no longer reads or writes any IDE file other than the single.run/config it generates. The base manifest reverts to the plain stub, so oneinstallFullAppis needed after upgrading from 0.2.4/0.2.5.
- The generated run configurations are now TeamCode (full install — the
familiar stock entry name, backed by the safe
installFullApp) and TeamCode fast deploy. The Robot full install entry from earlier 0.2.x versions is removed on the nextinitSplitDeploy.
- Permanently stop Android Studio from auto-creating an "FtcBase" Android App
run configuration after every Gradle sync. The generated FtcBase manifest
stub now declares the watch hardware
uses-feature, which makes the IDE's post-sync config creator skip the module (it skips watch-required app modules with no launcher activity in their own manifest).uses-featureentries are Play Store filtering metadata only: adb/PackageInstaller installs ignore them and nothing changes at runtime on the Control Hub or a phone Robot Controller. The base manifest changes, so oneinstallFullAppis required after upgrading.
- Actually hide the blocked AGP device tasks from the grouped task listing: AGP assigns the "install" group after plugin configuration, so the demotion now runs once all projects are evaluated.
- Block AGP's raw device tasks (
installDebug,installRelease,uninstallAll, ...) on every module. They bypassed all split-deploy safety (installDebugreplaces the app with a base APK that has no TeamCode split); IDEs list them as runnable entry points. They now fail fast and point toinstallFullApp/deployTeamCode, and are hidden from the grouped task listing.
initSplitDeploywrites only the two everyday run configurations (TeamCode fast deploy, Robot full install) and deletes the doctor and rollback entries generated by older versions (both remain available as Gradle tasks).initSplitDeploynow also removes Android Studio's auto-created Android App run configurations from.idea/workspace.xmland selects TeamCode fast deploy, keeping the run dropdown to exactly the two supported entries. Run it while Android Studio is closed for the cleanup to stick.
- Replace closure tasks with typed, configuration-cache-safe Gradle tasks.
- Add exact adb device selection and actionable offline/unauthorized errors.
- Make full install non-destructive by default, grant runtime permissions, and refuse the explicit uninstall fallback over network adb.
- Record and validate per-device base compatibility fingerprints, including resolved external dependency artifacts.
- Back up the installed TeamCode split before transactional replacement; clean up or abandon every failed PackageInstaller session and verify backup hashes.
- Add
rollbackTeamCodeand the read-onlysplitDeployDoctorpreflight task. - Wait for the FTC SDK ready marker after restart instead of reporting success as soon as Android launches the process.
- Block matching top-level classes between repository TeamCode and OnBot Java before both full and fast installs by default.
- Avoid rewriting the generated base manifest when its contents are unchanged.
- Add parser, hashing, state, and duplicate-detection tests plus CI checks.
- Initial settings plugin, generated base application, TeamCode dynamic feature, full install, and partial split deployment workflow.