- 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
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/rustuihttp://127.0.0.1:3100/rustui/checkhttp://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.