Skip to content

[codex] Support project iOS Swift sources#6

Closed
dl-alexandre wants to merge 1 commit into
GenericJam:masterfrom
dl-alexandre:meshx-ios-swift-sources
Closed

[codex] Support project iOS Swift sources#6
dl-alexandre wants to merge 1 commit into
GenericJam:masterfrom
dl-alexandre:meshx-ios-swift-sources

Conversation

@dl-alexandre

@dl-alexandre dl-alexandre commented May 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add mob.exs :ios_swift_sources support for project-provided iOS Swift files
  • normalize configured source paths to absolute paths and reject comma-containing entries
  • pass -Dproject_swift_sources into both iOS simulator and device Zig build calls

Why

MeshX currently carries a downstream mob_dev patch so its iOS app build can compile project Swift bridge sources alongside Mob Swift sources. This makes that behavior a generic mob.exs extension point instead of a MeshX-specific dependency patch.

MeshX integration evidence

  • MeshX downstream patch path remains clean: mix meshx.patch_deps --check reports the local patches already applied for the locked dependency versions.
  • MeshX iOS harness device build succeeds with the project Swift sources included.
  • MeshX Android-to-iOS responder hardware smoke passes on SM-T577U -> iPad12,1, covering Android beacon cue -> iOS responder serving MX -> Android MFQ/MFR fetch and MX envelope parse.

Validation

  • mix test test/mob_dev/native_build_test.exs
  • git diff --check

@dl-alexandre
dl-alexandre marked this pull request as ready for review May 17, 2026 16:42
@dl-alexandre

dl-alexandre commented May 17, 2026

Copy link
Copy Markdown
Contributor Author

MeshX integration evidence is now ready for maintainer review:

  • Downstream patch path verifies cleanly with mix meshx.patch_deps --check.
  • MeshX iOS harness device build succeeds with project Swift sources included.
  • Physical SM-T577U -> iPad12,1 responder smoke passes: Android beacon cue -> iOS MX responder -> Android MFQ/MFR fetch -> MX envelope parse.

Current visible state from the requesting token: open, non-draft, mergeable, GitGuardian success, no visible review submissions or inline review comments, merge-state UNSTABLE. This handoff issue comment is present. The requesting token has only READ permission on GenericJam/mob_dev, so a GenericJam maintainer needs to perform the merge/release step before MeshX can migrate off its downstream patch.

dl-alexandre added a commit to dl-alexandre/meshx that referenced this pull request May 18, 2026
- ble-lab-cheat-sheet.md: integrate the capture-hybrid-run.sh helper into
  the launch patterns and validation-day order; flag the helper as the
  preferred path for reproducible runs.
- upstream_mob_migration_checklist.md: new copy-paste-runnable migration
  doc for when GenericJam/mob_dev#6 + GenericJam/mob_new#5 land. Expands
  the high-level "Post-Merge MeshX Migration Checklist" section in
  docs/upstream_mob_patches.md into the exact dep bump → config migration
  → patch removal → verification → audit-flip sequence.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@GenericJam

Copy link
Copy Markdown
Owner

Thanks @dl-alexandre — landed this to master as 78426e8 with your authorship preserved. The branch was about 4 days behind master so it needed a rebase against the native_build.ex refactor (tflite removal, igniter extraction, etc.), but git's 3-way merge actually applied your patch cleanly thanks to stable context lines around the iOS build functions. No manual conflict resolution needed.

CHANGELOG entry added in 514add7.

Validation:

  • 1394/1394 tests pass (including your 3 new __ios_swift_sources_arg__/1 cases)
  • mix format --check-formatted clean
  • mix credo --strict clean (2498 mods/funs, 0 issues)
  • mix compile --warnings-as-errors clean

The :ios_swift_sources pattern fits well with autolinking work we're scoping for the plugin system — your normalizer (comma-rejection at the boundary, Path.expand to absolute, accept binary/list/nil) is exactly the shape we'll generalize when aggregating across plugin manifests. Closing this PR since the commit is on master. Much appreciated.

@GenericJam GenericJam closed this May 20, 2026
GenericJam added a commit that referenced this pull request May 29, 2026
Adds MobDev.Plugin.Report.with_vetting/2 that runs each activated
plugin's source tree through Audit.audit_plugin/2 (Phase 2 #1) and
the validator's swift-imports + Android permissions checks (Phase 2
#3). The result is attached to each row as a :vetting summary.

render/1 detects rows with vetting and adds a VETTING column whose
shape is:

- "clean"       — zero findings, zero capability errors
- "1H 2M"       — compact audit summary (zero categories omitted)
- "caps:2"      — capability errors only
- "caps:2 1M"   — combined

The Mix task now passes Mix.Project.deps_paths() through so
with_vetting/2 can locate each plugin's source dir. Rows without a
dir, or :installed-not-activated rows, keep vetting=nil and render
as a single dash — no false-positive findings against plugins the
host isn't actually using.

+5 focused tests on the rendering shape. Closes Phase 2 #6 of
plugin_extraction_plan.md.
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