# dala_dev v0.0.2 - Table of Contents Development tooling for the Dala mobile framework ## Pages - [dala_dev](readme.md) - Guides - [Publishing to TestFlight (iOS)](publishing_to_testflight.md) ## Modules - Server - [DalaDev.Server.ClusterVizLive](DalaDev.Server.ClusterVizLive.md): LiveView for cluster visualization with D3.js. - [DalaDev.Server.DashboardLive](DalaDev.Server.DashboardLive.md) - [DalaDev.Server.DevicePoller](DalaDev.Server.DevicePoller.md): Polls adb and simctl every 2 seconds, broadcasting device state changes via PubSub. - [DalaDev.Server.ElixirLogBuffer](DalaDev.Server.ElixirLogBuffer.md): Holds the last N server-side Elixir log lines in memory so the dashboard can restore them on reconnect. Fed by `DalaDev.Server.ElixirLogger`. - [DalaDev.Server.ElixirLogger](DalaDev.Server.ElixirLogger.md): OTP logger handler that captures Elixir `Logger` output and forwards it to the Dala dev server dashboard. - [DalaDev.Server.Endpoint](DalaDev.Server.Endpoint.md) - [DalaDev.Server.Layouts](DalaDev.Server.Layouts.md) - [DalaDev.Server.LogBuffer](DalaDev.Server.LogBuffer.md): Holds the last N log lines in memory so the LiveView can restore them on reconnect without losing context from before a crash or page refresh. - [DalaDev.Server.LogFilter](DalaDev.Server.LogFilter.md): Pure filter functions for the log stream. Extracted here so they can be unit-tested without mounting a LiveView. - [DalaDev.Server.LogStreamer](DalaDev.Server.LogStreamer.md): Streams logcat from connected Android devices and iOS simulator console, broadcasting parsed lines via PubSub. - [DalaDev.Server.LogStreamerSupervisor](DalaDev.Server.LogStreamerSupervisor.md): Isolated supervisor for LogStreamer. - [DalaDev.Server.ObserverLive](DalaDev.Server.ObserverLive.md): Main Observer dashboard with navigation to specialized views. - [DalaDev.Server.ObserverLive.Applications](DalaDev.Server.ObserverLive.Applications.md): LiveView for applications list display. - [DalaDev.Server.ObserverLive.ETS](DalaDev.Server.ObserverLive.ETS.md): LiveView for ETS tables browser. - [DalaDev.Server.ObserverLive.Load](DalaDev.Server.ObserverLive.Load.md): LiveView for system load display (scheduler usage, I/O stats). - [DalaDev.Server.ObserverLive.Modules](DalaDev.Server.ObserverLive.Modules.md): LiveView for loaded modules display. - [DalaDev.Server.ObserverLive.Ports](DalaDev.Server.ObserverLive.Ports.md): LiveView for ports information display. - [DalaDev.Server.ObserverLive.Processes](DalaDev.Server.ObserverLive.Processes.md): LiveView for process list display with sorting and filtering. - [DalaDev.Server.ObserverLive.System](DalaDev.Server.ObserverLive.System.md): LiveView for system information display. - [DalaDev.Server.ObserverLive.Tracing](DalaDev.Server.ObserverLive.Tracing.md): LiveView for process tracing and message flow analysis. - [DalaDev.Server.Router](DalaDev.Server.Router.md) - [DalaDev.Server.WatchWorker](DalaDev.Server.WatchWorker.md): GenServer that runs the dala.watch loop inside the dala.server process. - [DalaDev.Server.WebLive](DalaDev.Server.WebLive.md): Main web UI layout for dala.web - provides navigation and integration for all dala_dev features in a single interface. - Internals - [DalaDev.ABTesting](DalaDev.ABTesting.md): A/B testing framework for running experiments across mobile device clusters. - [DalaDev.Bench.DeviceObserver](DalaDev.Bench.DeviceObserver.md): Subscribes to `Dala.Device` events on the running app over Erlang distribution and tracks ground-truth screen/app state for the bench. - [DalaDev.Bench.Logger](DalaDev.Bench.Logger.md): Append-only CSV log of bench probe snapshots. - [DalaDev.Bench.Preflight](DalaDev.Bench.Preflight.md): Pre-run checklist for the iOS battery bench. - [DalaDev.Bench.Probe](DalaDev.Bench.Probe.md): Multi-source state probe for the battery bench. - [DalaDev.Bench.Reconnector](DalaDev.Bench.Reconnector.md): Auto-reconnect logic for the bench's BEAM dist connection. - [DalaDev.Bench.Summary](DalaDev.Bench.Summary.md): Post-run analysis of a bench CSV log. - [DalaDev.Benchmark](DalaDev.Benchmark.md): Runtime benchmarking for dala Elixir nodes. - [DalaDev.CITesting](DalaDev.CITesting.md): CI/CD integration for mobile cluster testing. - [DalaDev.ClusterViz](DalaDev.ClusterViz.md): Cluster visualization for dala Elixir nodes. - [DalaDev.Connector](DalaDev.Connector.md): Orchestrates device discovery, tunnel setup, app restart, and node connection. - [DalaDev.CrashDump](DalaDev.CrashDump.md): Parse BEAM crash dumps from devices. - [DalaDev.Debugger](DalaDev.Debugger.md): Advanced debugging tools for remote Elixir nodes. - [DalaDev.Deployer](DalaDev.Deployer.md): Pushes compiled BEAM files from `_build/dev/lib/*/ebin/` to connected devices. - [DalaDev.Device](DalaDev.Device.md): Represents a connected or available device (physical or emulator/simulator). - [DalaDev.Discovery.Android](DalaDev.Discovery.Android.md): Discovers Android devices and emulators via adb. - [DalaDev.Discovery.IOS](DalaDev.Discovery.IOS.md): Discovers iOS simulators via xcrun simctl. - [DalaDev.Emulators](DalaDev.Emulators.md): List, start, and stop Android emulators (AVDs) and iOS simulators. - [DalaDev.Enable](DalaDev.Enable.md): Pure helpers for `mix dala.enable` — extracted for testability. - [DalaDev.Error](DalaDev.Error.md): Standardized error handling for the dala_dev codebase. - [DalaDev.ErrorView](DalaDev.ErrorView.md) - [DalaDev.HotPush](DalaDev.HotPush.md): Connects to already-running device nodes and hot-pushes BEAM modules via RPC. - [DalaDev.IconGenerator](DalaDev.IconGenerator.md): Generates app icons for Android and iOS from either a random robot avatar (using Avatarz) or a provided source image (using Image). - [DalaDev.LogCollector](DalaDev.LogCollector.md): Unified log collection from dala Elixir cluster nodes. - [DalaDev.NativeBuild](DalaDev.NativeBuild.md): Builds native binaries (APK for Android, .app bundle for iOS simulator) for the current Dala project. - [DalaDev.Network](DalaDev.Network.md): Network utilities for dala_dev. - [DalaDev.NetworkDiag](DalaDev.NetworkDiag.md): Network diagnostics for dala Elixir clusters. - [DalaDev.Observer](DalaDev.Observer.md): Remote node observer inspired by `:observer.start()`. - [DalaDev.OtpDownloader](DalaDev.OtpDownloader.md): Downloads and caches pre-built OTP releases from GitHub for Android and iOS simulator. - [DalaDev.Paths](DalaDev.Paths.md): Resolution helpers for paths Dala writes to outside the project tree. - [DalaDev.Profiling](DalaDev.Profiling.md): Performance profiling for dala Elixir nodes using :eprof and :fprof. - [DalaDev.QR](DalaDev.QR.md): Renders QR codes in the terminal using Unicode half-block characters. Uses eqrcode for matrix generation. - [DalaDev.Release](DalaDev.Release.md): Build a signed, App-Store-ready iOS `.ipa` for the current Dala project. - [DalaDev.ScreenCapture](DalaDev.ScreenCapture.md): Capture screenshots and record screen video from mobile devices. - [DalaDev.Tracing](DalaDev.Tracing.md): Distributed tracing for dala Elixir cluster nodes. - [DalaDev.Tunnel](DalaDev.Tunnel.md): Manages port tunnels for Android and physical iOS devices. - [DalaDev.Utils](DalaDev.Utils.md): Shared utility functions used across the dala_dev codebase. ## Mix Tasks - Mix Tasks - [mix dala.battery_bench_android](Mix.Tasks.Dala.BatteryBenchAndroid.md): Builds a benchmark APK, deploys it, and measures battery drain over time. - [mix dala.battery_bench_ios](Mix.Tasks.Dala.BatteryBenchIos.md): Builds a benchmark app, deploys it to a physical iPhone/iPad, and measures battery drain over time. - [mix dala.bench](Mix.Tasks.Dala.Bench.md): Run performance benchmarks on dala Elixir nodes. - [mix dala.cache](Mix.Tasks.Dala.Cache.md): Inspects every cache `mix dala.*` writes to outside the project tree, and (with `--clear`) deletes them. Distinct from `mix clean` (build artifacts in `_build/`) and `mix deps.clean` (deps in `deps/`) — this targets caches in your home directory that survive across projects. - [mix dala.connect](Mix.Tasks.Dala.Connect.md): Discovers connected Android and iOS devices, sets up USB tunnels, restarts the app on each device, waits for Erlang nodes to come online, then drops into an IEx session connected to all of them. - [mix dala.debug](Mix.Tasks.Dala.Debug.md): Interactive debugging tools for remote Elixir nodes. - [mix dala.deploy](Mix.Tasks.Dala.Deploy.md): Compiles the project then pushes BEAM files to all connected Android devices and iOS simulators. - [mix dala.devices](Mix.Tasks.Dala.Devices.md): Scans for connected Android devices (via adb) and iOS simulators/physical devices (via xcrun simctl / ideviceinfo) and prints their status. - [mix dala.doctor](Mix.Tasks.Dala.Doctor.md): Checks your environment, project configuration, OTP caches, and connected devices, reporting any issues with specific fix instructions. - [mix dala.emulators](Mix.Tasks.Dala.Emulators.md): Manage virtual devices: Android emulators (AVDs) and iOS simulators. - [mix dala.enable](Mix.Tasks.Dala.Enable.md): Enables one or more optional Dala features by patching `mix.exs`, manifest files, and generating any required source files. - [mix dala.gen.live_screen](Mix.Tasks.Dala.Gen.LiveScreen.md): Generates a paired `Dala.Screen` and Phoenix `LiveView` for LiveView mode apps. - [mix dala.icon](Mix.Tasks.Dala.Icon.md): Generates platform icons for the current Dala project. - [mix dala.install](Mix.Tasks.Dala.Install.md): Runs first-time setup for a Dala project generated by `mix dala.new`. - [mix dala.logs](Mix.Tasks.Dala.Logs.md): Collects, streams, and exports logs from dala Elixir cluster nodes. - [mix dala.observer](Mix.Tasks.Dala.Observer.md): Start the Dala Observer web interface for remote node monitoring. - [mix dala.provision](Mix.Tasks.Dala.Provision.md): Registers your app's bundle ID with Apple and downloads an iOS provisioning profile. - [mix dala.publish](Mix.Tasks.Dala.Publish.md): Uploads a release-signed `.ipa` to App Store Connect using `xcrun altool` with App Store Connect API key authentication. The build then appears in TestFlight after Apple finishes processing (typically 5-15 minutes). - [mix dala.publish.android](Mix.Tasks.Dala.Publish.Android.md): Uploads a release-signed `.aab` to Google Play Console using the Google Play Developer API. - [mix dala.push](Mix.Tasks.Dala.Push.md): Compiles the project and hot-pushes updated BEAM modules to all running Android and iOS devices — no app restart. - [mix dala.release](Mix.Tasks.Dala.Release.md): Builds a release-signed iOS `.ipa` ready to upload to App Store Connect. - [mix dala.release.android](Mix.Tasks.Dala.Release.Android.md): Builds a release-signed Android App Bundle (.aab) ready to upload to Google Play. - [mix dala.routes](Mix.Tasks.Dala.Routes.md): Walks all `lib/**/*.ex` files and checks that every module passed to `push_screen/2`, `reset_to/2`, or `pop_to/2` resolves to a loadable module. - [mix dala.screen](Mix.Tasks.Dala.Screen.md): Capture screenshots, record screen video, or start live screen preview from connected mobile devices. - [mix dala.server](Mix.Tasks.Dala.Server.md): Starts the Dala dev server and opens it in the browser. - [mix dala.trace](Mix.Tasks.Dala.Trace.md): Interactive distributed tracing UI for dala Elixir clusters. - [mix dala.watch](Mix.Tasks.Dala.Watch.md): Watches `lib/` for source changes and automatically compiles + hot-pushes updated modules to all running Android and iOS devices. - [mix dala.watch_stop](Mix.Tasks.Dala.WatchStop.md): Stops a running `mix dala.watch` process. - [mix dala.web](Mix.Tasks.Dala.Web.md): Start the Dala Web UI - a comprehensive web interface for all dala_dev features.