dsh-m 0.9.72 → 0.9.73
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 +12 -3
- package/package.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.73 修复:详情截图条统一瓷砖——「大小不一 + 预览图盖住左右邻图」(flex 收缩外溢根治)
|
|
12
|
+
|
|
13
|
+
- **根因(主人详情弹窗实拍:缩略图大小参差,图片压在左右邻图上)**:两处机制缺陷叠加——① `.dsvm-shotbox` 无固定几何(盒 min 120×84 / img max 220×130),跟着图片固有比例走,16:9、4:3、竖图、小原图各渲各的,「大的大小的小」;②盒子显式 `min-width:120px` 顶掉了 flex 的 automatic minimum size——8 张截图自然总宽(~1.7k px)远超弹窗内容宽(~688px)触发 flex 收缩时,盒子被压到 120px 地板而盒内 `<img>`(替换元素)不受盒宽约束保持固有宽度,加上盒子 `overflow:visible`,图片居中外溢每侧盖住邻图 ~44px——且发生在滚动条出现之前,两症状同屏;加载完成瞬间行高还随最高图 84→130px 跳变(CLS)。
|
|
14
|
+
- **修复(统一瓷砖)**:盒子 `flex:0 0 auto`(几何与图片数量/加载态无关,永不收缩)+ 固定 176×110 + `overflow:hidden`(外溢兜底双保险);img 改 `width/height:100%` + `object-fit:cover` + `object-position:top center`(顶锚定保住截图标题栏,裁切只发生在底部,竖图/方图露上半段,全图看灯箱);行加 `scroll-snap-type:x proximity` + 盒 `scroll-snap-align:start`(横滚翻页手感)。灯箱、走链、坏图剔除、键盘导航语义零变化。
|
|
15
|
+
- **验证**:1332 项测试全绿(新增截图条瓷砖 CSS 源锚 2 用例:统一瓷砖形态 + 旧病灶负向锚)、typecheck 零错误;构建产物含新规则逐字锚。方案对比 mock(现状复刻 + cover/contain/网格三案实况)先行经主人选型(A 案 cover)。
|
|
16
|
+
|
|
11
17
|
### 0.9.72 修复:设置页滚轮黑洞——操作记录滚动区/横幅的 contain 改为「可滚才挂」(Chrome 144 规范对齐暴露)
|
|
12
18
|
|
|
13
19
|
- **根因(主人设置页实拍:操作记录条数少、滚动条尚未出现时,鼠标悬停该区域滚轮无法翻页)**:`.dshm-ops-scroll` 恒挂 `overscroll-behavior:contain`(0.9.64 随 220px 滚动区引入)。`overflow-y:auto` 使元素无论内容多少都是滚动容器,而规范口径「没有可滚溢出的滚动容器恒在滚动边界」+ contain「到边界禁止向祖先链滚」→ 内容不满时整块区域吞掉滚轮。Chrome 144 起「Respect overscroll-behavior on non-scrollable scroll containers」落地(此前引擎仅真可滚才执行 contain,病灶被宽容掩盖),潜伏缺陷被引擎升级激活;错误/提示横幅 `.dshm-banner-text`(限高滚动时代引入的同款恒挂)同病。
|
|
@@ -532,6 +538,12 @@ The full release history of dsh-m, maintained bilingually: **Chinese first, Engl
|
|
|
532
538
|
|
|
533
539
|
## English
|
|
534
540
|
|
|
541
|
+
### Fix in 0.9.73 — detail screenshot strip unified tiles: inconsistent sizes and previews overlapping neighboring thumbnails (flex-shrink overflow fixed at the root)
|
|
542
|
+
|
|
543
|
+
- **Root cause (owner screenshot: jagged thumbnails with images spilling over their left/right neighbors)**: two defects stacked — ① `.dsvm-shotbox` had no fixed geometry (box min 120×84 / img max 220×130) and followed each image's intrinsic aspect ratio, so 16:9, 4:3, portrait and small originals all rendered at their own size; ② the explicit `min-width:120px` overrode the flex automatic minimum size — with eight screenshots' natural total width (~1.7k px) far exceeding the modal content width (~688px), flex-shrink squeezed each box to its 120px floor while the inner `<img>` (a replaced element) kept its intrinsic width, and with `overflow:visible` on the box each image spilled out centered, covering ~44px of each neighbor — all before the scrollbar even appeared; the row height also jumped 84→130px when the tallest image loaded (CLS).
|
|
544
|
+
- **Fix (unified tiles)**: boxes get `flex:0 0 auto` (geometry independent of image count/load state, never shrinks) + fixed 176×110 + `overflow:hidden` (belt-and-braces against spill); images switch to `width/height:100%` + `object-fit:cover` + `object-position:top center` (top-anchored so screenshot title bars survive; cropping only trims the bottom — portrait/square shots show their upper half, the full image lives in the lightbox); the row gains `scroll-snap-type:x proximity` and boxes `scroll-snap-align:start`. Lightbox, image chain, broken-shot eviction, and keyboard navigation semantics unchanged.
|
|
545
|
+
- **Verification**: 1332 tests green (new screenshot-strip tile CSS source anchors, 2 cases: unified-tile shape + negative anchors on the retired defect forms), typecheck clean; the built bundle carries the new rules verbatim. A standalone comparison mock (current-bug reproduction + cover/contain/grid variants) was reviewed by the owner beforehand (variant A: cover chosen).
|
|
546
|
+
|
|
535
547
|
### Fix in 0.9.72 — settings-page wheel black hole: ops scroll region and banner now apply contain only when actually scrollable (exposed by Chrome 144 spec alignment)
|
|
536
548
|
|
|
537
549
|
- **Root cause (owner screenshot: with few operation records and no scrollbar yet, wheeling over the scroll region does nothing)**: `.dshm-ops-scroll` carried a permanent `overscroll-behavior:contain` (introduced with the 220px region in 0.9.64). `overflow-y:auto` makes the element a scroll container no matter how little content it has, and per spec a scroll container without scrollable overflow is always at its scroll boundary — with contain forbidding chaining, the whole area swallows the wheel. Chrome 144's "Respect overscroll-behavior on non-scrollable scroll containers" made engines honor this unconditionally (previously contain only applied when actually scrollable), activating the latent defect; the banner text (`.dshm-banner-text`, same permanent contain from the capped-banner era) shares the disease.
|
package/lib/client.js
CHANGED
|
@@ -2492,9 +2492,18 @@ var CSS = `
|
|
|
2492
2492
|
.dsvm-cmdrow{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}
|
|
2493
2493
|
.dsvm-code{background:rgba(127,127,127,.12);padding:3px 8px;border-radius:6px;font-size:11px;overflow-wrap:anywhere}
|
|
2494
2494
|
.dsvm-modalactions{display:flex;justify-content:flex-end;gap:8px}
|
|
2495
|
-
.
|
|
2496
|
-
|
|
2497
|
-
|
|
2495
|
+
/* 0.9.73 \u8BE6\u60C5\u622A\u56FE\u6761\u7EDF\u4E00\u74F7\u7816\uFF1A\u4E24\u75C5\u7076\u2014\u2014\u2460\u76D2\u5B50\u65E0\u56FA\u5B9A\u51E0\u4F55\uFF08min 120\xD784 \u76D2 / img max 220\xD7130\uFF09\u8DDF\u7740
|
|
2496
|
+
\u56FE\u7247\u56FA\u6709\u6BD4\u4F8B\u8D70\uFF0C\u6574\u6761\u53C2\u5DEE\uFF08\u300C\u5927\u7684\u5927\u5C0F\u7684\u5C0F\u300D\uFF09\uFF1B\u2461shotbox \u663E\u5F0F min-width:120px \u9876\u6389 flex \u7684
|
|
2497
|
+
automatic minimum size\uFF0CN \u5F20\u56FE\u81EA\u7136\u603B\u5BBD\u8D85\u884C\uFF088\xD7220px \u226B \u5F39\u7A97\u5185\u5BB9\u5BBD ~688px\uFF09\u89E6\u53D1 flex \u6536\u7F29\u65F6\uFF0C
|
|
2498
|
+
\u76D2\u5B50\u88AB\u538B\u5230 120px \u5730\u677F\u800C\u76D2\u5185 img\uFF08\u66FF\u6362\u5143\u7D20\uFF09\u4E0D\u53D7\u76D2\u5BBD\u7EA6\u675F\u4FDD\u6301\u56FA\u6709\u5BBD\u5EA6\u3001\u76D2\u5B50 overflow:visible
|
|
2499
|
+
\u2014\u2014\u56FE\u7247\u5C45\u4E2D\u5916\u6EA2\u76D6\u4F4F\u5DE6\u53F3\u90BB\u56FE\uFF08\u53D1\u751F\u5728\u6EDA\u52A8\u6761\u51FA\u73B0\u4E4B\u524D\uFF0C\u4E24\u75C7\u72B6\u540C\u5C4F\uFF09\uFF1B\u52A0\u8F7D\u5B8C\u6210\u77AC\u95F4\u884C\u9AD8\u8FD8\u88AB
|
|
2500
|
+
\u6491\u9AD8\u4E00\u6B21\uFF08\u884C\u9AD8\u968F\u6700\u9AD8\u56FE 84\u2192130px \u8DF3\u53D8\uFF0CCLS\uFF09\u3002\u4FEE\u590D = \u7EDF\u4E00\u74F7\u7816 176\xD7110 + flex:0 0 auto
|
|
2501
|
+
\uFF08\u6C38\u4E0D\u6536\u7F29\uFF0C\u51E0\u4F55\u4E0E\u56FE\u7247\u591A\u5C11/\u52A0\u8F7D\u6001\u65E0\u5173\uFF09+ overflow:hidden\uFF08\u5916\u6EA2\u515C\u5E95\u53CC\u4FDD\u9669\uFF09\uFF0Cimg \u6539
|
|
2502
|
+
width/height:100% + object-fit:cover + object-position:top\uFF08\u9876\u951A\u5B9A\u4FDD\u4F4F\u622A\u56FE\u6807\u9898\u680F\uFF0C\u88C1\u5207\u53EA
|
|
2503
|
+
\u53D1\u751F\u5728\u5E95\u90E8\uFF0C\u7AD6\u56FE/\u65B9\u56FE\u9732\u4E0A\u534A\u6BB5\uFF0C\u5168\u56FE\u770B\u706F\u7BB1\uFF09\uFF1Bscroll-snap proximity \u7ED9\u6A2A\u6EDA\u7FFB\u9875\u624B\u611F\u3002 */
|
|
2504
|
+
.dsvm-shotrow{display:flex;gap:6px;overflow-x:auto;padding:2px 0;scroll-snap-type:x proximity}
|
|
2505
|
+
.dsvm-shotbox{flex:0 0 auto;width:176px;height:110px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:rgba(127,127,127,.08);border-radius:6px;cursor:zoom-in;border:1px solid var(--dsw-alias-border-l2,rgba(127,127,127,.25));scroll-snap-align:start}
|
|
2506
|
+
.dsvm-shot{width:100%;height:100%;object-fit:cover;object-position:top center;border-radius:6px;display:block}
|
|
2498
2507
|
/* \u706F\u7BB1 v2\uFF080.9.60\uFF09\uFF1A\u7EC4\u4EF6 createPortal \u6302 body\uFF08\u9003\u51FA\u9762\u677F backdrop-filter \u5305\u542B\u5757\uFF09\uFF0C
|
|
2499
2508
|
\u63A7\u4EF6\u5168\u90E8\u7EDD\u5BF9\u5B9A\u4F4D\u8D34\u89C6\u53E3\u8FB9\u2014\u2014\u2715 \u5E38\u9A7B\u53F3\u4E0A\u3001\u2039\u203A \u4E24\u4FA7\u5C45\u4E2D\u3001\u5E95\u90E8\u8BA1\u6570+\u5706\u70B9 pill\uFF0C
|
|
2500
2509
|
\u4EFB\u4F55\u9762\u677F\u72B6\u6001/\u4EFB\u610F\u56FE\u7247\u9AD8\u5EA6\u4E0B\u90FD\u4E0D\u4F1A\u88AB\u6324\u51FA\u5C4F\u5E55\uFF1B\u56FE\u7247\u964D\u5230 74vh \u7ED9\u5E95\u90E8\u63A7\u4EF6\u7559\u4F4D\u3002
|