dsh-pocket 2.1.3 → 2.1.4

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.en.md CHANGED
@@ -191,7 +191,7 @@ Such tools take over all traffic and often cut cloudflared's tunnel-edge connect
191
191
  ```sh
192
192
  npm install
193
193
  node client/build.mjs # rebuild after editing client/
194
- npm test # proxy / auth / compression / tunnel / service / RPC / settings (91 tests)
194
+ npm test # proxy / auth / compression / tunnel / service / RPC / settings (93 tests)
195
195
  ```
196
196
 
197
197
  **Want to try your changes locally without publishing?** Point the installed plugin at your local checkout with a symlink and restart dsh web. Full steps (including switching back to the npm release) are in [LOCAL-DEV.md](./LOCAL-DEV.md).
package/README.md CHANGED
@@ -192,7 +192,7 @@ npx @deepseek-ai/dsh web
192
192
  ```sh
193
193
  npm install
194
194
  node client/build.mjs # 改 client/ 后重新打包
195
- npm test # 代理 / 认证 / 压缩 / 隧道 / 服务 / RPC / 设置(91 测试)
195
+ npm test # 代理 / 认证 / 压缩 / 隧道 / 服务 / RPC / 设置(93 测试)
196
196
  ```
197
197
 
198
198
  **改完想在本机先试?** 不用发版:把插件换成指向本地仓库的软链,重启 dsh web 就是本地代码。完整步骤(含怎么换回 npm 官方版本)见 [LOCAL-DEV.md](./LOCAL-DEV.md)。
package/client/client.js CHANGED
@@ -535,14 +535,19 @@ var MOBILE_CSS = `
535
535
  it to 500), and when the layer outranks the drawer, the backdrop paints
536
536
  ABOVE the drawer and swallows every tap \u2014 the drawer opens but no row
537
537
  can be pressed (every tap just closes it). The drawer must therefore
538
- outrank any such raise: 600 clears the known 500 while staying under the
539
- fixed-position banners/toasts (z 9999) that float at the viewport level. */
538
+ outrank any such raise.
539
+ 1200 (was 600) clears the mobile layers shipped by
540
+ @linxin666/dsh-web-ui-all \u2014 its sidebar pane is z-index 1100, its
541
+ details pane 1000 and its full-screen frame ::after mask 1050 (issue
542
+ #67: that mask sat on top of the 600 drawer and ate every tap). Still
543
+ far under the fixed-position banners/toasts (z 9999) that float at the
544
+ viewport level. */
540
545
  [data-mobile-nav="frame"] > :first-child {
541
546
  position: absolute !important;
542
547
  inset: 0 auto 0 0 !important;
543
548
  width: max-content !important;
544
549
  max-width: 92vw !important;
545
- z-index: 600 !important;
550
+ z-index: 1200 !important;
546
551
  transform: translateX(-110%);
547
552
  transition: transform .28s var(--ds-ease-in-out, ease-in-out);
548
553
  background: var(--dsw-alias-bg-base, #ffffff);
@@ -571,6 +576,32 @@ var MOBILE_CSS = `
571
576
  transform: none !important;
572
577
  }
573
578
 
579
+ /* Kill a competing full-screen mask (issue #67).
580
+ @linxin666/dsh-web-ui-all ships its own mobile drawer, and part of it is
581
+
582
+ [data-dsh-frame]:not([data-sidebar-collapsed])::after {
583
+ content: ""; position: fixed; inset: 0; z-index: 1050;
584
+ background: rgb(0 0 0 / 24%);
585
+ }
586
+
587
+ The pseudo-element belongs to the frame we already mark, and the frame
588
+ carries only "position: relative" with z-index auto \u2014 no stacking context
589
+ \u2014 so this mask competes with the drawer in the parent stacking context
590
+ and, at 1050, paints over it. It covers the whole viewport, so every tap
591
+ on a session row lands on the mask instead: the drawer opens but nothing
592
+ inside it can be pressed, and the page behind cannot be scrolled.
593
+ Removing it is safe: the mobile stylesheet already renders its own
594
+ backdrop, and tapping outside the drawer is handled in JS.
595
+
596
+ The attribute selector is repeated on purpose. Their rule has the same
597
+ specificity (0,2,1) once ours is written the obvious way, and plugin
598
+ stylesheets are injected in load order, so a tie would be decided by
599
+ whichever plugin happened to load last. Doubling the attribute makes it
600
+ (0,3,1) and deterministic. */
601
+ [data-mobile-nav="frame"][data-mobile-nav="frame"]:not([data-sidebar-collapsed])::after {
602
+ content: none !important;
603
+ }
604
+
574
605
  /* Drag handles are useless on touch and would float over the drawer. */
