# Gaza Gaza 是一个协议优先、跨平台的多 Teamserver 桌面工作台。当前仓库包含可运行的首个项目骨架,重点验证 Teamserver 工作区和标签页隔离模型。 ## 标准协议模型 `src/protocol` 定义 GUI 与兼容 Teamserver 之间的首版强类型模型,包括 Teamserver、Project、Session、Capability、Task、Event、Artifact 和 Audit。该模块不包含网络请求、认证或私有 C2 适配。 `ServerId`、`ProjectId`、`SessionId` 等采用品牌类型,避免在编译期误用不同层级 ID;枚举允许未来服务端新增值,解析器保留未知枚举和扩展字段。迁移现有界面数据时可从 `src/protocol/fixtures` 引入最小演示 fixture。 ## 技术栈 - Tauri 2(桌面容器) - React 19 + TypeScript + Vite(界面) - Vitest + Testing Library(单元与组件测试) ## 快速开始 本机安装 Node.js 22 与 Rust stable 后: ```bash npm ci npm run dev # 浏览器开发模式 npm run tauri dev # 桌面开发模式 ``` 无需本机 Node.js 的前端验证: ```bash docker compose build test build docker compose run --rm test docker compose run --rm build docker compose run --rm test npm run typecheck docker compose run --rm test npm audit --audit-level=high ``` ## Docker 启动 Web 测试服务 构建镜像并在后台启动: ```bash docker compose up --build -d ``` 浏览器访问 。查看状态和日志: ```bash docker compose ps docker compose logs -f web ./scripts/check-web-health.sh ``` 停止服务: ```bash docker compose down ``` 默认只监听本机回环地址。需要让局域网测试设备访问时,显式设置监听地址和端口: ```bash WEB_BIND_ADDRESS=0.0.0.0 WEB_PORT=1420 docker compose up --build -d ``` 开放到局域网前请确认主机防火墙和测试网络范围;Web 预览不包含认证能力。 ## 当前范围 - 展示多 Teamserver 连接状态和独立工作区。 - 切换 Teamserver 时隔离标签、项目导航和激活状态。 - 所有演示业务状态仅保存在进程内存,不写入本地存储。 - 提供 Tauri 最小权限配置;后续连接、协议与加密 SQLite 能力按独立迭代接入。 ## 常用命令 ```bash npm ci npm run typecheck npm test npm run build npm audit --audit-level=high npm run tauri build ``` ## 持续集成与本地复现 Forgejo 工作流 [`.forgejo/workflows/ci.yml`](.forgejo/workflows/ci.yml) 在推送到 `main` 和拉取请求时运行两个独立作业: - Node 质量门禁依次执行锁定依赖安装、TypeScript 类型检查、测试、生产构建和高危依赖审计。 - Docker 门禁构建 `web` 镜像,按 Compose 的最小权限配置启动服务,并等待镜像内置健康检查通过。 本机装有 Node.js 22.18.0 时,可使用“常用命令”中的前五条命令逐步复现 Node 作业。仅安装 Docker 时,可完整复现 CI: ```bash docker compose build test build docker compose run --rm test npm run typecheck docker compose run --rm test docker compose run --rm build docker compose run --rm test npm audit --audit-level=high docker compose build web docker compose up --no-build -d web ./scripts/check-web-health.sh docker compose down --volumes --remove-orphans ``` 依赖审计会在发现高危或严重漏洞时失败;网络或软件源不可用同样视为审计失败,不静默跳过。Docker 服务仍以非 root 用户运行,并保留只读根文件系统与 `no-new-privileges` 限制。