botmux 2.71.2 → 2.71.3

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.
@@ -684,6 +684,78 @@ th {
684
684
  }
685
685
 
686
686
  tbody tr:last-child td { border-bottom: 0; }
687
+
688
+ /* ── 首尾列固定的横向滚动矩阵(群组与 Bot)─────────────────────────────
689
+ bot 一多中间的成员列就溢出视口,操作按钮被顶出屏幕。把圆角/阴影挪到
690
+ 滚动容器上,表格本体放开宽度横向滚,首列(群)和尾列(操作)sticky 钉住。 */
691
+ .table-scroll { overflow-x: auto; }
692
+ .matrix-scroll {
693
+ background: var(--surface);
694
+ border: 1px solid var(--border-soft);
695
+ border-radius: var(--radius);
696
+ box-shadow: var(--shadow);
697
+ }
698
+ .matrix-scroll table {
699
+ width: max-content;
700
+ min-width: 100%;
701
+ border: 0;
702
+ border-radius: 0;
703
+ box-shadow: none;
704
+ overflow: visible; /* 基础样式的 overflow:hidden 会把 sticky 列钉死在表格自身 */
705
+ }
706
+ .matrix-scroll th:first-child,
707
+ .matrix-scroll td:first-child { position: sticky; left: 0; z-index: 2; }
708
+ .matrix-scroll th:last-child,
709
+ .matrix-scroll td:last-child { position: sticky; right: 0; z-index: 2; }
710
+ .matrix-scroll th:first-child,
711
+ .matrix-scroll th:last-child { z-index: 3; }
712
+ /* sticky 单元格必须有不透明底色,否则中间列会从底下透出来 */
713
+ .matrix-scroll td:first-child,
714
+ .matrix-scroll td:last-child { background: var(--surface); }
715
+ /* 暗色主题下表格本体有一层 3% 白的提亮,sticky 格子补同款混色保持一致 */
716
+ :root[data-theme="dark"] .matrix-scroll td:first-child,
717
+ :root[data-theme="dark"] .matrix-scroll td:last-child {
718
+ background: color-mix(in srgb, #ffffff 3%, var(--surface));
719
+ }
720
+ /* 暗色主题 th 也是半透明提亮(4% 白)——sticky 表头必须不透明,否则横滚时
721
+ 中间列标题会从「群聊」「操作」底下透出来。7% ≈ 表格 3% + th 4% 的叠加效果 */
722
+ :root[data-theme="dark"] .matrix-scroll th:first-child,
723
+ :root[data-theme="dark"] .matrix-scroll th:last-child {
724
+ background: color-mix(in srgb, #ffffff 7%, var(--surface));
725
+ }
726
+ .matrix-scroll tr[data-chat]:hover td:first-child,
727
+ .matrix-scroll tr[data-chat]:hover td:last-child { background: var(--surface-muted); }
728
+ /* 滚动边界提示线 */
729
+ .matrix-scroll th:first-child,
730
+ .matrix-scroll td:first-child { box-shadow: 1px 0 0 var(--border-soft); }
731
+ .matrix-scroll th:last-child,
732
+ .matrix-scroll td:last-child { box-shadow: -1px 0 0 var(--border-soft); }
733
+
734
+ /* ── 慢接口在途的页面级 loading 占位:在内容区水平垂直居中 ── */
735
+ .page-loading {
736
+ display: flex;
737
+ flex-direction: column;
738
+ align-items: center;
739
+ justify-content: center;
740
+ gap: 14px;
741
+ width: 100%;
742
+ min-height: 220px;
743
+ padding: 40px 20px;
744
+ color: var(--muted);
745
+ font-size: 13px;
746
+ animation: page-loading-in 0.25s ease-out;
747
+ }
748
+ .page-loading-spin {
749
+ width: 28px;
750
+ height: 28px;
751
+ flex: none;
752
+ border-radius: 50%;
753
+ border: 2.5px solid var(--border-soft);
754
+ border-top-color: var(--accent);
755
+ animation: page-loading-rotate 0.8s linear infinite;
756
+ }
757
+ @keyframes page-loading-rotate { to { transform: rotate(360deg); } }
758
+ @keyframes page-loading-in { from { opacity: 0; } }
687
759
  th[data-sort] { cursor: pointer; user-select: none; }
688
760
  th[data-sort]:hover,
689
761
  th.sorted { color: var(--fg); background: var(--bg-soft); }
@@ -1297,7 +1369,9 @@ fieldset legend {
1297
1369
  align-items: center;
1298
1370
  gap: 8px;
1299
1371
  padding: 10px 12px;
1300
- background: var(--warning-soft);
1372
+ /* warning-soft 在暗色主题带透明度,sticky 浮条悬在列表上会透字——
1373
+ 垫一层页面底色保证不透明,同时保留各主题自己的警示色调 */
1374
+ background: linear-gradient(var(--warning-soft), var(--warning-soft)), var(--bg);
1301
1375
  border: 1px solid color-mix(in srgb, var(--warning) 28%, transparent);
1302
1376
  border-radius: var(--radius);
1303
1377
  box-shadow: var(--shadow);
@@ -2306,6 +2380,21 @@ button.contrast:hover { background: var(--danger-soft); border-color: var(--dang
2306
2380
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
2307
2381
  gap: 13px;
2308
2382
  }
2383
+ /* AI 团队折叠/展开开关:贴着卡片栅格下沿居中,弱化成次级控件 */
2384
+ .team-toggle {
2385
+ justify-self: center;
2386
+ margin-top: -6px;
2387
+ min-height: 28px;
2388
+ padding: 3px 18px;
2389
+ font-size: 12px;
2390
+ font-weight: 600;
2391
+ color: var(--muted);
2392
+ background: var(--surface);
2393
+ border: 1px solid var(--border-soft);
2394
+ border-radius: 999px;
2395
+ box-shadow: none;
2396
+ }
2397
+ .team-toggle:hover { color: var(--fg); border-color: var(--accent); }
2309
2398
  .mate {
2310
2399
  display: flex;
2311
2400
  flex-direction: column;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botmux",
3
- "version": "2.71.2",
3
+ "version": "2.71.3",
4
4
  "description": "Bridge between IM platforms and AI coding CLIs — one topic, one CLI session with live streaming",
5
5
  "type": "module",
6
6
  "main": "dist/index-daemon.js",