fix(terminal): change repo name
This commit is contained in:
@@ -78,7 +78,7 @@ web-sys = { version = "0.3", default-features = false, features = [
|
|||||||
] }
|
] }
|
||||||
|
|
||||||
[[workspace.metadata.leptos]]
|
[[workspace.metadata.leptos]]
|
||||||
name = "base_path_demo"
|
name = "rustui_playground"
|
||||||
bin-package = "server"
|
bin-package = "server"
|
||||||
lib-package = "app"
|
lib-package = "app"
|
||||||
site-root = "target/site"
|
site-root = "target/site"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Rust Browser Terminal Development Guide
|
# Rust Browser Terminal Development Guide
|
||||||
|
|
||||||
本指南用于在 `base-path-demo` 中实现一套 Rust 终端能力:
|
本指南用于在 `rustui-playground` 中实现一套 Rust 终端能力:
|
||||||
|
|
||||||
- 后端:Axum + `portable-pty` 创建真实伪终端,负责启动 shell、读写 PTY、处理 resize。
|
- 后端:Axum + `portable-pty` 创建真实伪终端,负责启动 shell、读写 PTY、处理 resize。
|
||||||
- 前端:Rust/WASM + Leptos 实现浏览器终端组件,负责输入、渲染、滚屏、选区和终端状态。
|
- 前端:Rust/WASM + Leptos 实现浏览器终端组件,负责输入、渲染、滚屏、选区和终端状态。
|
||||||
@@ -27,7 +27,7 @@ Shell process: bash/zsh/fish/vim/top
|
|||||||
建议分四层沉淀。
|
建议分四层沉淀。
|
||||||
|
|
||||||
```text
|
```text
|
||||||
base-path-demo/
|
rustui-playground/
|
||||||
app/
|
app/
|
||||||
src/
|
src/
|
||||||
pages/terminal.rs
|
pages/terminal.rs
|
||||||
@@ -63,7 +63,7 @@ crates/
|
|||||||
|
|
||||||
当前 workspace 已有 `axum = "0.8"`,但 WebSocket 模块需要启用 `ws` feature。
|
当前 workspace 已有 `axum = "0.8"`,但 WebSocket 模块需要启用 `ws` feature。
|
||||||
|
|
||||||
建议先调整 `base-path-demo/Cargo.toml`:
|
建议先调整 `rustui-playground/Cargo.toml`:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
@@ -501,7 +501,7 @@ MVP 安全策略:
|
|||||||
- 从消息类型抽出 `terminal-protocol`。
|
- 从消息类型抽出 `terminal-protocol`。
|
||||||
- 从 server module 抽出 `terminal-pty-server`。
|
- 从 server module 抽出 `terminal-pty-server`。
|
||||||
|
|
||||||
验收:`base-path-demo` 只依赖这些 crates,不再持有核心实现。
|
验收:`rustui-playground` 只依赖这些 crates,不再持有核心实现。
|
||||||
|
|
||||||
### M5: 自研 parser/buffer
|
### M5: 自研 parser/buffer
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
> 说明:本文档保留早期 scrollback 排查背景。当前终端实现已经进入 WebGL 默认渲染器、addon parity 与 P9 renderer 工程化阶段;最新状态请优先看 `TERMINAL_ROADMAP.md`。
|
> 说明:本文档保留早期 scrollback 排查背景。当前终端实现已经进入 WebGL 默认渲染器、addon parity 与 P9 renderer 工程化阶段;最新状态请优先看 `TERMINAL_ROADMAP.md`。
|
||||||
|
|
||||||
本文档用于把 `base-path-demo` 当前浏览器终端实现的状态、已验证结论、未解决问题和下一步建议整理清楚,方便后续继续开发。
|
本文档用于把 `rustui-playground` 当前浏览器终端实现的状态、已验证结论、未解决问题和下一步建议整理清楚,方便后续继续开发。
|
||||||
|
|
||||||
## 1. 当前目标
|
## 1. 当前目标
|
||||||
|
|
||||||
项目目标不是简单接一个现成 JS 终端,而是在 `base-path-demo` 中逐步沉淀一套 Rust 终端能力:
|
项目目标不是简单接一个现成 JS 终端,而是在 `rustui-playground` 中逐步沉淀一套 Rust 终端能力:
|
||||||
|
|
||||||
- 后端:`Axum + portable-pty`
|
- 后端:`Axum + portable-pty`
|
||||||
- 前端:`Leptos + Rust/WASM`
|
- 前端:`Leptos + Rust/WASM`
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Terminal Roadmap — 对照 xterm.js 的追平计划
|
# Terminal Roadmap — 对照 xterm.js 的追平计划
|
||||||
|
|
||||||
本文档记录 `base-path-demo` 浏览器终端**当前已实现的能力**、**相比 xterm.js 仍缺失的功能**,以及每一项**计划的实现方式与优先级**,供后续开发接手。
|
本文档记录 `rustui-playground` 浏览器终端**当前已实现的能力**、**相比 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 面。
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
fn main() {
|
fn main() {
|
||||||
println!("cargo:rustc-env=LEPTOS_OUTPUT_NAME=base_path_demo");
|
println!("cargo:rustc-env=LEPTOS_OUTPUT_NAME=rustui_playground");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ use leptos_meta::MetaTags;
|
|||||||
use crate::app::App;
|
use crate::app::App;
|
||||||
|
|
||||||
pub fn shell(options: LeptosOptions) -> impl IntoView {
|
pub fn shell(options: LeptosOptions) -> impl IntoView {
|
||||||
let css_href = SiteConfig::with_base_path("/pkg/base_path_demo.css");
|
let css_href = SiteConfig::with_base_path("/pkg/rustui_playground.css");
|
||||||
let js_href = SiteConfig::with_base_path("/pkg/base_path_demo.js");
|
let js_href = SiteConfig::with_base_path("/pkg/rustui_playground.js");
|
||||||
let wasm_href = SiteConfig::with_base_path("/pkg/base_path_demo.wasm");
|
let wasm_href = SiteConfig::with_base_path("/pkg/rustui_playground.wasm");
|
||||||
let hydration_script = format!(
|
let hydration_script = format!(
|
||||||
r#"import("{js_href}").then((mod) => {{
|
r#"import("{js_href}").then((mod) => {{
|
||||||
mod.default({{ module_or_path: "{wasm_href}" }}).then(() => mod.hydrate());
|
mod.default({{ module_or_path: "{wasm_href}" }}).then(() => mod.hydrate());
|
||||||
|
|||||||
Reference in New Issue
Block a user