dsh-agent-office 4.2.0 → 4.5.0
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.md +8 -3
- package/lib/client.js +52 -8
- package/lib/panel.html +302 -238
- package/package.json +2 -1
- package/panel-src/assets/exp-slits.png +0 -0
- package/panel-src/index.html +118 -54
- package/panel-src/main.js +428 -20
- package/screenshot-day.png +0 -0
- package/screenshot-focus.png +0 -0
- package/screenshot.png +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-agent-office",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.0",
|
|
4
4
|
"description": "实时 3D 办公室可视化 DSH 会话;Catora 发布后拓展笔记、思维导图、私人知识库与 RAG 检索。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"NOTICE",
|
|
28
28
|
"README.md",
|
|
29
29
|
"screenshot.png",
|
|
30
|
+
"screenshot-day.png",
|
|
30
31
|
"screenshot-focus.png",
|
|
31
32
|
"screenshot-client.png"
|
|
32
33
|
],
|
|
Binary file
|
package/panel-src/index.html
CHANGED
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
-
<title
|
|
6
|
+
<title>Office · DSH 会话办公室</title>
|
|
7
7
|
<style>
|
|
8
8
|
:root{
|
|
9
9
|
--bg:#05070a;
|
|
10
|
-
--panel:
|
|
10
|
+
--panel-rgb:12 15 20;
|
|
11
|
+
--panel-alpha:.66;
|
|
11
12
|
--panel-2:rgba(17,21,28,.78);
|
|
12
13
|
--line:rgba(255,255,255,.08);
|
|
13
14
|
--line-2:rgba(255,255,255,.14);
|
|
@@ -20,6 +21,22 @@
|
|
|
20
21
|
--red:#ff6b6b;
|
|
21
22
|
--green:#7dd3a0;
|
|
22
23
|
--purple:#a78bfa;
|
|
24
|
+
--surface:rgba(255,255,255,.035);
|
|
25
|
+
--surface-hover:rgba(255,255,255,.045);
|
|
26
|
+
--surface-active:rgba(61,225,198,.1);
|
|
27
|
+
--active-line:rgba(61,225,198,.28);
|
|
28
|
+
--track:rgba(255,255,255,.06);
|
|
29
|
+
--scroll:rgba(255,255,255,.2);
|
|
30
|
+
--scroll-hi:rgba(255,255,255,.32);
|
|
31
|
+
--label:rgba(8,11,15,.82);
|
|
32
|
+
--hint:rgba(12,15,20,.66);
|
|
33
|
+
--chip:rgba(12,18,22,.86);
|
|
34
|
+
--focus-line:rgba(61,225,198,.3);
|
|
35
|
+
--focus-btn:rgba(61,225,198,.16);
|
|
36
|
+
--focus-btn-hi:rgba(61,225,198,.26);
|
|
37
|
+
--check-bg:rgba(125,211,160,.14);
|
|
38
|
+
--check-line:rgba(125,211,160,.4);
|
|
39
|
+
--shadow:0 22px 60px rgba(0,0,0,.45);
|
|
23
40
|
--radius:18px;
|
|
24
41
|
--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
|
|
25
42
|
--sans:Inter,system-ui,-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
|
|
@@ -34,25 +51,54 @@
|
|
|
34
51
|
#labels .lbl{pointer-events:auto;cursor:pointer}
|
|
35
52
|
|
|
36
53
|
/* ---------- 顶部 ---------- */
|
|
37
|
-
#top{position:absolute;left:18px;right:18px;top:16px;height:58px;display:flex;align-items:center;gap:16px;padding:0 18px;border:1px solid var(--line);border-radius:16px;background:var(--panel);backdrop-filter:blur(16px);z-index:10}
|
|
38
|
-
.brand{display:flex;align-items:
|
|
39
|
-
.brand .mark{width:26px;height:26px;border-radius:9px;border:0;padding:0;background:conic-gradient(from 210deg,#3de1c6,#5b8cff,#a78bfa,#3de1c6);box-shadow:0 0 18px rgba(61,225,198,.35);position:relative;cursor:pointer;flex:none}
|
|
40
|
-
.brand .mark{cursor:default}
|
|
41
|
-
.brand .mark .icon{position:absolute;inset:0;margin:auto;width:14px;height:14px;color:#071014;transition:opacity .25s,transform .25s}
|
|
42
|
-
.brand .mark .sun{opacity:0;transform:rotate(-30deg) scale(.8)}
|
|
43
|
-
body.day .brand .mark .moon{opacity:0;transform:rotate(30deg) scale(.8)}
|
|
44
|
-
body.day .brand .mark .sun{opacity:1;transform:none}
|
|
45
|
-
body.day{--bg:#b9cbd8;--panel:rgba(10,13,18,.84);--panel-2:rgba(14,18,24,.9);--line:rgba(255,255,255,.1);--line-2:rgba(255,255,255,.16)}
|
|
54
|
+
#top{box-shadow:0 10px 30px rgba(0,0,0,.18);position:absolute;left:18px;right:18px;top:16px;height:58px;display:flex;align-items:center;gap:16px;padding:0 18px;border:1px solid var(--line);border-radius:16px;background:rgb(var(--panel-rgb) / var(--glass-alpha, var(--panel-alpha)));backdrop-filter:blur(16px);z-index:10}
|
|
55
|
+
.brand{display:flex;align-items:baseline;gap:8px;white-space:nowrap}
|
|
46
56
|
.brand b{font-size:17px;font-weight:650;letter-spacing:-.2px}
|
|
47
|
-
.brand span{font-family:var(--mono);font-size:11px;letter-spacing:.8px;color:var(--dim)
|
|
57
|
+
.brand span{font-family:var(--mono);font-size:11px;letter-spacing:.8px;color:var(--dim)}
|
|
58
|
+
body.day{
|
|
59
|
+
--bg:#b9cbd8;
|
|
60
|
+
--panel-rgb:248 251 252;
|
|
61
|
+
--panel-alpha:.88;
|
|
62
|
+
--panel-2:rgba(255,255,255,.94);
|
|
63
|
+
--line:rgba(16,40,54,.12);
|
|
64
|
+
--line-2:rgba(16,40,54,.2);
|
|
65
|
+
--ink:#102029;
|
|
66
|
+
--dim:#455965;
|
|
67
|
+
--dim-2:#5d707d;
|
|
68
|
+
--acc:#087565;
|
|
69
|
+
--acc-2:#075e52;
|
|
70
|
+
--amber:#8a4d0f;
|
|
71
|
+
--red:#a83232;
|
|
72
|
+
--green:#256b45;
|
|
73
|
+
--purple:#5b4a9e;
|
|
74
|
+
--surface:rgba(16,40,54,.045);
|
|
75
|
+
--surface-hover:rgba(16,40,54,.065);
|
|
76
|
+
--surface-active:rgba(8,117,101,.1);
|
|
77
|
+
--active-line:rgba(8,117,101,.3);
|
|
78
|
+
--track:rgba(16,40,54,.07);
|
|
79
|
+
--scroll:rgba(16,40,54,.2);
|
|
80
|
+
--scroll-hi:rgba(16,40,54,.32);
|
|
81
|
+
--label:rgba(250,252,253,.95);
|
|
82
|
+
--hint:rgba(250,252,253,.84);
|
|
83
|
+
--chip:rgba(252,253,254,.92);
|
|
84
|
+
--focus-line:rgba(8,117,101,.3);
|
|
85
|
+
--focus-btn:rgba(8,117,101,.12);
|
|
86
|
+
--focus-btn-hi:rgba(8,117,101,.2);
|
|
87
|
+
--check-bg:rgba(37,107,69,.12);
|
|
88
|
+
--check-line:rgba(37,107,69,.4);
|
|
89
|
+
--shadow:0 16px 42px rgba(27,52,68,.14);
|
|
90
|
+
}
|
|
91
|
+
body.day #top{box-shadow:0 10px 26px rgba(27,52,68,.1)}
|
|
92
|
+
body.day #clock i{box-shadow:none}
|
|
93
|
+
body.day .panel,body.day #top,body.day .lbl,body.day .floorlbl,body.day #hint,body.day #focusChip{transition:background-color .45s,border-color .45s,color .45s,box-shadow .45s}
|
|
48
94
|
.pills{display:flex;gap:8px;margin-left:auto}
|
|
49
95
|
.pill{display:flex;align-items:center;gap:7px;height:30px;padding:0 12px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:12px;color:var(--dim);white-space:nowrap}
|
|
50
96
|
.pill i{width:7px;height:7px;border-radius:50%;background:var(--dim-2)}
|
|
51
|
-
.pill b{color:var(--ink);font-weight:600;font-size:13px}
|
|
97
|
+
.pill b{color:var(--ink);font-weight:600;font-size:13px;font-variant-numeric:tabular-nums}
|
|
52
98
|
.pill.working i{background:var(--acc);box-shadow:0 0 8px var(--acc)}
|
|
53
99
|
.pill.need i{background:var(--amber);box-shadow:0 0 8px var(--amber)}
|
|
54
100
|
.pill.stuck i{background:var(--red);box-shadow:0 0 8px var(--red)}
|
|
55
|
-
#clock{font-family:var(--mono);font-size:12px;color:var(--dim);display:flex;align-items:center;gap:8px;white-space:nowrap}
|
|
101
|
+
#clock{font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums;color:var(--dim);display:flex;align-items:center;gap:8px;white-space:nowrap}
|
|
56
102
|
#clock i{width:6px;height:6px;border-radius:50%;background:var(--acc);box-shadow:0 0 8px var(--acc);animation:breathe 2.4s ease-in-out infinite}
|
|
57
103
|
#headStats{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:18px;white-space:nowrap;pointer-events:auto}
|
|
58
104
|
.hstat{display:flex;align-items:baseline;gap:7px;font-family:var(--mono);font-size:10.5px;letter-spacing:1.2px;color:var(--dim)}
|
|
@@ -71,9 +117,9 @@
|
|
|
71
117
|
@keyframes breathe{0%,100%{opacity:.45}50%{opacity:1}}
|
|
72
118
|
|
|
73
119
|
/* ---------- 面板通用 ---------- */
|
|
74
|
-
.panel{position:absolute;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);backdrop-filter:blur(16px);box-shadow:
|
|
120
|
+
.panel{position:absolute;border:1px solid var(--line);border-radius:var(--radius);background:rgb(var(--panel-rgb) / var(--glass-alpha, var(--panel-alpha)));backdrop-filter:blur(16px);box-shadow:var(--shadow);z-index:9}
|
|
75
121
|
.panel__head{display:flex;align-items:center;gap:8px;padding:14px 16px 10px;font-family:var(--mono);font-size:11px;letter-spacing:1.8px;color:var(--dim)}
|
|
76
|
-
.panel__head b{margin-left:auto;color:var(--dim);font-weight:500;letter-spacing:1px}
|
|
122
|
+
.panel__head b{margin-left:auto;color:var(--dim);font-weight:500;letter-spacing:1px;font-variant-numeric:tabular-nums}
|
|
77
123
|
.panel__body{padding:0 10px 12px}
|
|
78
124
|
|
|
79
125
|
/* ---------- 左侧栏:榜单 + 楼层 ---------- */
|
|
@@ -82,68 +128,82 @@
|
|
|
82
128
|
#board{position:relative;left:auto;top:auto;width:auto;flex:1 1 auto;min-height:0;max-height:none;display:flex;flex-direction:column}
|
|
83
129
|
#board .panel__body{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding-right:6px;scrollbar-gutter:stable}
|
|
84
130
|
#board .panel__body::-webkit-scrollbar{width:8px}
|
|
85
|
-
#board .panel__body::-webkit-scrollbar-track{background:
|
|
86
|
-
#board .panel__body::-webkit-scrollbar-thumb{background:
|
|
87
|
-
#board .panel__body::-webkit-scrollbar-thumb:hover{background:
|
|
88
|
-
.row{display:flex;align-items:center;gap:10px;padding:10px 10px;border-radius:
|
|
89
|
-
.row:hover{background:
|
|
131
|
+
#board .panel__body::-webkit-scrollbar-track{background:var(--track);border-radius:4px}
|
|
132
|
+
#board .panel__body::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:4px}
|
|
133
|
+
#board .panel__body::-webkit-scrollbar-thumb:hover{background:var(--scroll-hi)}
|
|
134
|
+
.row{display:flex;align-items:center;gap:10px;padding:10px 10px;border-radius:8px;cursor:pointer;transition:background .15s;appearance:none;width:100%;border:0;background:transparent;color:inherit;font:inherit;text-align:left}
|
|
135
|
+
.row:hover{background:var(--surface-hover)}
|
|
136
|
+
.row:active{background:var(--surface-active)}
|
|
90
137
|
.row:focus-visible,.floor:focus-visible{outline:2px solid rgba(61,225,198,.55);outline-offset:1px}
|
|
91
|
-
.row.on{background:
|
|
138
|
+
.row.on{background:var(--surface-active);box-shadow:inset 0 0 0 1px var(--active-line)}
|
|
92
139
|
.dot{width:9px;height:9px;border-radius:50%;flex:none}
|
|
93
140
|
.row__main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
|
|
94
141
|
.row__name{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
95
142
|
.row__sub{font-family:var(--mono);font-size:10.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
|
|
96
|
-
.row__bar{display:block;height:3px;border-radius:2px;background:
|
|
143
|
+
.row__bar{display:block;height:3px;border-radius:2px;background:var(--track);margin-top:4px;overflow:hidden}
|
|
97
144
|
.row__bar i{display:block;height:100%;border-radius:2px;background:linear-gradient(90deg,var(--acc-2),var(--acc))}
|
|
98
|
-
.row__pct{font-family:var(--mono);font-size:13px;color:var(--ink);flex:none;min-width:42px;text-align:right}
|
|
145
|
+
.row__pct{font-family:var(--mono);font-size:13px;color:var(--ink);flex:none;min-width:42px;text-align:right;font-variant-numeric:tabular-nums}
|
|
99
146
|
|
|
100
147
|
/* ---------- 楼层 ---------- */
|
|
101
148
|
#floors{position:relative;left:auto;bottom:auto;width:auto;flex:none}
|
|
102
149
|
#floors .panel__body{display:flex;flex-direction:column;gap:4px;max-height:min(30vh,238px);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}
|
|
103
150
|
#floors .panel__body::-webkit-scrollbar{width:8px}
|
|
104
|
-
#floors .panel__body::-webkit-scrollbar-track{background:
|
|
105
|
-
#floors .panel__body::-webkit-scrollbar-thumb{background:
|
|
106
|
-
#floors .panel__body::-webkit-scrollbar-thumb:hover{background:
|
|
107
|
-
.floor{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:
|
|
108
|
-
.floor:hover{background:
|
|
109
|
-
.floor
|
|
110
|
-
.
|
|
151
|
+
#floors .panel__body::-webkit-scrollbar-track{background:var(--track);border-radius:4px}
|
|
152
|
+
#floors .panel__body::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:4px}
|
|
153
|
+
#floors .panel__body::-webkit-scrollbar-thumb:hover{background:var(--scroll-hi)}
|
|
154
|
+
.floor{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px;appearance:none;width:100%;border:0;background:transparent;color:inherit;font:inherit;text-align:left}
|
|
155
|
+
.floor:hover{background:var(--surface-hover)}
|
|
156
|
+
.floor:active{background:var(--surface-active)}
|
|
157
|
+
.floor.on{background:var(--surface-active)}
|
|
158
|
+
.floor__no{width:22px;height:22px;border-radius:7px;background:var(--surface);display:grid;place-items:center;font-family:var(--mono);font-size:11px;color:var(--dim)}
|
|
111
159
|
.floor.on .floor__no{background:rgba(61,225,198,.2);color:var(--acc)}
|
|
112
|
-
.floor__ct{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--dim)}
|
|
160
|
+
.floor__ct{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--dim);font-variant-numeric:tabular-nums}
|
|
113
161
|
|
|
114
162
|
/* ---------- 右侧 ---------- */
|
|
115
163
|
#right{position:absolute;right:18px;top:92px;bottom:18px;width:346px;display:flex;flex-direction:column;gap:14px;z-index:9;max-height:none;overflow:auto;scrollbar-width:none}
|
|
116
164
|
#right::-webkit-scrollbar{display:none}
|
|
117
165
|
#right > .panel{position:relative;left:auto;right:auto;top:auto;bottom:auto}
|
|
118
166
|
#card{position:relative;display:none}
|
|
119
|
-
#card.show{display:block}
|
|
167
|
+
#card.show{display:block;animation:cardIn .22s cubic-bezier(.2,0,0,1) both}
|
|
168
|
+
#card.show.is-out{animation:cardOut .16s ease-out both;pointer-events:none}
|
|
169
|
+
@keyframes cardIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
|
|
170
|
+
@keyframes cardOut{from{opacity:1;transform:none}to{opacity:0;transform:translateY(4px)}}
|
|
120
171
|
#card .panel__head b{margin-left:0;margin-right:26px;color:var(--dim)}
|
|
121
|
-
#cardx{position:absolute;top:12px;right:12px;width:
|
|
122
|
-
#cardx
|
|
172
|
+
#cardx{position:absolute;top:12px;right:12px;width:28px;height:28px;border-radius:50%;border:1px solid var(--line-2);background:var(--surface);color:var(--dim);cursor:pointer;z-index:2;display:grid;place-items:center;padding:0;transition:background-color .15s ease,color .15s ease,transform .12s ease}
|
|
173
|
+
#cardx::before{content:"";position:absolute;inset:-6px;border-radius:50%}
|
|
174
|
+
#cardx svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
|
|
175
|
+
#cardx:active{transform:scale(.96)}
|
|
176
|
+
#cardx:hover{color:var(--ink);background:var(--surface-hover)}
|
|
123
177
|
.card__title{display:flex;align-items:center;gap:10px;padding:0 16px 8px}
|
|
124
178
|
.card__title .glyph{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;font-size:16px;flex:none}
|
|
125
|
-
.card__title b{font-size:16px;font-weight:650;line-height:1.
|
|
179
|
+
.card__title b{font-size:16px;font-weight:650;line-height:1.3;overflow-wrap:anywhere;word-break:normal;text-wrap:pretty}
|
|
126
180
|
.card__title span{display:block;font-family:var(--mono);font-size:11px;color:var(--dim);margin-top:2px}
|
|
127
|
-
.card__status{margin:0 16px;display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 11px;border-radius:999px;font-family:var(--mono);font-size:11.5px;border:1px solid}
|
|
181
|
+
.card__status{margin:0 16px;display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 11px;border-radius:999px;font-family:var(--mono);font-size:11.5px;border:1px solid;color:var(--c,var(--dim));border-color:color-mix(in srgb,var(--c,var(--dim)) 45%,transparent);background:color-mix(in srgb,var(--c,var(--dim)) 12%,transparent)}
|
|
182
|
+
.card__status[data-status="working"]{--c:var(--acc)}
|
|
183
|
+
.card__status[data-status="need_me"]{--c:var(--amber)}
|
|
184
|
+
.card__status[data-status="stuck"]{--c:var(--red)}
|
|
185
|
+
.card__status[data-status="done"]{--c:var(--green)}
|
|
186
|
+
.card__status[data-status="resting"]{--c:var(--dim)}
|
|
128
187
|
.card__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px 16px 4px}
|
|
129
|
-
.card__grid div{background:
|
|
130
|
-
.card__grid b{display:block;font-family:var(--mono);font-size:19px;font-weight:650;letter-spacing:-.5px}
|
|
188
|
+
.card__grid div{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px}
|
|
189
|
+
.card__grid b{display:block;font-family:var(--mono);font-size:19px;font-weight:650;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
|
|
131
190
|
.card__grid span{font-family:var(--mono);font-size:9.5px;letter-spacing:1.2px;color:var(--dim)}
|
|
132
191
|
.card__row{display:flex;justify-content:space-between;gap:12px;margin:10px 16px 0;padding-top:10px;border-top:1px solid var(--line);font-family:var(--mono);font-size:11.5px;color:var(--dim)}
|
|
133
|
-
.card__row b{color:var(--ink);font-weight:500;text-align:right;word-break:
|
|
192
|
+
.card__row b{color:var(--ink);font-weight:500;text-align:right;overflow-wrap:anywhere;word-break:normal;max-width:220px;text-wrap:pretty}
|
|
134
193
|
.card__foot{height:10px}
|
|
135
194
|
|
|
136
195
|
#checks .panel__body{display:flex;flex-direction:column;gap:7px}
|
|
137
196
|
.check{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--dim);font-family:var(--mono)}
|
|
138
197
|
.check i{width:15px;height:15px;border-radius:5px;border:1px solid var(--line-2);display:grid;place-items:center;font-style:normal;font-size:10px;color:transparent}
|
|
198
|
+
.check i svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
|
|
139
199
|
.check.ok{color:var(--ink)}
|
|
140
|
-
.check.ok i{background:
|
|
200
|
+
.check.ok i{background:var(--check-bg);border-color:var(--check-line);color:var(--green)}
|
|
141
201
|
|
|
142
202
|
/* ---------- 动态 ---------- */
|
|
143
203
|
#feed{left:358px;right:382px;bottom:18px;width:auto;max-height:168px;display:flex;flex-direction:column;overflow:hidden}
|
|
144
204
|
#feed .panel__body{display:flex;flex-direction:column;gap:2px;overflow:auto;min-height:0}
|
|
145
205
|
.evt{display:flex;align-items:center;gap:9px;padding:5px 6px;font-size:12px;color:var(--dim);white-space:nowrap;overflow:hidden}
|
|
146
|
-
.evt .t{font-family:var(--mono);font-size:10.5px;color:var(--dim-2);flex:none}
|
|
206
|
+
.evt .t{font-family:var(--mono);font-size:10.5px;color:var(--dim-2);flex:none;font-variant-numeric:tabular-nums}
|
|
147
207
|
.evt i{width:6px;height:6px;border-radius:50%;flex:none}
|
|
148
208
|
.evt b{color:var(--ink);font-weight:600;flex:none;max-width:150px;overflow:hidden;text-overflow:ellipsis}
|
|
149
209
|
.evt span{overflow:hidden;text-overflow:ellipsis}
|
|
@@ -167,26 +227,29 @@
|
|
|
167
227
|
#balance .sub b{color:var(--ink);font-weight:500}
|
|
168
228
|
|
|
169
229
|
/* ---------- 提示/空态 ---------- */
|
|
170
|
-
#focusChip{position:absolute;left:50%;top:92px;transform:translateX(-50%);z-index:11;display:flex;align-items:center;gap:10px;padding:6px 6px 6px 14px;border:1px solid
|
|
230
|
+
#focusChip{position:absolute;left:50%;top:92px;transform:translateX(-50%);z-index:11;display:flex;align-items:center;gap:10px;padding:6px 6px 6px 14px;border:1px solid var(--focus-line);border-radius:999px;background:var(--chip);backdrop-filter:blur(14px);font-family:var(--mono);font-size:11.5px;color:var(--ink);white-space:nowrap}
|
|
171
231
|
#focusChip[hidden]{display:none}
|
|
172
232
|
#focusChip .focus__dot{width:7px;height:7px;border-radius:50%;background:var(--acc);box-shadow:0 0 8px var(--acc)}
|
|
173
|
-
#focusChip button{height:26px;padding:0 12px;border-radius:999px;border:0;background:
|
|
174
|
-
#focusChip button:hover{background:
|
|
233
|
+
#focusChip button{position:relative;height:26px;padding:0 12px;border-radius:999px;border:0;background:var(--focus-btn);color:var(--acc);font-family:var(--mono);font-size:11px;font-weight:600;cursor:pointer;transition:background-color .15s ease,transform .12s ease}
|
|
234
|
+
#focusChip button:hover{background:var(--focus-btn-hi)}
|
|
235
|
+
#focusChip button:active{transform:scale(.96)}
|
|
236
|
+
#focusChip button::before{content:"";position:absolute;inset:-7px;border-radius:999px}
|
|
175
237
|
#focusChip button:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
|
|
176
238
|
#credit{position:absolute;left:24px;bottom:5px;z-index:8;font-family:var(--mono);font-size:9.5px;letter-spacing:.3px;color:var(--dim-2);opacity:.72;pointer-events:none;white-space:nowrap}
|
|
177
239
|
#credit b{font-weight:600;color:var(--dim)}
|
|
178
|
-
#hint{position:absolute;left:50%;top:92px;transform:translateX(-50%);z-index:8;font-family:var(--mono);font-size:11px;letter-spacing:1.2px;color:rgba(138,148,163,.85);background:
|
|
240
|
+
#hint{position:absolute;left:50%;top:92px;transform:translateX(-50%);z-index:8;font-family:var(--mono);font-size:11px;letter-spacing:1.2px;color:rgba(138,148,163,.85);background:var(--hint);border:1px solid var(--line);border-radius:999px;padding:7px 14px;backdrop-filter:blur(12px);transition:opacity .8s;white-space:nowrap}
|
|
179
241
|
#hint.hide{opacity:0}
|
|
180
242
|
#hint.lower{top:auto;bottom:20px}
|
|
181
243
|
#offline{position:absolute;left:50%;top:88px;transform:translateX(-50%);z-index:20;display:none;font-family:var(--mono);font-size:11.5px;color:var(--amber);background:rgba(255,184,107,.12);border:1px solid rgba(255,184,107,.35);border-radius:999px;padding:6px 14px}
|
|
182
244
|
#offline.show{display:block}
|
|
183
|
-
.lbl{position:absolute;transform:translate(-50%,-100%);padding:3px 8px;border-radius:999px;border:1px solid
|
|
184
|
-
.lbl em{font-style:normal;color:var(--dim);margin-left:6px}
|
|
245
|
+
.lbl{position:absolute;transform:translate(-50%,-100%);max-width:250px;overflow:hidden;text-overflow:ellipsis;padding:3px 8px;border-radius:999px;border:1px solid var(--line-2);background:var(--label);color:var(--ink);font-family:var(--mono);font-size:10.5px;white-space:nowrap;backdrop-filter:blur(6px);transition:border-color .2s,transform .2s}
|
|
246
|
+
.lbl em{font-style:normal;color:var(--dim);margin-left:6px;font-variant-numeric:tabular-nums}
|
|
185
247
|
.lbl:hover{border-color:rgba(61,225,198,.6);transform:translate(-50%,-100%) scale(1.06)}
|
|
186
248
|
.lbl.on{border-color:var(--acc);box-shadow:0 0 14px rgba(61,225,198,.35)}
|
|
187
249
|
.lbl .badge{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px;vertical-align:1px}
|
|
188
|
-
.floorlbl{position:absolute;transform:translate(-50%,-50%);font-family:var(--mono);font-size:11px;letter-spacing:2px;color:rgba(138,148,163,.9);padding:3px 9px;border:1px solid
|
|
250
|
+
.floorlbl{position:absolute;transform:translate(-50%,-50%);font-family:var(--mono);font-size:11px;letter-spacing:2px;color:rgba(138,148,163,.9);padding:3px 9px;border:1px solid var(--line-2);border-radius:999px;background:var(--label);white-space:nowrap}
|
|
189
251
|
.floorlbl b{color:var(--ink);font-weight:600;margin-left:6px;letter-spacing:0}
|
|
252
|
+
.officeTag{font-family:var(--mono);font-size:9px;letter-spacing:1.4px;color:var(--dim);padding:2px 7px;border:1px solid var(--line-2);border-radius:999px;background:var(--label);white-space:nowrap;backdrop-filter:blur(6px)}
|
|
190
253
|
@media (max-width:1180px){
|
|
191
254
|
#left{width:280px}
|
|
192
255
|
#right{width:300px}
|
|
@@ -225,6 +288,10 @@
|
|
|
225
288
|
#right{top:calc(86px + 28vh + 12px)}
|
|
226
289
|
#meter .big{font-size:32px}
|
|
227
290
|
}
|
|
291
|
+
@media (prefers-reduced-motion:reduce){
|
|
292
|
+
#card.show,#card.show.is-out{animation:none}
|
|
293
|
+
.row,.floor,#cardx,#focusChip button{transition:none!important}
|
|
294
|
+
}
|
|
228
295
|
@media (max-height:760px){
|
|
229
296
|
#floors{display:none}
|
|
230
297
|
#feed{max-height:112px}
|
|
@@ -237,10 +304,7 @@
|
|
|
237
304
|
<div id="labels"></div>
|
|
238
305
|
|
|
239
306
|
<header id="top">
|
|
240
|
-
<div class="brand"><span
|
|
241
|
-
<svg class="icon moon" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M9.6 1.8a6.3 6.3 0 1 0 4.6 10.4A6.9 6.9 0 0 1 9.6 1.8Z"/></svg>
|
|
242
|
-
<svg class="icon sun" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true"><circle cx="8" cy="8" r="2.6" fill="currentColor" stroke="none"/><path d="M8 1v1.6M8 13.4V15M1 8h1.6M13.4 8H15M2.9 2.9l1.1 1.1M12 12l1.1 1.1M13.1 2.9 12 4M4 12l-1.1 1.1"/></svg>
|
|
243
|
-
</span><b>智能体办公室</b><span>DSH 实时会话办公室</span></div>
|
|
307
|
+
<div class="brand"><b>Office</b><span>DSH 实时会话办公室</span></div>
|
|
244
308
|
<div id="headStats">
|
|
245
309
|
<div class="hstat tokens" title="本周 token 用量"><span>本周</span><b id="headTokens">—</b><small>tokens</small></div>
|
|
246
310
|
<div class="hstat" title="DeepSeek 平台余额"><span>余额</span><b id="headBalance">—</b></div>
|
|
@@ -258,7 +322,7 @@
|
|
|
258
322
|
|
|
259
323
|
<aside id="right">
|
|
260
324
|
<section id="card" class="panel">
|
|
261
|
-
<button id="cardx" title="关闭"
|
|
325
|
+
<button id="cardx" title="关闭" aria-label="关闭详情"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8"/></svg></button>
|
|
262
326
|
<div class="panel__head"><span>会话详情</span><b id="cardTeam"></b></div>
|
|
263
327
|
<div class="card__title"><span class="glyph" id="cardGlyph">◆</span><div><b id="cardName"></b><span id="cardSub"></span></div></div>
|
|
264
328
|
<div class="card__status" id="cardStatus"></div>
|