575
606
  [data-side="sidebar"],
576
607
  [data-side="details"] {
@@ -210,14 +210,19 @@ export const MOBILE_CSS = `
210
210
  it to 500), and when the layer outranks the drawer, the backdrop paints
211
211
  ABOVE the drawer and swallows every tap — the drawer opens but no row
212
212
  can be pressed (every tap just closes it). The drawer must therefore
213
- outrank any such raise: 600 clears the known 500 while staying under the
214
- fixed-position banners/toasts (z 9999) that float at the viewport level. */
213
+ outrank any such raise.
214
+ 1200 (was 600) clears the mobile layers shipped by
215
+ @linxin666/dsh-web-ui-all — its sidebar pane is z-index 1100, its
216
+ details pane 1000 and its full-screen frame ::after mask 1050 (issue
217
+ #67: that mask sat on top of the 600 drawer and ate every tap). Still
218
+ far under the fixed-position banners/toasts (z 9999) that float at the
219
+ viewport level. */
215
220
  [data-mobile-nav="frame"] > :first-child {
216
221
  position: absolute !important;
217
222
  inset: 0 auto 0 0 !important;
218
223
  width: max-content !important;
219
224
  max-width: 92vw !important;
220
- z-index: 600 !important;
225
+ z-index: 1200 !important;
221
226
  transform: translateX(-110%);
222
227
  transition: transform .28s var(--ds-ease-in-out, ease-in-out);
223
228
  background: var(--dsw-alias-bg-base, #ffffff);
@@ -246,6 +251,32 @@ export const MOBILE_CSS = `
246
251
  transform: none !important;
247
252
  }
248
253
 
254
+ /* Kill a competing full-screen mask (issue #67).
255
+ @linxin666/dsh-web-ui-all ships its own mobile drawer, and part of it is
256
+
257
+ [data-dsh-frame]:not([data-sidebar-collapsed])::after {
258
+ content: ""; position: fixed; inset: 0; z-index: 1050;
259
+ background: rgb(0 0 0 / 24%);
260
+ }
261
+
262
+ The pseudo-element belongs to the frame we already mark, and the frame
263
+ carries only "position: relative" with z-index auto — no stacking context
264
+ — so this mask competes with the drawer in the parent stacking context
265
+ and, at 1050, paints over it. It covers the whole viewport, so every tap
266
+ on a session row lands on the mask instead: the drawer opens but nothing
267
+ inside it can be pressed, and the page behind cannot be scrolled.
268
+ Removing it is safe: the mobile stylesheet already renders its own
269
+ backdrop, and tapping outside the drawer is handled in JS.
270
+
271
+ The attribute selector is repeated on purpose. Their rule has the same
272
+ specificity (0,2,1) once ours is written the obvious way, and plugin
273
+ stylesheets are injected in load order, so a tie would be decided by
274
+ whichever plugin happened to load last. Doubling the attribute makes it
275
+ (0,3,1) and deterministic. */
276
+ [data-mobile-nav="frame"][data-mobile-nav="frame"]:not([data-sidebar-collapsed])::after {
277
+ content: none !important;
278
+ }
279
+
249
280
  /* Drag handles are useless on touch and would float over the drawer. */
250
281
  [data-side="sidebar"],
251
282
  [data-side="details"] {
package/package.json CHANGED
@@ -80,5 +80,5 @@
80
80
  "access": "public",
81
81
  "registry": "https://registry.npmjs.org/"
82
82
  },
83
- "version": "2.1.3"
83
+ "version": "2.1.4"
84
84
  }