dsh-life-pack 0.2.4 → 0.2.6

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.
@@ -23,6 +23,18 @@ export declare const HEALTH_STYLE: {
23
23
  /** 「去哪修」那一行的正文:各家交回来的 action 里若已自带「去哪修:」,这里剥掉一层——
24
24
  * 面板已经带了这个前缀,两边都写就会印成「去哪修:去哪修:…」。只剥开头那一次,别的一字不动。 */
25
25
  export declare function actionText(action: string): string;
26
+ /** 一份报文里**按根分开**的落点前缀(长的在前):只给「同一个根下至少两条落点」的根算前缀——
27
+ * 这个根下只有一条落点时不缩(没有第二条可比,缩出来反而是瞎猜)。
28
+ * 为什么要分根:一家报里常有别的盘的旁证(备忘录用 D 盘上那份媒体目录),只算一个总前缀,
29
+ * 一条旁证就能把整张表的缩写全拖没(#706 出图复评:备忘录那张表整片没缩、记账那张缩了)。 */
30
+ export declare function dirPrefixesOf(report: HealthReport): readonly string[];
31
+ /** `dirPrefixesOf` 的正文版:一段文字里(报文正文 + 表头两条混在一起)按根分组取公共目录前缀。 */
32
+ export declare function dirPrefixesIn(text: string): readonly string[];
33
+ /** 一家里所有会印出来的路径。 */
34
+ export declare function pathsOf(report: HealthReport): readonly string[];
35
+ /** 把报文里那一长串路径按公共前缀缩短(只动打印,不动事实)。
36
+ * 只按**扫得出来的那一段段落点**去缩,不做全串替换:既不误伤长路径,也不会把一段路劈成半截。 */
37
+ export declare function shortenPathsIn(text: string, prefixes: readonly string[]): string;
26
38
  /** 一盏灯:一家一名一档(数到几个红黄绿)。点一下把面板切到那家的页签。 */
27
39
  export interface HealthLightRow {
28
40
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"health-view.d.ts","sourceRoot":"","sources":["../src/health-view.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAc,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAoCnF,eAAO,MAAM,YAAY;kBAMlB,KAAK,CAAC,aAAa;sBACyE,KAAK,CAAC,aAAa;mBAC7D,KAAK,CAAC,aAAa;IAC1E,wDAAwD;qBACpB,KAAK,CAAC,aAAa;kBASlD,KAAK,CAAC,aAAa;wBACoC,KAAK,CAAC,aAAa;oBAY1E,KAAK,CAAC,aAAa;wBAC4B,KAAK,CAAC,aAAa;mBACG,KAAK,CAAC,aAAa;oBACV,KAAK,CAAC,aAAa;CAC9F,CAAC;AAOX;qDACqD;AACrD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED,iCAAiC;AACjC,wBAAgB,QAAQ,CACtB,IAAI,EAAE,SAAS;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EAChE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC,GAC1D,SAAS,cAAc,EAAE,CAU3B;AAWD,iCAAiC;AACjC,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,GAAG,KAAK,CAAC,YAAY,CA0ErB;AAOD;4DAC4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GAAG,KAAK,CAAC,YAAY,CAgFrB"}
1
+ {"version":3,"file":"health-view.d.ts","sourceRoot":"","sources":["../src/health-view.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAc,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAyCnF,eAAO,MAAM,YAAY;kBAMlB,KAAK,CAAC,aAAa;sBACyE,KAAK,CAAC,aAAa;mBAC7D,KAAK,CAAC,aAAa;IAC1E,wDAAwD;qBACpB,KAAK,CAAC,aAAa;kBAUlD,KAAK,CAAC,aAAa;wBACoC,KAAK,CAAC,aAAa;oBAY1E,KAAK,CAAC,aAAa;wBAC4B,KAAK,CAAC,aAAa;mBACG,KAAK,CAAC,aAAa;oBACV,KAAK,CAAC,aAAa;CAC9F,CAAC;AAOX;qDACqD;AACrD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGjD;AAwBD;;;qDAGqD;AACrD,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAErE;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAU7D;AAQD,oBAAoB;AACpB,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAI/D;AAED;sDACsD;AACtD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAchF;AAED,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED,iCAAiC;AACjC,wBAAgB,QAAQ,CACtB,IAAI,EAAE,SAAS;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EAChE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC,GAC1D,SAAS,cAAc,EAAE,CAc3B;AAqCD,iCAAiC;AACjC,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,GAAG,KAAK,CAAC,YAAY,CAoFrB;AAOD;4DAC4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GAAG,KAAK,CAAC,YAAY,CA+GrB"}
@@ -20,8 +20,10 @@ const STATUS_COLOR = {
20
20
  green: 'var(--dsw-alias-state-success-primary, #4ec9a0)',
21
21
  };
22
22
  /** 整行底色的浅一档:饱和降一档,免得红黄行「刺眼」压过正文(评审第二轮的扣分点)。 */
23
+ /** 红黄两档整行上底的底色。红灯要**明显重于**黄灯:复评实测原先两个底色亮度几乎一样
24
+ * (红 `#FBF3F3` 对黄 `#FCF3E5`,只差蓝通道),最严重那一档反而最淡——红色提到 0.14。 */
23
25
  const STATUS_TINT = {
24
- red: 'rgba(192, 57, 43, 0.06)',
26
+ red: 'rgba(192, 57, 43, 0.14)',
25
27
  yellow: 'rgba(224, 138, 0, 0.10)',
26
28
  green: 'transparent',
27
29
  };
@@ -32,6 +34,8 @@ const STATUS_TEXT = {
32
34
  green: 'var(--dsw-alias-state-success-primary, #4ec9a0)',
33
35
  };
34
36
  const STATUS_LABEL = { red: '红', yellow: '黄', green: '绿' };
37
+ /** 档位的**形状**标记:颜色之外的第二条读数(灰度截图、色弱视角下也分得开谁要处理)。 */
38
+ const STATUS_MARK = { red: '✕', yellow: '!', green: '✓' };
35
39
  /** 面板上的文字色与分隔线(与 `client.ts` 同一套别名)。 */
36
40
  const INK = 'var(--dsw-alias-label-primary, inherit)';
37
41
  const INK_DIM = 'var(--dsw-alias-label-secondary, #9a9a9a)';
@@ -52,8 +56,9 @@ export const HEALTH_STYLE = {
52
56
  background: 'transparent',
53
57
  color: INK,
54
58
  borderRadius: 8,
55
- padding: '4px 12px',
59
+ padding: '6px 16px',
56
60
  fontSize: 13,
61
+ fontWeight: 600,
57
62
  cursor: 'pointer',
58
63
  },
59
64
  lightsRow: { display: 'flex', flexWrap: 'wrap', gap: 8 },
@@ -83,15 +88,89 @@ export function actionText(action) {
83
88
  const trimmed = action.trim();
84
89
  return trimmed.startsWith('去哪修:') ? trimmed.slice(4).trim() : trimmed;
85
90
  }
91
+ /** 报文里能扫出来的每一段路径(盘符绝对路径;非 Windows 形状的退回 `/` 打头那一支)。 */
92
+ function rawPathsIn(text) {
93
+ return text.match(/[A-Za-z]:\/[^\s()「」,。;]+/g) ?? text.match(/\/[^\s()「」,。;]+/g) ?? [];
94
+ }
95
+ /** 一段落点的**根**(盘符):`C:/a/b` → `C:/`。用来把「同一个盘、但根下不同枝」的落点分开算,
96
+ * 免得一个 D 盘上的旁证(比如「配了但目录不在:D:/media」)把 C 盘那几条的缩写全拖没。 */
97
+ function rootOf(path) {
98
+ const drive = /^[A-Za-z]:\//.exec(path);
99
+ return drive === null ? '/' : drive[0];
100
+ }
101
+ /** 一段落点的公共目录前缀(按 `/` 切、整段比):`C:/a/b/c` + `C:/a/b/d` → `C:/a/b`。 */
102
+ function commonDirOf(paths) {
103
+ if (paths.length < 2)
104
+ return '';
105
+ const split = paths.map((path) => path.replace(/[.,。;]+$/, '').split('/'));
106
+ const first = split[0];
107
+ let size = 0;
108
+ while (size < first.length && split.every((parts) => parts[size] === first[size]))
109
+ size += 1;
110
+ return size < 1 ? '' : first.slice(0, size).join('/');
111
+ }
112
+ /** 一份报文里**按根分开**的落点前缀(长的在前):只给「同一个根下至少两条落点」的根算前缀——
113
+ * 这个根下只有一条落点时不缩(没有第二条可比,缩出来反而是瞎猜)。
114
+ * 为什么要分根:一家报里常有别的盘的旁证(备忘录用 D 盘上那份媒体目录),只算一个总前缀,
115
+ * 一条旁证就能把整张表的缩写全拖没(#706 出图复评:备忘录那张表整片没缩、记账那张缩了)。 */
116
+ export function dirPrefixesOf(report) {
117
+ return dirPrefixesIn(pathsOf(report).join(' '));
118
+ }
119
+ /** `dirPrefixesOf` 的正文版:一段文字里(报文正文 + 表头两条混在一起)按根分组取公共目录前缀。 */
120
+ export function dirPrefixesIn(text) {
121
+ const paths = rawPathsIn(text);
122
+ const roots = [...new Set(paths.map(rootOf))];
123
+ const prefixes = [];
124
+ for (const root of roots) {
125
+ const prefix = commonDirOf(paths.filter((path) => rootOf(path) === root));
126
+ if (prefix !== '')
127
+ prefixes.push(prefix);
128
+ }
129
+ // 长的在前:一个落点命中多条前缀时,最长的那个才是它真正的目录(缩短后不歧义)。
130
+ return prefixes.sort((a, b) => b.length - a.length);
131
+ }
132
+ /** 那一行「配置文件 … · 数据目录 …」+ 各条报文里的长路径,都缩成「公共前缀 + 短尾巴」。 */
133
+ function shorten(path, prefixes) {
134
+ const hit = prefixes.find((prefix) => path.startsWith(prefix + '/'));
135
+ return hit === undefined ? path : '…/' + path.slice(hit.length + 1);
136
+ }
137
+ /** 一家里所有会印出来的路径。 */
138
+ export function pathsOf(report) {
139
+ const out = [report.configPath, report.dataDir];
140
+ for (const item of report.items)
141
+ out.push(item.message);
142
+ return out;
143
+ }
144
+ /** 把报文里那一长串路径按公共前缀缩短(只动打印,不动事实)。
145
+ * 只按**扫得出来的那一段段落点**去缩,不做全串替换:既不误伤长路径,也不会把一段路劈成半截。 */
146
+ export function shortenPathsIn(text, prefixes) {
147
+ const candidates = rawPathsIn(text);
148
+ if (candidates.length === 0)
149
+ return text;
150
+ // 长的在前:先缩长的那条,缩完它自己就挡住了它的父目录,不会二次缩。
151
+ const longestFirst = [...new Set(candidates.map((path) => path.replace(/[.,。;]+$/, '')))].sort((a, b) => b.length - a.length);
152
+ let out = text;
153
+ for (const path of longestFirst) {
154
+ const hit = prefixes.find((prefix) => path.startsWith(prefix + '/'));
155
+ if (hit === undefined)
156
+ continue;
157
+ out = out.split(hit + '/').join('…/');
158
+ }
159
+ return out;
160
+ }
86
161
  /** 从六份报告数出那一行的灯(每家按最严重那一档上色)。 */
87
162
  export function lightsOf(tabs, reports) {
88
163
  return tabs.map((tab) => {
89
164
  const report = reports[tab.id];
165
+ const items = report?.items ?? [];
90
166
  return {
91
167
  id: tab.id,
92
168
  title: tab.title,
93
- status: report ? worstStatus(report.items) : null,
94
- counts: countByStatus(report?.items ?? []),
169
+ status: report ? worstStatus(items) : null,
170
+ counts: countByStatus(items),
171
+ // 这里曾短期印过「最严重那一项的名字」当区分度,**已撤回**:实测六家常坏在同一条通用检查项上
172
+ // (都是「数据目录」),印出来六家一模一样,是噪声不是区分度(出图复评实测逐字抄了六个「数据目录」)。
173
+ // 「哪一项坏了」本来就由那家自己那张表回答,灯上不再重复。
95
174
  };
96
175
  });
97
176
  }
@@ -106,6 +185,27 @@ function countsText(counts) {
106
185
  return '绿';
107
186
  return parts.join(' · ');
108
187
  }
188
+ /** 「红 2 · 黄 3」那一截**按档上色**:每一档用它自己的字色、分隔符走淡色。
189
+ * 为什么必须拆开:原先整截塞进一个 span、染「最严重那一档」的颜色,六家都红时「黄 3」就跟着印成红字——
190
+ * 本页自己说「黄=还没配」,文字层却把它涂成红(出图复评五份里三份独立指到,取色同为 `#c03828`)。 */
191
+ function countSegments(light) {
192
+ if (light.status === null) {
193
+ return [React.createElement('span', { key: 'dash', style: { color: INK_DIM, fontWeight: 700 } }, '—')];
194
+ }
195
+ const parts = [];
196
+ for (const status of ['red', 'yellow']) {
197
+ const count = light.counts[status];
198
+ if (count === 0)
199
+ continue;
200
+ if (parts.length > 0) {
201
+ parts.push(React.createElement('span', { key: status + '-sep', style: { color: INK_DIM } }, ' · '));
202
+ }
203
+ parts.push(React.createElement('span', { key: status, style: { color: STATUS_TEXT[status], fontWeight: 700 } }, STATUS_LABEL[status] + ' ' + String(count)));
204
+ }
205
+ if (parts.length === 0)
206
+ return [React.createElement('span', { key: 'green', style: { color: INK_DIM, fontWeight: 700 } }, '绿')];
207
+ return parts;
208
+ }
109
209
  /** 顶部那行总览:六家一盏灯 + 一个「体检一次」按钮。 */
110
210
  export function HealthOverview(props) {
111
211
  return React.createElement('div', { style: HEALTH_STYLE.box, 'data-ilife-health': 'overview' }, React.createElement('div', { style: HEALTH_STYLE.headRow }, React.createElement('div', { style: HEALTH_STYLE.head }, '配置体检')), React.createElement('div', { style: HEALTH_STYLE.runRow }, React.createElement('button', {
@@ -141,7 +241,22 @@ export function HealthOverview(props) {
141
241
  background: light.status === null ? INK_DIM : STATUS_COLOR[light.status],
142
242
  display: 'inline-block',
143
243
  },
144
- }), React.createElement('span', { style: { color: INK, fontWeight: 650 } }, light.title), React.createElement('span', { style: { color: light.status === null ? INK_DIM : STATUS_TEXT[light.status], fontWeight: 700 } }, light.status === null ? '—' : countsText(light.counts))))), React.createElement('div', { style: HEALTH_STYLE.meta }, props.error !== null ? props.error : '只看不改 · 灯=那一家最严重的一档 · 点一下跳到那家配置页'));
244
+ }), React.createElement('span', { style: { color: INK, fontWeight: 650 } }, light.title), ...countSegments(light)))), React.createElement('div', { style: HEALTH_STYLE.meta },
245
+ // 三档的含义要**写在屏上**(复评五份里三份独立指出「全屏没有图例,红黄绿只能靠猜」),
246
+ // 且三个词要**按档上色**——「定义红黄绿的那把钥匙自己不上色」是复评点名过的一处。
247
+ props.error !== null
248
+ ? props.error
249
+ : [
250
+ React.createElement('span', { key: 'r', style: { color: STATUS_TEXT.red, fontWeight: 700 } }, '红'),
251
+ React.createElement('span', { key: 'r2' }, '=坏了 · '),
252
+ React.createElement('span', { key: 'y', style: { color: STATUS_TEXT.yellow, fontWeight: 700 } }, '黄'),
253
+ React.createElement('span', { key: 'y2' }, '=还没配 · '),
254
+ React.createElement('span', { key: 'g', style: { color: STATUS_TEXT.green, fontWeight: 700 } }, '绿'),
255
+ React.createElement('span', { key: 'g2' }, '=正常 | 只看不改:不建目录、不改配置、不自动重置'),
256
+ // 页签那排也用圆点(`● 装上了/○ 没装`),这里把**顶部那排**的语义写清楚,
257
+ // 免得两排同构的圆点互相抢解释权(复评两份点名)。
258
+ React.createElement('span', { key: 'tab' }, ' · 上面那排圆点是体检灯,点一下跳到那家配置页;下面那排圆点是页签(实心=装上了)'),
259
+ ]));
145
260
  }
