Repository navigation
aetherd M4: migrate desktop utility adapters to typed requests #6614
Copy link
Copy link
Closed
Labels
claude-activeAetherClaude is actively working on this issueAetherClaude is actively working on this issue
Description
Scope
Continue the accepted aetherd RFC (#3849) and #5262 M4 with one consolidated desktop/automation adapter cleanup. Start from upstream/main 616d3ba. Move the selected Flex command encoders below IRadioBackend and route callers through typed, session-fenced requests.
Included
- Identity/automation: WSPR callsign and TX-waterfall setup; a separate temporary radio-only station override that never persists saved client identity, with ownership/revision/session fencing and truthful dispatch results.
- Spots: typed add/remove/clear/trigger, both queued builders and manual/dialog callers. Preserve rate limiting, deduplication, passive/local and N1MM/TCI/memory namespaces. Invalidate pre-clear and old-session queue entries; tolerate reentrant clear/enqueue/disconnect.
- Physical outputs: the five existing lineout/headphone/front-speaker gain/mute operations. Preserve ANAN native lineout, repeated same-value reapply, caller-specific optimistic UI behavior, and the distinct MIDI/PC-audio routing policy.
- Pan utilities: existing band/segment zoom and pan RX-antenna operations, retaining capability refusal and exact original pan ownership.
- Net presets/tuning step: typed tuning step and partial FM/repeater fixups, retaining tune ordering and unspecified-field semantics without pretending a net preset is a stored memory slot.
Review corrections / acceptance criteria
- Pin controller routing across Flex/non-Flex, connected/disconnected and PC-audio states; native lineout support alone must not reroute the MIDI master knob.
- Preserve spot-trigger admission asymmetry: TCI's local lock/sweep checks do not become generic radio-trigger checks; radio triggers retain firmware-owned admission.
- Net preset fields omitted by the operator remain unchanged, not replaced by aggregate defaults.
- Temporary station overrides use real radio-dispatch admission, never the persisting station-setup facade. Stale restores cannot overwrite newer edits/overrides or a replacement session.
Excluded
Split-slice lifecycle, full duplex, CWX/keying, DAX/IQ, firmware/waveform transfer, broader TCI/rigctl conversion, new daemon methods/grants, new backend support, threads/dependencies, visual/default/UX redesign. #6039's ANAN/RTL client-side spot availability fix and #6586's native Icom zoom enablement remain separate; this migration does not absorb them.
Validation
- Socket-free production-route tests for validation, encoding, refusal, exactly-once dispatch, session/target replacement, queue reentrancy and identity restoration; mutation-check the new regressions.
- Before/after engine-boundary, command-plane, capability and touchpoint ratchets; update reduced baselines/manifest and relevant docs in the same PR, not CHANGELOG.
- Native macOS ARM64, Linux and Windows application/daemon builds and focused tests from the same source, plus isolated RX-only Demo/MCP checks. No physical-radio transmission. Demo and injected-transport evidence are not firmware/RF acceptance.
- Review scope and lifetime/failure behavior, fix findings, then open one signed draft PR with aetherd in its title.
The shared hydration-checker repair is local tooling only and will not be included in this PR.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
claude-activeAetherClaude is actively working on this issueAetherClaude is actively working on this issue
Activity
fix(aetherd): preserve saved station edits. Principle XI.
refactor(aetherd): consolidate M4 desktop utilities (#6619)