Skip to content

feat(docker): 接入 API-24 原生容器终端 - #1

Merged
xiaoyumuxi merged 3 commits into
mainfrom
codex/docker-terminal-api
Nov 2, 2026
Merged

xiaoyumuxi merged 3 commits into
mainfrom
codex/docker-terminal-api

Conversation

@xiaoyumuxi

@xiaoyumuxi xiaoyumuxi commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

容器详情原先没有接入 Lithe 已公开的 API-24,无法直接进入容器 Shell。本次增加“打开终端”,经插件后端请求 Lithe 原生终端,使用当前 Docker socket 和实际容器 ID 启动交互会话。

改动

  • 清单增加 terminal.create 权限,后端先发现 create/show/reopen/dispose 能力;旧宿主、缺少工作区、权限或平台不支持时保留明确失败。
  • 以独立 executable/argv 启动 docker --host unix://<socket> exec --interactive --tty <canonical container ID> <shell>,清除可能覆盖所选引擎的 Docker context/host/TLS 环境变量。停止或暂停的容器拒绝启动,Shell 限定为 /bin/sh、/bin/bash、/bin/ash。
  • 按工作区 generation、socket、容器和 Shell 保存内存句柄:再次点击显示已有终端,关闭后经宿主执行确认重开,并恢复最多 16 KiB 显示历史。取消不自动重试,不重放输入。
  • 增加显式释放按钮;删除容器或 Compose 分组前释放对应句柄。并行终端操作立即返回 busy,避免等待原生确认时占满后端工作线程。
  • Shell 选择、打开和释放按钮放在详情标签栏右侧,宽面板同行、窄面板自动换行;切换页面可停止日志/统计等活动视图,同时保持终端控件的在途操作生命周期。
  • CI 与发布流程的打包和真实 Docker 集成任务改用 Colima 上游采用的 macos-15-intel,保留 universal 双架构校验,并增加引擎启动超时和失败日志,修复托管 ARM runner 启动 VZ 失败。
  • 补齐中英文提示和 README;更新集成测试所固定的 Lithe revision,以包含 API-24 权限与路由实现。运行时未新增磁盘缓存或安装目录写入,未改发布版本。

验证

  • actionlint .github/workflows/ci.yml .github/workflows/release.yml:通过。

  • npm --prefix ui run check、npm --prefix ui test:通过,3 项前端测试。

  • cargo fmt --manifest-path backend/Cargo.toml --all -- --check、cargo clippy --locked --manifest-path backend/Cargo.toml --all-targets -- -D warnings:通过。

  • 后端 27 项测试通过,逐项计时 HTML/JUnit 已生成;新增 argv/引擎隔离测试耗时约 2 ms。

  • node scripts/package.mjs:universal macOS 安装包构建及校验通过(arm64 / x86_64)。

  • 真实 Core + Docker 集成检查通过:API-24 请求权限/上下文路由、当前 socket 与 canonical ID、无效 Shell 和停止容器拒绝、包文件字节不变;临时容器与测试后端已清理。

  • 真实 Docker 数据预览检查了标签栏右侧布局与窄面板换行,临时预览已关闭。

  • Lithe 主仓库的运行时 bundle 只读、测试稳定性和功能矩阵校验通过;本次改动自检未发现需要阻塞合并的问题。

  • GitHub CI 在提交 8cd7428 全部通过:run 41463743301,包含 Page、Backend,以及 Intel macOS 上的 universal 打包、Colima 启动、真实 Core + Docker 集成、引擎清理和归档验证。

待验收

API-24 首版仅支持本机 macOS,Docker CLI 必须位于终端 PATH,容器中必须有所选 Shell。Core-only 测试没有原生窗口,对终端请求明确返回不可用,没有伪造终端启动成功。安装插件后的完整原生交互(输入、Ctrl-C、焦点、缩放、关闭重开、取消确认及禁用清理)仍待整机验收,因此保留 Draft。

@xiaoyumuxi
xiaoyumuxi marked this pull request as ready for review November 2, 2026 14:46
@xiaoyumuxi
xiaoyumuxi merged commit 4bc23ff into main Nov 2, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant