pi-one-ui 0.7.1 → 0.7.2
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
CHANGED
|
@@ -6,6 +6,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.7.2] - 2026-09-28
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- The Editor completion dropdown now paints the selected row with the editor frame color, so the selection follows the same static/adaptive thinking-level chain as the frame border while unselected rows keep Pi's native styling.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Keep the pending tool loading animation alive during long-running commands: the updateDisplay render cache now rebuilds pending tool rows so each animation tick re-enters the renderer, preventing the spinner from freezing while a command is still executing.
|
|
18
|
+
|
|
19
|
+
### Migration
|
|
20
|
+
|
|
21
|
+
- No configuration migration is required. Existing canonical v1 files and command names remain supported.
|
|
22
|
+
- For an unpinned npm installation, run `pi update npm:pi-one-ui`; for an existing version pin, run `pi install npm:pi-one-ui@0.7.2`. Fully exit and restart Pi after updating the package.
|
|
23
|
+
|
|
9
24
|
## [0.7.1] - 2026-09-21
|
|
10
25
|
|
|
11
26
|
### Changed
|
|
@@ -24,6 +39,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
24
39
|
- No configuration migration is required. Existing canonical v1 files and command names remain supported.
|
|
25
40
|
- For an unpinned npm installation, run `pi update npm:pi-one-ui`; for an existing version pin, run `pi install npm:pi-one-ui@0.7.1`. Fully exit and restart Pi after updating the package.
|
|
26
41
|
|
|
42
|
+
### Release verification
|
|
43
|
+
|
|
44
|
+
- Release source: [`e4451a2`](https://github.com/kerolt/pi-one-ui/commit/e4451a244838550f0914469bd8ff5ddbaebc1f8f). [CI](https://github.com/kerolt/pi-one-ui/actions/runs/35567977181) and [Publish](https://github.com/kerolt/pi-one-ui/actions/runs/35567977360) completed successfully; local and CI `npm run verify` passed 1,176 tests across 69 files, and `npm run pack:check` confirmed 124 package files.
|
|
45
|
+
- Real Pi regular/fullscreen TUI probes passed, covering settings, Context Inspector, Editor input and focus, presets, reload, session tree, compaction, session replacement, input listeners, and third-party Editor ownership. User-specific terminal, theme, and extension combinations still require manual verification.
|
|
46
|
+
- At publication, npm `latest` resolved to `0.7.1` with the matching release `gitHead` and package SHA-1 `0252f3b21190f56170a96ff8c3a2a1e8df74874f`. The [provenance statement](https://registry.npmjs.org/-/npm/v1/attestations/pi-one-ui@0.7.1) was published at [Sigstore log index 2905054424](https://search.sigstore.dev/?logIndex=2905054424).
|
|
47
|
+
|
|
27
48
|
## [0.7.0] - 2026-09-13
|
|
28
49
|
|
|
29
50
|
### Added
|
|
@@ -153,7 +174,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
153
174
|
|
|
154
175
|
- Reduced rendering lag when expanding settled tool groups by reusing cached child output.
|
|
155
176
|
|
|
156
|
-
[Unreleased]: https://github.com/kerolt/pi-one-ui/compare/v0.7.
|
|
177
|
+
[Unreleased]: https://github.com/kerolt/pi-one-ui/compare/v0.7.2...HEAD
|
|
178
|
+
[0.7.2]: https://github.com/kerolt/pi-one-ui/compare/v0.7.1...v0.7.2
|
|
157
179
|
[0.7.1]: https://github.com/kerolt/pi-one-ui/compare/v0.7.0...v0.7.1
|
|
158
180
|
[0.7.0]: https://github.com/kerolt/pi-one-ui/compare/v0.6.1...v0.7.0
|
|
159
181
|
[0.6.1]: https://github.com/kerolt/pi-one-ui/compare/v0.6.0...v0.6.1
|
package/README.en.md
CHANGED
|
@@ -76,11 +76,11 @@ Then open the unified settings panel:
|
|
|
76
76
|
/oneui
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
### Upgrading to 0.7.
|
|
79
|
+
### Upgrading to 0.7.2
|
|
80
80
|
|
|
81
|
-
This release
|
|
81
|
+
This release paints the Editor completion dropdown selection with the editor frame color so it follows the adaptive thinking-level chain, and keeps the tool loading animation alive during long-running commands.
|
|
82
82
|
|
|
83
|
-
Existing canonical v1 configurations and commands remain compatible; no migration is required.
|
|
83
|
+
Existing canonical v1 configurations and commands remain compatible; no migration is required.
|
|
84
84
|
|
|
85
85
|
For an unpinned npm installation, run:
|
|
86
86
|
|
|
@@ -88,7 +88,7 @@ For an unpinned npm installation, run:
|
|
|
88
88
|
pi update npm:pi-one-ui
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
If your installation pins a version, run `pi install npm:pi-one-ui@0.7.
|
|
91
|
+
If your installation pins a version, run `pi install npm:pi-one-ui@0.7.2` to update the pin. Fully exit and restart Pi after updating the package.
|
|
92
92
|
|
|
93
93
|
## Configuration
|
|
94
94
|
|
|
@@ -158,7 +158,7 @@ To keep the configuration section clean and focused, in-depth options, template
|
|
|
158
158
|
- Saved changes apply the next time `/oneui` opens; no `/reload` needed.
|
|
159
159
|
- **Color system & theme customization**: see [Editor Colors Reference (docs/editor-colors.md)](./docs/editor-colors.md)
|
|
160
160
|
- All colors resolve through unified theme semantics. Configured `colors.*` values resolve as theme tokens (adapting automatically across themes), while ANSI names map to semantic tokens (e.g. `red` to `error`). Fixed terminal colors can be specified using hex codes, 256-color indexes, or `fg:`/`bg:` prefixes.
|
|
161
|
-
- Full support for adaptive thinking-effort border colors (from Low to Max) and labels.
|
|
161
|
+
- Full support for adaptive thinking-effort border colors (from Low to Max) and labels. The completion menu selection shares the editor frame color and follows the same chain.
|
|
162
162
|
- **Migration from legacy versions**: Field cleanups from 0.5.x/0.6.0 (such as merging `opencode` into `minimalist`, or removing `colorSource`) are covered in [docs/configuration.md: Changes and Migration](./docs/configuration.md#6-变更与迁移).
|
|
163
163
|
|
|
164
164
|
## Upstream origins and project evolution
|
package/README.md
CHANGED
|
@@ -76,11 +76,11 @@ pi install git:github.com/kerolt/pi-one-ui
|
|
|
76
76
|
/oneui
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
### 升级到 0.7.
|
|
79
|
+
### 升级到 0.7.2
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
本次统一编辑器补全下拉选中项与编辑器外框的颜色,选中项随 thinking 档位自适应变化;同时修复长时间命令执行期间工具加载动画停止刷新的问题。
|
|
82
82
|
|
|
83
|
-
现有 canonical v1
|
|
83
|
+
现有 canonical v1 配置和命令保持兼容,无需迁移。
|
|
84
84
|
|
|
85
85
|
未固定版本的 npm 安装可执行:
|
|
86
86
|
|
|
@@ -88,7 +88,7 @@ pi install git:github.com/kerolt/pi-one-ui
|
|
|
88
88
|
pi update npm:pi-one-ui
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
若安装时固定了版本,执行 `pi install npm:pi-one-ui@0.7.
|
|
91
|
+
若安装时固定了版本,执行 `pi install npm:pi-one-ui@0.7.2` 更新版本指定。更新安装包后,完整退出并重启 Pi。
|
|
92
92
|
|
|
93
93
|
## 配置
|
|
94
94
|
|
|
@@ -158,7 +158,7 @@ pi update npm:pi-one-ui
|
|
|
158
158
|
- 修改保存后下次打开 `/oneui` 即生效,无需 `/reload`。
|
|
159
159
|
- **颜色体系与主题定制**:详见 [Editor 颜色配置说明 (docs/editor-colors.md)](./docs/editor-colors.md)
|
|
160
160
|
- 所有颜色统一按 Theme 语义解释,优先解析为当前主题语义 Token(随主题自动切换),ANSI 色名自动映射为语义色(如 `red` 对应 `error`);如需固定色彩,可直接指定 Hex、256 色索引或 `fg:`/`bg:` 前缀。
|
|
161
|
-
- 支持完整的 Thinking 思考档位(Low 至 Max
|
|
161
|
+
- 支持完整的 Thinking 思考档位(Low 至 Max)自适应边框与标签分级配色,补全下拉选中项与编辑器外框同色,跟随同一条颜色链。
|
|
162
162
|
- **历史版本迁移**:旧版升级带来的字段收敛(如 `opencode` 样式统一合并入 `minimalist`、`colorSource` 双模式移除等)参见 [docs/configuration.md 变更与迁移节](./docs/configuration.md#6-变更与迁移)。
|
|
163
163
|
|
|
164
164
|
## 上游来源与项目演进
|
|
@@ -80,6 +80,25 @@ function fingerprintOf(
|
|
|
80
80
|
];
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
/**
|
|
84
|
+
* 工具行是否处于「loading 图标动画应当持续」的状态。
|
|
85
|
+
*
|
|
86
|
+
* 与 default-mode renderCall 中 `scheduleAnimation` 的条件保持一致
|
|
87
|
+
* (本函数必须是其超集):动画 tick 经 ctx.invalidate → updateDisplay
|
|
88
|
+
* 回到渲染路径,缓存命中若跳过重建,renderCall 不会再执行,共享 timer
|
|
89
|
+
* 不再排期,长命令期间 loading 图标就会冻结在当前帧。
|
|
90
|
+
*/
|
|
91
|
+
function schedulesPendingAnimation(component: any): boolean {
|
|
92
|
+
const visualState = component?.rendererState?.ccstyleToolVisualState as
|
|
93
|
+
| string
|
|
94
|
+
| undefined;
|
|
95
|
+
const pending =
|
|
96
|
+
visualState === "pending" ||
|
|
97
|
+
(!visualState &&
|
|
98
|
+
(component.isPartial === true || component.executionStarted === true));
|
|
99
|
+
return Boolean(pending && component.executionStarted === true);
|
|
100
|
+
}
|
|
101
|
+
|
|
83
102
|
function componentsOf(component: any): [unknown, unknown] {
|
|
84
103
|
return [component.callRendererComponent, component.resultRendererComponent];
|
|
85
104
|
}
|
|
@@ -291,6 +310,12 @@ export function installToggleRenderCache(): ToggleRenderCacheHooks {
|
|
|
291
310
|
if (inputsMatch && entry) {
|
|
292
311
|
if (entry.current === slotKey) {
|
|
293
312
|
if (sameComponents(slot.components, componentsNow)) {
|
|
313
|
+
// pending 行必须重建:renderCall 既刷新 loading 图标帧,也给共享
|
|
314
|
+
// 动画 timer 续期;指纹未变时跳过重建会中断动画循环。
|
|
315
|
+
if (schedulesPendingAnimation(self)) {
|
|
316
|
+
rebuild();
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
294
319
|
// 容器内容仍是该槽,无重建必要;仅恢复可能被外部改写的派生字段。
|
|
295
320
|
self.hideComponent = slot.hideComponent;
|
|
296
321
|
return;
|
|
@@ -59,6 +59,22 @@ function clampLines(lines: string[], width: number): string[] {
|
|
|
59
59
|
return lines.map((line) => truncateToWidth(line, Math.max(0, width), ""));
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
/** 原生 SelectList 选中行的 `→ ` 标记;前置 SGR 是 Pi 的 selectedText 颜色。 */
|
|
63
|
+
const NATIVE_SELECTED_AUTOCOMPLETE_ROW = /^((?:(?:\x1b\[|\u009b)[0-9:;]*m)*)→ /;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* 用帧边框色重绘原生下拉选中行:去掉 Pi 的 selectedText 颜色序列,
|
|
67
|
+
* 使选中项与编辑器外框共用同一条 static/adaptive 颜色链。
|
|
68
|
+
*/
|
|
69
|
+
function renderSelectedAutocompleteRow(
|
|
70
|
+
line: string,
|
|
71
|
+
renderBorder: (text: string) => string,
|
|
72
|
+
): string {
|
|
73
|
+
const match = NATIVE_SELECTED_AUTOCOMPLETE_ROW.exec(line);
|
|
74
|
+
if (!match) return line;
|
|
75
|
+
return renderBorder(line.slice((match[1] ?? "").length));
|
|
76
|
+
}
|
|
77
|
+
|
|
62
78
|
export function renderFramedAutocompleteRows({
|
|
63
79
|
width,
|
|
64
80
|
lines,
|
|
@@ -75,7 +91,7 @@ export function renderFramedAutocompleteRows({
|
|
|
75
91
|
`${renderBorder("├")}${renderBorder("─".repeat(width - 2))}${renderBorder("┤")}`,
|
|
76
92
|
...lines.map(
|
|
77
93
|
(line) =>
|
|
78
|
-
`${renderBorder("│")} ${fillLine(line, contentWidth)} ${renderBorder("│")}`,
|
|
94
|
+
`${renderBorder("│")} ${fillLine(renderSelectedAutocompleteRow(line, renderBorder), contentWidth)} ${renderBorder("│")}`,
|
|
79
95
|
),
|
|
80
96
|
],
|
|
81
97
|
width,
|