Tier: 3 (minor polish — experimental surface)
From the pre-release feature-gap audit.
Problem
The standalone MapperView (in UI/Experimental/, reachable from the File menu and Command Palette) supports a device condition in its view model and persists it, but there's no Inspector/keycap UI to select it. (Note: folder/script mapping is reachable via the overlay's mapper section — OverlayMapperSection+SystemActionGroups.swift:405/427 — so that part is not a gap.) Also, the shifted-output keycap can be recorded under conditions that make it invalid, and the save then fails without clear inline feedback.
Evidence
Sources/KeyPathAppKit/UI/Experimental/MapperViewModel.swift:59 — selectedDeviceCondition exists; saved in MapperViewModel+RuleManagement.swift:127-138. No selector UI in the Inspector.
Sources/KeyPathAppKit/UI/Experimental/MapperViewModel.swift:251-262 — shiftedOutputBlockingReason blocks save but UI still allows recording.
Suggested fix
Add a device-condition selector to the Mapper Inspector and surface the shifted-output blocking reason inline before/while recording. (Consider whether the experimental Mapper should ship at all in this release.)
Tier: 3 (minor polish — experimental surface)
From the pre-release feature-gap audit.
Problem
The standalone
MapperView(inUI/Experimental/, reachable from the File menu and Command Palette) supports a device condition in its view model and persists it, but there's no Inspector/keycap UI to select it. (Note: folder/script mapping is reachable via the overlay's mapper section —OverlayMapperSection+SystemActionGroups.swift:405/427— so that part is not a gap.) Also, the shifted-output keycap can be recorded under conditions that make it invalid, and the save then fails without clear inline feedback.Evidence
Sources/KeyPathAppKit/UI/Experimental/MapperViewModel.swift:59—selectedDeviceConditionexists; saved inMapperViewModel+RuleManagement.swift:127-138. No selector UI in the Inspector.Sources/KeyPathAppKit/UI/Experimental/MapperViewModel.swift:251-262—shiftedOutputBlockingReasonblocks save but UI still allows recording.Suggested fix
Add a device-condition selector to the Mapper Inspector and surface the shifted-output blocking reason inline before/while recording. (Consider whether the experimental Mapper should ship at all in this release.)