146
261
  /** 正正常常的那些:绿条只留「名字」,一句话与「去哪修」都不印(票面验收第一条:正常的收成一行)。 */
147
262
  function isAttentionItem(item) {
@@ -151,10 +266,19 @@ function isAttentionItem(item) {
151
266
  * **正常的**(绿)收成一行并列的小字,点得到、扫得完(票面验收第一条:正常的收成一行,有问题的才展开)。 */
152
267
  export function HealthTable(props) {
153
268
  const { report } = props;
269
+ const prefixes = report ? dirPrefixesOf(report) : [];
154
270
  return React.createElement('div', { style: HEALTH_STYLE.box, 'data-ilife-health': 'table' }, React.createElement('div', { style: HEALTH_STYLE.headRow }, React.createElement('div', { style: HEALTH_STYLE.head }, props.title + ' · 体检'), report ? React.createElement('div', { style: { color: INK_DIM, fontSize: 12 } }, countsText(countByStatus(report.items))) : null), props.phase === 'idle'
155
271
  ? React.createElement('div', { style: HEALTH_STYLE.meta }, '还没体检:点上面那个「体检一次」。')
156
272
  : null, props.phase === 'running' ? React.createElement('div', { style: HEALTH_STYLE.meta }, '正在体检…') : null, props.error !== null ? React.createElement('div', { style: HEALTH_STYLE.error }, props.error) : null, report
157
- ? React.createElement('div', null, React.createElement('div', { style: HEALTH_STYLE.meta }, '配置文件 ' + report.configPath + ' · 数据目录 ' + report.dataDir), report.items.filter(isAttentionItem).map((item) => React.createElement('div', {
273
+ ? React.createElement('div', null,
274
+ // 行内落点缩成「…/短尾」是为了不把每行撑成两行;但「去哪修:先建这个目录」要照着建,
275
+ // 就得把**它到底在哪儿**说清楚(出图复评五份里两份点名「照屏修不了」)。
276
+ // 措辞有讲究:不能写成「下面行内的「…/」都接在这里」——行里本来就有个「…/data」,
277
+ // 接上基目录会拼成「…/data/data」,自相矛盾(复评原话)。故只**点明缩写代表哪一层**。
278
+ report.dataDir !== ''
279
+ ? React.createElement('div', { style: { color: INK_DIM, fontSize: 11.5, marginTop: 2 } }, '落点根目录:' + report.dataDir
280
+ + (report.configPath !== '' ? '(配置文件 ' + report.configPath + ')' : ''))
281
+ : null, report.items.filter(isAttentionItem).map((item) => React.createElement('div', {
158
282
  key: item.id,
159
283
  'data-ilife-health': 'item',
160
284
  'data-status': item.status,
@@ -168,25 +292,48 @@ export function HealthTable(props) {
168
292
  lineHeight: 1.75,
169
293
  background: STATUS_TINT[item.status],
170
294
  },
171
- }, React.createElement('div', { style: { display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: 6 } }, React.createElement('span', {
172
- style: {
173
- width: 8, height: 8, borderRadius: '50%', display: 'inline-block', background: STATUS_COLOR[item.status],
174
- },
175
- }), React.createElement('span', { style: { fontWeight: 650, color: INK } }, item.title), React.createElement('span', {
295
+ }, React.createElement('div', { style: { display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: 6 } },
296
+ // 档位**不只靠颜色**认:形状标记(✕/!)+档位字,色弱与灰度截图下也分得开。
297
+ // 原先这里还有一个同色的实心圆点,与标记、档位字三者同义同色(复评两份点名「没有主次」),
298
+ // 且页签那排(`client.ts:349`)也用同样的圆点表示「这家装没装」——同屏两套圆点语义,
299
+ // 故本件的条目里**去掉圆点**,把圆点这一格语汇留给页签。
300
+ React.createElement('span', {
301
+ style: { color: STATUS_TEXT[item.status], fontWeight: 700, fontSize: 13, lineHeight: 1 },
302
+ 'aria-hidden': 'true',
303
+ }, STATUS_MARK[item.status]), React.createElement('span', { style: { fontWeight: 650, color: INK } }, item.title), React.createElement('span', {
176
304
  style: { color: STATUS_TEXT[item.status], fontWeight: 700 },
177
- }, STATUS_LABEL[item.status]), item.source ? React.createElement('span', { style: { color: INK_DIM } }, '· 来自' + item.source) : null), React.createElement('div', { style: { color: INK } }, item.message), item.action.length > 0
305
+ }, STATUS_LABEL[item.status]),
306
+ // 来源那一格**只在它不只是「默认值」时印**:四行全印「来自默认值」等于零区分度,
307
+ // 而且「值从哪来」这件事正文里已经写全了(复评原话:「这四个字零区分度」)。
308
+ item.source && item.source !== '默认值'
309
+ ? React.createElement('span', { style: { color: INK_DIM } }, '· 来自' + item.source)
310
+ : null), React.createElement('div', { style: { color: INK }, title: item.message }, shortenPathsIn(item.message, prefixes)), item.action.length > 0
178
311
  ? React.createElement('div', { style: { color: INK_DIM } }, '去哪修:' + actionText(item.action))
179
312
  : null)),
180
313
  // 正常的那一档:一条都不用点开,名字排成一行(`data-ilife-health="ok"` 供判据核对「一条不少」)。
314
+ // 给它**一条绿边+一层极淡底**,让它读起来是「一组正常项」,而不是四行问题之后的一句脚注
315
+ // (复评原话:「占多数的那一档在视觉上几乎退成脚注」)——条目仍然收成一行(票面第一条)。
181
316
  report.items.some((item) => !isAttentionItem(item))
182
317
  ? React.createElement('div', {
183
318
  'data-ilife-health': 'ok',
184
319
  style: {
185
320
  display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: '2px 10px',
186
- marginTop: 8, paddingTop: 6, borderTop: '1px solid ' + BORDER,
321
+ marginTop: 8, padding: '6px 8px',
322
+ borderLeft: '3px solid ' + STATUS_COLOR.green,
323
+ borderRadius: 6,
187
324
  fontSize: 12, lineHeight: 1.6, color: INK_DIM,
188
325
  },
189
- }, React.createElement('span', { style: { fontWeight: 650, color: INK } }, '正常 ' + String(countByStatus(report.items).green) + ' 条'), report.items.filter((item) => !isAttentionItem(item)).map((item) => React.createElement('span', { key: item.id, 'data-ilife-health': 'ok-item' }, '· ' + item.title)))
326
+ },
327
+ // 绿档也要**看得见**:只给一行灰字时,五份出图复评里三份独立指到「全屏没有绿色、
328
+ // 绿=正常这一档等于不存在」。故这一档前面加一个绿点(与红黄同一个「点」语汇),
329
+ // 说明它们就是正常项——条目**仍然收成一行**(票面第一条:正常的收成一行)。
330
+ React.createElement('span', {
331
+ style: {
332
+ width: 8, height: 8, borderRadius: '50%', display: 'inline-block',
333
+ background: STATUS_COLOR.green, flex: '0 0 auto',
334
+ },
335
+ 'aria-hidden': 'true',
336
+ }), React.createElement('span', { style: { fontWeight: 650, color: INK } }, '正常 ' + String(countByStatus(report.items).green) + ' 条'), React.createElement('span', { style: { color: INK_DIM } }, '(下列各项都正常工作)'), report.items.filter((item) => !isAttentionItem(item)).map((item) => React.createElement('span', { key: item.id, 'data-ilife-health': 'ok-item' }, '· ' + item.title)))
190
337
  : null)
191
338
  : null);
192
339
  }
@@ -1 +1 @@
1
- {"version":3,"file":"health-view.js","sourceRoot":"","sources":["../src/health-view.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGlE;;;;;;kCAMkC;AAClC,MAAM,YAAY,GAA2C;IAC3D,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,iDAAiD;CACzD,CAAC;AAEF,+CAA+C;AAC/C,MAAM,WAAW,GAA2C;IAC1D,GAAG,EAAE,yBAAyB;IAC9B,MAAM,EAAE,yBAAyB;IACjC,KAAK,EAAE,aAAa;CACrB,CAAC;AAEF,gDAAgD;AAChD,MAAM,WAAW,GAA2C;IAC1D,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,iDAAiD;CACzD,CAAC;AAEF,MAAM,YAAY,GAA2C,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAEnG,wCAAwC;AACxC,MAAM,GAAG,GAAG,yCAAyC,CAAC;AACtD,MAAM,OAAO,GAAG,2CAA2C,CAAC;AAC5D,MAAM,MAAM,GAAG,gDAAgD,CAAC;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,EAAE;QACH,OAAO,EAAE,WAAW;QACpB,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE;QAChB,MAAM,EAAE,YAAY,GAAG,MAAM;KACP;IACxB,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAyB;IACpH,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAyB;IAC1E,wDAAwD;IACxD,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAyB;IACvD,GAAG,EAAE;QACH,MAAM,EAAE,YAAY,GAAG,MAAM;QAC7B,UAAU,EAAE,aAAa;QACzB,KAAK,EAAE,GAAG;QACV,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,SAAS;KACK;IACxB,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAyB;IAC/E,KAAK,EAAE;QACL,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,CAAC;QACN,UAAU,EAAE,aAAa;QACzB,MAAM,EAAE,YAAY,GAAG,MAAM;QAC7B,YAAY,EAAE,GAAG;QACjB,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,SAAS;KACK;IACxB,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAyB;IACvE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAyB;IAC7F,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAyB;CAC9F,CAAC;AAEX,qCAAqC;AACrC,SAAS,WAAW,CAAC,MAAoB;IACvC,OAAO,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC;AACjD,CAAC;AAED;qDACqD;AACrD,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACxE,CAAC;AAUD,iCAAiC;AACjC,MAAM,UAAU,QAAQ,CACtB,IAAgE,EAChE,OAA2D;IAE3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YACjD,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kCAAkC;AAClC,SAAS,UAAU,CAAC,MAA8C;IAChE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,cAAc,CAAC,KAM9B;IACC,OAAO,KAAK,CAAC,aAAa,CACxB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,mBAAmB,EAAE,UAAU,EAAE,EAC5D,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,EAC/B,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CACjE,EACD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,EAC9B,KAAK,CAAC,aAAa,CACjB,QAAQ,EACR;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG;QACnG,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,OAAO,EAAE,KAAK,CAAC,KAAK;QACpB,KAAK,EAAE,6BAA6B;KACrC,EACD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAChC,CACF,EACD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAChE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACzB,KAAK,CAAC,aAAa,CACjB,QAAQ,EACR;QACE,GAAG,EAAE,KAAK,CAAC,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,mBAAmB,EAAE,OAAO;QAC5B,YAAY,EAAE,KAAK,CAAC,EAAE;QACtB,+CAA+C;QAC/C,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI;YAC1B,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,YAAY,CAAC,SAAS,EAAE;YACtD,CAAC,CAAC;gBACE,GAAG,YAAY,CAAC,KAAK;gBACrB,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;gBACvC,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;aACtC;QACL,QAAQ,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI;QAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI;YAC1B,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;KACjD,EACD,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;QAC1B,KAAK,EAAE;YACL,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;YACxE,OAAO,EAAE,cAAc;SACxB;KACF,CAAC,EACF,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EACpF,KAAK,CAAC,aAAa,CACjB,MAAM,EACN,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAClG,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CACvD,CACF,CACF,CACF,EACD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,EAC5B,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,iCAAiC,CACvE,CACF,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,SAAS,eAAe,CAAC,IAAgB;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED;4DAC4D;AAC5D,MAAM,UAAU,WAAW,CAAC,KAK3B;IACC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,OAAO,KAAK,CAAC,aAAa,CACxB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,EACzD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,EAC/B,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,EAC/E,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACjI,EACD,KAAK,CAAC,KAAK,KAAK,MAAM;QACpB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,mBAAmB,CAAC;QAC/E,CAAC,CAAC,IAAI,EACR,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EACpG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EACpG,MAAM;QACJ,CAAC,CAAC,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,IAAI,EACJ,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,EACnH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAChD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL;YACE,GAAG,EAAE,IAAI,CAAC,EAAE;YACZ,mBAAmB,EAAE,MAAM;YAC3B,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,yBAAyB;YACzB,KAAK,EAAE;gBACL,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,YAAY,GAAG,MAAM;gBAChC,YAAY,EAAE,CAAC;gBACf,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;aACrC;SACF,EACD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAC9E,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;YAC1B,KAAK,EAAE;gBACL,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;aACzG;SACF,CAAC,EACF,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EACnF,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;YAC1B,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE;SAC5D,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAC7B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CACtG,EACD,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EACnE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7F,CAAC,CAAC,IAAI,CACT,CACF;QACD,+DAA+D;QAC/D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC,CAAC,KAAK,CAAC,aAAa,CACjB,KAAK,EACL;gBACE,mBAAmB,EAAE,IAAI;gBACzB,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU;oBACxE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,GAAG,MAAM;oBAC7D,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO;iBAC9C;aACF,EACD,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EACjI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjE,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CACjG,CACF;YACH,CAAC,CAAC,IAAI,CACT;QACH,CAAC,CAAC,IAAI,CACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"health-view.js","sourceRoot":"","sources":["../src/health-view.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGlE;;;;;;kCAMkC;AAClC,MAAM,YAAY,GAA2C;IAC3D,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,iDAAiD;CACzD,CAAC;AAEF,+CAA+C;AAC/C;8DAC8D;AAC9D,MAAM,WAAW,GAA2C;IAC1D,GAAG,EAAE,yBAAyB;IAC9B,MAAM,EAAE,yBAAyB;IACjC,KAAK,EAAE,aAAa;CACrB,CAAC;AAEF,gDAAgD;AAChD,MAAM,WAAW,GAA2C;IAC1D,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,iDAAiD;CACzD,CAAC;AAEF,MAAM,YAAY,GAA2C,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAEnG,kDAAkD;AAClD,MAAM,WAAW,GAA2C,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAElG,wCAAwC;AACxC,MAAM,GAAG,GAAG,yCAAyC,CAAC;AACtD,MAAM,OAAO,GAAG,2CAA2C,CAAC;AAC5D,MAAM,MAAM,GAAG,gDAAgD,CAAC;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,EAAE;QACH,OAAO,EAAE,WAAW;QACpB,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE;QAChB,MAAM,EAAE,YAAY,GAAG,MAAM;KACP;IACxB,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAyB;IACpH,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAyB;IAC1E,wDAAwD;IACxD,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAyB;IACvD,GAAG,EAAE;QACH,MAAM,EAAE,YAAY,GAAG,MAAM;QAC7B,UAAU,EAAE,aAAa;QACzB,KAAK,EAAE,GAAG;QACV,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,GAAG;QACf,MAAM,EAAE,SAAS;KACK;IACxB,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAyB;IAC/E,KAAK,EAAE;QACL,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,CAAC;QACN,UAAU,EAAE,aAAa;QACzB,MAAM,EAAE,YAAY,GAAG,MAAM;QAC7B,YAAY,EAAE,GAAG;QACjB,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,SAAS;KACK;IACxB,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAyB;IACvE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAyB;IAC7F,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAyB;CAC9F,CAAC;AAEX,qCAAqC;AACrC,SAAS,WAAW,CAAC,MAAoB;IACvC,OAAO,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC;AACjD,CAAC;AAED;qDACqD;AACrD,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACxE,CAAC;AAED,uDAAuD;AACvD,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AACzF,CAAC;AAED;wDACwD;AACxD,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,mEAAmE;AACnE,SAAS,WAAW,CAAC,KAAwB;IAC3C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAa,CAAC;IACnC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QAAE,IAAI,IAAI,CAAC,CAAC;IAC7F,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC;AAED;;;qDAGqD;AACrD,MAAM,UAAU,aAAa,CAAC,MAAoB;IAChD,OAAO,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,MAAM,KAAK,EAAE;YAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,0CAA0C;IAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,uDAAuD;AACvD,SAAS,OAAO,CAAC,IAAY,EAAE,QAA2B;IACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;IACrE,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,oBAAoB;AACpB,MAAM,UAAU,OAAO,CAAC,MAAoB;IAC1C,MAAM,GAAG,GAAa,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;sDACsD;AACtD,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAA2B;IACtE,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,oCAAoC;IACpC,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5F,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAC9B,CAAC;IACF,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;QACrE,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAUD,iCAAiC;AACjC,MAAM,UAAU,QAAQ,CACtB,IAAgE,EAChE,OAA2D;IAE3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;QAClC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YAC1C,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;YAC5B,kDAAkD;YAClD,qDAAqD;YACrD,+BAA+B;SAChC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kCAAkC;AAClC,SAAS,UAAU,CAAC,MAA8C;IAChE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;4DAE4D;AAC5D,SAAS,aAAa,CAAC,KAAqB;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAU,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,CAAC;YAAE,SAAS;QAC1B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACtG,CAAC;QACD,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,aAAa,CACjB,MAAM,EACN,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EACvE,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAC3C,CACF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAChI,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,cAAc,CAAC,KAM9B;IACC,OAAO,KAAK,CAAC,aAAa,CACxB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,mBAAmB,EAAE,UAAU,EAAE,EAC5D,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,EAC/B,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CACjE,EACD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,EAC9B,KAAK,CAAC,aAAa,CACjB,QAAQ,EACR;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG;QACnG,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,OAAO,EAAE,KAAK,CAAC,KAAK;QACpB,KAAK,EAAE,6BAA6B;KACrC,EACD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAChC,CACF,EACD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAChE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACzB,KAAK,CAAC,aAAa,CACjB,QAAQ,EACR;QACE,GAAG,EAAE,KAAK,CAAC,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,mBAAmB,EAAE,OAAO;QAC5B,YAAY,EAAE,KAAK,CAAC,EAAE;QACtB,+CAA+C;QAC/C,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI;YAC1B,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,YAAY,CAAC,SAAS,EAAE;YACtD,CAAC,CAAC;gBACE,GAAG,YAAY,CAAC,KAAK;gBACrB,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;gBACvC,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;aACtC;QACL,QAAQ,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI;QAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI;YAC1B,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;KACjD,EACD,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;QAC1B,KAAK,EAAE;YACL,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;YACxE,OAAO,EAAE,cAAc;SACxB;KACF,CAAC,EACF,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EACpF,GAAG,aAAa,CAAC,KAAK,CAAC,CACxB,CACF,CACF,EACD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE;IAC5B,+CAA+C;IAC/C,6CAA6C;IAC7C,KAAK,CAAC,KAAK,KAAK,IAAI;QAClB,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC;YACE,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YAClG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;YACpD,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YACrG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC;YACrD,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;YACpG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,4BAA4B,CAAC;YACxE,4CAA4C;YAC5C,2BAA2B;YAC3B,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,4CAA4C,CAAC;SAC1F,CACN,CACF,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,SAAS,eAAe,CAAC,IAAgB;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED;4DAC4D;AAC5D,MAAM,UAAU,WAAW,CAAC,KAK3B;IACC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAsB,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,OAAO,KAAK,CAAC,aAAa,CACxB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,EACzD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,EAC/B,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,EAC/E,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACjI,EACD,KAAK,CAAC,KAAK,KAAK,MAAM;QACpB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,mBAAmB,CAAC;QAC/E,CAAC,CAAC,IAAI,EACR,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EACpG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EACpG,MAAM;QACJ,CAAC,CAAC,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,IAAI;QACJ,6CAA6C;QAC7C,wCAAwC;QACxC,+CAA+C;QAC/C,oDAAoD;QACpD,MAAM,CAAC,OAAO,KAAK,EAAE;YACnB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EACtF,QAAQ,GAAG,MAAM,CAAC,OAAO;kBACvB,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,IAAI,EACR,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAChD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL;YACE,GAAG,EAAE,IAAI,CAAC,EAAE;YACZ,mBAAmB,EAAE,MAAM;YAC3B,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,yBAAyB;YACzB,KAAK,EAAE;gBACL,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,YAAY,GAAG,MAAM;gBAChC,YAAY,EAAE,CAAC;gBACf,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;aACrC;SACF,EACD,KAAK,CAAC,aAAa,CACjB,KAAK,EACL,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QAC9E,2CAA2C;QAC3C,+CAA+C;QAC/C,oDAAoD;QACpD,gCAAgC;QAChC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;YAC1B,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;YACxF,aAAa,EAAE,MAAM;SACtB,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAC5B,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EACnF,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;YAC1B,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE;SAC5D,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,4CAA4C;QAC5C,wCAAwC;QACxC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;YAClC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAClF,CAAC,CAAC,IAAI,CACT,EACD,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAClH,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7F,CAAC,CAAC,IAAI,CACT,CACF;QACD,+DAA+D;QAC/D,gDAAgD;QAChD,+CAA+C;QAC/C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC,CAAC,KAAK,CAAC,aAAa,CACjB,KAAK,EACL;gBACE,mBAAmB,EAAE,IAAI;gBACzB,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU;oBACxE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS;oBAChC,UAAU,EAAE,YAAY,GAAG,YAAY,CAAC,KAAK;oBAC7C,YAAY,EAAE,CAAC;oBACf,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO;iBAC9C;aACF;YACD,4CAA4C;YAC5C,0CAA0C;YAC1C,0CAA0C;YAC1C,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC1B,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc;oBACjE,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU;iBACjD;gBACD,aAAa,EAAE,MAAM;aACtB,CAAC,EACF,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EACjI,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,CAAC,EACzE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjE,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CACjG,CACF;YACH,CAAC,CAAC,IAAI,CACT;QACH,CAAC,CAAC,IAAI,CACT,CAAC;AACJ,CAAC"}
package/dist/nav.d.ts CHANGED
@@ -27,7 +27,7 @@ export interface RecoTab extends ManagerTab {
27
27
  }
28
28
  export declare const MANAGER_PLUGIN: "dsh-life-pack";
29
29
  /** 总管版本号(与 package.json 同步,release 时一起 bump;设置页总设置区版本行唯一来源)。 */
30
- export declare const MANAGER_VERSION: "0.2.4";
30
+ export declare const MANAGER_VERSION: "0.2.6";
31
31
  export declare const DUAL_ADD_PREFIX: "dsh plugin add dsh-life-pack";
32
32
  export declare function dualInstallCmd(singlePlugin: string): string;
33
33
  /** P3 定案 6 tab(order 升序即 + 号菜单顺序;已打开条不受 order 控制)。 */
package/dist/nav.js CHANGED
@@ -13,7 +13,7 @@
13
13
  */
14
14
  export const MANAGER_PLUGIN = 'dsh-life-pack';
15
15
  /** 总管版本号(与 package.json 同步,release 时一起 bump;设置页总设置区版本行唯一来源)。 */
16
- export const MANAGER_VERSION = '0.2.4';
16
+ export const MANAGER_VERSION = '0.2.6';
17
17
  export const DUAL_ADD_PREFIX = 'dsh plugin add dsh-life-pack';
18
18
  export function dualInstallCmd(singlePlugin) {
19
19
  return DUAL_ADD_PREFIX + ' ' + singlePlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"update-client.d.ts","sourceRoot":"","sources":["../src/update-client.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEjE,yDAAyD;AACzD,MAAM,MAAM,QAAQ,GAAG,CACrB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CACR;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,CACzI,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG,WAAW,CAAC;AA4CpF,+CAA+C;AAC/C,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAMxH;AAED,gEAAgE;AAChE,wBAAsB,WAAW,CAC/B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,MAAM,EAAE,UAAU,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAIpC;AAED,6CAA6C;AAC7C,wBAAsB,aAAa,CACjC,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAEhE;AAED,kDAAkD;AAClD,wBAAsB,eAAe,CACnC,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAyCpC"}
1
+ {"version":3,"file":"update-client.d.ts","sourceRoot":"","sources":["../src/update-client.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEjE,yDAAyD;AACzD,MAAM,MAAM,QAAQ,GAAG,CACrB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CACR;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,CACzI,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG,WAAW,CAAC;AA8CpF,+CAA+C;AAC/C,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAMxH;AAED,gEAAgE;AAChE,wBAAsB,WAAW,CAC/B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,MAAM,EAAE,UAAU,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAIpC;AAED,6CAA6C;AAC7C,wBAAsB,aAAa,CACjC,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAEhE;AAED,kDAAkD;AAClD,wBAAsB,eAAe,CACnC,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAyCpC"}
@@ -37,7 +37,9 @@ async function callManager(call, method, payload) {
37
37
  result = await call(MANAGER_RPC.base, MANAGER_RPC.endpoint, { method, payload });
38
38
  }
39
39
  catch (error) {
40
- return failure('check-failed', { detail: String(error?.message ?? error) });
40
+ // 传输层失败(路由没注册、宿主半版本对不上、请求挂了):不许套用「查新版失败」那句——
41
+ // 它对这种情形是误导(真机上就这么误报过一次)。各层的失败各有各的话。
42
+ return failure('manager-unreachable', { detail: String(error?.message ?? error) });
41
43
  }
42
44
  if (!result || typeof result !== 'object' || typeof result.ok !== 'boolean') {
43
45
  return failure('internal', { detail: '回执信封异常(非 ok 信封)' });
@@ -1 +1 @@
1
- {"version":3,"file":"update-client.js","sourceRoot":"","sources":["../src/update-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-client.js","sourceRoot":"","sources":["../src/update-client.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,13 @@
10
10
  * 手工命令形状抄第 9 节(`commands.ts:104-122` 的 `manualCommand`)。
11
11
  */
12
12
  import type { BlockedReason } from 'dsh-plugin-update';
13
+ /** 爱生活页签槽名(总管声明 `children`、各单品技能设置页注册进来;单段名,避开官方 `settings.*` 前缀)。
14
+ *
15
+ * 为什么住这里:这个名字**两侧都要用**——面板侧 `client.ts` 拿它注册/投影槽,
16
+ * 宿主侧(`update-env.ts` 的 `readPanelRegistered`)拿它判「已装产物里到底有没有注册代码」。
17
+ * 一处定义、两边引用(结构纪律「概念唯一」):名字改了只有这一行要动。
18
+ * 宿主判据为什么要读这个字面量、以及它的边界,见 `readPanelRegistered` 的头注。 */
19
+ export declare const CONFIG_TAB_SLOT: "ilife.config-tab";
13
20
  /** 载体:宿主注册 `connection.fetch.register` 的路径 / 面板 `connection.rpc.call` 的两段参数。 */
14
21
  export declare const MANAGER_RPC: {
15
22
  /** 载体基段(`connection.rpc.call` 的**第一段**参数)。传错第一段就是 404:真机上踩过一次。 */
@@ -25,7 +32,7 @@ export declare const MANAGER_RPC: {
25
32
  export declare const MANAGER_ACTIONS: {
26
33
  /** 装上缺席的目标包:入参 `{packageName, version}`,回包 `{packageName, version}`。 */
27
34
  readonly install: "ilife-manager.install";
28
- /** 七个更新目标的表:入参 `{}`,回包 `{targets: [{key, title, packageName, phones, runningVersion, installedVersion, skill}]}`。
35
+ /** 七个更新目标的表:入参 `{}`,回包 `{targets: [{key, title, packageName, phones, runningVersion, installedVersion, panelRegistered, skill}]}`。
29
36
  *
30
37
  * 电话名为什么由宿主转交而不是面板侧写死:更新包的三个电话名只有它自己知道
31
38
  * (`update.phoneNames`,`host.ts:335`);面板侧既不能 import 更新包(浏览器产物纯度门)
@@ -1 +1 @@
1
- {"version":3,"file":"update-contract.d.ts","sourceRoot":"","sources":["../src/update-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,gFAAgF;AAChF,eAAO,MAAM,WAAW;IACtB,kEAAkE;;IAElE,2DAA2D;;IAE3D,gCAAgC;;IAEhC,wCAAwC;;CAEhC,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,eAAe;IAC1B,wEAAwE;;IAExE;;;;;qBAKiB;;CAET,CAAC;AAEX,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB,EAAG,6BAAsC,CAAC;AAqBvE,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,iDAAiD;AACjD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,GAAG,IAAI,CAQhB;AAED,kDAAkD;AAClD,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EASnD,CAAC"}
1
+ {"version":3,"file":"update-contract.d.ts","sourceRoot":"","sources":["../src/update-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;wDAKwD;AACxD,eAAO,MAAM,eAAe,EAAG,kBAA2B,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,WAAW;IACtB,kEAAkE;;IAElE,2DAA2D;;IAE3D,gCAAgC;;IAEhC,wCAAwC;;CAEhC,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,eAAe;IAC1B,wEAAwE;;IAExE;;;;;qBAKiB;;CAET,CAAC;AAEX,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB,EAAG,6BAAsC,CAAC;AAsBvE,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,iDAAiD;AACjD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,GAAG,IAAI,CAQhB;AAED,kDAAkD;AAClD,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EASnD,CAAC"}
@@ -1,3 +1,10 @@
1
+ /** 爱生活页签槽名(总管声明 `children`、各单品技能设置页注册进来;单段名,避开官方 `settings.*` 前缀)。
2
+ *
3
+ * 为什么住这里:这个名字**两侧都要用**——面板侧 `client.ts` 拿它注册/投影槽,
4
+ * 宿主侧(`update-env.ts` 的 `readPanelRegistered`)拿它判「已装产物里到底有没有注册代码」。
5
+ * 一处定义、两边引用(结构纪律「概念唯一」):名字改了只有这一行要动。
6
+ * 宿主判据为什么要读这个字面量、以及它的边界,见 `readPanelRegistered` 的头注。 */
7
+ export const CONFIG_TAB_SLOT = 'ilife.config-tab';
1
8
  /** 载体:宿主注册 `connection.fetch.register` 的路径 / 面板 `connection.rpc.call` 的两段参数。 */
2
9
  export const MANAGER_RPC = {
3
10
  /** 载体基段(`connection.rpc.call` 的**第一段**参数)。传错第一段就是 404:真机上踩过一次。 */
@@ -13,7 +20,7 @@ export const MANAGER_RPC = {
13
20
  export const MANAGER_ACTIONS = {
14
21
  /** 装上缺席的目标包:入参 `{packageName, version}`,回包 `{packageName, version}`。 */
15
22
  install: 'ilife-manager.install',
16
- /** 七个更新目标的表:入参 `{}`,回包 `{targets: [{key, title, packageName, phones, runningVersion, installedVersion, skill}]}`。
23
+ /** 七个更新目标的表:入参 `{}`,回包 `{targets: [{key, title, packageName, phones, runningVersion, installedVersion, panelRegistered, skill}]}`。
17
24
  *
18
25
  * 电话名为什么由宿主转交而不是面板侧写死:更新包的三个电话名只有它自己知道
19
26
  * (`update.phoneNames`,`host.ts:335`);面板侧既不能 import 更新包(浏览器产物纯度门)
@@ -38,6 +45,7 @@ const REASON_TEXT = {
38
45
  'check-expired': '上次查新版的凭证过期了:重新查一次再点安装(不要重试旧编号)。',
39
46
  'update-busy': '同一个使用范围同时只装一个:等当前任务结束再点。',
40
47
  'install-failed': '安装没跑成:按下面那条手工命令在终端执行一次。',
48
+ 'manager-unreachable': '总管的电话没接上(宿主半没注册或版本对不上):重启宿主后再试;仍不行看宿主日志。',
41
49
  'bad-request': '回执异常(请求形状不对):把宿主日志里的事件名报给作者。',
42
50
  internal: '回执异常(总管内部错误):把宿主日志里的事件名报给作者。',
43
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"update-contract.js","sourceRoot":"","sources":["../src/update-contract.ts"],"names":[],"mappings":"AAaA,gFAAgF;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,kEAAkE;IAClE,IAAI,EAAE,MAAM;IACZ,2DAA2D;IAC3D,OAAO,EAAE,gBAAgB;IACzB,gCAAgC;IAChC,QAAQ,EAAE,eAAe;IACzB,wCAAwC;IACxC,IAAI,EAAE,oBAAoB;CAClB,CAAC;AAEX,wDAAwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,wEAAwE;IACxE,OAAO,EAAE,uBAAuB;IAChC;;;;;qBAKiB;IACjB,OAAO,EAAE,uBAAuB;CACxB,CAAC;AAEX,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,6BAAsC,CAAC;AAEvE,uEAAuE;AACvE,MAAM,WAAW,GAA2B;IAC1C,iBAAiB,EAAE,6CAA6C;IAChE,gBAAgB,EAAE,mCAAmC;IACrD,sBAAsB,EAAE,6CAA6C;IACrE,sBAAsB,EAAE,gCAAgC;IACxD,iBAAiB,EAAE,2BAA2B;IAC9C,mBAAmB,EAAE,8CAA8C;IACnE,mBAAmB,EAAE,kDAAkD;IACvE,mBAAmB,EAAE,sCAAsC;IAC3D,cAAc,EAAE,qCAAqC;IACrD,iBAAiB,EAAE,2CAA2C;IAC9D,eAAe,EAAE,iCAAiC;IAClD,aAAa,EAAE,0BAA0B;IACzC,gBAAgB,EAAE,yBAAyB;IAC3C,aAAa,EAAE,8BAA8B;IAC7C,QAAQ,EAAE,8BAA8B;CACzC,CAAC;AAEF,uCAAuC;AACvC,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,GAAG,IAAI,GAAG,mBAAmB,CAAC;AACnE,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,oBAAoB,CAAC,KAKpC;IACC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClH,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAChH,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,IAAI,gBAAgB,CAAC;IACvD,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChF,OAAO,uBAAuB,GAAG,UAAU,GAAG,oBAAoB,GAAG,KAAK,CAAC,WAAW,GAAG,GAAG,GAAG,OAAO,GAAG,cAAc,GAAG,QAAQ,CAAC;AACrI,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,iBAAiB;IACjB,gBAAgB;IAChB,sBAAsB;IACtB,sBAAsB;IACtB,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;CACpB,CAAC"}
1
+ {"version":3,"file":"update-contract.js","sourceRoot":"","sources":["../src/update-contract.ts"],"names":[],"mappings":"AAaA;;;;;wDAKwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,kBAA2B,CAAC;AAE3D,gFAAgF;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,kEAAkE;IAClE,IAAI,EAAE,MAAM;IACZ,2DAA2D;IAC3D,OAAO,EAAE,gBAAgB;IACzB,gCAAgC;IAChC,QAAQ,EAAE,eAAe;IACzB,wCAAwC;IACxC,IAAI,EAAE,oBAAoB;CAClB,CAAC;AAEX,wDAAwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,wEAAwE;IACxE,OAAO,EAAE,uBAAuB;IAChC;;;;;qBAKiB;IACjB,OAAO,EAAE,uBAAuB;CACxB,CAAC;AAEX,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,6BAAsC,CAAC;AAEvE,uEAAuE;AACvE,MAAM,WAAW,GAA2B;IAC1C,iBAAiB,EAAE,6CAA6C;IAChE,gBAAgB,EAAE,mCAAmC;IACrD,sBAAsB,EAAE,6CAA6C;IACrE,sBAAsB,EAAE,gCAAgC;IACxD,iBAAiB,EAAE,2BAA2B;IAC9C,mBAAmB,EAAE,8CAA8C;IACnE,mBAAmB,EAAE,kDAAkD;IACvE,mBAAmB,EAAE,sCAAsC;IAC3D,cAAc,EAAE,qCAAqC;IACrD,iBAAiB,EAAE,2CAA2C;IAC9D,eAAe,EAAE,iCAAiC;IAClD,aAAa,EAAE,0BAA0B;IACzC,gBAAgB,EAAE,yBAAyB;IAC3C,qBAAqB,EAAE,0CAA0C;IACjE,aAAa,EAAE,8BAA8B;IAC7C,QAAQ,EAAE,8BAA8B;CACzC,CAAC;AAEF,uCAAuC;AACvC,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,GAAG,IAAI,GAAG,mBAAmB,CAAC;AACnE,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,oBAAoB,CAAC,KAKpC;IACC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClH,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAChH,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,IAAI,gBAAgB,CAAC;IACvD,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChF,OAAO,uBAAuB,GAAG,UAAU,GAAG,oBAAoB,GAAG,KAAK,CAAC,WAAW,GAAG,GAAG,GAAG,OAAO,GAAG,cAAc,GAAG,QAAQ,CAAC;AACrI,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,iBAAiB;IACjB,gBAAgB;IAChB,sBAAsB;IACtB,sBAAsB;IACtB,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;CACpB,CAAC"}
@@ -18,6 +18,22 @@ export interface TargetEnvOptions {
18
18
  export declare function readTargetEnvironment(packageName: string, options: TargetEnvOptions): Promise<EnvironmentView>;
19
19
  /** 启动期捕获一家的运行版本:加载那一刻磁盘上的版本,读不到即 null(这家还没装)。 */
20
20
  export declare function captureRunningVersion(packageName: string, profileDir: string): Promise<string | null>;
21
+ /** 读一家**已装产物**里有没有爱生活页签槽的注册代码(面板缺席卡三态要的第三个事实)。
22
+ *
23
+ * 为什么要读产物而不是只问版本号:这个事实**版本号答不出来**。真机实测(2026-09-19):
24
+ * 作息/居家/大厨/记账四家的已发布 0.2.0 产物里根本没有注册代码(票 #723),
25
+ * 它们的页签槽永远空着;只按「装了没有」分态,面板就会把这种情形说成「已装但没接上,
26
+ * 重启试试」——那是叫用户去做一件不可能有用的事。判据只能是产物里那个槽名字面量。
27
+ *
28
+ * 边界(必须说清,否则这个读数会被当成保证):
29
+ * - 判据是**源码里那个槽名常量(`CONFIG_TAB_SLOT`)的字符串**。产物是构建期打包的(tsdown),
30
+ * 故字面量会原样留在产物里(两侧同源:单品的注册代码里写的也是这个名字)。
31
+ * - 打包器若哪天把表达式改写成「拼接出名字」(如 `'ilife' + '.config-tab'`),本读数会漏报;
32
+ * 那时表现为面板少一态、退回「装了但没接上」,不会误报成「没装」。
33
+ * - 读不到出口文件、或产物读不出这个字符串 ⇒ 一律 false:**判据缺席时不给肯定结论**
34
+ * (宁可让用户看到「等它发新版」这句偏保守的话,不可把可能已注册的产物说成已注册)。
35
+ */
36
+ export declare function readPanelRegistered(packageName: string, profileDir: string): Promise<boolean>;
21
37
  /** 版本行要的「技能包随插件」事实:插件包 manifest 里那条 `skill-*` 依赖(精确 pin)。 */
22
38
  export declare function readSkillRide(packageName: string, profileDir: string): Promise<{
23
39
  packageName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"update-env.d.ts","sourceRoot":"","sources":["../src/update-env.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE1E,6DAA6D;AAC7D,eAAO,MAAM,uBAAuB,EAAG,OAAgB,CAAC;AA6DxD,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sBAAsB;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,6BAA6B;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,yCAAyC;AACzC,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CA+EpH;AAED,iDAAiD;AACjD,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ3G;AAED,6DAA6D;AAC7D,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAY1D;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkChF"}
1
+ {"version":3,"file":"update-env.d.ts","sourceRoot":"","sources":["../src/update-env.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG1E,6DAA6D;AAC7D,eAAO,MAAM,uBAAuB,EAAG,OAAgB,CAAC;AA6DxD,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sBAAsB;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,6BAA6B;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,yCAAyC;AACzC,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CA+EpH;AAED,iDAAiD;AACjD,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ3G;AAUD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuCnG;AAED,6DAA6D;AAC7D,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAY1D;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkChF"}
@@ -23,6 +23,7 @@ import { homedir } from 'node:os';
23
23
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
24
24
  import { fileURLToPath } from 'node:url';
25
25
  import { defaultHomeDir, profileNameValid, registrySpec } from 'dsh-plugin-update';
26
+ import { CONFIG_TAB_SLOT } from './update-contract.js';
26
27
  /** 缺席包给读取器的占位运行版本:这家读数是「没装」,不显示、也不参与能不能装(`eligible` 已为假)。 */
27
28
  export const MISSING_RUNNING_VERSION = '0.0.0';
28
29
  /** 使用范围的落盘清单与锁文件(与更新包读的四处同名,`reader.ts:20`)。 */
@@ -179,6 +180,75 @@ export async function captureRunningVersion(packageName, profileDir) {
179
180
  return null;
180
181
  }
181
182
  }
183
+ /** 面板产物读数缓存:key 是客户端出口文件的绝对路径,value 是「上一次读到的产物事实 + 判它失效的两个数字」。
184
+ *
185
+ * 为什么敢缓存:宿主半的存活期以天计,而每次轮询都重读 17~70 kB 的产物太浪费;
186
+ * 失效判据取文件的**大小与修改时间**——安装/重装必然换掉这两个数字(包内容变了),
187
+ * 所以在「装完不重启」这类真机上会变的场景下,下一次读数就会重新读文件把新事实读出来。
188
+ * 缓存条目随进程存活(一个使用范围最多七个目标),不是无界增长。 */
189
+ const panelCache = new Map();
190
+ /** 读一家**已装产物**里有没有爱生活页签槽的注册代码(面板缺席卡三态要的第三个事实)。
191
+ *
192
+ * 为什么要读产物而不是只问版本号:这个事实**版本号答不出来**。真机实测(2026-09-19):
193
+ * 作息/居家/大厨/记账四家的已发布 0.2.0 产物里根本没有注册代码(票 #723),
194
+ * 它们的页签槽永远空着;只按「装了没有」分态,面板就会把这种情形说成「已装但没接上,
195
+ * 重启试试」——那是叫用户去做一件不可能有用的事。判据只能是产物里那个槽名字面量。
196
+ *
197
+ * 边界(必须说清,否则这个读数会被当成保证):
198
+ * - 判据是**源码里那个槽名常量(`CONFIG_TAB_SLOT`)的字符串**。产物是构建期打包的(tsdown),
199
+ * 故字面量会原样留在产物里(两侧同源:单品的注册代码里写的也是这个名字)。
200
+ * - 打包器若哪天把表达式改写成「拼接出名字」(如 `'ilife' + '.config-tab'`),本读数会漏报;
201
+ * 那时表现为面板少一态、退回「装了但没接上」,不会误报成「没装」。
202
+ * - 读不到出口文件、或产物读不出这个字符串 ⇒ 一律 false:**判据缺席时不给肯定结论**
203
+ * (宁可让用户看到「等它发新版」这句偏保守的话,不可把可能已注册的产物说成已注册)。
204
+ */
205
+ export async function readPanelRegistered(packageName, profileDir) {
206
+ const directory = join(profileDir, 'node_modules', packageName);
207
+ let entry;
208
+ try {
209
+ const manifest = JSON.parse(await readFile(join(directory, 'package.json'), 'utf8'));
210
+ const exportsField = manifest.exports?.['./client'];
211
+ if (typeof exportsField === 'string')
212
+ entry = exportsField;
213
+ else if (exportsField && typeof exportsField === 'object') {
214
+ const value = exportsField.default;
215
+ if (typeof value === 'string')
216
+ entry = value;
217
+ }
218
+ }
219
+ catch {
220
+ return false;
221
+ }
222
+ if (!entry || isAbsolute(entry) || entry.includes('\0'))
223
+ return false;
224
+ const filename = resolve(directory, entry);
225
+ if (!inside(directory, filename))
226
+ return false;
227
+ let size;
228
+ let mtimeMs;
229
+ try {
230
+ const info = await stat(filename);
231
+ if (!info.isFile())
232
+ return false;
233
+ size = info.size;
234
+ mtimeMs = info.mtimeMs;
235
+ }
236
+ catch {
237
+ return false;
238
+ }
239
+ const cached = panelCache.get(filename);
240
+ if (cached && cached.size === size && cached.mtimeMs === mtimeMs)
241
+ return cached.registered;
242
+ let registered = false;
243
+ try {
244
+ registered = (await readFile(filename, 'utf8')).includes(CONFIG_TAB_SLOT);
245
+ }
246
+ catch {
247
+ return false;
248
+ }
249
+ panelCache.set(filename, { size, mtimeMs, registered });
250
+ return registered;
251
+ }
182
252
  /** 版本行要的「技能包随插件」事实:插件包 manifest 里那条 `skill-*` 依赖(精确 pin)。 */
183
253
  export async function readSkillRide(packageName, profileDir) {
184
254
  try {