Skip to content

feat(tui,mobile): add Extra Dependencies installer + fix SDK script i…#42

Open
awrobel-gd wants to merge 1 commit into
mainfrom
40-extra-deps-scripts
Open

feat(tui,mobile): add Extra Dependencies installer + fix SDK script i…#42
awrobel-gd wants to merge 1 commit into
mainfrom
40-extra-deps-scripts

Conversation

@awrobel-gd

Copy link
Copy Markdown
Contributor

…dempotency

Settings → Extra Dependencies: a section listing on-demand provisioning scripts (currently the mobile SDKs) with their versions and a one-click Install button that streams progress/logs. Installing runs the in-image script via docker exec into the backend container, so the script stays the single source of truth for what gets installed.

  • tui/extra_deps.py: data model (ExtraDependencyScript catalog); adding another installer is a single entry (Open/Closed).
  • local_env.exec_in_backend(): streamed docker exec <backend> ... helper, reusing the existing subprocess streamer.
  • SettingsScreen: new section, Install handler, output log; refuses early when containers are down.

Also fix init-mobile-sdk.sh idempotency: the Android/Flutter "already done?" checks keyed on the FIRST artifact each block creates (sdkmanager binary / flutter checkout), both of which exist before licenses + the heavy package install run. A failure mid-install left the component looking done, so a re-run skipped it instead of finishing it. Switch to a completion-marker written only after all steps succeed; set -e guarantees a partial run leaves no marker and is retried in full, while the heavy downloads stay internally guarded so a retry reuses what's present.

…dempotency

Settings → Extra Dependencies: a section listing on-demand provisioning
scripts (currently the mobile SDKs) with their versions and a one-click
Install button that streams progress/logs. Installing runs the in-image
script via `docker exec` into the backend container, so the script stays
the single source of truth for what gets installed.

- tui/extra_deps.py: data model (ExtraDependencyScript catalog); adding
  another installer is a single entry (Open/Closed).
- local_env.exec_in_backend(): streamed `docker exec <backend> ...` helper,
  reusing the existing subprocess streamer.
- SettingsScreen: new section, Install handler, output log; refuses early
  when containers are down.

Also fix init-mobile-sdk.sh idempotency: the Android/Flutter "already
done?" checks keyed on the FIRST artifact each block creates (sdkmanager
binary / flutter checkout), both of which exist before licenses + the
heavy package install run. A failure mid-install left the component
looking done, so a re-run skipped it instead of finishing it. Switch to a
completion-marker written only after all steps succeed; `set -e` guarantees
a partial run leaves no marker and is retried in full, while the heavy
downloads stay internally guarded so a retry reuses what's present.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] For mobile projects, we need additional onboarding wizard dialog to install extra dependencies for the user in sandbox caches.

1 participant