Repository navigation
fix(ui): give every select and slider its own element id - #1234
Merged
Merged
Conversation
guyverino
force-pushed
the
feat/atlas-control-ids
branch
from
November 4, 2026 21:36
111d2e8 to
1a3f008
Compare
Left to the component defaults, every MoonSelect of a view was the element path `moon-select` and every slider `slider-bar-container`: the empty screen's five block dropdowns, the General page's selects, the Appearance and Lines sliders could not be told apart by their path, so anything addressing controls by it (the UI atlas, an inspector) saw one control where there were five. - Each MoonSelect and MoonSlider now gets an id at its call site; the slider and select helpers take one (`slider_ctl`, `slider_ctl_w`, `slider_field`, the detects `slider_row`, General's `select_control`). - A control that fills a labelled row is named `<row id>:field`; the empty screen's selects are named after their block's switch.
guyverino
force-pushed
the
feat/atlas-control-ids
branch
from
November 4, 2026 22:28
1a3f008 to
3158158
Compare
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.
What & why
Left to the component defaults, every
MoonSelectof a view had the element pathmoon-selectand every sliderslider-bar-container. The empty screen's five block dropdowns, the General page's selects, and the Appearance, Lines, detects-frame and trade-sound sliders could not be told apart by path, so anything that addresses controls by it (the GPUI inspector, a scripted test, the UI-atlas capture) saw one control where there were five. On the atlas the five empty-screen dropdowns lit up together as one control with one description.Changes
MoonSelectandMoonSlidernow gets an id at its call site. The helpers that build them take one:slider_ctl,slider_ctl_w,slider_field, the detects popup'sslider_row, General'sselect_control.<row id>:field(general-language:field,lines-card-width:field). The empty screen's selects are named after their block's switch (main-empty-place-logo, …), and the colour-group sliders after their row's key (iface-slider-{key},iface-alpha-{key}).Notable decisions
select_controltakes the id after the state, so the static contracttheme_contract/analytics.rs, which looks forselect_control(&self.valuation,, keeps holding unedited.Known limitations
MoonInput::new(id)id through feat(input): name the input's root element after the caller's id MoonUI#143, already on MoonUI's master. This PR does not depend on it to build.Issues
None of the 74 open issues is touched by this change.
How to verify
All four green after the rebase onto
main: fmt clean, zero warnings, 9039 tests passed, 0 failed (211 ignored). FireTest was not run (the developer's standing instruction).