Skip to content

Feature/dual engine - #110

Closed
VV-B0Y wants to merge 4 commits into
zalexdev:mainfrom
VV-B0Y:feature/dual-engine
Closed

VV-B0Y wants to merge 4 commits into
zalexdev:mainfrom
VV-B0Y:feature/dual-engine

Conversation

@VV-B0Y

@VV-B0Y VV-B0Y commented Sep 20, 2026

Copy link
Copy Markdown

This pull request implements the groundwork for dual-engine (Root + Rootless) coexistence in the Stryker app, allowing users to install and use both engines side by side. The changes cover onboarding, dashboard UI, engine selection, and drawer/tool gating to support simultaneous chroot and rootless VM usage. The onboarding flow now supports multi-select engine installation, the dashboard displays both engines with independent controls, and runtime logic and UI gating have been updated to reflect per-engine availability and status.

Dual-engine model and runtime logic:

  • Added rootAvailable and chrootMounted state tracking to MainActivity, and updated engine status refresh logic to distinguish between root, chroot, and VM availability. Drawer and fragment gating now lock tools based on the correct per-engine state, with user-friendly messages for each case. [1] [2] [3] [4] [5] [6] [7]

Onboarding flow improvements:

  • Refactored onboarding to allow multi-select engine installation using independent checkboxes for chroot and rootless VM. The onboarding flow dynamically adds install steps for each selected engine, and advances even if root is unavailable but rootless is supported. [1] [2] [3] [4] [5] [6]

Dashboard and UI updates:

  • The dashboard now displays two engine cards (chroot and VM) with independent status and controls, and includes an engine selector toggle. The final onboarding slide reflects the presence of both engines and provides tailored instructions.

Launch flow and engine selection:

  • Rewrote the launch flow to support both engines: it now brings up the active engine if installed, falls back to the other if necessary, and lands on the dashboard if either engine is available. The logic ensures correct routing for first-run, incomplete installs, and engine switching.

Documentation:

  • Added a detailed design and migration plan for dual-engine coexistence to PLAN.md, outlining the problem, goals, design, and verification steps.

Jerome added 4 commits September 14, 2026 23:19
When 'iw dev' shows no interface after USB passthrough, look up the passed-through device's VID:PID in ChipsetDb and include the chipset name, driver, and notes in the DRIVER MISSING message instead of a generic hint.
- Only describe devices actually passed through (usb.isAttached).
- Only append entries whose ChipsetInfo kind is WIFI (don't describe Ethernet/broadband dongles in a Wi-Fi error).
- Add the trailing period only when the hint doesn't already end with one.
- EngineType: add availability helpers (rootAvailable/chrootAvailable/
  rootlessAvailable) distinct from the active engine; Core gains
  chrootInstalled()/vmInstalled()
- Onboarding: SlideEngineSelect becomes two independent checkboxes;
  AppIntroActivity.applyEngineFlow(Set<EngineType>) installs every
  selected engine; add jumpTo(Page) and fix the no-root -> rootless
  fallback so it lands on the VM install instead of skipping it
- Dashboard: runtime selector (chroot/VM toggle) + dedicated chroot card
  with mount/unmount, alongside the VM card
- MainActivity: unified dual-engine launch flow; drawer gating now locks
  root-only tools on !root, shared tools on active-engine-not-ready
- Slide6Final copy reflects both engines

See PLAN.md.
@VV-B0Y VV-B0Y closed this Sep 20, 2026
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