spaxel/dashboard
jedarden ef9cd3fe15 feat(expert-mode): improve mobile touch controls for 3D scene
- Simplified OrbitControls touch gesture configuration:
  - ONE: THREE.TOUCH.ROTATE (one-finger orbit)
  - TWO: THREE.TOUCH.DOLLY (pinch zoom only, no accidental pan)
  - THREE: THREE.TOUCH.PAN (three-finger pan)

- Removed complex dynamic enablePan toggling that didn't work reliably
  with OrbitControls' internal touch processing

- Added iOS Safari-specific touch improvements:
  - Double-tap zoom prevention
  - Touch action and user select CSS properties
  - -webkit-tap-highlight-color: transparent

- Enhanced CSS for better mobile touch handling:
  - touch-action: none on scene container and canvas
  - -webkit-touch-callout: none
  - -webkit-user-select: none
  - user-select: none

All mobile tests (29 tests) and quick-actions tests (22 tests) pass.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-25 11:01:34 -04:00
..
css feat(expert-mode): improve mobile touch controls for 3D scene 2026-04-25 11:01:34 -04:00
js feat(expert-mode): improve mobile touch controls for 3D scene 2026-04-25 11:01:34 -04:00
node_modules feat(explainability): detection explainability overlay with per-link contributions, Fresnel zones, and BLE identity 2026-04-24 19:23:55 -04:00
tests feat(dashboard): add axe-core accessibility CI gate for all dashboard pages 2026-04-24 18:31:17 -04:00
ambient.html feat(explainability): detection explainability overlay with per-link contributions, Fresnel zones, and BLE identity 2026-04-24 19:23:55 -04:00
fleet.html feat(explainability): detection explainability overlay with per-link contributions, Fresnel zones, and BLE identity 2026-04-24 19:23:55 -04:00
help_articles.json feat(dashboard): polish tap-to-jump UX and remove expert-mode gating 2026-04-24 23:16:56 -04:00
index.html feat(explainability): detection explainability overlay with per-link contributions, Fresnel zones, and BLE identity 2026-04-24 19:23:55 -04:00
integrations.html feat(explainability): detection explainability overlay with per-link contributions, Fresnel zones, and BLE identity 2026-04-24 19:23:55 -04:00
jest.config.js feat: implement spatial quick actions context menu for 3D scene 2026-04-10 22:56:17 -04:00
live.html feat(dashboard): add layer management module for toggle controls 2026-04-25 00:15:39 -04:00
package-lock.json feat(dashboard): add axe-core accessibility CI gate for all dashboard pages 2026-04-24 18:31:17 -04:00
package.json feat(dashboard): add axe-core accessibility CI gate for all dashboard pages 2026-04-24 18:31:17 -04:00
playwright.config.js feat(dashboard): add axe-core accessibility CI gate for all dashboard pages 2026-04-24 18:31:17 -04:00
README.md feat(dashboard): add axe-core accessibility CI gate for all dashboard pages 2026-04-24 18:31:17 -04:00
setup.html feat(explainability): detection explainability overlay with per-link contributions, Fresnel zones, and BLE identity 2026-04-24 19:23:55 -04:00

Spaxel Dashboard

Running Tests

Unit Tests (Jest)

npm test

Accessibility Tests (axe-core + Playwright)

# First-time setup: install browsers
npx playwright install --with-deps chromium

# Run accessibility gate
npm run test:a11y

The accessibility test loads each dashboard page (index, live, fleet, setup, integrations) via a local static server and asserts zero WCAG 2A/2AA violations using @axe-core/playwright. CI fails the build if any violation is introduced.

CI Integration (Argo Workflows)

Add the following step to the spaxel-build WorkflowTemplate before the container build:

- name: a11y-gate
  container:
    image: node:20-bookworm-slim
    command: [sh, -c]
    args:
      - |
        cd dashboard
        npm ci
        npx playwright install --with-deps chromium
        npm run test:a11y
    resources:
      limits:
        memory: 512Mi
        cpu: "1"