Follow-up to the feature/OrcaSonar review. Scopes the new behavior to the
OrcaSonar agent, fixes several AMS-sync and lifecycle bugs, and makes the
MQTT tests run in CI. Non-OrcaSonar agents keep their existing behavior.
## Changes
Discovery
- Gate the background SSDP scan to a configured OrcaSonar machine instead of
running for every non-BBL profile; drive discovery on demand from the
machine-select popup and back off idle rounds from 5s to 60s.
- Add NSLocalNetworkUsageDescription and NSBonjourServices to both macOS
Info.plist templates.
AMS sync
- Resolve id-less printer-set trays by material type in get_ams_cobox_infos
and the sidebar badge loop, matching sync_ams_list, so combo arrays and
badges stay aligned.
- Keep a printer-set tray that resolved by type out of the "unknown or
incompatible filaments" dialog.
AMS device UI
- Gate the "Empty" tray classification, and the editable temperature fields,
to the OrcaSonar agent; Bambu keeps "?" and read-only presets.
- Validate AMS material temps on confirm: reject out-of-range values and
min > max before the command is sent.
Storage tab
- Bind the show/hide handler on the panel's ancestors (StoragePanel and
MonitorPanel) and unbind on destruction, so the Bambu file system stops
when the tab is left.
Transport
- Load /etc/ssl/cert.pem on macOS in add_platform_root_certificates, after
set_default_verify_paths.
- Release lifecycle_mutex before start()'s connect wait so stop() can cancel
the attempt and signal completion instead of stalling the UI thread.
Localization
- Add OrcaFilesPanel.cpp to list.txt and regenerate the catalogs.
## Tests
- Un-hide the loopback MockBroker integration tests (ephemeral port, no
network) so ctest registers and runs them.
- Mock broker tracks SUBSCRIBE/UNSUBSCRIBE and delivers push_report only to a
subscribed topic; the reconnect test asserts the re-SUBSCRIBE.
- Add bbl empty-tray cases, an AMS combo-alignment case, and unknowns
assertions to the AMS sync tests.
Resolve the filament list's printer model from the agent-reported model id or the selected printer profile, so the AMS Materials Setting dropdown and its Confirm button work on OrcaSonar. Third-party trays pre-fill and allow editing their temps, and the popup's initial selection no longer overwrites them.
Render explicitly-empty trays as "Empty" instead of "?" using a wire-derived DevAmsTray::is_empty, while keeping the slot editable.
Hide the flow-dynamics K/N controls for non-Bambu agents — tile, dialog, validation and sends — with Bambu behavior unchanged.
Tests cover model resolution, the K/N gate and empty-tray classification.