docs(terminal): add performance goal and P4 Canvas/WebGL renderer to roadmap
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,9 @@
|
||||
|
||||
本文档记录 `base-path-demo` 浏览器终端**当前已实现的能力**、**相比 xterm.js 仍缺失的功能**,以及每一项**计划的实现方式与优先级**,供后续开发接手。
|
||||
|
||||
> 定位提醒:本项目目标不是复刻 xterm.js 这个通用 JS 终端库,而是按 [TERMINAL_HANDOFF.md](TERMINAL_HANDOFF.md) 的方向,用 `Axum + portable-pty`(后端)+ `Leptos + Rust/WASM`(前端)沉淀一套**可复用的 Rust 终端组件**。因此追平的重点是「让真实终端会话好用」,而非铺平 xterm.js 的全部 API 面。
|
||||
> 定位提醒:本项目目标不是复刻 xterm.js 这个通用 JS 终端库,而是按 [TERMINAL_HANDOFF.md](TERMINAL_HANDOFF.md) 的方向,用 `Axum + portable-pty`(后端)+ `Leptos + Rust/WASM`(前端)沉淀一套**高性能、可复用的 Rust 终端组件**。因此追平的重点是「让真实终端会话好用且性能好」,而非铺平 xterm.js 的全部 API 面。
|
||||
>
|
||||
> **性能目标**:当前 DOM 渲染在 80×24–160×40 的常规终端下足够流畅,但大终端(≥200×100)或高刷新率连续输出场景会出现 DOM 节点过多、重排重绘开销大的问题。因此**渲染器最终要迁到 Canvas / WebGL**,这是明确的长期目标,会在 P3 之后按优先级推进。
|
||||
|
||||
---
|
||||
|
||||
@@ -131,7 +133,7 @@ xterm.js 还有这些,本项目暂列「按需再做」:
|
||||
|
||||
- **链接检测**(点 URL 打开)、**搜索 / 查找**(Ctrl-F 高亮)
|
||||
- **光标样式**:块 / 竖线 / 下划线 + 闪烁(目前固定块状反色)
|
||||
- **Canvas / WebGL 渲染器**:当前是 DOM 渲染,够用但不如 Canvas 快;超大终端 + 高刷新率场景才需要
|
||||
- **Canvas / WebGL 渲染器**:当前是 DOM 渲染,够用但不如 Canvas 快;超大终端 + 高刷新率场景才需要 → **已纳入长期性能目标,P3 后推进**
|
||||
- **sixel / 图片协议**、**字形连字控制**
|
||||
- **Unicode 11/15 宽度表**:目前依赖 vt100 的宽度判断,极端 emoji / 新字符可能不准
|
||||
- **无障碍**(屏幕阅读器 live region)
|
||||
@@ -149,6 +151,8 @@ P1 完整功能键 + application-cursor
|
||||
P2 鼠标上报
|
||||
↓
|
||||
P3 中文 IME(放在功能键之后,避免输入逻辑冲突)
|
||||
↓
|
||||
P4 Canvas/WebGL 渲染器(满足大终端 + 高刷新率性能目标)
|
||||
```
|
||||
|
||||
每一项都应延续现有做法:**纯逻辑抽成可单测的函数**(如 `map_key_to_terminal_input`、`wheel_delta_to_rows`、`virtual_window`),用 `cargo test -p app --lib terminal::` 锁定,浏览器只做交互验证。
|
||||
|
||||
Reference in New Issue
Block a user