feat(usable): package gui-host validation snapshot
Some checks failed
release-smoke / macos-13 / x86_64-apple-darwin (push) Has been cancelled
release-smoke / ubuntu-latest / x86_64-unknown-linux-gnu (push) Has been cancelled
release-smoke / windows-latest / x86_64-pc-windows-msvc (push) Has been cancelled

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Paperclip CTO
2026-03-31 10:21:36 +00:00
parent 19aeb7784b
commit a28dab4cd9
47 changed files with 6894 additions and 771 deletions

View File

@@ -49,8 +49,17 @@
- 面板焦点管理与基础键盘导航
- `sqlite-local` 的真实 connect / inspect 路径
- `sqlite-local` 的真实 query / results / export 工作流
- PostgreSQL / MySQL 的 Docker demo live activation / query / export 路径
- `Ready` / `Loading` / `Error` 基础状态框架
当前这组能力在 `dbtool-usable-v1` 口径下需要分层理解:
- TUI / shell baseline已有直接执行证据
- TUI / `sqlite-local` local live只能记为 `partial`
- TUI / PostgreSQL & MySQL network live已具备 runner 内可重复 demo path
因此,`sqlite-local` 继续承担本地单机验证,而 PostgreSQL / MySQL 已可通过 `host.docker.internal``scripts/tui/live-network-smoke.sh` 完成 runner 内真实 network live 复验。
运行方式:
```bash
@@ -63,7 +72,36 @@ cargo run -p dbtool-tui
./target/debug/dbtool-tui
```
详细范围与验收说明见 `apps/tui/README.md`,共享 UI 方案见 `plans/2026-03-26-dbtool-tui-shell-ui-scope.md`
最小可重复 smoke 入口:
```bash
scripts/tui/smoke-tty.sh ./target/debug/dbtool-tui
```
`dbtool-tui` 需要真实 TTY`--help` 不是有效 smoke 入口。详细范围与验收说明见 `apps/tui/README.md``TUI_SMOKE_RUNBOOK.md`,共享 UI 方案见 `plans/2026-03-26-dbtool-tui-shell-ui-scope.md`
## GUI Foundation Preview
仓库当前没有正式 Web / Desktop 前端工程,但已经提供最小可见展示层,用于评审未来 GUI 的信息架构与工作台交互:
- `gui/index.html`GUI foundation 入口页
- `gui/prototype/index.html`:静态数据库工作台原型
- `gui/preview-server.mjs`:本地预览服务
- `gui/README.md`:运行方式、范围说明与界面验收要点
运行方式:
```bash
node gui/preview-server.mjs
```
然后访问:
```text
http://127.0.0.1:4173
```
如果只想快速查看静态界面,也可以直接打开 `gui/index.html`
## Workspace 结构
@@ -99,18 +137,42 @@ cargo run -p dbtool-cli -- query --driver sqlite --path examples/tmp/dbtool-demo
cargo run -p dbtool-cli -- export --driver sqlite --path examples/tmp/dbtool-demo.sqlite --file examples/sql/sqlite/export_query.sql --format csv --output examples/tmp/export.csv
```
如果当前 Linux 环境没有系统 `cc`,可以改用一个 C 兼容 linker例如 `zig cc`
如果当前 Linux 环境没有系统 `cc` / `ar`,可以改用 `zig cc` + `zig ar`。对 bundled SQLite 路径linker 包装器需要兼容 Cargo 传入的 GNU target flag
```bash
cat > /tmp/zig-cc <<'EOF'
#!/bin/sh
exec zig cc "$@"
#!/usr/bin/env bash
set -euo pipefail
args=()
for arg in "$@"; do
case "$arg" in
--target=x86_64-unknown-linux-gnu)
args+=("--target=x86_64-linux-gnu")
;;
*)
args+=("$arg")
;;
esac
done
exec zig cc "${args[@]}"
EOF
cat > /tmp/zig-ar <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
exec zig ar "$@"
EOF
chmod +x /tmp/zig-cc
chmod +x /tmp/zig-ar
export CC=/tmp/zig-cc
export AR=/tmp/zig-ar
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=/tmp/zig-cc
cargo test
cargo run -p dbtool-cli -- --help
# 如果当前环境的 rustup 没有默认 toolchain可显式指定 stable 工具链
export RUSTC="$(rustup which --toolchain stable rustc)"
export RUSTDOC="$(rustup which --toolchain stable rustdoc)"
"$(dirname "$RUSTC")/cargo" test --workspace
"$(dirname "$RUSTC")/cargo" build --release --bin dbtool
./target/release/dbtool --help
```
最小发布与产物 smoke 已定义在 `.github/workflows/release-smoke.yml``RELEASE_RUNBOOK.md`;当前 Linux 还可本地执行 `scripts/release/smoke-binary.sh``scripts/release/package-unix.sh` 复核产物命名与 checksum。