Skip to content

Add point scanning in Settings with reusable native scan logic - #729

Merged
enaboapps merged 4 commits into
mainfrom
native-switch-access
Sep 12, 2026
Merged

enaboapps merged 4 commits into
mainfrom
native-switch-access

Conversation

@enaboapps

@enaboapps enaboapps commented Sep 12, 2026 •

Copy link
Copy Markdown
Contributor

Point scanning is available in Settings → Scanning, using keyboard-emulating switches connected directly to the computer. Line mode selects X then Y and clicks once; grid mode selects a row and cell first. Both support automatic movement, manual steps, Android speed presets, pause/resume and Escape cancellation.

Settings save automatically. The app shell owns pending edits so navigating between tabs or views preserves them and leaves scanning running. Enable waits for successful saves, errors retain edits with a retry action, and configuration is locked while enabled.

A reusable pure scanning core owns sessions, semantic actions, press/release handling, repeat suppression, bounded timing, pause/cancel/reset and cyclic traversal. Point scan implements the technique contract with typed point selections. A test-only item technique verifies reuse without pointer geometry. The generic desktop runtime owns shortcut registration, persistence, events and cleanup; native Windows/macOS hosts render shared frame strips. Point-specific adapters handle display discovery and final input activation.

The existing flat point-scan.json settings, Tauri commands and event payload shapes are preserved and covered by compatibility tests. Android connections stop local scanning, stale shortcut generations are rejected, and the existing input adapter checks for held modifiers and active input sessions before clicking. No production item scanner or keyboard integration is included. See docs/point-scan.md.

Closes #728.

Validation on Node 24.13.0 and Rust 1.97.1:

  • npm run lint, npm test and npm run build passed: 116 frontend tests and five update-feed tests.
  • Rust formatting, Clippy with warnings denied, 277 unit tests and seven integration tests passed.
  • Browser layout check confirmed Scanning follows Controls, uses the Settings layout and has no horizontal overflow at 1100 px. Automated input tests use fake adapters and never move the real pointer.
  • Independent review completed at 18d7422 with no actionable findings. All latest-head CI checks passed, including Windows NSIS and macOS app/DMG packaging, dependency audit, CodeQL and Greptile.

Manual validation remains for physical switch delivery, real desktop clicking/focus retention, mixed-DPI monitor alignment and macOS runtime behavior. No merge is requested.

@enaboapps
enaboapps marked this pull request as ready for review September 12, 2026 11:04
@greptile-apps

greptile-apps Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

Greptile Summary

The update moves point-scan configuration into Settings, extracts reusable scanning and desktop runtime behavior, and retains compatibility with existing point-scan configuration, commands, events, and persistence.

Confidence Score: 5/5

Safe to merge.

There are no outstanding findings.

Reviews (2): Last reviewed commit: "Preserve newer scan events across delaye..." | Re-trigger Greptile

@enaboapps
enaboapps marked this pull request as draft September 12, 2026 11:57
@enaboapps enaboapps changed the title Port Android point scanning to native desktop switch control Add point scanning in Settings with reusable native scan logic Sep 12, 2026
@enaboapps
enaboapps marked this pull request as ready for review September 12, 2026 12:13
@enaboapps
enaboapps marked this pull request as draft September 12, 2026 12:18
@enaboapps
enaboapps marked this pull request as ready for review September 12, 2026 12:18
@enaboapps
enaboapps merged commit db1ba7e into main Sep 12, 2026
7 checks passed
@enaboapps enaboapps added this to the v1.0.0-rc.7 milestone Sep 13, 2026
@enaboapps
enaboapps deleted the native-switch-access branch September 22, 2026 09:14
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.

Port Android point scanning to native Switchify PC

2 participants