zhangheng 8d73d6eabc feat(terminal): auto-scroll viewport during selection drag near edges
When the user drags a text selection and the cursor reaches within 40px
of the top or bottom edge of the terminal, the viewport auto-scrolls at
a speed proportional to the distance from the edge (up to 8 px/frame).
The selection head extends as the view scrolls, enabling cross-page
selection without manually scrolling first.

- Add start_autoscroll / stop_autoscroll helpers using setInterval (~60fps)
- Detect edge proximity in handle_mousemove after updating selection head
- Stop auto-scroll on mouseup or when cursor leaves edge zone
- Switch view_mode to History/Live based on scroll position
2026-06-25 12:10:05 +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%