dsh-remote-plugin 0.5.0 → 0.5.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.
package/public/styles.css CHANGED
@@ -163,12 +163,30 @@ body.in-session .view {
163
163
  backdrop-filter: blur(12px);
164
164
  border-bottom: 1px solid var(--line);
165
165
  }
166
+ /* 会话运行状态可视化(类似 Web UI deepdiving):
167
+ 运行中 = 蓝色流动渐变; 出错/中断 = 橙红; 空闲 = 原始样式 */
168
+ .session-head.running {
169
+ background: linear-gradient(90deg, rgba(11, 14, 26, .94), rgba(35, 65, 150, .92), rgba(125, 207, 255, .6), rgba(35, 65, 150, .92), rgba(11, 14, 26, .94));
170
+ background-size: 200% 100%;
171
+ animation: session-running-flow 2.6s ease-in-out infinite alternate;
172
+ border-bottom-color: rgba(91, 140, 255, .55);
173
+ }
174
+ .session-head.interrupted {
175
+ background: linear-gradient(90deg, rgba(11, 14, 26, .94), rgba(90, 26, 12, .92), rgba(255, 158, 100, .55), rgba(90, 26, 12, .92), rgba(11, 14, 26, .94));
176
+ background-size: 200% 100%;
177
+ animation: session-running-flow 1.8s ease-in-out infinite alternate;
178
+ border-bottom-color: rgba(255, 158, 100, .55);
179
+ }
180
+ @keyframes session-running-flow {
181
+ from { background-position: 0% 50%; }
182
+ to { background-position: 100% 50%; }
183
+ }
166
184
  .session-head .session-title { flex-shrink: 1; }
167
185
  .session-head-meta { flex: 1; min-width: 0; }
168
186
  .session-title {
169
187
  font-size: 16px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
170
188
  }
