Dwell timed itself with std::time::Instant, whose now() panics on
wasm32-unknown-unknown ("unreachable"). Express calls gaze_enter() and
check_completion() every 50 ms once the camera sees a face, so the first time
an eye-gaze or head-tracking user looked at a cell, the app crashed. Proven
with a small wasm probe: std's Instant throws, web_time's returns. Dwell and
aac-core's store now use web-time, which is std's Instant on native targets and
performance.now() in the browser.
ScanEngine gains set_grid()/grid(): the engine was built for a fixed 4×5 grid
and had no way to learn the board on screen. A running scan restarts from the
top of the new grid, so it never highlights a row the board does not have.
New test: set_grid_follows_the_board_and_restarts_a_running_scan.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
18 lines
706 B
TOML
18 lines
706 B
TOML
[package]
|
|
name = "access-core"
|
|
description = "Shared access layer for the Transaction Science access standard — surface-agnostic primitives every access surface rides: access methods (touch/switch/dwell/gaze/head/joystick/BCI/partial-voice/pointer), motor profile, switch scanning, dwell selection, and the accessibility profile. Consumed by Express (AAC) and Read (Lumina)."
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
authors.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
web-time = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
thiserror = { workspace = true }
|