@muzi3/pi-ui 0.2.0 → 0.2.1

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/README.md CHANGED
@@ -107,7 +107,7 @@ pi.events.emit("pi-ui:model-override", undefined); // 恢复会话模型
107
107
 
108
108
  ```
109
109
  ⠋ Thinking... ← 流式中,⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏ @80ms(复用边框指示器的帧)
110
- ⋯ Thinking... ← 空闲/结束后回落的静态帧
110
+ ✓ Thinking... ← 结束后回落的静态帧(accent 色对勾,同 pi 选择器标记当前项的那个)
111
111
  ```
112
112
 
113
113
  帧表不在这里另写一份,直接复用 `indicator.ts` 的 `buildSpinnerFrames`:两处观感要一致,两份列表
@@ -122,7 +122,9 @@ pi.events.emit("pi-ui:model-override", undefined); // 恢复会话模型
122
122
  - 配色:帧沿用 `accent`(同边框指示器),尾部文本 `thinkingText`。尾部要单独套一次
123
123
  `thinkingText`,因为 pi 把整串包进 `fg("thinkingText", label)`,内层 fg 的 reset 会让
124
124
  后面的行内文本不再跟随 `thinkingText`,颜色塌成终端默认色
125
- - 帧宽一致(盲文各占 1 列),标签不会左右抖;帧是每帧现取主题色(换主题后立刻跟上),不像边框
125
+ - 帧宽一致(盲文各占 1 列),标签不会左右抖;静止帧用 `✓`(U+2713)而不是 `✔️`,
126
+ 后者带 emoji 变体选择符、多数终端占 2 列,结束瞬间会把标签推右一格。帧是每帧现取主题色
127
+ (换主题后立刻跟上),不像边框
126
128
  spinner 那样需要按主题名重建缓存
127
129
  - 只在 thinking 块**折叠**时可见;Ctrl+T 展开思考原文时这个标签不显示,动画照旧开着(不额外
128
130
  探测 pi 内部的 `hideThinkingBlock`,它没有对外读接口)
@@ -2,8 +2,14 @@ import type { ExtensionContext, Theme } from "@earendil-works/pi-coding-agent";
2
2
 
3
3
  import { buildSpinnerFrames, SPINNER_INTERVAL_MS } from "./indicator.ts";
4
4
 
5
- /** 流式结束后回落的静态标记:横向省略号,明确“已经想完”。 */
6
- const PAUSED_MARK = "⋯";
5
+ /**
6
+ * 流式结束后回落的静态标记:pi 选择器里标记“当前项”的那个对勾。
7
+ *
8
+ * 用 `✓`(U+2713)而不是 `✔️`(带 emoji 变体选择符、多数终端占 2 列):盲文帧各占 1 列,
9
+ * 静止帧换成 2 列会让「Thinking...」在结束瞬间右移一格。配色沿用选择器的 `accent`,
10
+ * 与 spinner 帧同色,视觉上就是“转完了停在一个对勾上”。
11
+ */
12
+ const PAUSED_MARK = "✓";
7
13
 
8
14
  const LABEL_TEXT = "Thinking...";
9
15
 
@@ -18,7 +24,7 @@ const LABEL_TEXT = "Thinking...";
18
24
  * 所以尾部文本这里主动再套一次 `thinkingText`,颜色不塌。
19
25
  */
20
26
  function buildLabel(theme: Theme, frame: string | undefined): string {
21
- const head = frame ?? theme.fg("dim", PAUSED_MARK);
27
+ const head = frame ?? theme.fg("accent", PAUSED_MARK);
22
28
  return `${head} ${theme.fg("thinkingText", LABEL_TEXT)}`;
23
29
  }
24
30
 
@@ -41,7 +47,7 @@ export class ThinkingDotsAnimator {
41
47
  this.getContext = getContext;
42
48
  }
43
49
 
44
- /** 回落静态帧。每次进空闲都重新取色,主题在两轮之间被换掉也不会留下旧颜色。 */
50
+ /** 回落到静止的对勾。每次进空闲都重新取色,主题在两轮之间被换掉也不会留下旧颜色。 */
45
51
  pause(): void {
46
52
  this.stopTimer();
47
53
  this.paint(undefined);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@muzi3/pi-ui",
3
- "version": "0.2.0",
4
- "description": "Pi extension: 双行仪表盘 footer + 主题化工作指示器 + 折叠 thinking 标签三点动画 + Catppuccin Mocha 层次增强主题",
3
+ "version": "0.2.1",
4
+ "description": "Pi extension: 双行仪表盘 footer + 主题化工作指示器 + 折叠 thinking 标签 spinner 动画 + Catppuccin Mocha 层次增强主题",
5
5
  "keywords": [
6
6
  "pi-package",
7
7
  "pi-extension",