The LogicGate editor showed the gate type twice: once in a
GateTypeSelector dropdown row above the truth table, and again as a
highlighted column inside the truth table. Picking a gate from the
dropdown updated the highlight in the table; the table couldn’t be used
as input. Two controls, one piece of state — confusing, and the
dropdown row took up a full row of vertical space for no reason.
composeApp/.../EditLogicGate.kt had grown two views over the same
meta.gateType field. The LogicGateTruthTable already rendered every
gate as a column with a primary-container highlight, which is itself a
strong visual affordance for “this is the selected gate.” But the
columns were not clickable, so the user had to reach for the dropdown.
The dropdown stayed because nobody had wired the columns up to set the
gate type.
composeApp/.../EditLogicGate.kt —
GateTypeSelector(...) call from EditLogicGateForNode
and the entire private fun GateTypeSelector(...) composable.onGateSelected: (LogicGate) -> Unit parameter into
LogicGateTruthTable, plus an optional onClick: (() -> Unit)? on
TruthTableColumn. Each gate result column now calls
onGateSelected(gate). The A and B input columns stay
non-clickable (they don’t represent a selectable choice)."Truth Table" to
"Truth Table — tap a column to select gate type" so the
affordance is discoverable without onboarding text. The selected
column still uses primaryContainer background — that visual
convention (highlight = selected) carries through.composeApp/src/desktopTest/.../screenshot/Fixtures.kt — added
logicGateSwarm() (an AND gate with two boolean DataPoint sources
and a target) so the editor renders against realistic state.composeApp/src/desktopTest/.../screenshot/Scenarios.kt — new
editorLogicGate Roborazzi scenario that captures the editor in its
default AND state.composeApp/src/desktopTest/.../screenshot/ScreenshotCatalog.kt —
added editor__logic-gate to docsCanonical so the PNG is part of
the published docs asset set.docs/assets/screenshots/editor__logic-gate.png — the recorded
screenshot, committed alongside the code so a future regression
produces a visible diff.editor__logic-gate PNG is the artifact that makes the dropdown’s
removal visually verifiable in the PR — no need to spin up the app
to confirm.