open-standards/aac/aac-rs/Cargo.toml
David Charlot e4d43ad4d6 fix(access-core): a clock that works in browsers, and a scan grid that follows the board
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]>
2026-09-28 16:25:49 -04:00

38 lines
1,012 B
TOML

[workspace]
resolver = "3"
members = [
"crates/access-core",
"crates/aac-core",
"crates/aac-web",
"crates/aac-conformance",
]
[workspace.package]
version = "0.1.0"
edition = "2024"
license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards"
rust-version = "1.97"
authors = ["Transaction Science <[email protected]>"]
[workspace.dependencies]
# A monotonic clock that works on the web too: std::time::Instant::now()
# panics on wasm32-unknown-unknown, which crashed eye-gaze dwell in the browser.
web-time = "1"
access-core = { path = "crates/access-core" }
aac-core = { path = "crates/aac-core" }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1" }
# Error handling / diagnostics
thiserror = "2"
tracing = "0.1"
# Identity / time
uuid = { version = "1", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
[workspace.lints.clippy]
all = "warn"