dsh-m 0.9.53 → 0.9.54
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/lib/client.js +17 -3
- package/package.json +1 -1
- package/registry.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,12 @@ The full release history of dsh-m, maintained bilingually: **Chinese first, Engl
|
|
|
8
8
|
|
|
9
9
|
## 中文
|
|
10
10
|
|
|
11
|
+
### 0.9.54 变更:评审修复随版(ZoneChips 重测盲区/⌃ 弹回/overlay 居中)+ dsh-skip-browser-auth 收录文案对账
|
|
12
|
+
|
|
13
|
+
- **ZoneChips 三处评审修复(执行结果评审 R1,`b2aab5f`)**:① 测量 deps 以 `chips` 引用替代 `chips.length` 并叠加 `active`——同长度内容变化(计数刷新/激活加粗变宽)确定性重测,消除 RO 因 max-height 钳制失聪导致的陈旧 geom 盲区(被裁 chip 保持可聚焦/激活分类越界不自动展开的失效窗口,D4 违背态);② `⌃` 手动收起无条件记录 autoRef——手动收起全路径被尊重,消除展开态 geom 陈旧时收起被决策 effect 弹回的边缘漂移;③ overlay 组按 rowHeight 垂直居中(bottom 补偿偏移)。
|
|
14
|
+
- **收录文案对账(回应评审 Q5/Q7)**:dsh-skip-browser-auth 描述两轮更新随版生效(`ed6043a` 判别修复说明 + 缺陷警示、`23da0fd` 警示期结束瘦身保留保持最新版提示);自本版起发版前执行 tag↔CHANGELOG 对账,提交弃用 `git add -A` 改显式定点添加。
|
|
15
|
+
- **测试**:全量 1221 例零失败、typecheck 零错误;定向探针实证 Q1(同长度文案变化 hidden 0→5 即时重算)与 Q6(⌃ 收起后 +500ms 不弹回);真机 e2e(V1 冷存储/V4 吸顶/V6 筛选/V7 深色)见 0.9.53 证据链。
|
|
16
|
+
|
|
11
17
|
### 0.9.53 变更:ZoneChips 方案A「隐身全量测量」——冷挂载分类行错误折叠根除 + 行容量即时重测
|
|
12
18
|
|
|
13
19
|
- **动机(0.9.52 端到端验证发现)**:新浏览器 profile(无 localStorage 快照)首开面板时,市场数据未到 → `fit` 在空列表上测量 → 数据到达后重测面对的是按陈旧预算折叠的 DOM(只渲染 1 颗 + 「+N」)→ 棘轮式冻结在「3 颗 + +20」单行折叠。暖会话(快照命中)首挂载即全量数据、一次测准,故 0.7.0 以来从未暴露。姊妹问题:测量 effect 不监听宽度变化,窗口缩放后 `+N` 与实际容量脱节。完整根因链与无头实证见 `docs/plans/2026-10-08-zonechips-visual-clip-requirements.md`。
|
|
@@ -400,6 +406,12 @@ The full release history of dsh-m, maintained bilingually: **Chinese first, Engl
|
|
|
400
406
|
|
|
401
407
|
## English
|
|
402
408
|
|
|
409
|
+
### Changed in 0.9.54 — review fixes ship (ZoneChips stale-geom / ⌃ bounce / overlay centering) + dsh-skip-browser-auth catalog copy reconciliation
|
|
410
|
+
|
|
411
|
+
- **ZoneChips review fixes (execution-review R1, `b2aab5f`)**: ① measure deps use the `chips` reference instead of `chips.length` plus `active` — same-length content changes (count refresh / active bold reflow) now deterministically re-measure, closing the stale-geom blind window where RO is deafened by the max-height clamp (clipped-but-focusable chips / missed auto-expand, a D4 violation); ② manual `⌃` collapse unconditionally records autoRef — manual collapse is respected on every path, removing the edge drift where a stale-geom decision effect bounced the collapse back; ③ the overlay group is vertically centered per measured row-height (compensated bottom offset).
|
|
412
|
+
- **Catalog copy reconciliation (review Q5/Q7)**: two rounds of dsh-skip-browser-auth description updates ship with this release (`ed6043a` fixed-branch note + defect warning, `23da0fd` warning-period ended, slimmed to keep-latest hint); from this release onward a tag↔CHANGELOG reconciliation runs before publishing, and commits use explicit `git add <files>` instead of `-A`.
|
|
413
|
+
- **Tests**: full suite 1221 cases zero failures, typecheck clean; directed probes verified Q1 (same-length label change: hidden 0→5 live recompute) and Q6 (post-⌃ +500ms stays collapsed); real-panel e2e (V1 cold storage / V4 sticky / V6 filter / V7 dark theme) in the 0.9.53 evidence chain.
|
|
414
|
+
|
|
403
415
|
### Changed in 0.9.53 — ZoneChips Plan A "invisible full-list measurement": cold-mount mis-collapse eradicated + live row-capacity re-measurement
|
|
404
416
|
|
|
405
417
|
- **Motivation (found during 0.9.52 end-to-end verification)**: with a fresh browser profile (no localStorage snapshot), the market data had not arrived when the panel first mounted, so the old `fit` measurement ran on an EMPTY list; when data arrived the re-measure faced a DOM already collapsed by the stale budget (1 chip + "+N") and ratcheted to a frozen "3 chips + +20" single row. Warm sessions hit the snapshot on first mount and measured correctly — which is why this 0.7.0-era defect never surfaced. Sister issue: the measure effect ignores width changes, so `+N` drifts from real capacity after window resizes. Full causal chain with headless evidence: `docs/plans/2026-10-08-zonechips-visual-clip-requirements.md`.
|
package/lib/client.js
CHANGED
|
@@ -2750,7 +2750,7 @@ function ZoneChips({ zone, counts, labels, active, onPick, trailing, wrapTitle }
|
|
|
2750
2750
|
}, [active, activeIdx, expanded, geom]);
|
|
2751
2751
|
useLayoutEffect(() => {
|
|
2752
2752
|
if (!expanded) measure();
|
|
2753
|
-
}, [chips
|
|
2753
|
+
}, [chips, active, expanded, zone, stuck, rowHeight, measure]);
|
|
2754
2754
|
useEffect(() => {
|
|
2755
2755
|
const el = wrapRef.current;
|
|
2756
2756
|
if (!el || expanded || typeof ResizeObserver === "undefined") return;
|
|
@@ -2825,7 +2825,17 @@ function ZoneChips({ zone, counts, labels, active, onPick, trailing, wrapTitle }
|
|
|
2825
2825
|
h("button", { "data-chip": "1", className: `dshm-chip${active == null ? " on" : ""}`, onClick: () => onPick(null) }, lookup("cat.all")),
|
|
2826
2826
|
...chips.map((c, i) => btn(c, i)),
|
|
2827
2827
|
expanded ? [
|
|
2828
|
-
h("button", {
|
|
2828
|
+
h("button", {
|
|
2829
|
+
key: "collapse",
|
|
2830
|
+
"data-chip": "1",
|
|
2831
|
+
className: "dshm-chip",
|
|
2832
|
+
// 评审 R1-Q6:手动收起即记录 autoRef——展开态下激活的分类若真实越界(geom 陈旧或
|
|
2833
|
+
// 收起重测后越界),决策 effect 不得立即弹回,「手动收起」无条件被尊重。
|
|
2834
|
+
onClick: () => {
|
|
2835
|
+
if (active) autoRef.current = active;
|
|
2836
|
+
setExpanded(false);
|
|
2837
|
+
}
|
|
2838
|
+
}, "\u2303"),
|
|
2829
2839
|
trailing || null
|
|
2830
2840
|
] : null
|
|
2831
2841
|
),
|
|
@@ -2834,7 +2844,11 @@ function ZoneChips({ zone, counts, labels, active, onPick, trailing, wrapTitle }
|
|
|
2834
2844
|
// ⚠️ 展开态不用 overlay(⌃/筛选 in-flow,与现状一致);弹层锚点 .dsvm-filterwrap 随组定位。
|
|
2835
2845
|
clip && overlay ? h(
|
|
2836
2846
|
"div",
|
|
2837
|
-
{
|
|
2847
|
+
{
|
|
2848
|
+
className: "dsvm-chipmore",
|
|
2849
|
+
// 评审 R1-Q4:按行高垂直居中于末可见行(28px 组盒在 22px 行高上居中 → bottom 补偿 -3px)
|
|
2850
|
+
style: { bottom: `${8 + ((rowHeight || 22) - 28) / 2}px` }
|
|
2851
|
+
},
|
|
2838
2852
|
trailing || null,
|
|
2839
2853
|
hiddenCount > 0 ? h("button", { className: "dshm-chip", onClick: () => setExpanded(true) }, `+${hiddenCount}`) : null
|
|
2840
2854
|
) : null
|
package/package.json
CHANGED
package/registry.json
CHANGED
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
{
|
|
88
88
|
"id": "dsh-skip-browser-auth",
|
|
89
89
|
"name": "DSH Skip Browser Auth",
|
|
90
|
-
"description": "替换官方 Connection 跳过 BrowserAuth,免 Token;已适配七个已审计精确版本对,详见仓库。仅支持 web profile;desktop
|
|
90
|
+
"description": "替换官方 Connection 跳过 BrowserAuth,免 Token;已适配七个已审计精确版本对,详见仓库。仅支持 web profile;desktop 宿主一律自动休眠(多进程树判别),desktop 用户请保持最新版。",
|
|
91
91
|
"category": "self-dev",
|
|
92
92
|
"tags": ["BrowserAuth", "连接", "安全", "工具"],
|
|
93
93
|
"verified": ["0.1.2-rc.1", "0.1.5-rc.1", "0.1.5-rc.2", "0.1.7-rc.1", "0.1.7-rc.2", "0.2.0-rc.1", "0.2.0-rc.2"],
|