Skip to content

84: Restrictor dialog: add Test button driving the rotator binary#86

Merged
meduzapat merged 1 commit into
developmentfrom
task_84-Restrictor_dialog-add_
Jun 28, 2026
Merged

84: Restrictor dialog: add Test button driving the rotator binary#86
meduzapat merged 1 commit into
developmentfrom
task_84-Restrictor_dialog-add_

Conversation

@meduzapat

Copy link
Copy Markdown
Owner

Task-Url: #84

Adds a Test affordance to the Restrictor dialog that drives the rotator
binary so users can validate restrictor wiring without the command line.

  • The way icons become a single-active toggle group (none allowed, re-click
    clears, never assumes hardware position). Toggling a way runs rotator -c <sandbox.conf> <player> <joystick> <ways> … for the restrictor's
    player mappings.

  • Three modes drive the affordance: portable (icons informational), local (disabled hint), interactive + connected (live).

  • Staging reuses the daemon sandbox + ensureDaemonReady(); restrictor edits
    now stale the staged config so the test re-stages fresh data.

  • Multi-interface restrictors with 2+ mappings can scope the test to selected
    rows (none selected == all).

  • Output goes to the status bar: stdout only when "debug hardware test" is on,
    red on a non-zero exit or stderr.

  • Settings: debugDaemondebugHardwareTest, daemonStaleconfigDirty.

  • Defaults::runCommand: output-less overload + stderr folded into output.

  • Way tokens aligned to rotator's CLI vocabulary; Ways stays in Defaults,
    the way-token map + arg builder live in DialogRestrictor.

  • DaemonHandler readiness gate installed via a setter.

  • RestrictorTest/DefaultsTest updated; full suite green (27/27).

  • Verified on hardware.

Task-Url: #84

Adds a Test affordance to the Restrictor dialog that drives the
`rotator`
binary so users can validate restrictor wiring without the command line.

- The way icons become a single-active toggle group (none allowed,
re-click
  clears, never assumes hardware position). Toggling a way runs
  `rotator -c <sandbox.conf> <player> <joystick> <ways> …` for the
restrictor's
  player mappings.
- Three modes drive the affordance: **portable** (icons informational),
  **local** (disabled hint), **interactive + connected** (live).
- Staging reuses the daemon sandbox + `ensureDaemonReady()`; restrictor
edits
  now stale the staged config so the test re-stages fresh data.
- Multi-interface restrictors with 2+ mappings can scope the test to
selected
  rows (none selected == all).
- Output goes to the status bar: stdout only when "debug hardware test"
is on,
  red on a non-zero exit or stderr.

- `Settings`: `debugDaemon` → `debugHardwareTest`, `daemonStale` →
`configDirty`.
- `Defaults::runCommand`: output-less overload + stderr folded into
output.
- Way tokens aligned to rotator's CLI vocabulary; `Ways` stays in
`Defaults`,
  the way-token map + arg builder live in `DialogRestrictor`.
- `DaemonHandler` readiness gate installed via a setter.

- `RestrictorTest`/`DefaultsTest` updated; full suite green (27/27).
- Verified on hardware.
@meduzapat meduzapat self-assigned this Jun 28, 2026
@meduzapat meduzapat merged commit 4000a52 into development Jun 28, 2026
1 check passed
@meduzapat meduzapat deleted the task_84-Restrictor_dialog-add_ branch June 28, 2026 20:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant