Skip to content

Recover Steam native QAM control interaction - #515

Merged
onehoon merged 1 commit into
mainfrom
refactor/qam-native-01
Sep 12, 2026
Merged

onehoon merged 1 commit into
mainfrom
refactor/qam-native-01

Conversation

@onehoon

@onehoon onehoon commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • Replace broad CommonUI/class-name heuristics with deterministic semantic unique discovery for Steam native fields and layout components.
  • Render native ToggleField as controlled and use native SliderField value, suffix, bookend, and discrete notch presentation props.
  • Remove the duplicated QAM Device Big Picture/no-game mutation admission from both JavaScript and QamFrontendBridge; shared Runtime validation remains authoritative.
  • Add low-noise page-state, mutation request/result, and local mutation-block diagnostics.
  • Preserve the current single Addon tab, Device/Profile page selection, generic pending-draft scheduler, stale-context guards, and teardown/reinjection lifecycle.

Scope boundaries

  • This is QAM-NATIVE-01 only. Device/Profile two-tab topology, permanent Profile tab, No game running state, and default-tab selection remain for PR2.
  • No Full 1902 ownership/lifecycle, VIIPER, PID1901/PID1902, HidHide, Overlay, controller presentation, polling, or new service/manager changes.
  • WSGM and steam-ui-toolkit were used only as implementation reference; no runtime/package/submodule dependency was added.

Validation

  • node --check src/SteamInputAddonforClaw.QamHost/Frontend/qam.js — passed.
  • dotnet build SteamInputAddonforClaw.slnx --configuration Debug --no-restore — passed, 0 warnings, 0 errors.
  • dotnet build SteamInputAddonforClaw.slnx --configuration Release --no-restore — passed, 0 warnings, 0 errors.
  • Focused QAM contract/bridge tests — passed, 38/38.
  • Full Release test suite — passed, 2,735/2,735, 0 failed, 0 skipped.
  • git diff --cached --check — passed.

Manual validation

  • Real MSI Claw + current Steam GamepadUI validation was not available in this environment. Before closing the PR, verify controller/keyboard focus, toggle and numeric/discrete slider mutation, authoritative failure settlement, game-running Profile regression, and clean teardown/reinjection as described in the work order.

onehoon commented Sep 12, 2026

Copy link
Copy Markdown
Owner Author

Blocking validation gap — no code change is requested by this comment.

QAM-NATIVE-01 exists specifically to recover a real Steam GamepadUI interaction failure, and the work order's real-device acceptance section explicitly states that automated tests are not sufficient for this PR. The implementation diff matches the intended architecture, but the PR description currently says that no real MSI Claw + current Steam GamepadUI validation was performed. That leaves the core user-visible defect (controller/keyboard focus and actual ToggleField/SliderField mutation) unproven.

Before merge, please run the PR1 acceptance pass on a supported Claw and attach the resulting QamHost evidence. At minimum verify:

  • controller and keyboard navigation can focus the Addon rows;
  • one native ToggleField actually fires and settles from the authoritative returned page;
  • one numeric slider and one discrete slider move and commit after the configured trailing delay;
  • a running Steam game still renders/mutates the active Profile correctly;
  • game exit returns the current one-tab surface to Device;
  • teardown/reinjection leaves exactly one Addon tab.

A successful log should contain evidence shaped like:

QAM native semantic controls resolved.
QAM page state: Page=Device AppId=none Available=true ... WritableRows=>0
QAM mutation request: Page=Device AppId=none Row=...
QAM mutation result: Page=Device AppId=none Row=... Succeeded=true

and equivalent Profile mutation evidence while a game is running.

If that live pass exposes a focus/callback/settlement problem, fix that concrete path in this PR before merge. If the pass succeeds, no additional production code change is required for this review item.

@onehoon

onehoon commented Sep 12, 2026

Copy link
Copy Markdown
Owner Author

Validation update for the blocking review item:

  • The available host identifies as Gigabyte B650M K running Windows 11 Pro build 26200, not a supported MSI Claw device.
  • Steam is running, but no managed QamHost/Addon Runtime process or supported physical QAM session is available in this environment.
  • Consequently, the required real-device checks (controller/keyboard focus, native ToggleField and SliderField callbacks, Profile transition, and teardown/reinjection) cannot be performed or evidenced here.
  • No production code change is warranted from this review item. The local implementation and full Release suite remain validated; the physical acceptance pass remains blocked on access to a supported Claw and current Steam GamepadUI.

Please attach the QamHost log from a supported Claw for the final acceptance pass. The PR remains intentionally Draft until that evidence is available.

@onehoon
onehoon marked this pull request as ready for review September 12, 2026 10:16
@onehoon
onehoon merged commit 1f5caef into main Sep 12, 2026
1 check passed
@onehoon
onehoon deleted the refactor/qam-native-01 branch September 12, 2026 10:16
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