qq-bot-roost 1.0.2 → 1.0.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.md +2 -2
- package/package.json +57 -57
- package/src/bot.js +10 -1
- package/src/config.js +741 -730
- package/src/ledger.js +905 -554
- package/src/message.js +998 -900
- package/src/outbound.js +791 -690
- package/src/plugin/api-record.js +129 -0
- package/src/plugin/context.js +990 -976
- package/src/storage/events-schema.js +124 -99
- package/src/web/server.js +3494 -3280
- package/web/app.js +4372 -4053
- package/web/index.html +1203 -1116
- package/web/style.css +44 -0
package/web/style.css
CHANGED
|
@@ -259,6 +259,15 @@ body {
|
|
|
259
259
|
animation: modal-fade .12s ease-out;
|
|
260
260
|
}
|
|
261
261
|
.modal-mask[hidden] { display: none; }
|
|
262
|
+
/*
|
|
263
|
+
* 通用确认弹窗(#modalMask)永远压在最上面。
|
|
264
|
+
*
|
|
265
|
+
* 四个 .modal-mask 都是 z-index:100,同层级时「DOM 里靠后的盖住靠前的」,
|
|
266
|
+
* 而 #modalMask 写在 index.html 最前面、插件设置面板在后面 ——
|
|
267
|
+
* 于是「保存配置」弹的「已保存」整个被插件设置面板挡住,看起来像点了没反应。
|
|
268
|
+
* 确认弹窗本身是「盖在别的弹窗上回答一个问题」的层,层级必须高人一等。
|
|
269
|
+
*/
|
|
270
|
+
#modalMask { z-index: 200; }
|
|
262
271
|
.modal {
|
|
263
272
|
width: min(420px, calc(100vw - 32px));
|
|
264
273
|
background: var(--panel);
|
|
@@ -279,6 +288,14 @@ body {
|
|
|
279
288
|
.modal-actions {
|
|
280
289
|
display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px;
|
|
281
290
|
}
|
|
291
|
+
/*
|
|
292
|
+
* 破坏性操作推到最左,右边只留「关闭 / 保存配置」。
|
|
293
|
+
*
|
|
294
|
+
* 原先三个按钮挤成一排右对齐,灰色的「关闭」在最左边、离蓝色的「保存配置」
|
|
295
|
+
* 隔着一个红色的「恢复默认」,用户看完配置直接就去点主按钮,找不到退出的地方。
|
|
296
|
+
* 把「恢复默认」单独甩到左边后,两个正常出口挨在一起,也顺手拉开了误点的距离。
|
|
297
|
+
*/
|
|
298
|
+
.modal-actions > .act-left { margin-right: auto; }
|
|
282
299
|
@keyframes modal-fade { from { opacity: 0 } to { opacity: 1 } }
|
|
283
300
|
@keyframes modal-pop { from { opacity: 0; transform: translateY(6px) scale(.98) } to { opacity: 1; transform: none } }
|
|
284
301
|
|
|
@@ -1381,3 +1398,30 @@ label.switch.small { font-size: 12.5px; color: var(--muted); }
|
|
|
1381
1398
|
background: currentColor;
|
|
1382
1399
|
opacity: 0.25;
|
|
1383
1400
|
}
|
|
1401
|
+
|
|
1402
|
+
/* ---------------- 事件账本页 ---------------- */
|
|
1403
|
+
|
|
1404
|
+
/*
|
|
1405
|
+
* 列宽为什么要写死:默认 `table-layout: auto` 下,浏览器按内容分配宽度,
|
|
1406
|
+
* 「2026/11/1 01:23:57」这种长串会被压成两行,一列变两行之后整张表就对不齐了
|
|
1407
|
+
* (截图实测:时间和人名都折行,条数跑到别的列下面)。
|
|
1408
|
+
* 时间和人名的宽度是固定的,把剩下的都给正文。
|
|
1409
|
+
*/
|
|
1410
|
+
#tab-ledger .table-wrap { max-height: 460px; }
|
|
1411
|
+
#tab-ledger table { table-layout: fixed; }
|
|
1412
|
+
#tab-ledger .lg-chat { width: 190px; overflow: hidden; text-overflow: ellipsis; }
|
|
1413
|
+
#tab-ledger .lg-kind { width: 64px; }
|
|
1414
|
+
#tab-ledger .lg-num { width: 72px; }
|
|
1415
|
+
#tab-ledger .lg-range { width: 190px; white-space: nowrap; }
|
|
1416
|
+
#tab-ledger .lg-ops { width: 132px; white-space: nowrap; }
|
|
1417
|
+
#tab-ledger .lg-when { width: 150px; white-space: nowrap; }
|
|
1418
|
+
#tab-ledger .lg-who { width: 150px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
1419
|
+
#tab-ledger .lg-content { word-break: break-word; }
|
|
1420
|
+
/* 概览里的时间范围:两行短格式,字号小一档,别撑破卡片 */
|
|
1421
|
+
#tab-ledger .card .v.lg-range-v {
|
|
1422
|
+
font-size: 12.5px;
|
|
1423
|
+
line-height: 1.45;
|
|
1424
|
+
font-variant-numeric: tabular-nums;
|
|
1425
|
+
white-space: nowrap;
|
|
1426
|
+
overflow-wrap: anywhere;
|
|
1427
|
+
}
|