feat(api): add LED, microphone, and speaker component-capability topic leaves#60
Merged
Merged
Conversation
…c leaves The v1 `topic_tree!` only exposed component-capability leaves for the capabilities wired by platform runtimes, leaving the LED, microphone, and speaker payload modules without any `component(id).<kind>(cap).<stream>()` fluent leaves. Consumers (operator's rerun-proxy visualizer, simulator's Webots controller) consequently had to drop their LED/mic/speaker paths during the v0.5.0 migration. Add the missing leaves against the existing canonical payload types: - `component(id).led(cap).command()` -> led::Command - `component(id).microphone(cap).data()` -> microphone::Frame - `component(id).speaker(cap).audio()` -> speaker::audio::Audio - `component(id).speaker(cap).command()` -> speaker::command::Command Schemas (`v1/component/speaker/audio`, `v1/component/speaker/command`, `v1/component/led/command`, `v1/component/microphone/data`) match the pre-fluent TOPIC_KIND/KIND values, so the wire contract is unchanged. Representative key/schema tests added alongside the other capabilities. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Merged
Merged
This was referenced Jun 13, 2026
Merged
Merged
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
The v1
topic_tree!(inphoxal/src/api/v1/mod.rs) only exposed component-capability leaves for the capabilities wired by platform runtimes. The LED, microphone, and speaker payload modules existed underphoxal::api::v1::component::capability::{led, microphone, speaker}but had nocomponent(id).<kind>(cap).<stream>()fluent leaves.Because of this gap, the v0.5.0 consumer migration forced
operator(rerun-proxy visualizer, operator#18) andsimulator(Webots controller, simulator#16) to drop their LED/microphone/speaker wiring and visualization paths.This PR restores the missing leaves so consumers can re-wire those paths. Targets a v0.5.x minor release.
Changes
Added against the existing canonical payload types:
component(id).led(cap).command()led::Commandv1/component/led/commandcomponent(id).microphone(cap).data()microphone::Framev1/component/microphone/datacomponent(id).speaker(cap).audio()speaker::audio::Audiov1/component/speaker/audiocomponent(id).speaker(cap).command()speaker::command::Commandv1/component/speaker/commandThe speaker shape (audio + command) and the schema strings match the pre-fluent
TOPIC_KIND/KINDvalues, so the wire contract is unchanged. Representative key/schema assertions were added alongside the other capabilities intopic_tree_component_and_simulation_slots_elide_holes_in_schemas.Verification
cargo build --workspace✅cargo clippy --workspace --all-targets✅ (clean)cargo test --workspace✅ (all passing)🤖 Generated with Claude Code