171
- .session-sub { font-size: 12px; color: var(--muted); margin-top: 1px; }
189
+ .session-sub { font-size: 12px; color: var(--muted); margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
172
190
  .cards {
173
191
  display: flex; flex-direction: column; gap: 8px; margin-top: 8px;
174
192
  flex-shrink: 0; max-height: 42vh; overflow-y: auto;
@@ -271,13 +289,15 @@ body.in-session .view {
271
289
  .tool.error summary { color: var(--orange); }
272
290
 
273
291
  /* ---------- composer ---------- */
274
- .composer {
292
+ .composer-wrap {
275
293
  position: fixed; left: 0; right: 0; bottom: calc(58px + var(--safe-b)); z-index: 20;
276
- display: flex; gap: 8px; align-items: flex-end;
277
- padding: 8px 12px calc(8px + var(--safe-b));
294
+ max-width: 720px; margin: 0 auto;
278
295
  background: rgba(11, 14, 26, .92); backdrop-filter: blur(10px);
279
296
  border-top: 1px solid var(--line);
280
- max-width: 720px; margin: 0 auto;
297
+ }
298
+ .composer {
299
+ display: flex; gap: 8px; align-items: flex-end;
300
+ padding: 8px 12px calc(8px + var(--safe-b));
281
301
  }
282
302
  .composer textarea {
283
303
  flex: 1; resize: none; background: var(--panel); color: var(--text);
@@ -286,11 +306,43 @@ body.in-session .view {
286
306
  max-height: 120px; outline: none;
287
307
  }
288
308
  .composer textarea:focus { border-color: rgba(91, 140, 255, .6); }
309
+ .plus-btn {
310
+ flex-shrink: 0; width: 42px; height: 42px; border-radius: 14px;
311
+ background: var(--panel); color: var(--cyan); border: 1px solid var(--line);
312
+ font-size: 22px; font-weight: 700; line-height: 1;
313
+ }
314
+ .plus-btn.active { background: rgba(125, 207, 255, .14); border-color: rgba(125, 207, 255, .45); }
289
315
  .send-btn {
290
316
  flex-shrink: 0; width: 46px; height: 42px; border-radius: 14px;
291
317
  background: var(--blue); color: #fff; font-weight: 700; font-size: 14px;
292
318
  }
293
319
  .send-btn:disabled { opacity: .45; }
320
+ .composer-menu {
321
+ max-height: min(46vh, 340px); overflow-y: auto;
322
+ padding: 10px 12px; display: flex; flex-direction: column; gap: 12px;
323
+ border-bottom: 1px solid var(--line);
324
+ }
325
+ .menu-title {
326
+ font-size: 12px; color: var(--muted); font-weight: 700; letter-spacing: .5px;
327
+ margin-bottom: 7px; display: flex; align-items: center; justify-content: space-between;
328
+ }
329
+ .menu-chips { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
330
+ .menu-chip {
331
+ background: var(--panel); color: var(--text); border: 1px solid var(--line);
332
+ border-radius: 999px; padding: 6px 11px; font-size: 12.5px; cursor: pointer;
333
+ white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis;
334
+ }
335
+ .menu-chip:active { background: rgba(91, 140, 255, .16); border-color: rgba(91, 140, 255, .5); }
336
+ .menu-chip.current { color: var(--cyan); border-color: rgba(125, 207, 255, .45); background: rgba(125, 207, 255, .08); }
337
+ .menu-chip.danger { color: var(--orange); border-color: rgba(255, 158, 100, .4); }
338
+ .menu-models { display: flex; flex-wrap: wrap; gap: 7px; }
339
+ .model-chip {
340
+ background: var(--panel); border: 1px solid var(--line); color: var(--text);
341
+ border-radius: 999px; padding: 6px 11px; font-size: 12.5px; cursor: pointer;
342
+ max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
343
+ }
344
+ .model-chip.current { color: var(--cyan); border-color: rgba(125, 207, 255, .45); background: rgba(125, 207, 255, .08); }
345
+ .model-provider { font-size: 11px; color: var(--muted); margin: 7px 0 5px; }
294
346
  body.in-session .main { padding-bottom: 84px; }
295
347
 
296
348
  /* ---------- 待办 ---------- */
@@ -302,7 +354,7 @@ body.in-session .main { padding-bottom: 84px; }
302
354
  .pending-card.approval { border-left: 3px solid var(--orange); }
303
355
  .pending-card.question { border-left: 3px solid var(--purple); }
304
356
  .pc-title { font-weight: 600; font-size: 14px; }
305
- .pc-desc { font-size: 12.5px; color: var(--muted); margin-top: 3px; word-break: break-all; }
357
+ .pc-desc { font-size: 12.5px; color: var(--muted); margin-top: 3px; overflow-wrap: anywhere; }
306
358
  .pc-session { font-size: 11px; color: var(--blue); margin-top: 5px; }
307
359
  .job-card .job-name { font-weight: 600; font-size: 14px; }
308
360
  .job-state { font-size: 12px; color: var(--muted); margin-top: 3px; }
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.5.0",
2
+ "version": "0.5.3",
3
3
  "apkUrl": "dsh-remote.apk",
4
- "releasedAt": "2026-08-16T04:01:50.533Z",
5
- "notes": "上传支持暂停/取消与 SHA-256 完整性校验; 网关管理页一键生成令牌二维码+轮换令牌, 手机 App 扫码自动配对; Release 自动附 changelog 与 SHA256SUMS"
4
+ "releasedAt": "2026-08-16T08:04:08.551Z",
5
+ "notes": "界面中英双语(App/管理页,跟随系统语言,可手动切换);抽屉 UI 优化:token 独占一行、设备列表窄屏卡片式、标题徽章不换行;修复扫码配对误报与二维码生成失败;修复未设 token 时反复重连导致的认证失败计数增长"
6
6
  }
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "0.5.0"
2
+ "version": "0.5.3"
3
3
  }