dsh-remote-panel 0.4.3 → 0.4.5

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.
Files changed (2) hide show
  1. package/lib/client.js +105 -42
  2. package/package.json +1 -1
package/lib/client.js CHANGED
@@ -1345,6 +1345,65 @@ window.__ModuleLoader__.load({
1345
1345
  .dsh-mobile-scrim, .dsh-mobile-offline { transition: none; animation: none; }
1346
1346
  }
1347
1347
 
1348
+ /* 会话正文的横向留白:原生每侧 = clearance(16) + 16 = 32px,
1349
+ 390 的屏上等于两边各砍掉一行字;压到 16px,跟输入条卡片同一条基线 */
1350
+ .EvIC1a_scroll {
1351
+ padding-left: 16px !important;
1352
+ padding-right: 16px !important;
1353
+ }
1354
+
1355
+ /* 正文滚动区收口到输入条上沿:
1356
+ 原生把输入条做在滚动容器里(sticky 贴底、上沿渐隐到背景色),所以正文会一直滚到
1357
+ 输入条背后,滚轴也跟着画到屏幕最底。手机上更希望「正文止于输入条上沿」,
1358
+ 这里把输入条改成固定定位贴屏幕底、正文用 margin 让出它的高度,
1359
+ 滚动容器(连同滚轴)自然就停在输入条上方了。
1360
+ 用 fixed 而不是 absolute:切换「轨迹」页时滚动容器会因为 composer overlay 变成
1361
+ position: relative,absolute 会被它缩小后的盒子接住,输入条就浮到屏幕中间。
1362
+ 高度用原生写在滚动容器上的 --dsh-composer-height(ResizeObserver 跟输入框同步)。 */
1363
+ .wSkVaW_body[data-content-phase="active"] .wSkVaW_scrollBody {
1364
+ margin-bottom: var(--dsh-composer-height, 152px) !important;
1365
+ }
1366
+ .wSkVaW_body[data-content-phase="active"] .wSkVaW_composerSeat {
1367
+ position: fixed !important;
1368
+ left: 0;
1369
+ right: 0;
1370
+ bottom: 0;
1371
+ z-index: 7;
1372
+ /* 正文已经不往输入条背后滚了,那条「渐隐到纯黑」的灰带也就不需要了 */
1373
+ background: var(--dsw-alias-bg-base) !important;
1374
+ background-image: none !important;
1375
+ }
1376
+ body[data-ds-dark-theme] .wSkVaW_body[data-content-phase="active"] .wSkVaW_composerSeat {
1377
+ background: #000 !important;
1378
+ }
1379
+ /* 「回到底部」浮球原先按「输入条压在正文上」算偏移,正文让开后要贴回视口底 */
1380
+ [data-conversation-scroll] .EvIC1a_toBottomSlot { bottom: 12px !important; }
1381
+ /* 轨迹页也按「输入条浮在内容上」留了 composer + 16 的底部空白,收口后就成了死空白 */
1382
+ .wSkVaW_body[data-content-phase="active"] [class*="_ledger"] {
1383
+ --dsh-trajectory-bottom-clearance: 16px;
1384
+ }
1385
+
1386
+ /* 滚轴细一点:原生 5px,390 屏上太抢眼。
1387
+ 主题把变量挂在 body 上(不是 :root),所以得盖在同一层 */
1388
+ body { --dsh-scrollbar-width: 3px !important; }
1389
+
1390
+ /* 思考过程展开:原生给步骤组一个 max-height:400px 的内部滚动框,
1391
+ 展开后就是「页面一根滚轴 + 框里一根滚轴」,手指极易滚错。
1392
+ 手机上一律展开到底(只留页面一根滚轴),改用一条左侧竖线 + 轻微缩进,
1393
+ 表示「这一段是过程的旁注」;不再额外加内边距。 */
1394
+ .O_Ebla_body {
1395
+ max-height: none !important;
1396
+ overflow: visible !important;
1397
+ overscroll-behavior: none !important;
1398
+ scrollbar-gutter: auto !important;
1399
+ border-left: 2px solid var(--dsw-alias-border-l3);
1400
+ padding-left: 10px;
1401
+ }
1402
+ .O_Ebla_fadeTop, .O_Ebla_fadeBottom {
1403
+ mask-image: none !important;
1404
+ -webkit-mask-image: none !important;
1405
+ }
1406
+
1348
1407
  /* 会话内容:代码块 / 表格 / 图片 / 附件在手机上不撑破页面 */
1349
1408
  .md-code-block { max-width: 100%; }
1350
1409
  .md-code-block pre,
@@ -1470,48 +1529,52 @@ window.__ModuleLoader__.load({
1470
1529
  }
1471
1530
 
1472
1531
 
1473
- /* 设置弹窗:原生是「左导航 188 + 右内容」,到 390 内容列只剩 154。
1474
- 这里把导航改成顶部一条可横滑的标签条,内容占满宽度;只匹配「有导航列的 dialog」。 */
1475
- [role="dialog"]:has(> [class*="_nav"]) {
1476
- flex-direction: column !important;
1477
- width: calc(100vw - 16px) !important;
1478
- max-width: none !important;
1479
- max-height: calc(100dvh - 24px);
1480
- }
1481
- [role="dialog"] > [class*="_nav"] {
1482
- flex: 0 0 auto !important;
1483
- width: 100% !important;
1484
- height: auto !important;
1485
- padding: 4px 8px 0 !important;
1486
- border-right: 0 !important;
1487
- border-bottom: 1px solid rgba(255, 255, 255, .08);
1488
- }
1489
- [role="dialog"] > [class*="_nav"] > [class*="_navTitle"] { display: none !important; }
1490
- [role="dialog"] > [class*="_nav"] [class*="_navList"] {
1491
- flex-direction: row !important;
1492
- height: auto !important;
1493
- overflow-x: auto;
1494
- overflow-y: hidden;
1495
- gap: 2px;
1496
- padding-bottom: 4px;
1497
- scrollbar-width: none;
1498
- }
1499
- [role="dialog"] > [class*="_nav"] [class*="_navList"]::-webkit-scrollbar { height: 0; }
1500
- [role="dialog"] > [class*="_nav"] [class*="_navCell"] {
1501
- flex: 0 0 auto !important;
1502
- width: auto !important;
1503
- height: 34px !important;
1504
- padding: 0 10px !important;
1505
- white-space: nowrap;
1506
- }
1507
- [role="dialog"] > [class*="_content"] {
1508
- flex: 1 1 auto !important;
1509
- width: 100% !important;
1510
- min-width: 0 !important;
1511
- overflow-y: auto;
1512
- -webkit-overflow-scrolling: touch;
1513
- overscroll-behavior: contain;
1514
- padding-bottom: max(env(safe-area-inset-bottom, 0px), var(--dsh-safe-bottom, 0px)) !important;
1532
+ /* 只对手机宽度生效:桌面端必须保持「左导航 188 + 右内容」。
1533
+ 之前这组规则写在了 @media 外面,桌面端打开设置也会被改成顶部标签条。 */
1534
+ @media (max-width: 1023px) {
1535
+ /* 设置弹窗:原生是「左导航 188 + 右内容」,到 390 内容列只剩 154。
1536
+ 这里把导航改成顶部一条可横滑的标签条,内容占满宽度;只匹配「有导航列的 dialog」。 */
1537
+ [role="dialog"]:has(> [class*="_nav"]) {
1538
+ flex-direction: column !important;
1539
+ width: calc(100vw - 16px) !important;
1540
+ max-width: none !important;
1541
+ max-height: calc(100dvh - 24px);
1542
+ }
1543
+ [role="dialog"] > [class*="_nav"] {
1544
+ flex: 0 0 auto !important;
1545
+ width: 100% !important;
1546
+ height: auto !important;
1547
+ padding: 4px 8px 0 !important;
1548
+ border-right: 0 !important;
1549
+ border-bottom: 1px solid rgba(255, 255, 255, .08);
1550
+ }
1551
+ [role="dialog"] > [class*="_nav"] > [class*="_navTitle"] { display: none !important; }
1552
+ [role="dialog"] > [class*="_nav"] [class*="_navList"] {
1553
+ flex-direction: row !important;
1554
+ height: auto !important;
1555
+ overflow-x: auto;
1556
+ overflow-y: hidden;
1557
+ gap: 2px;
1558
+ padding-bottom: 4px;
1559
+ scrollbar-width: none;
1560
+ }
1561
+ [role="dialog"] > [class*="_nav"] [class*="_navList"]::-webkit-scrollbar { height: 0; }
1562
+ [role="dialog"] > [class*="_nav"] [class*="_navCell"] {
1563
+ flex: 0 0 auto !important;
1564
+ width: auto !important;
1565
+ height: 34px !important;
1566
+ padding: 0 10px !important;
1567
+ white-space: nowrap;
1568
+ }
1569
+ [role="dialog"] > [class*="_content"] {
1570
+ flex: 1 1 auto !important;
1571
+ width: 100% !important;
1572
+ min-width: 0 !important;
1573
+ overflow-y: auto;
1574
+ -webkit-overflow-scrolling: touch;
1575
+ overscroll-behavior: contain;
1576
+ padding-bottom: max(env(safe-area-inset-bottom, 0px), var(--dsh-safe-bottom, 0px)) !important;
1577
+ }
1515
1578
  }
1516
1579
 
1517
1580
  /* 长会话滚动:只在窄屏做滚动容器层面的优化,桌面保持原样 */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-remote-panel",
3
- "version": "0.4.3",
3
+ "version": "0.4.5",
4
4
  "description": "DSH 远程访问控制面:部署向导、状态面板与一键配对(EasyTier + Caddy),数据面保持进程外。",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",