@musnows/scriverse 0.9.9 → 1.0.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/dist/ai-write-plans.js +136 -48
- package/dist/ai-write-plans.js.map +1 -1
- package/dist/ai.js +404 -100
- package/dist/ai.js.map +1 -1
- package/dist/app.js +366 -2
- package/dist/app.js.map +1 -1
- package/dist/cli-core.js +95 -3
- package/dist/cli-core.js.map +1 -1
- package/dist/database.js +549 -4
- package/dist/database.js.map +1 -1
- package/dist/im-orchestrator.js +1317 -0
- package/dist/im-orchestrator.js.map +1 -0
- package/dist/im.js +1690 -0
- package/dist/im.js.map +1 -0
- package/dist/public/ai-interactive.js +14 -13
- package/dist/public/app.js +279 -82
- package/dist/public/im.d.ts +71 -0
- package/dist/public/im.js +1899 -0
- package/dist/public/index.html +108 -5
- package/dist/public/page-route.d.ts +2 -1
- package/dist/public/page-route.js +4 -1
- package/dist/public/styles.css +335 -3
- package/dist/s3-backup.js +5 -1
- package/dist/s3-backup.js.map +1 -1
- package/dist/security.js +1 -0
- package/dist/security.js.map +1 -1
- package/dist/store.js +4 -1
- package/dist/store.js.map +1 -1
- package/dist/user-auth.js +9 -4
- package/dist/user-auth.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/public/styles.css
CHANGED
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
--surface-strong: rgba(255,254,250,.94);
|
|
16
16
|
--row-active: #ebe4d8;
|
|
17
17
|
--surface-hover: #dfd6c7;
|
|
18
|
+
--im-narration-surface: #edf1f4;
|
|
19
|
+
--im-narration-line: #b6c2cc;
|
|
20
|
+
--im-narration-label: #627587;
|
|
18
21
|
--app-glow: rgba(255,255,255,.95);
|
|
19
22
|
--toast-bg: #25231f;
|
|
20
23
|
--toast-fg: #fffefa;
|
|
@@ -263,6 +266,9 @@
|
|
|
263
266
|
--surface-strong: rgba(38,35,30,.96);
|
|
264
267
|
--row-active: #332d27;
|
|
265
268
|
--surface-hover: #3a342d;
|
|
269
|
+
--im-narration-surface: #20272d;
|
|
270
|
+
--im-narration-line: #526471;
|
|
271
|
+
--im-narration-label: #9bb0be;
|
|
266
272
|
--app-glow: rgba(98,82,66,.18);
|
|
267
273
|
--toast-bg: #25231f;
|
|
268
274
|
--toast-fg: #fffefa;
|
|
@@ -566,6 +572,7 @@ input[type="checkbox"][hidden] { display: none; }
|
|
|
566
572
|
.left-panel, .ai-panel { position: relative; min-height: 0; background: var(--panel); }
|
|
567
573
|
.left-panel { display: flex; flex-direction: column; border-right: 1px solid var(--line); padding: 0; overflow: hidden; }
|
|
568
574
|
.left-panel-body { flex: 1 1 auto; min-height: 0; padding: 18px 14px 16px; overflow-y: auto; }
|
|
575
|
+
.left-panel-body { container: left-panel-body / inline-size; }
|
|
569
576
|
.ai-panel { container-type: inline-size; border-left: 1px solid var(--line); display: flex; flex-direction: column; padding: 14px 16px 18px; min-width: 0; }
|
|
570
577
|
.panel-collapse-button { z-index: 8; flex: 0 0 auto; width: 24px; height: 24px; padding: 0; border: 1px solid var(--line); border-radius: 4px; background: var(--panel); color: var(--muted); font-size: 18px; line-height: 1; }
|
|
571
578
|
.ai-heading #ai-panel-toggle { flex-basis: 30px; width: 30px; min-width: 30px; min-height: 30px; height: 30px; }
|
|
@@ -1390,7 +1397,9 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1390
1397
|
.module-nav .ai-assistant-entry.active { background: color-mix(in srgb, var(--accent) 10%, var(--surface)); color: var(--accent-dark); font-weight: 650; }
|
|
1391
1398
|
#module-more-button { grid-column: 2; color: var(--accent-dark); text-align: center; }
|
|
1392
1399
|
.panel-heading { display: flex; align-items: center; gap: 8px; padding: 15px 0 9px 7px; color: var(--muted); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; }
|
|
1393
|
-
.panel-heading-
|
|
1400
|
+
.panel-heading-label { min-width: 0; white-space: nowrap; }
|
|
1401
|
+
.panel-heading-label-compact { display: none; }
|
|
1402
|
+
.panel-heading-actions { display: flex; align-items: center; gap: 7px; margin-left: auto; white-space: nowrap; }
|
|
1394
1403
|
.chapter-batch-button { display: grid; flex: none; place-items: center; width: 24px; height: 24px; padding: 0; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--muted); }
|
|
1395
1404
|
.chapter-batch-button svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
|
|
1396
1405
|
.chapter-batch-button:hover, .chapter-batch-button:focus-visible { border-color: var(--accent); color: var(--accent-dark); outline: none; }
|
|
@@ -1417,7 +1426,26 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1417
1426
|
.chapter-node > span:first-child { min-width: 0; overflow-wrap: anywhere; line-height: 1.45; white-space: normal; }
|
|
1418
1427
|
.chapter-node-meta { display: flex; flex: none; align-items: center; gap: 5px; margin-left: auto; overflow: visible; white-space: nowrap; }
|
|
1419
1428
|
.chapter-node small { color: var(--muted); font-size: 9px; }
|
|
1429
|
+
.volume-chapter-count { flex: 0 0 auto; white-space: nowrap; }
|
|
1420
1430
|
.chapter-type-badge { max-width: 58px; overflow: hidden; padding: 2px 5px; border: 1px solid color-mix(in srgb, var(--accent) 42%, var(--line)); border-radius: 9px; background: color-mix(in srgb, var(--accent) 12%, var(--surface)); color: var(--accent-dark); font-size: 8px; font-style: normal; text-overflow: ellipsis; white-space: nowrap; }
|
|
1431
|
+
@container left-panel-body (max-width: 220px) {
|
|
1432
|
+
.panel-heading-label-full { display: none; }
|
|
1433
|
+
.panel-heading-label-compact { display: inline; }
|
|
1434
|
+
.chapter-count-unit, .volume-chapter-count-unit { display: none; }
|
|
1435
|
+
.module-nav > #ai-assistant-entry,
|
|
1436
|
+
.module-nav > #reader-open-button,
|
|
1437
|
+
.module-nav > button[data-module="comments"],
|
|
1438
|
+
.module-nav > button[data-module="outlines"],
|
|
1439
|
+
.module-nav > button[data-work-settings] {
|
|
1440
|
+
display: grid;
|
|
1441
|
+
grid-template-columns: auto minmax(0, 2em);
|
|
1442
|
+
align-items: start;
|
|
1443
|
+
word-break: break-all;
|
|
1444
|
+
}
|
|
1445
|
+
.module-nav > button[data-module="outlines"] {
|
|
1446
|
+
grid-template-columns: auto minmax(0, 3em);
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1421
1449
|
.chapter-batch-dialog { width: min(720px, calc(100vw - 32px)); }
|
|
1422
1450
|
.chapter-batch-dialog form { display: grid; gap: 14px; }
|
|
1423
1451
|
.chapter-batch-toolbar { display: flex; align-items: center; gap: 8px; margin: 0 24px; }
|
|
@@ -3006,6 +3034,9 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
3006
3034
|
.card-actions:is(.ai-plan-actions, .ai-question-actions) > button { flex: 0 0 auto; }
|
|
3007
3035
|
.ai-question-dialog { width: min(540px, 92vw); }
|
|
3008
3036
|
.ai-question-body { display: grid; gap: 12px; padding: 18px 22px 8px; }
|
|
3037
|
+
.ai-question-navigation { display: grid; grid-template-columns: max-content minmax(0, 1fr) max-content; align-items: center; gap: 8px; }
|
|
3038
|
+
.ai-question-navigation output { color: var(--muted); font: 10px/1.4 var(--font-latin), monospace; text-align: center; font-variant-numeric: tabular-nums; }
|
|
3039
|
+
.ai-question-navigation button { min-width: 58px; min-height: 28px; padding: 5px 9px; font-size: 10px; }
|
|
3009
3040
|
.ai-question-text { margin: 0; color: var(--ink); font-size: 13px; line-height: 1.65; overflow-wrap: anywhere; }
|
|
3010
3041
|
.ai-question-options { display: grid; gap: 6px; }
|
|
3011
3042
|
.ai-question-option-item { display: flex; align-items: flex-start; gap: 8px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); color: var(--ink); font-size: 11px; line-height: 1.5; cursor: pointer; }
|
|
@@ -3255,7 +3286,22 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
3255
3286
|
.ai-citation-remove { width: 30px; border: 0; border-left: 1px solid var(--line); background: transparent; color: var(--muted); }
|
|
3256
3287
|
.ai-citation-card pre { display: none; grid-column: 1 / -1; max-height: 160px; overflow: auto; margin: 0; padding: 9px; border-top: 1px solid var(--line); background: var(--surface); font: 10px/1.55 var(--font-cjk), sans-serif; white-space: pre-wrap; }
|
|
3257
3288
|
.ai-citation-card.is-expanded pre { display: block; }
|
|
3258
|
-
.message-citations { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 7px; }
|
|
3289
|
+
.message-citations { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 7px; }
|
|
3290
|
+
.message-citations .message-citation { display: inline-flex; align-items: center; min-height: 0; padding: 3px 6px; border: 1px solid currentColor; border-radius: 10px; background: transparent; color: inherit; font: inherit; font-size: 8px; line-height: 1.35; opacity: .75; cursor: pointer; }
|
|
3291
|
+
.message-citations .message-citation:hover, .message-citations .message-citation:focus-visible { background: color-mix(in srgb, currentColor 12%, transparent); opacity: 1; outline: 0; }
|
|
3292
|
+
.message-citations .message-citation:focus-visible { box-shadow: 0 0 0 2px color-mix(in srgb, currentColor 28%, transparent); }
|
|
3293
|
+
.ai-citation-popover { position: absolute; z-index: 43; display: grid; width: min(360px, calc(100% - 32px)); max-height: min(360px, calc(100% - 32px)); gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: 7px; background: var(--paper); color: var(--ink); box-shadow: 0 14px 38px rgba(36, 30, 24, .22); }
|
|
3294
|
+
.ai-citation-popover.hidden { display: none; }
|
|
3295
|
+
.ai-citation-popover::after { position: absolute; left: calc(var(--ai-citation-arrow-offset, 50%) - 5px); width: 10px; height: 10px; background: var(--paper); content: ""; transform: rotate(45deg); }
|
|
3296
|
+
.ai-citation-popover[data-placement="bottom"]::after { top: -6px; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
|
|
3297
|
+
.ai-citation-popover[data-placement="top"]::after { bottom: -6px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
|
|
3298
|
+
.ai-citation-popover-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--line); }
|
|
3299
|
+
.ai-citation-popover-header > div { display: grid; gap: 3px; min-width: 0; }
|
|
3300
|
+
.ai-citation-popover-header strong { color: var(--ink); font-size: 12px; }
|
|
3301
|
+
.ai-citation-popover-header small { color: var(--muted); font: 9px/1.4 var(--font-latin), var(--font-cjk), sans-serif; }
|
|
3302
|
+
.ai-citation-popover-close { flex: 0 0 auto; width: 24px; height: 24px; padding: 0; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--muted); font: 17px/1 var(--font-latin), sans-serif; }
|
|
3303
|
+
.ai-citation-popover-close:hover, .ai-citation-popover-close:focus-visible { border-color: var(--accent); color: var(--accent-dark); outline: 0; }
|
|
3304
|
+
.ai-citation-popover-quote { max-height: min(300px, 38vh); overflow: auto; margin: 0; padding: 10px 12px; border-left: 3px solid var(--accent); background: var(--surface); color: var(--ink); font: 11px/1.65 var(--font-cjk), sans-serif; white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
3259
3305
|
.user-message-mentions { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; min-width: 0; margin-top: 8px; padding-top: 7px; border-top: 1px solid color-mix(in srgb, currentColor 28%, transparent); font-size: 8px; line-height: 1.4; }
|
|
3260
3306
|
.user-message-scene { margin: 0 0 8px; padding: 0 0 7px; border-bottom: 1px solid color-mix(in srgb, currentColor 28%, transparent); font-size: 10px; line-height: 1.5; }
|
|
3261
3307
|
.user-message-scene-label { display: block; margin-bottom: 3px; opacity: .72; letter-spacing: .08em; font-size: 8px; }
|
|
@@ -3376,6 +3422,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
3376
3422
|
.chapter-type-menu .danger-button { margin-top: 5px; border-top: 1px solid var(--line); border-radius: 0; color: var(--accent-dark); }
|
|
3377
3423
|
.line-citation-menu { position: fixed; z-index: 82; display: grid; min-width: 230px; padding: 8px; border: 1px solid var(--line); border-radius: 6px; background: var(--panel); box-shadow: 0 14px 38px rgba(49,42,32,.22); }
|
|
3378
3424
|
.line-citation-menu strong { padding: 5px 7px 8px; color: var(--muted); font-size: 9px; }
|
|
3425
|
+
.line-citation-menu-separator { height: 1px; margin: 5px 2px; background: var(--line); }
|
|
3379
3426
|
.line-citation-menu button { border: 0; border-radius: 4px; padding: 8px; background: transparent; text-align: left; font-size: 11px; }.line-citation-menu button:hover { background: var(--paper-deep); color: var(--accent-dark); }
|
|
3380
3427
|
.markdown-table-menu { position: fixed; z-index: 84; min-width: 210px; padding: 7px; border: 1px solid var(--line); border-radius: 6px; background: var(--panel); box-shadow: 0 14px 38px rgba(49,42,32,.22); }
|
|
3381
3428
|
.markdown-table-menu button { position: relative; display: grid; width: 100%; gap: 2px; padding: 8px 9px 8px 31px; border: 0; border-radius: 4px; background: transparent; color: var(--ink); text-align: left; }
|
|
@@ -4532,6 +4579,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
4532
4579
|
|
|
4533
4580
|
@media (prefers-reduced-motion: reduce) {
|
|
4534
4581
|
*, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
|
|
4582
|
+
.im-details { transition: none !important; }
|
|
4535
4583
|
.dialog-submit-progress > span { width: 100%; transform: none; }
|
|
4536
4584
|
}
|
|
4537
4585
|
|
|
@@ -4586,7 +4634,10 @@ body { font-size: var(--ui-font-size); }
|
|
|
4586
4634
|
.ai-context-popover-header small, .ai-context-distribution-label { font-size: calc(10px * var(--ai-font-scale)); }
|
|
4587
4635
|
.ai-context-distribution-label small, .ai-context-distribution-label strong { font-size: calc(9px * var(--ai-font-scale)); }
|
|
4588
4636
|
.ai-citation-main strong { font-size: calc(10px * var(--ai-font-scale)); }
|
|
4589
|
-
.ai-citation-main small, .ai-citation-main span, .message-citations
|
|
4637
|
+
.ai-citation-main small, .ai-citation-main span, .message-citations .message-citation, .user-message-mentions { font-size: calc(9px * var(--ai-font-scale)); }
|
|
4638
|
+
.ai-citation-popover-header strong { font-size: calc(12px * var(--ai-font-scale)); }
|
|
4639
|
+
.ai-citation-popover-header small { font-size: calc(9px * var(--ai-font-scale)); }
|
|
4640
|
+
.ai-citation-popover-quote { font-size: calc(11px * var(--ai-font-scale)); }
|
|
4590
4641
|
.ai-history-item strong { font-size: calc(14px * var(--ai-font-scale)); }
|
|
4591
4642
|
.ai-history-item small { font-size: calc(10px * var(--ai-font-scale)); }
|
|
4592
4643
|
.ai-tool-call-info dt, .ai-tool-call-detail h3 { font-size: calc(9px * var(--ai-font-scale)); }
|
|
@@ -4660,6 +4711,287 @@ body { font-size: var(--ui-font-size); }
|
|
|
4660
4711
|
color-scheme: dark;
|
|
4661
4712
|
}
|
|
4662
4713
|
.reader-view.hidden { display: none; }
|
|
4714
|
+
|
|
4715
|
+
/* 全局 IM 工作区 */
|
|
4716
|
+
.im-open-button { position: relative; }
|
|
4717
|
+
.im-unread-count { display: grid; min-width: 18px; padding: 0 4px; }
|
|
4718
|
+
.im-button, .im-icon-button { border-radius: 6px; font-weight: 600; transition: border-color .15s ease, background-color .15s ease, color .15s ease, transform .15s ease; }
|
|
4719
|
+
.im-button { min-height: 32px; padding: 6px 10px; }
|
|
4720
|
+
.im-button:not(:disabled):active, .im-icon-button:not(:disabled):active { transform: translateY(1px); }
|
|
4721
|
+
.im-button-secondary { border: 1px solid var(--line); background: var(--surface); color: var(--muted); }
|
|
4722
|
+
.im-button-secondary:hover, .im-button-secondary:focus-visible { border-color: color-mix(in srgb, var(--muted) 62%, var(--line)); background: var(--paper-deep); color: var(--ink); outline: none; }
|
|
4723
|
+
.im-button-positive { border: 1px solid var(--green); background: var(--green); color: #fff; box-shadow: 0 1px 0 color-mix(in srgb, var(--green) 55%, #000); }
|
|
4724
|
+
.im-button-positive:hover, .im-button-positive:focus-visible { border-color: color-mix(in srgb, var(--green) 78%, var(--ink)); background: color-mix(in srgb, var(--green) 82%, var(--ink)); outline: none; }
|
|
4725
|
+
.im-button-announcement { border: 1px solid var(--im-narration-line); background: var(--im-narration-surface); color: var(--im-narration-label); box-shadow: none; }
|
|
4726
|
+
.im-button-announcement:hover, .im-button-announcement:focus-visible { border-color: color-mix(in srgb, var(--im-narration-label) 72%, var(--im-narration-line)); background: color-mix(in srgb, var(--im-narration-label) 10%, var(--im-narration-surface)); color: var(--ink); outline: none; }
|
|
4727
|
+
.im-button-danger-quiet { min-height: 28px; border: 1px solid color-mix(in srgb, #c44949 62%, var(--line)); background: color-mix(in srgb, #c44949 11%, var(--surface)); color: color-mix(in srgb, #c44949 78%, var(--ink)); }
|
|
4728
|
+
.im-button-danger-quiet:hover, .im-button-danger-quiet:focus-visible { border-color: #c44949; background: color-mix(in srgb, #c44949 21%, var(--surface)); outline: none; }
|
|
4729
|
+
.im-button:disabled { border-color: var(--line); background: var(--paper-deep); color: var(--muted); cursor: not-allowed; opacity: .56; transform: none; }
|
|
4730
|
+
.im-icon-button { display: inline-grid; place-items: center; width: 32px; min-width: 32px; height: 32px; min-height: 32px; padding: 0; border: 1px solid var(--line); background: var(--surface); color: var(--muted); font-size: 17px; line-height: 1; }
|
|
4731
|
+
.im-icon-button:hover, .im-icon-button:focus-visible { border-color: color-mix(in srgb, var(--muted) 62%, var(--line)); background: var(--paper-deep); color: var(--ink); outline: none; }
|
|
4732
|
+
#im-details-content > .danger-button, #im-disband { border-color: #c44949; background: color-mix(in srgb, #c44949 15%, var(--surface)); color: color-mix(in srgb, #c44949 78%, var(--ink)); }
|
|
4733
|
+
#im-details-content > .danger-button:hover, #im-details-content > .danger-button:focus-visible, #im-disband:hover, #im-disband:focus-visible { background: color-mix(in srgb, #c44949 25%, var(--surface)); }
|
|
4734
|
+
.app-shell.im-mode .work-meta { display: none; }
|
|
4735
|
+
.im-view { position: relative; display: grid; grid-template-columns: var(--im-conversations-width, 300px) minmax(420px, 1fr) var(--im-details-width, 320px); width: 100%; height: 100%; min-height: 0; overflow: hidden; background: var(--paper); }
|
|
4736
|
+
.im-view.is-details-hidden { grid-template-columns: var(--im-conversations-width, 300px) minmax(420px, 1fr); }
|
|
4737
|
+
.im-conversations, .im-details { min-width: 0; min-height: 0; overflow: hidden; border-right: 1px solid var(--line); background: var(--panel); }
|
|
4738
|
+
.im-conversations { position: relative; display: flex; flex-direction: column; }
|
|
4739
|
+
.im-conversations-resize-handle { position: absolute; z-index: 8; top: 0; right: -5px; bottom: 0; width: 10px; cursor: ew-resize; touch-action: none; }
|
|
4740
|
+
.im-conversations-resize-handle::after { content: ""; position: absolute; top: 0; right: 4px; bottom: 0; width: 1px; background: transparent; transition: background-color .15s ease, box-shadow .15s ease; }
|
|
4741
|
+
.im-conversations-resize-handle:hover::after, .im-conversations-resize-handle:focus-visible::after, body.is-im-conversations-resizing .im-conversations-resize-handle::after { background: var(--accent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent); }
|
|
4742
|
+
.im-conversations-resize-handle:focus-visible { outline: none; }
|
|
4743
|
+
body.is-im-conversations-resizing { cursor: ew-resize; user-select: none; }
|
|
4744
|
+
.im-chat-header, .im-details > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 54px; padding: 9px 16px; border-bottom: 1px solid var(--line); }
|
|
4745
|
+
.im-chat-header { height: 54px; min-height: 0; padding-block: 7px; overflow: hidden; }
|
|
4746
|
+
.im-chat-header h2, .im-details h2 { margin: 0; font-size: 18px; }
|
|
4747
|
+
.im-chat-header h2 { font-size: 16px; line-height: 1.2; }
|
|
4748
|
+
#im-details-toggle { display: none; }
|
|
4749
|
+
#im-details-close { display: inline-grid; }
|
|
4750
|
+
.im-view.is-details-hidden #im-details-toggle { display: inline-grid; }
|
|
4751
|
+
.im-view.is-details-hidden .im-details { display: none; }
|
|
4752
|
+
.im-create-actions { display: flex; min-height: 54px; align-items: center; justify-content: space-between; gap: 9px; padding: 9px 12px; border-bottom: 1px solid var(--line); }
|
|
4753
|
+
.im-create-actions p { min-width: 0; margin: 0; color: var(--muted); font-size: 9px; line-height: 1.4; }
|
|
4754
|
+
.im-create-actions .primary-button { flex: 0 0 auto; min-height: 32px; padding: 6px 10px; font-size: 10px; white-space: nowrap; }
|
|
4755
|
+
.im-create-action-buttons { display: flex; flex: 0 0 auto; align-items: center; gap: 7px; }
|
|
4756
|
+
.im-new-conversation-compact { display: none; }
|
|
4757
|
+
.im-conversation-list { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 8px; }
|
|
4758
|
+
.im-load-more-conversations { display: flex; width: calc(100% - 12px); margin: 8px 6px; justify-content: center; }
|
|
4759
|
+
.im-load-more-options { grid-column: 1 / -1; justify-self: center; }
|
|
4760
|
+
.im-conversation-item { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 9px; width: 100%; padding: 10px; border: 0; border-radius: 8px; background: transparent; text-align: left; }
|
|
4761
|
+
.im-conversation-item:hover, .im-conversation-item.is-active { background: var(--paper-deep); }
|
|
4762
|
+
.im-conversation-item > span:nth-child(2) { display: grid; min-width: 0; gap: 3px; }
|
|
4763
|
+
.im-conversation-item strong, .im-conversation-item small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4764
|
+
.im-conversation-item strong { font-size: 12px; }
|
|
4765
|
+
.im-conversation-item small { color: var(--muted); font-size: 9px; }
|
|
4766
|
+
.im-conversation-avatar { display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid var(--line); border-radius: 50%; background: var(--surface); color: var(--accent); font-size: 11px; }
|
|
4767
|
+
.im-conversation-single-avatar { width: 36px; height: 36px; font-size: 12px; }
|
|
4768
|
+
.im-group-avatar-grid { display: grid; width: 40px; height: 40px; overflow: hidden; padding: 2px; gap: 2px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); }
|
|
4769
|
+
.im-group-avatar-grid[data-grid-size="4"] { grid-template: repeat(2, minmax(0, 1fr)) / repeat(2, minmax(0, 1fr)); }
|
|
4770
|
+
.im-group-avatar-grid[data-grid-size="9"] { grid-template: repeat(3, minmax(0, 1fr)) / repeat(3, minmax(0, 1fr)); }
|
|
4771
|
+
.im-group-avatar-cell { width: 100%; min-width: 0; height: 100%; border: 0; border-radius: 3px; font-size: 7px; }
|
|
4772
|
+
.im-group-avatar-grid[data-grid-size="9"] .im-group-avatar-cell { border-radius: 2px; font-size: 6px; }
|
|
4773
|
+
.im-group-avatar-empty { display: block; min-width: 0; min-height: 0; border-radius: 3px; background: var(--paper-deep); }
|
|
4774
|
+
.im-item-unread, .im-mention-unread { display: grid; min-width: 20px; height: 20px; place-items: center; padding: 0 5px; border-radius: 999px; background: var(--accent); color: #fff; font-size: 9px; }
|
|
4775
|
+
.im-mention-unread { background: var(--green); }
|
|
4776
|
+
.im-empty, .im-feed-empty { margin: 0; padding: 18px; color: var(--muted); font-size: 11px; line-height: 1.6; text-align: center; }
|
|
4777
|
+
.im-chat { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; min-width: 0; min-height: 0; background: var(--paper); }
|
|
4778
|
+
.im-chat-header p { margin: 2px 0 0; color: var(--muted); font-size: 9px; line-height: 1.25; }
|
|
4779
|
+
.im-chat-header > div:last-child { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
|
|
4780
|
+
.im-chat-header .im-button { min-height: 28px; padding: 4px 8px; border-radius: 5px; font-size: 9px; }
|
|
4781
|
+
.im-chat-header-icon-button svg { width: 16px; height: 16px; overflow: visible; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
|
|
4782
|
+
.im-mobile-back { display: none; }
|
|
4783
|
+
.im-message-feed { min-height: 0; overflow-y: auto; padding: 20px clamp(14px, 4vw, 54px); scroll-behavior: smooth; }
|
|
4784
|
+
.im-load-older { display: block; margin: 0 auto 18px; padding: 5px 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface); color: var(--muted); font: 500 10px/1.4 var(--font-sans); cursor: pointer; }
|
|
4785
|
+
.im-load-older:hover, .im-load-older:focus-visible { border-color: var(--accent); color: var(--accent-dark); }
|
|
4786
|
+
.im-load-older:disabled { opacity: .55; cursor: wait; }
|
|
4787
|
+
.im-message { width: min(78%, 720px); margin: 0 auto 16px 0; }
|
|
4788
|
+
.im-message.is-human.is-own { margin-left: auto; margin-right: 0; }
|
|
4789
|
+
.im-message.is-system { width: 100%; color: var(--muted); text-align: center; }
|
|
4790
|
+
.im-message > header { display: flex; align-items: center; gap: 8px; margin-bottom: 5px; color: var(--muted); font-size: 9px; }
|
|
4791
|
+
.im-message.is-own > header { justify-content: flex-end; }
|
|
4792
|
+
.im-message-avatar { width: 28px; height: 28px; font-size: 10px; }
|
|
4793
|
+
.im-message-body { padding: 11px 13px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel); font-size: 12px; line-height: 1.65; overflow-wrap: anywhere; }
|
|
4794
|
+
.im-message.is-own .im-message-body { border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); background: color-mix(in srgb, var(--accent) 9%, var(--panel)); }
|
|
4795
|
+
.im-message.is-system .im-message-body { display: inline-block; padding: 5px 10px; border: 0; background: var(--paper-deep); font-size: 9px; }
|
|
4796
|
+
.im-message.is-announcement { width: min(90%, 760px); margin: 20px auto; color: var(--ink); text-align: center; }
|
|
4797
|
+
.im-message.is-announcement > header { justify-content: center; color: var(--im-narration-label); font-weight: 600; letter-spacing: .08em; }
|
|
4798
|
+
.im-message.is-announcement > header::before, .im-message.is-announcement > header::after { content: ""; flex: 1 1 72px; max-width: 120px; height: 1px; background: var(--im-narration-line); opacity: .72; }
|
|
4799
|
+
.im-message.is-announcement .im-message-body { display: block; padding: 13px 18px; border: solid var(--im-narration-line); border-width: 1px 0; border-radius: 0; background: var(--im-narration-surface); box-shadow: none; color: var(--ink); font-size: 11px; line-height: 1.75; text-align: left; }
|
|
4800
|
+
.im-generating-summary { width: min(78%, 720px); margin: 2px auto 9px 0; color: var(--muted); font-size: 9px; line-height: 1.4; }
|
|
4801
|
+
.im-message.is-provisional { opacity: .82; }
|
|
4802
|
+
.im-message.is-provisional.is-failed { opacity: 1; }
|
|
4803
|
+
.im-provisional-status { color: var(--muted); font-size: 8px; }
|
|
4804
|
+
.im-provisional-placeholder { margin: 0; color: var(--muted); }
|
|
4805
|
+
.im-provisional-error { margin: 0; color: color-mix(in srgb, #c44949 82%, var(--ink)); font-weight: 600; }
|
|
4806
|
+
.im-message.is-provisional.is-failed .im-message-body { border-color: color-mix(in srgb, #c44949 48%, var(--line)); background: color-mix(in srgb, #c44949 8%, var(--panel)); }
|
|
4807
|
+
.im-model-details { margin-top: 5px; color: var(--muted); font-size: 8px; }
|
|
4808
|
+
.im-model-details summary { cursor: pointer; }
|
|
4809
|
+
.im-inline-mention, .im-composer-mention { display: inline-flex; align-items: center; max-width: 220px; padding: 1px 6px; border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--line)); border-radius: 999px; background: color-mix(in srgb, var(--accent) 9%, var(--surface)); color: var(--accent-dark); font: 500 10px/1.6 var(--font-sans); vertical-align: baseline; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4810
|
+
.im-composer-shell { position: relative; padding: 12px 16px 16px; border-top: 1px solid var(--line); background: var(--panel); }
|
|
4811
|
+
.im-composer-resize-handle { position: absolute; z-index: 4; top: -5px; right: 16px; left: 16px; height: 10px; cursor: ns-resize; touch-action: none; }
|
|
4812
|
+
.im-composer-resize-handle::after { content: ""; position: absolute; top: 4px; right: 0; left: 0; height: 1px; background: transparent; transition: background-color .15s ease, box-shadow .15s ease; }
|
|
4813
|
+
.im-composer-resize-handle:hover::after, .im-composer-resize-handle:focus-visible::after, body.is-im-composer-resizing .im-composer-resize-handle::after { background: var(--accent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent); }
|
|
4814
|
+
.im-composer-resize-handle:focus-visible { outline: none; }
|
|
4815
|
+
body.is-im-composer-resizing { cursor: ns-resize; user-select: none; }
|
|
4816
|
+
.im-composer { height: 68px; min-height: 64px; max-height: min(420px, calc(100dvh - 280px)); overflow-y: auto; padding: 10px 12px 38px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); font-size: 12px; line-height: 1.55; outline: none; white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
4817
|
+
.im-composer:empty::before { content: attr(data-placeholder); color: var(--muted); pointer-events: none; }
|
|
4818
|
+
.im-composer:focus { border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 18%, transparent); }
|
|
4819
|
+
.im-composer[aria-disabled="true"] { opacity: .6; cursor: not-allowed; }
|
|
4820
|
+
.im-send-button { position: absolute; z-index: 2; right: 26px; bottom: 25px; display: grid; width: 24px; min-width: 24px; height: 24px; min-height: 24px; place-items: center; padding: 0; border: 0; border-radius: 4px; background: var(--accent); color: #fff; box-shadow: 0 2px 7px color-mix(in srgb, var(--accent) 22%, transparent); }
|
|
4821
|
+
.im-send-button:hover, .im-send-button:focus-visible { background: var(--accent-dark); outline: none; }
|
|
4822
|
+
.im-send-button:focus-visible { box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 24%, transparent), 0 2px 7px color-mix(in srgb, var(--accent) 22%, transparent); }
|
|
4823
|
+
.im-send-button:disabled { cursor: not-allowed; opacity: .52; }
|
|
4824
|
+
.im-send-button svg { width: 12px; height: 12px; overflow: visible; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
|
|
4825
|
+
.im-mention-menu { position: absolute; z-index: 30; right: 16px; bottom: calc(100% - 7px); left: 16px; max-height: 250px; overflow-y: auto; padding: 6px; border: 1px solid var(--line); border-radius: 9px; background: var(--panel); box-shadow: var(--shadow); }
|
|
4826
|
+
.im-mention-menu button { display: grid; grid-template-columns: 42px minmax(0, 1fr); gap: 7px; width: 100%; padding: 8px; border: 0; border-radius: 6px; background: transparent; text-align: left; }
|
|
4827
|
+
.im-mention-menu button:hover, .im-mention-menu button[aria-selected="true"] { background: var(--paper-deep); }
|
|
4828
|
+
.im-mention-menu button span { display: grid; gap: 2px; }
|
|
4829
|
+
.im-mention-menu button strong { font-size: 10px; }
|
|
4830
|
+
.im-mention-menu button em { color: var(--muted); font-size: 8px; font-style: normal; }
|
|
4831
|
+
.im-mention-avatar { width: 34px; height: 34px; font-size: 11px; }
|
|
4832
|
+
.im-details { position: relative; overflow-y: auto; border-right: 0; border-left: 1px solid var(--line); }
|
|
4833
|
+
.im-details-resize-handle { position: absolute; z-index: 8; top: 0; bottom: 0; left: -5px; width: 10px; cursor: ew-resize; touch-action: none; }
|
|
4834
|
+
.im-details-resize-handle::after { content: ""; position: absolute; top: 0; bottom: 0; left: 4px; width: 1px; background: transparent; transition: background-color .15s ease, box-shadow .15s ease; }
|
|
4835
|
+
.im-details-resize-handle:hover::after, .im-details-resize-handle:focus-visible::after, body.is-im-details-resizing .im-details-resize-handle::after { background: var(--accent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent); }
|
|
4836
|
+
.im-details-resize-handle:focus-visible { outline: none; }
|
|
4837
|
+
body.is-im-details-resizing { cursor: ew-resize; user-select: none; }
|
|
4838
|
+
.im-details > header { min-height: 54px; }
|
|
4839
|
+
.im-details-content, #im-details-content { display: grid; gap: 16px; padding: 14px; }
|
|
4840
|
+
#im-details-content section { display: grid; gap: 8px; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
|
|
4841
|
+
#im-details-content h3 { margin: 0; font-size: 11px; }
|
|
4842
|
+
#im-details-content label { display: grid; gap: 6px; color: var(--muted); font-size: 9px; font-weight: 650; }
|
|
4843
|
+
#im-details-content :is(input:not([type="checkbox"]):not([type="range"]), select) { width: 100%; min-width: 0; min-height: 36px; padding: 7px 9px; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); color: var(--ink); font-size: 11px; }
|
|
4844
|
+
#im-details-content :is(input:not([type="checkbox"]):not([type="range"]), select):focus-visible { border-color: var(--accent); outline: none; box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 14%, transparent); }
|
|
4845
|
+
#im-details-content :is(input, select):disabled { background: var(--surface-soft); color: var(--muted); cursor: not-allowed; opacity: .62; }
|
|
4846
|
+
#im-detail-threshold-output { justify-self: start; min-width: 30px; padding: 2px 7px; border: 1px solid color-mix(in srgb, var(--accent) 34%, var(--line)); border-radius: 999px; background: color-mix(in srgb, var(--accent) 8%, var(--surface)); color: var(--accent-dark); font: 9px/1.4 var(--font-latin), monospace; text-align: center; }
|
|
4847
|
+
#im-detail-threshold { appearance: none; -webkit-appearance: none; width: 100%; min-height: 18px; margin: 0; padding: 7px 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; cursor: pointer; }
|
|
4848
|
+
#im-detail-threshold::-webkit-slider-runnable-track { height: 4px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 26%, var(--line)); }
|
|
4849
|
+
#im-detail-threshold::-webkit-slider-thumb { appearance: none; -webkit-appearance: none; width: 16px; height: 16px; margin-top: -6px; border: 2px solid var(--surface); border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 55%, var(--line)); }
|
|
4850
|
+
#im-detail-threshold::-moz-range-track { height: 4px; border: 0; border-radius: 999px; background: color-mix(in srgb, var(--accent) 26%, var(--line)); }
|
|
4851
|
+
#im-detail-threshold::-moz-range-thumb { width: 14px; height: 14px; border: 2px solid var(--surface); border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 55%, var(--line)); }
|
|
4852
|
+
#im-detail-threshold:focus-visible { outline: 2px solid color-mix(in srgb, var(--accent) 32%, transparent); outline-offset: 2px; }
|
|
4853
|
+
.im-member-list { display: grid; gap: 5px; margin: 0; padding: 0; list-style: none; }
|
|
4854
|
+
.im-member-list li { display: flex; align-items: center; justify-content: space-between; gap: 7px; padding: 7px 8px; border-radius: 6px; background: var(--paper-deep); font-size: 10px; }
|
|
4855
|
+
.im-member-list small { display: block; color: var(--muted); font-size: 8px; }
|
|
4856
|
+
.im-member-unavailable { display: inline-flex; margin-left: 4px; padding: 1px 5px; border: 1px solid color-mix(in srgb, var(--warning) 55%, var(--line)); border-radius: 999px; color: var(--warning); font-size: 8px; line-height: 1.4; }
|
|
4857
|
+
.im-member-identity { display: flex; min-width: 0; align-items: center; gap: 8px; }
|
|
4858
|
+
.im-member-identity > span:last-child { min-width: 0; overflow-wrap: anywhere; }
|
|
4859
|
+
.im-member-avatar { width: 30px; height: 30px; font-size: 10px; }
|
|
4860
|
+
.im-member-section-heading { display: flex; min-height: 30px; align-items: center; justify-content: space-between; gap: 8px; }
|
|
4861
|
+
.im-member-section-actions { display: inline-flex; align-items: center; gap: 6px; }
|
|
4862
|
+
.im-member-edit-button { display: inline-grid; flex: 0 0 28px; place-items: center; width: 28px; min-width: 28px; height: 28px; min-height: 28px; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: var(--surface); color: var(--muted); transition: border-color .15s ease, background-color .15s ease, color .15s ease, transform .15s ease; }
|
|
4863
|
+
.im-member-edit-button:hover, .im-member-edit-button:focus-visible, .im-member-edit-button[aria-pressed="true"] { border-color: color-mix(in srgb, var(--accent) 56%, var(--line)); background: color-mix(in srgb, var(--accent) 12%, var(--surface)); color: var(--accent-dark); outline: none; }
|
|
4864
|
+
.im-member-edit-button:active { transform: translateY(1px); }
|
|
4865
|
+
.im-member-edit-button svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
|
|
4866
|
+
.im-member-add-button { display: inline-grid; flex: 0 0 28px; place-items: center; width: 28px; min-width: 28px; height: 28px; min-height: 28px; padding: 0; border: 1px solid color-mix(in srgb, var(--green) 58%, var(--line)); border-radius: 50%; background: color-mix(in srgb, var(--green) 10%, var(--surface)); color: var(--green); transition: border-color .15s ease, background-color .15s ease, transform .15s ease; }
|
|
4867
|
+
.im-member-add-button:hover, .im-member-add-button:focus-visible { border-color: var(--green); background: color-mix(in srgb, var(--green) 20%, var(--surface)); color: color-mix(in srgb, var(--green) 76%, var(--ink)); outline: none; }
|
|
4868
|
+
.im-member-add-button:active { transform: translateY(1px); }
|
|
4869
|
+
.im-member-add-button svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-width: 1.8; }
|
|
4870
|
+
.im-diagnostic-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 7px; padding: 6px 0; border-bottom: 1px dashed var(--line); font-size: 9px; }
|
|
4871
|
+
.im-privacy-note { margin: 0; padding: 10px 11px; border: 1px solid color-mix(in srgb, var(--accent) 24%, var(--line)); border-radius: 6px; background: color-mix(in srgb, var(--accent) 6%, var(--surface-soft)); color: var(--muted); font-size: 10px; line-height: 1.6; }
|
|
4872
|
+
.im-settings-dialog .account-settings-form, .im-group-form, .im-announcement-form, .im-member-add-form { min-width: 0; max-height: calc(88dvh - 80px); overflow-y: auto; padding: 18px 24px 24px; }
|
|
4873
|
+
.im-settings-dialog .account-settings-form { grid-template-columns: minmax(0, 1fr); align-items: stretch; gap: 14px; margin: 0; }
|
|
4874
|
+
.im-settings-dialog .account-settings-form label, .im-group-form > label, .im-group-form fieldset > label, .im-group-settings-row label, .im-create-role-toolbar label, .im-create-group-settings > label, .im-announcement-form > label, .im-member-picker-toolbar label { display: grid; min-width: 0; gap: 6px; color: var(--muted); font-size: 10px; font-weight: 650; }
|
|
4875
|
+
.im-settings-dialog .account-settings-form .card-actions { grid-column: 1 / -1; }
|
|
4876
|
+
.im-setting-model-note { margin: -4px 0 0; color: var(--muted); font-size: 9px; line-height: 1.5; }
|
|
4877
|
+
.im-settings-dialog :is(input:not([type="checkbox"]):not([type="range"]), textarea, select),
|
|
4878
|
+
.im-group-form :is(input:not([type="checkbox"]):not([type="range"]), textarea, select),
|
|
4879
|
+
.im-announcement-form :is(input:not([type="checkbox"]):not([type="range"]), textarea, select),
|
|
4880
|
+
.im-member-add-form :is(input:not([type="checkbox"]):not([type="range"]), textarea, select) { width: 100%; min-width: 0; min-height: 38px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); color: var(--ink); font-size: 11px; line-height: 1.45; }
|
|
4881
|
+
.im-settings-dialog :is(input:not([type="checkbox"]):not([type="range"]), textarea, select):focus-visible,
|
|
4882
|
+
.im-group-form :is(input:not([type="checkbox"]):not([type="range"]), textarea, select):focus-visible,
|
|
4883
|
+
.im-announcement-form :is(input:not([type="checkbox"]):not([type="range"]), textarea, select):focus-visible,
|
|
4884
|
+
.im-member-add-form :is(input:not([type="checkbox"]):not([type="range"]), textarea, select):focus-visible { border-color: var(--accent); outline: none; box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 14%, transparent); }
|
|
4885
|
+
.im-settings-dialog :is(input, textarea, select):disabled,
|
|
4886
|
+
.im-group-form :is(input, textarea, select):disabled,
|
|
4887
|
+
.im-announcement-form :is(input, textarea, select):disabled,
|
|
4888
|
+
.im-member-add-form :is(input, textarea, select):disabled { background: var(--surface-soft); color: var(--muted); cursor: not-allowed; opacity: .62; }
|
|
4889
|
+
.im-settings-dialog :is(input, textarea)::placeholder, .im-group-form :is(input, textarea)::placeholder, .im-announcement-form :is(input, textarea)::placeholder, .im-member-add-form :is(input, textarea)::placeholder { color: var(--muted); opacity: .8; }
|
|
4890
|
+
.im-settings-dialog textarea, .im-announcement-form textarea { resize: vertical; }
|
|
4891
|
+
.im-announcement-form { display: grid; gap: 14px; }
|
|
4892
|
+
.im-announcement-form textarea { min-height: 150px; }
|
|
4893
|
+
.im-announcement-note { margin: 0; padding: 10px 11px; border: 1px solid color-mix(in srgb, var(--accent) 26%, var(--line)); border-radius: 7px; background: color-mix(in srgb, var(--accent) 7%, var(--surface)); color: var(--muted); font-size: 10px; line-height: 1.6; }
|
|
4894
|
+
.im-member-add-dialog { width: min(680px, 92vw); }
|
|
4895
|
+
.im-member-add-form { display: grid; gap: 14px; }
|
|
4896
|
+
.im-member-add-guidance { margin: 0; padding: 10px 11px; border: 1px solid color-mix(in srgb, var(--accent) 24%, var(--line)); border-radius: 7px; background: color-mix(in srgb, var(--accent) 6%, var(--surface-soft)); color: var(--muted); font-size: 10px; line-height: 1.6; }
|
|
4897
|
+
.im-member-picker-toolbar { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface-soft); }
|
|
4898
|
+
#im-member-add-human-fields { grid-template-columns: minmax(0, 1fr); }
|
|
4899
|
+
.im-member-picker-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: start; gap: 7px; min-height: 92px; max-height: 340px; overflow-y: auto; }
|
|
4900
|
+
.im-member-picker-option { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 9px; min-width: 0; min-height: 54px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface); color: var(--ink); text-align: left; transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease; }
|
|
4901
|
+
.im-member-picker-option:hover, .im-member-picker-option:focus-visible { border-color: color-mix(in srgb, var(--accent) 62%, var(--line)); background: color-mix(in srgb, var(--accent) 5%, var(--surface)); outline: none; }
|
|
4902
|
+
.im-member-picker-option[aria-pressed="true"] { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, var(--surface)); box-shadow: inset 3px 0 0 var(--accent); }
|
|
4903
|
+
.im-member-picker-option > span:last-child { display: grid; min-width: 0; gap: 3px; }
|
|
4904
|
+
.im-member-picker-option strong { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
|
|
4905
|
+
.im-member-picker-option small { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; min-width: 0; color: var(--muted); font-size: 8px; line-height: 1.45; }
|
|
4906
|
+
.im-member-picker-option small em { font-style: normal; }
|
|
4907
|
+
.im-member-picker-avatar { width: 36px; height: 36px; font-size: 11px; }
|
|
4908
|
+
.im-owner-action-buttons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
|
|
4909
|
+
.im-owner-action-buttons button { width: 100%; min-width: 0; min-height: 32px; padding: 6px 8px; font-size: 9px; }
|
|
4910
|
+
.im-group-form { display: grid; gap: 14px; }
|
|
4911
|
+
.im-create-guidance { margin: 0; padding: 9px 11px; border: 1px solid color-mix(in srgb, var(--accent) 24%, var(--line)); border-radius: 7px; background: color-mix(in srgb, var(--accent) 7%, var(--surface)); color: var(--muted); font-size: 10px; line-height: 1.5; }
|
|
4912
|
+
.im-create-role-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface-soft); }
|
|
4913
|
+
.im-create-role-toolbar :is(input, select) { background-color: var(--surface); }
|
|
4914
|
+
.im-create-selected { display: grid; gap: 7px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 8px; background: var(--paper-deep); }
|
|
4915
|
+
.im-create-selected > div { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
|
|
4916
|
+
.im-create-selected > div:first-child { justify-content: space-between; }
|
|
4917
|
+
.im-create-selected > div:first-child strong { font-size: 10px; }
|
|
4918
|
+
.im-create-selected > div:first-child small { color: var(--muted); font-size: 8px; }
|
|
4919
|
+
.im-create-selected button { display: inline-flex; align-items: center; gap: 5px; min-width: 0; min-height: 26px; padding: 4px 7px; border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--line)); border-radius: 999px; background: color-mix(in srgb, var(--accent) 8%, var(--surface)); color: var(--ink); font: inherit; }
|
|
4920
|
+
.im-create-selected button span, .im-create-selected button small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4921
|
+
.im-create-selected button span { max-width: 100px; font-size: 9px; }
|
|
4922
|
+
.im-create-selected button small { max-width: 110px; color: var(--muted); font-size: 7px; }
|
|
4923
|
+
.im-create-selected button b { color: var(--muted); font-size: 11px; font-weight: 400; }
|
|
4924
|
+
.im-selected-avatar { width: 20px; height: 20px; border-width: 1px; font-size: 7px; }
|
|
4925
|
+
.im-create-group-settings { display: grid; gap: 11px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface-soft); }
|
|
4926
|
+
.im-group-settings-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
|
|
4927
|
+
.im-group-form fieldset { min-width: 0; margin: 0; padding: 11px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface-soft); }
|
|
4928
|
+
.im-group-form legend { padding: 0 6px; color: var(--ink); font-size: 10px; font-weight: 650; }
|
|
4929
|
+
.im-option-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; max-height: 220px; overflow-y: auto; }
|
|
4930
|
+
.im-option-grid label { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px; min-height: 44px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 5px; background: var(--surface); cursor: pointer; transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease; }
|
|
4931
|
+
.im-option-grid label:hover { border-color: color-mix(in srgb, var(--accent) 55%, var(--line)); background: color-mix(in srgb, var(--accent) 4%, var(--surface)); }
|
|
4932
|
+
.im-option-grid label:focus-within { border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 14%, transparent); }
|
|
4933
|
+
.im-option-grid label:has(input:checked) { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, var(--surface)); box-shadow: inset 3px 0 0 var(--accent); }
|
|
4934
|
+
.im-option-grid input[type="checkbox"] { align-self: center; flex: 0 0 16px; width: 16px; min-width: 16px; height: 16px; min-height: 16px; padding: 0; }
|
|
4935
|
+
.im-option-grid .im-character-option { grid-template-columns: auto auto minmax(0, 1fr); }
|
|
4936
|
+
.im-option-avatar { width: 34px; height: 34px; font-size: 11px; }
|
|
4937
|
+
.im-option-grid label span { display: grid; min-width: 0; }
|
|
4938
|
+
.im-option-grid strong, .im-option-grid small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4939
|
+
.im-option-grid strong { font-size: 10px; }
|
|
4940
|
+
.im-option-grid small { color: var(--muted); font-size: 8px; }
|
|
4941
|
+
.im-character-option small { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; margin-top: 2px; overflow: visible; white-space: normal; }
|
|
4942
|
+
.im-character-option small em { color: var(--muted); font-style: normal; }
|
|
4943
|
+
.im-character-preference { display: inline-flex; align-items: center; padding: 1px 4px; border-radius: 999px; font-size: 7px; font-weight: 600; line-height: 1.5; }
|
|
4944
|
+
.im-character-preference.is-pinned { background: color-mix(in srgb, var(--accent) 17%, var(--surface)); color: var(--accent-dark); }
|
|
4945
|
+
.im-character-preference.is-favorite { background: color-mix(in srgb, var(--green) 18%, var(--surface)); color: color-mix(in srgb, var(--green) 80%, var(--ink)); }
|
|
4946
|
+
|
|
4947
|
+
@media (min-width: 621px) {
|
|
4948
|
+
.im-conversations.is-compact .im-create-actions { display: flex; justify-content: center; gap: 0; padding: 8px 6px; }
|
|
4949
|
+
.im-conversations.is-compact .im-create-actions p { display: none; }
|
|
4950
|
+
.im-conversations.is-compact .im-create-action-buttons { flex-direction: row; gap: 4px; }
|
|
4951
|
+
.im-conversations.is-compact :is(#im-new-conversation, #im-settings-button) { display: grid; width: 28px; min-width: 28px; height: 28px; min-height: 28px; place-items: center; padding: 0; line-height: 1; }
|
|
4952
|
+
.im-conversations.is-compact #im-new-conversation { font-size: 16px; }
|
|
4953
|
+
.im-conversations.is-compact .im-new-conversation-full { display: none; }
|
|
4954
|
+
.im-conversations.is-compact .im-new-conversation-compact { display: block; }
|
|
4955
|
+
.im-conversations.is-compact .im-conversation-list { padding: 7px 5px; }
|
|
4956
|
+
.im-conversations.is-compact .im-conversation-item { position: relative; grid-template-columns: 40px; justify-content: center; gap: 0; padding: 7px 5px; }
|
|
4957
|
+
.im-conversations.is-compact .im-conversation-item > span:nth-child(2) { display: none; }
|
|
4958
|
+
.im-conversations.is-compact :is(.im-mention-unread, .im-item-unread) { position: absolute; top: 2px; right: 2px; }
|
|
4959
|
+
.im-conversations.is-compact .im-empty { padding: 10px 4px; font-size: 0; }
|
|
4960
|
+
}
|
|
4961
|
+
|
|
4962
|
+
@media (max-width: 980px) {
|
|
4963
|
+
.im-view, .im-view.is-details-hidden { grid-template-columns: var(--im-conversations-width, 280px) minmax(0, 1fr); }
|
|
4964
|
+
#im-details-toggle { display: inline-grid; }
|
|
4965
|
+
#im-details-close { display: inline-grid; }
|
|
4966
|
+
.im-view.is-details-hidden .im-details { display: block; }
|
|
4967
|
+
.im-details-resize-handle { display: none; }
|
|
4968
|
+
.im-details { position: absolute; z-index: 35; top: 0; right: 0; bottom: 0; width: min(340px, 90vw); transform: translateX(105%); transition: transform .18s ease; box-shadow: var(--shadow); }
|
|
4969
|
+
.im-details.is-open { transform: translateX(0); }
|
|
4970
|
+
}
|
|
4971
|
+
|
|
4972
|
+
@media (max-width: 620px) {
|
|
4973
|
+
.app-shell.im-mode .topbar { grid-template-columns: minmax(0, 1fr) auto; }
|
|
4974
|
+
.app-shell.im-mode .work-meta, .app-shell.im-mode #save-state { display: none; }
|
|
4975
|
+
.im-view { position: relative; grid-template-columns: 1fr; }
|
|
4976
|
+
.im-conversations { display: none; }
|
|
4977
|
+
.im-conversations-resize-handle { display: none; }
|
|
4978
|
+
.im-view:not(.has-conversation) .im-conversations { display: flex; }
|
|
4979
|
+
.im-view:not(.has-conversation) .im-chat { display: none; }
|
|
4980
|
+
.im-message { width: 92%; }
|
|
4981
|
+
.im-generating-summary { width: 92%; }
|
|
4982
|
+
.im-message.is-announcement { width: 100%; }
|
|
4983
|
+
.im-message-feed { padding: 14px 10px; }
|
|
4984
|
+
.im-chat-header { min-height: 58px; padding: 9px 10px; }
|
|
4985
|
+
.im-mobile-back { display: inline-grid; place-items: center; width: 32px; min-width: 32px; height: 32px; padding: 0; }
|
|
4986
|
+
.im-composer-shell { padding: 9px; }
|
|
4987
|
+
.im-composer-resize-handle { right: 9px; left: 9px; }
|
|
4988
|
+
.im-composer { min-height: 64px; }
|
|
4989
|
+
.im-send-button { right: 19px; bottom: 18px; }
|
|
4990
|
+
.im-group-settings-row, .im-option-grid { grid-template-columns: 1fr; }
|
|
4991
|
+
.im-create-role-toolbar { grid-template-columns: 1fr; }
|
|
4992
|
+
.im-settings-dialog .account-settings-form, .im-group-form, .im-announcement-form, .im-member-add-form { padding: 14px 12px 16px; }
|
|
4993
|
+
.im-member-picker-toolbar, .im-member-picker-options { grid-template-columns: 1fr; }
|
|
4994
|
+
}
|
|
4663
4995
|
.reader-view .eyebrow { color: var(--reader-accent); }
|
|
4664
4996
|
.reader-view button,
|
|
4665
4997
|
.reader-view select {
|
package/dist/s3-backup.js
CHANGED
|
@@ -754,7 +754,11 @@ export class S3BackupManager {
|
|
|
754
754
|
}
|
|
755
755
|
}
|
|
756
756
|
const characterAvatarStorage = this.characterAvatarStorage;
|
|
757
|
-
for (const row of this.database.all(
|
|
757
|
+
for (const row of this.database.all(`SELECT storage_key, mime_type, sha256 FROM character_avatars
|
|
758
|
+
UNION
|
|
759
|
+
SELECT storage_key, mime_type, sha256 FROM im_avatar_versions
|
|
760
|
+
WHERE participant_kind = 'character' AND storage_key IS NOT NULL AND storage_key <> ''
|
|
761
|
+
ORDER BY storage_key`)) {
|
|
758
762
|
const storageKey = requiredString(row, "storage_key");
|
|
759
763
|
const contentType = requiredString(row, "mime_type");
|
|
760
764
|
const sha256 = requiredString(row, "sha256");
|