@harness-mix/cli 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +25 -30
- package/output/native-build/desktop-controller.mjs +1 -1
- package/output/native-build/renderer-extension.js +703 -41
- package/package.json +9 -8
- package/scripts/native-config-test.cjs +32 -2
- package/scripts/native-ui-smoke.cjs +39 -4
- package/scripts/pets-test.cjs +146 -0
- package/src/main/native/launcher.js +49 -2
- package/src/main/native/pets.js +176 -15
- package/src/main/native/protocol.js +9 -8
- package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.js +4 -4
- package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.js.map +1 -1
- package/src/native-ui/desktop-control/dist/tsconfig.tsbuildinfo +1 -1
- package/src/native-ui/desktop-control/src/renderer-draft-prewarm-runtime.ts +4 -4
- package/src/native-ui/desktop-control/test/renderer-draft-prewarm-policy.test.ts +7 -0
- package/src/native-ui/renderer-extension/dist/types/agent-selection-state.d.ts +1 -0
- package/src/native-ui/renderer-extension/dist/types/agent-selection-state.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts +2 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-settings-lifecycle.d.ts +2 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-settings-lifecycle.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/icons.d.ts +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/icons.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/localization.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts +5 -3
- package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/pet-market.d.ts +5 -0
- package/src/native-ui/renderer-extension/dist/types/settings/pet-market.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/pets-client.d.ts +57 -0
- package/src/native-ui/renderer-extension/dist/types/settings/pets-client.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/shell.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/skin-runtime.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/tsconfig.tsbuildinfo +1 -1
- package/src/native-ui/renderer-extension/src/agent-selection-state.ts +45 -14
- package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +69 -27
- package/src/native-ui/renderer-extension/src/renderer-model-client.ts +6 -0
- package/src/native-ui/renderer-extension/src/renderer-settings-lifecycle.ts +3 -0
- package/src/native-ui/renderer-extension/src/settings/icons.ts +15 -12
- package/src/native-ui/renderer-extension/src/settings/localization.ts +2 -0
- package/src/native-ui/renderer-extension/src/settings/pages.ts +74 -66
- package/src/native-ui/renderer-extension/src/settings/pet-market.css +310 -0
- package/src/native-ui/renderer-extension/src/settings/pet-market.ts +447 -0
- package/src/native-ui/renderer-extension/src/settings/pets-client.ts +74 -0
- package/src/native-ui/renderer-extension/src/settings/shell.css +27 -8
- package/src/native-ui/renderer-extension/src/settings/shell.ts +4 -3
- package/src/native-ui/renderer-extension/src/settings/skin-runtime.ts +234 -3
- package/src/native-ui/renderer-extension/test/agent-selection-state.test.ts +58 -0
- package/src/native-ui/renderer-extension/test/renderer-binding-probe.test.ts +12 -0
- package/src/native-ui/renderer-extension/test/renderer-model-client.test.ts +1 -0
- package/src/native-ui/renderer-extension/test/settings/localization.test.ts +1 -0
- package/src/native-ui/renderer-extension/test/settings/shell.test.ts +3 -0
- package/src/native-ui/renderer-extension/test/settings/skin-runtime.test.ts +28 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.11 — 2026-09-16
|
|
4
|
+
|
|
5
|
+
- Aligned all six `@harness-mix/native-*` runtime packages at 0.1.11 with the CLI; native binaries are unchanged from 0.1.9.
|
|
6
|
+
- Supersedes 0.1.10, whose manifest kept native pins at 0.1.9 (functionally identical binaries).
|
|
7
|
+
|
|
8
|
+
## 0.1.10 — 2026-09-16
|
|
9
|
+
|
|
10
|
+
- Added a community desktop pet marketplace with browsing, installation, and localization in the native settings shell.
|
|
11
|
+
- Preserved new task drafts across navigation so unsent composer text survives sidebar switches.
|
|
12
|
+
- Avoided restarting already-active Codex Desktop sessions from the launcher.
|
|
13
|
+
- Improved responsive skin readability across narrow layouts.
|
|
14
|
+
|
|
3
15
|
## 0.1.5 — 2026-09-13
|
|
4
16
|
|
|
5
17
|
- Added graphical cross-Harness task handoff in the native Codex Desktop composer, with continue, execute-plan, independent-review, and reanalyze modes.
|
package/README.md
CHANGED
|
@@ -10,6 +10,10 @@ macOS/Linux 已加入源码构建与启动适配;目标系统的完整桌面
|
|
|
10
10
|
⭐ 如果这个项目对你有帮助,请给我们一个 <a href="https://github.com/emo-xiaoyu/harness-mix">Star</a>! ⭐
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://linux.do/"><img alt="Linux DO" src="https://img.shields.io/badge/Linux%20DO-%E7%A4%BE%E5%8C%BA-0A66C2.svg"></a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
13
17
|
<p align="center"><strong>Codex 原生 UI,连接多个原生 Coding Harness,并让任务在它们之间无缝接力。</strong></p>
|
|
14
18
|
|
|
15
19
|
<p align="center">
|
|
@@ -66,36 +70,10 @@ Harness Mix 是接入官方 Codex Desktop 原生界面的本地内核。它通
|
|
|
66
70
|
|
|
67
71
|
预览来自当前 Codex Desktop 原生窗口:Harness Mix 作为原生扩展入口出现在桌面工具栏和 Composer 中,会话、模型、工具与权限仍由 Codex Desktop 及各 Harness 管理。
|
|
68
72
|
|
|
69
|
-
### 核心特性全景
|
|
70
|
-
|
|
71
|
-
```mermaid
|
|
72
|
-
flowchart TD
|
|
73
|
-
subgraph UI["🖥️ Codex Desktop 原生界面"]
|
|
74
|
-
Composer["Composer 输入框<br/>(# 协同 · 任务接力 · 排队)"]
|
|
75
|
-
Settings["设置面板<br/>(MCP 服务 · Skills 拖拽安装)"]
|
|
76
|
-
Sidebar["ChatGPT Web 侧边栏<br/>(上下文安全脱敏注入)"]
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
subgraph Core["⚡ Harness Mix 本地内核"]
|
|
80
|
-
Shim["CLI Shim<br/>(app-server 协议桥)"]
|
|
81
|
-
Host["Host Runtime<br/>(会话映射 · 检查点 · 协作编排 · 消息排队)"]
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
subgraph Engines["🤖 原生 Coding Harnesses(17 个已接入)"]
|
|
85
|
-
H1["Antigravity / Codex"]
|
|
86
|
-
H2["Claude Code / Pi / OMP"]
|
|
87
|
-
H3["DeepSeek / Grok / OpenCode"]
|
|
88
|
-
H4["CodeBuddy / Kiro / Cursor"]
|
|
89
|
-
H5["Hermes / Qoder / ZCode / Trae / OpenClaw"]
|
|
90
|
-
H6["Cline"]
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
UI --> Shim --> Host --> Engines
|
|
94
|
-
```
|
|
95
|
-
|
|
96
73
|
| 功能模块 | 核心能力 | 交互入口与特点 |
|
|
97
74
|
| :--- | :--- | :--- |
|
|
98
75
|
| **🔄 跨 Harness 任务接力** | 4 种接力模式(继续执行 / 执行计划 / 独立审查 / 重新分析)平滑交接 | 输入框接力角标 / `/switch`;持久化脱敏检查点与证据追溯 |
|
|
76
|
+
| **🎨 皮肤市场** | 内置 HeiGe 与 Codex Styler 主题,支持亮色 / 暗色、背景装饰和可读性保护 | 设置 → 皮肤;一键预览、应用和恢复原生外观 |
|
|
99
77
|
| **📚 历史会话导入与引用** | 一键导入 Pi / Claude / Codex / CodeBuddy 原生历史并可中断续跑;`#` 引用任意旧会话注入脱敏上下文 | 引用仅预取最近一页;MCP 只读工具 `get_session_info` / `list_session_messages` 供 Harness 按需翻页与读取分支 / 模型 / 用量元数据 |
|
|
100
78
|
| **🤝 多 Agent 协同编排** | 输入 `#` 唤起目标 Harness,胶囊标签直观管理,主控强约束派发 | 输入框 `#` 菜单;支持循环审查验证、子任务级联取消与超时熔断 |
|
|
101
79
|
| **🧩 原生 Skills 管理** | 全量覆盖 17 个 Harness 原生技能目录,会话启动自动预建根目录 | 设置 → Skills;支持单个 `SKILL.md` 或完整文件夹直接拖拽安装 |
|
|
@@ -107,9 +85,20 @@ flowchart TD
|
|
|
107
85
|
| **🌐 ChatGPT 侧边栏桥接** | 安全脱敏提取当前会话上下文并一键生成结构化草稿 | Web 快捷聊天面板;直通注入 ChatGPT,实现跨工具无缝协作 |
|
|
108
86
|
| **👤 账户与用量隔离** | Codex 多账户隔离与即时切换;实时追踪 Token / Credits 用量 | 原生侧边栏与设置面板;各 Harness 凭据、模型与审批原生自理 |
|
|
109
87
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
88
|
+
### 🎨 皮肤市场预览
|
|
89
|
+
|
|
90
|
+
主题资源随项目发布,图片直接使用仓库内的授权素材;应用皮肤只改变视觉层,不改变 Codex 原生交互和 Harness 执行行为。
|
|
91
|
+
|
|
92
|
+
<table align="center">
|
|
93
|
+
<tr>
|
|
94
|
+
<td align="center"><img src="src/assets/skins/heige/themes/miku-488137/hero.webp" width="360" alt="Miku 主题"><br><sub>🎀 Miku</sub></td>
|
|
95
|
+
<td align="center"><img src="src/assets/skins/heige/themes/genshin-night/hero.webp" width="360" alt="Genshin Night 主题"><br><sub>🌌 Genshin Night</sub></td>
|
|
96
|
+
</tr>
|
|
97
|
+
<tr>
|
|
98
|
+
<td align="center"><img src="src/assets/skins/heige/themes/deepspace-star/hero.webp" width="360" alt="Deepspace Star 主题"><br><sub>🌠 Deepspace Star</sub></td>
|
|
99
|
+
<td align="center"><img src="src/assets/skins/heige/themes/wuthering-tide/hero.webp" width="360" alt="Wuthering Tide 主题"><br><sub>🌊 Wuthering Tide</sub></td>
|
|
100
|
+
</tr>
|
|
101
|
+
</table>
|
|
113
102
|
|
|
114
103
|
## 原生 Harness 功能支持矩阵
|
|
115
104
|
|
|
@@ -157,6 +146,12 @@ flowchart TD
|
|
|
157
146
|
- **作用域与安全停用**:支持 Global(全局)与 Project(项目级)无缝切换;停用时安全移入保留目录,绝不损坏用户源文件。
|
|
158
147
|
- **远程 MCP 支持**:支持配置带自定义 Headers 的 Streamable HTTP / SSE 远程服务。
|
|
159
148
|
|
|
149
|
+
### 🎨 皮肤市场与可读性保护
|
|
150
|
+
- **主题预览与切换**:设置 → 皮肤中可预览并应用内置主题,也可随时恢复原生 Codex 外观。
|
|
151
|
+
- **全界面覆盖**:背景、侧边栏、消息卡片、输入框、按钮和文字颜色统一使用主题令牌。
|
|
152
|
+
- **暗色可读性**:自动增加遮罩和对比度,避免侧边栏、任务列表和消息内容在深色背景上消失。
|
|
153
|
+
- **交互零侵入**:不替换 Codex 控件,不修改模型、工具、权限、队列或原生会话。
|
|
154
|
+
|
|
160
155
|
## 本地运行
|
|
161
156
|
|
|
162
157
|
开发环境需要 Windows、macOS 或 Linux,近期 Node.js LTS 和 npm。应用不会读取或保存 Harness 的账户密钥,请先在对应的原生 CLI 中完成安装与登录;平台前提和真机验收范围见 [跨平台指南](docs/cross-platform.md)。
|
|
@@ -688,7 +688,7 @@ function installDraftPrewarmPolicyBridge(manager, bridge, hostId, target, prewar
|
|
|
688
688
|
};
|
|
689
689
|
const routedPrewarm = (parameters, options) => {
|
|
690
690
|
const routed = routeThreadStart(parameters);
|
|
691
|
-
const routedParameters = isRecord4(routed)
|
|
691
|
+
const routedParameters = isRecord4(routed) ? { ...routed, ephemeral: true } : routed;
|
|
692
692
|
if (shouldUseBridge("thread/start", routedParameters)) {
|
|
693
693
|
return routedSend("thread/start", routedParameters, options);
|
|
694
694
|
}
|