feat(studio,agent): mDNS auto-discovery for WiFi physical devices#86
Merged
feat(studio,agent): mDNS auto-discovery for WiFi physical devices#86
Conversation
Two-sided change so Studio can find physical iOS/Android devices on
the LAN without manual IP entry.
Agent (flutter_probe_agent v0.7.0):
- New dep: bonsoir ^5.1.10
- When started in WiFi mode (PROBE_WIFI=true), advertises itself as
_flutterprobe._tcp with TXT records {version, port}. Localhost
deployments skip mDNS entirely so simulator-only apps pay zero
overhead.
- Token is deliberately NOT in TXT records — anyone on the LAN
could read it. Users still paste the token from PROBE_TOKEN logs.
Studio:
- New dep: github.com/grandcat/zeroconf v1.0.0
- New file studio/wifi_discovery.go owns the browse loop. Discovered
devices stream out via the wifi:device-found Wails event with dedup
on host:port.
- New Wails methods: StartWiFiDiscovery, StopWiFiDiscovery,
ConnectWiFi(host, port, token).
- Frontend gets a WiFi button in the toolbar that opens a modal
listing discovered devices, with a token input that fires
ConnectWiFi on submit.
Compatibility: Studio v0.7.0 only discovers agents v0.7.0+. Older
agents continue to work over USB through the existing Connect path.
efa245e to
1d02ff7
Compare
Merged
pbertsch
added a commit
that referenced
this pull request
May 2, 2026
Bumps VERSION, vscode extension, wiki current-version reference, and landing-page badge to 0.7.0. Renames the CHANGELOG [Unreleased] section to [0.7.0] - 2026-05-02 and records the entries from PRs #84, #85, #86. flutter_probe_agent already at 0.7.0 (bumped in PR #86, includes the mDNS advertising change). Tag v0.7.0 after merge to trigger: - GitHub release workflow (Go binaries) - pub.dev publish workflow (flutter_probe_agent) - Homebrew tap formula update
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two-sided change so Studio can find physical iOS/Android devices on the local network without manual IP entry. Pairs with PR #85 (USB physical-device support) to give Studio its full physical-device story for v0.7.0.
Agent (
flutter_probe_agentv0.7.0)bonsoir: ^5.1.10PROBE_WIFI=true), advertises itself as_flutterprobe._tcpwith TXT records{version, port}. Localhost-bound deployments skip mDNS entirely so simulator-only apps pay zero overhead.PROBE_TOKEN=log lines.Studio
github.com/grandcat/zeroconf v1.0.0studio/wifi_discovery.goowns the browse loop. Discovered devices stream out via thewifi:device-foundWails event with dedup onhost:port.StartWiFiDiscovery,StopWiFiDiscovery,ConnectWiFi(host, port, token).innerHTML) for agent-supplied strings — agent name/host/version are user-controlled within the LAN trust boundary.Compatibility
Studio v0.7.0 only discovers agents
flutter_probe_agentv0.7.0+. Older agents continue to work over USB through the existingConnectpath — no regression.Release coordination
This PR ships changes to a published Dart package. After merge:
dart pub publishforflutter_probe_agentv0.7.0 (.github/workflows/publish-pub-dev.yml).pubspec.yaml(rebuild required) and their Studio binary.Test plan
go build ./...— root module cleango test ./...— full Go suite greencd studio && go build ./... && go vet ./...cleancd probe_agent && dart analyze lib/— no issuescd probe_agent && flutter test— 13/13 passcd probe_agent && dart pub publish --dry-run— passes (warning only about uncommitted state during local check)cd studio/frontend && tsc --noEmitcleanPROBE_WIFI=true, open Studio, click 📡, see device discovered, paste token, connect, see live screen