# Redis GUI Foundation Redis GUI 的产品基础工程,采用 Rust workspace + Tauri desktop 结构,为后续连接管理、命令执行、键浏览和危险操作防护提供稳定后端边界。 ## Workspace Layout - `apps/desktop`: Tauri 桌面入口与 React + Tailwind 工作台壳层。 - `crates/redis-core`: 可复用的领域与应用核心,供 desktop、未来 CLI 和自动化入口共享。 - `docs/architecture.md`: 当前阶段的边界、持久化策略和演进约束。 - `docs/frontend-workspace-baseline.md`: 首版桌面信息架构、UI/UX 范围和验收要点。 ## Current Backend Scope - 建立可复用的 `redis-core` crate,承载连接模型、连接测试、key 浏览和基础命令执行能力。 - 提供 Redis 常见 value 类型的统一读取抽象:`string`、`hash`、`list`、`set`、`zset`、`stream`。 - 提供 V1 安全写入边界:仅允许现有 string key 的整值替换,并显式暴露只读类型差异。 - 提供 TTL 读取与修改能力:保留 TTL、设置毫秒级过期、移除 TTL。 - 建立 `apps/desktop/src-tauri`,使 GUI 通过统一命令面访问后端。 - 明确当前持久化边界:本阶段不落盘连接密钥,不承诺历史数据兼容。 - 对单实例 Redis 提供最小可验证的后端契约:AUTH、DB 选择、`PING`、`SCAN`/`TYPE`/`PTTL` key 元数据浏览,以及基础 RESP2 命令执行。 ## Prerequisites - Rust 1.85+ - Node.js 24+ - pnpm 10+ - Docker CLI for the local Redis smoke fixture - Linux 开发环境需要 Tauri 运行依赖,例如 `webkit2gtk` 和 `gtk3` 开发包 ## Getting Started ```bash pnpm install cargo test -p redis-core pnpm --filter @redis-gui/desktop test pnpm run desktop:dev pnpm run desktop:build pnpm run desktop:tauri:dev pnpm run desktop:tauri:build ``` 说明: - 仓库现在同时补齐了 `pnpm-workspace.yaml` 和根 `package.json` 的 `packageManager`,将 `pnpm` 作为桌面开发与打包的规范入口。 - 仓库通过 `.npmrc` 固定安装 devDependencies,避免宿主机的 `NODE_ENV=production` 破坏桌面构建链路。 - `cargo test -p redis-core` 默认验证共享后端核心,包括 mock Redis 握手与命令执行测试,避免在缺少桌面系统库时阻断后端迭代。 - `pnpm --filter @redis-gui/desktop test` 运行桌面前端的最小单测基线;当前覆盖共享错误映射层,避免后续功能迭代把后端错误码重新退回成零散文案拼接。 - `pnpm run desktop:dev` 启动浏览器态工作台壳层,用于检查布局、交互和 demo fallback;此模式下没有 Tauri 命令桥。 - `pnpm run desktop:tauri:dev` 启动带 Tauri 后端桥的桌面工作台;连接测试和命令执行会调用现有 `test_redis_connection` 与 `execute_redis_command` 命令,因此需要完整的 Tauri Linux 运行依赖。 - `pnpm run desktop:tauri:build` 会先执行桌面前端 build,再进入 Tauri/Rust 的真实打包流程;当前 Linux `.deb` 与 `.rpm` 产物位于仓库根 `target/release/bundle/`。 - Linux 上进入 Tauri 打包前,可先用 `pkg-config --modversion gtk+-3.0 webkit2gtk-4.1 libsoup-3.0` 做原生依赖预检查;任一缺失都会阻断桌面包产物生成。 ## Local Redis Smoke Fixture 仓库现在提供一个本地 Redis fixture 约定,用于 QA 和开发共用的 smoke 数据源: ```bash ./scripts/redis-fixture/start.sh ./scripts/redis-fixture/seed.sh pnpm run desktop:tauri:dev ``` 默认连接参数: - Host: `127.0.0.1` - Port: `6380` - Database: `0` - Password: empty - TLS: disabled 清理命令: ```bash ./scripts/redis-fixture/stop.sh ``` 完整本地 build 与 smoke 步骤见 `docs/qa/local-desktop-smoke.md`。 ## Current Frontend Scope - 首版可见界面现在已接入真实的桌面 browse / inspect / string save / TTL update 路径,但仍保持危险操作和完整产品化流程在后续阶段演进。 - 当前前端消费 `backend_bootstrap`、`test_redis_connection`、`browse_redis_keys`、`read_redis_value`、`write_redis_value` 和 `execute_redis_command`;浏览器态仍保持明确的 demo fallback。 - 当前前端还通过共享错误映射层统一消费 `redis-core` 的稳定错误码,使连接测试、浏览、读取、保存、TTL 和命令执行失败都落到一致的操作提示上。 - `inspect_redis_key` 与 `update_redis_key_ttl` 已在桌面桥可用;当前 UI 已暴露 TTL 设置与移除控制,但删除执行仍保持未开放状态。 - inspector 现在对 `hash/list/set/zset/stream` 提供结构化只读面板,不再要求操作者从原始 JSON 文本中手动解析 typed value。 - inspector 现在还会明确显示当前 inspect 状态、value surface 语义、下一步操作路径和 key facts,降低 string、structured、missing 和 demo fallback 场景下的误读成本。 - 连接测试、key browse、value inspector 和命令托盘在 Tauri 桌面运行时走真实后端桥;浏览器态 `pnpm run desktop:dev` 会明确回退到 demo 数据,不伪装成真实 Redis 行为。 - 具体 UI/UX 边界与 QA 验收入口见 `docs/frontend-workspace-baseline.md` 和 `docs/qa/acceptance-matrix.md`。