Skip to content

Add Find Node buzzer action#1973

Draft
RCGV1 wants to merge 3 commits into
meshtastic:mainfrom
RCGV1:codex/find-node-buzzer
Draft

Add Find Node buzzer action#1973
RCGV1 wants to merge 3 commits into
meshtastic:mainfrom
RCGV1:codex/find-node-buzzer

Conversation

@RCGV1

@RCGV1 RCGV1 commented Jun 20, 2026

Copy link
Copy Markdown
Member

What changed?

  • Adds a Find Node action under Tools for connected nodes that advertise DeviceMetadata.hasBuzzer.
  • Sends AdminMessage.find_node_request and handles find_node_response results for started, stopped, no buzzer, and buzzer disabled states.
  • Updates generated Swift protobufs and the protobufs submodule to the Find Node protobuf contract.
  • Polishes the action UI with a native SwiftUI card, active countdown, stop/restart controls, and reduced-motion support.
  • Removes debug-only metadata refresh controls from the Find Node surface.
  • Avoids a hidden timezone set_config write during connect sync and improves BLE reconnect behavior by waiting for poweredOn and retrieving cached peripherals.

Related PRs:

Why did it change?

Firmware now exposes a dedicated Find Node admin command so the phone can make the connected node buzz without overloading input events or ringtone paths. The app needs the matching generated protobufs, metadata capability gating, and response handling so users only see the action on supported nodes and get clear feedback when firmware declines it.

The connect-sync change avoids sending an unrelated full DeviceConfig write just because tzdef is empty, which can cause unnecessary firmware config reload behavior while the app is still syncing.

How is this tested?

  • Built clean PR worktree with xcodebuild -workspace /tmp/Meshtastic-Apple-findnode-build/Meshtastic.xcworkspace -scheme Meshtastic -configuration Debug -destination 'platform=iOS Simulator,id=DE3343B3-1E9D-4C2D-9AFE-B50AC465BEBA' -derivedDataPath /tmp/Meshtastic-Apple-findnode-build/DerivedData CODE_SIGNING_ALLOWED=NO build.
  • Result: BUILD SUCCEEDED.
  • Swift protobufs regenerated from protobuf submodule commit 6566cd61812af44c5a3e77f01db8f72de0a1020a.

Known local build warnings were pre-existing/environmental: SwiftLint command not installed, duplicate compile-source warnings for existing files, and AppIntents metadata extraction skipped.

Screenshots/Videos (when applicable)

UI was manually iterated during local device testing; no final screenshot is attached in this PR body.

Checklist

  • My code adheres to the project's coding and style guidelines.
  • I have conducted a self-review of my code.
  • I have commented my code, particularly in complex areas.
  • I have verified whether these changes require updates to the in-app documentation under docs/user/ or docs/developer/, and updated accordingly (see copilot-instructions.md for the view → doc page mapping). If no doc update is needed, add the skip-docs-check label.
  • I have tested the change to ensure that it works as intended.

@RCGV1 RCGV1 added the skip-docs-check Use this label to skip the automatic docs audit label Jun 20, 2026
@garthvh

garthvh commented Jun 23, 2026

Copy link
Copy Markdown
Member

Can't merge until the protobufs are finalized

@garthvh
garthvh marked this pull request as draft June 27, 2026 07:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-docs-check Use this label to skip the automatic docs audit

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants