Patches assets/js/app.js and lib/<web>/components/layouts/root.html.heex
to wire window.mob through a LiveView phx-hook. Output matches
mix mob.new --liveview.
Mob's native shell injects window.mob into every WebView for direct
JS↔native interop (camera, audio, sensors). The LV bridge patches
here replace that injection on mount with a LiveView-routed shim,
so window.mob.send goes through pushEvent/handle_event instead
of straight to native code. Useful when you want server-side BEAM
visibility into JS messages. Skip this if your project isn't using
LiveView (e.g. Hologram, vanilla controllers) — the native injection
alone is what you want.
Options
--no-live-view— skip the patches entirely with a notice. For Hologram-only or non-Phoenix hosts.
Other orchestrator flags (--no-ios, --no-android, --local,
--python, --host-url) are accepted but inert here — declared in
the schema only so mix mob.adopt can forward its full argv
without Igniter rejecting unknown options.
Refusal (LV mode)
Refuses (via Igniter.add_issue/2) when assets/js/app.js is missing
or doesn't contain a new LiveSocket(...) call, or when the
root.html.heex layout is missing or has no <body> tag. The pre-1.0
contract is "blessed shape only" — --no-live-view is the escape
hatch for everything else.
Idempotency
Both MobDev.Adopt.Patcher.inject_mob_hook/1 and
inject_mob_bridge_element/1 short-circuit when their markers
(MobHook / mob-bridge) are already present.
Typically called by mix mob.adopt, not directly.