zhangheng 5bca11083f feat(terminal): add screen reader buffer and OS accessibility preferences
- Add debounced aria-live region that announces visible terminal text
  to screen readers (500ms throttle, non-empty trimmed rows only)
- Add role=application, aria-label, aria-roledescription to terminal
- Add prefers-reduced-motion listener: disables cursor blink animation
  and sets --terminal-reduce-motion CSS variable
- Add prefers-contrast: more media query with Canvas/CanvasText system
  color fallback
- Add visually hidden .terminal-screen-reader CSS utility
- Mark P7 complete in roadmap
2026-06-25 11:02:47 +08:00

BASE_PATH Demo

Minimal Leptos SSR project that reuses a few components from ui to validate SiteConfig::BASE_PATH.

The public app path is /rustui, while Leptos SSR routes are still declared as /, /check, and /deep/nested. The server strips /rustui before route matching, and the client router uses /rustui as its base.

cargo leptos watch

Then open:

  • http://127.0.0.1:3100/rustui
  • http://127.0.0.1:3100/rustui/check
  • http://127.0.0.1:3100/rustui/deep/nested

Change app_config/src/lib.rs to test another base path.

Terminal Renderer Bench

The terminal benchmark script connects to an already-running dev server; it does not start or stop services.

Install the Node dependency once before running it:

npm install
npm run terminal:bench -- --url http://127.0.0.1:3100/rustui/terminal

If Playwright's browser download is slow, use an installed Chrome/Chromium instead:

npm run terminal:bench -- --url http://127.0.0.1:3100/rustui/terminal --browser-executable /usr/bin/google-chrome

Compare renderer modes with:

npm run terminal:bench -- --url http://127.0.0.1:3100/rustui/terminal --renderer canvas --browser-executable /usr/bin/google-chrome

It writes renderer-specific reports such as target/terminal-bench/terminal-bench-webgl.json and target/terminal-bench/terminal-bench-canvas.json, plus target/terminal-bench/terminal-bench-latest.json for the most recent run. Screenshots are also named by renderer and viewport.

Description
No description provided
Readme 5.1 MiB
Languages
Rust 88.8%
CSS 7.6%
JavaScript 3.6%