@musnows/scriverse 0.7.13 → 0.8.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.
Files changed (44) hide show
  1. package/README.en.md +4 -0
  2. package/README.md +5 -0
  3. package/dist/ai-chat-tab-limit.js +14 -0
  4. package/dist/ai-chat-tab-limit.js.map +1 -0
  5. package/dist/ai-protocol.js +10 -2
  6. package/dist/ai-protocol.js.map +1 -1
  7. package/dist/ai-retry.js +52 -0
  8. package/dist/ai-retry.js.map +1 -0
  9. package/dist/ai.js +525 -117
  10. package/dist/ai.js.map +1 -1
  11. package/dist/app.js +41 -12
  12. package/dist/app.js.map +1 -1
  13. package/dist/cli-contract.js +2 -1
  14. package/dist/cli-contract.js.map +1 -1
  15. package/dist/database.js +127 -2
  16. package/dist/database.js.map +1 -1
  17. package/dist/domain.js +1 -0
  18. package/dist/domain.js.map +1 -1
  19. package/dist/public/ai-chat-tabs.js +75 -0
  20. package/dist/public/ai-request-manager.js +32 -15
  21. package/dist/public/app.js +1151 -252
  22. package/dist/public/background-task-center.d.ts +9 -0
  23. package/dist/public/background-task-center.js +18 -0
  24. package/dist/public/chapter-search.d.ts +6 -0
  25. package/dist/public/chapter-search.js +23 -0
  26. package/dist/public/character-filters.d.ts +3 -1
  27. package/dist/public/character-filters.js +17 -2
  28. package/dist/public/character-version.js +1 -0
  29. package/dist/public/display-labels.d.ts +1 -0
  30. package/dist/public/display-labels.js +5 -1
  31. package/dist/public/index.html +66 -25
  32. package/dist/public/model-config.d.ts +3 -1
  33. package/dist/public/model-config.js +13 -0
  34. package/dist/public/relationship-filters.d.ts +5 -0
  35. package/dist/public/relationship-filters.js +31 -0
  36. package/dist/public/relationship-graph.js +289 -58
  37. package/dist/public/styles.css +170 -32
  38. package/dist/server-runtime.js +6 -0
  39. package/dist/server-runtime.js.map +1 -1
  40. package/dist/store.js +77 -34
  41. package/dist/store.js.map +1 -1
  42. package/dist/version.js +6 -1
  43. package/dist/version.js.map +1 -1
  44. package/package.json +1 -1
@@ -371,6 +371,9 @@ input[type="checkbox"][hidden] { display: none; }
371
371
  radial-gradient(circle at 50% -20%, var(--app-glow), transparent 45%),
372
372
  var(--paper);
373
373
  }
374
+ .app-shell:not(.shelf-mode):not(.ai-workspace-mode) { grid-template-columns: var(--left-panel-width) minmax(480px, 1fr); }
375
+ .app-shell:not(.shelf-mode):not(.ai-workspace-mode) .ai-panel { display: none; }
376
+ .app-shell.ai-workspace-mode > :is(.topbar, .left-panel, .main-panel) { visibility: hidden; pointer-events: none; }
374
377
 
375
378
  .topbar {
376
379
  grid-column: 1 / -1;
@@ -552,7 +555,7 @@ input[type="checkbox"][hidden] { display: none; }
552
555
  .left-panel, .ai-panel { position: relative; min-height: 0; background: var(--panel); }
553
556
  .left-panel { display: flex; flex-direction: column; border-right: 1px solid var(--line); padding: 0; overflow: hidden; }
554
557
  .left-panel-body { flex: 1 1 auto; min-height: 0; padding: 18px 14px 16px; overflow-y: auto; }
555
- .ai-panel { border-left: 1px solid var(--line); display: flex; flex-direction: column; padding: 14px 16px 18px; min-width: 0; }
558
+ .ai-panel { container-type: inline-size; border-left: 1px solid var(--line); display: flex; flex-direction: column; padding: 14px 16px 18px; min-width: 0; }
556
559
  .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; }
557
560
  .ai-heading #ai-panel-toggle { flex-basis: 30px; width: 30px; height: 30px; }
558
561
  .panel-resize-handle { position: absolute; z-index: 7; top: 0; bottom: 0; width: 7px; cursor: col-resize; touch-action: none; }
@@ -976,8 +979,9 @@ body.work-viewer-mode .character-editor-actions { display: none !important; }
976
979
  .replace-dialog > form { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; width: 100%; min-height: 0; }
977
980
  .replace-dialog-body { display: grid; min-height: 0; gap: 16px; padding: 20px 24px 6px; overflow-y: auto; }
978
981
  .replace-field { display: grid; gap: 6px; color: var(--muted); font-size: 11px; }
979
- .replace-field input, .replace-field textarea { width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); color: var(--ink); font-size: 13px; line-height: 1.6; }
982
+ .replace-field input, .replace-field textarea, .replace-field select { width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); color: var(--ink); font-size: 13px; line-height: 1.6; }
980
983
  .replace-field textarea { min-height: 96px; resize: vertical; }
984
+ .replace-field select:disabled { cursor: not-allowed; opacity: .55; }
981
985
  .replace-scope-fieldset { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 12px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-soft); }
982
986
  .replace-scope-fieldset legend { padding: 0 6px; color: var(--ink); font-size: 12px; font-weight: 650; }
983
987
  .replace-scope-fieldset legend, .replace-scope-fieldset > p { grid-column: 1 / -1; }
@@ -991,6 +995,7 @@ body.work-viewer-mode .character-editor-actions { display: none !important; }
991
995
  .replace-scope-option input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
992
996
  .replace-permission-note { margin: 0; color: var(--accent-dark); font-size: 10px; line-height: 1.5; }
993
997
  .replace-permission-note:empty { display: none; }
998
+ .replace-range-note { margin: -8px 0 0; color: var(--muted); font-size: 10px; line-height: 1.5; }
994
999
  .replace-dialog .primary-button:disabled { cursor: not-allowed; opacity: .42; }
995
1000
  .search-results { display: grid; gap: 8px; max-height: min(52vh, 480px); overflow: auto; }
996
1001
  .search-results-summary { margin: 0; padding: 2px 2px 5px; color: var(--muted); font-size: 10px; }
@@ -1285,6 +1290,9 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
1285
1290
  .module-nav .ai-analysis-entry,
1286
1291
  .module-nav .ai-analysis-entry:hover,
1287
1292
  .module-nav .ai-analysis-entry.active { background: transparent; color: var(--accent-dark); font-weight: 650; }
1293
+ .module-nav .ai-assistant-entry,
1294
+ .module-nav .ai-assistant-entry:hover,
1295
+ .module-nav .ai-assistant-entry.active { background: color-mix(in srgb, var(--accent) 10%, var(--surface)); color: var(--accent-dark); font-weight: 650; }
1288
1296
  #module-more-button { grid-column: 2; color: var(--accent-dark); text-align: center; }
1289
1297
  .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; }
1290
1298
  .panel-heading-actions { display: flex; align-items: center; gap: 7px; margin-left: auto; }
@@ -1303,7 +1311,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
1303
1311
  .chapter-add-button { flex: none; }
1304
1312
  .volume-chapters { display: block; }
1305
1313
  .volume-node.is-collapsed .volume-chapters { display: none; }
1306
- .chapter-node { display: grid; grid-template-columns: minmax(0, 1fr) max-content; gap: 8px; width: calc(100% + 6px); padding: 9px 8px 9px 20px; border: 0; background: transparent; border-radius: 4px; text-align: left; font-size: 12px; }
1314
+ .chapter-node { display: grid; grid-template-columns: minmax(0, 1fr) max-content; gap: 8px; width: calc(100% + 6px); padding: 9px 8px 9px 24px; border: 0; background: transparent; border-radius: 4px; text-align: left; font-size: 12px; }
1307
1315
  .chapter-node:hover, .chapter-node.active { background: var(--row-active); }
1308
1316
  .chapter-node[draggable="true"] { cursor: grab; }
1309
1317
  .chapter-node.is-dragging { opacity: .42; cursor: grabbing; }
@@ -1360,12 +1368,26 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
1360
1368
 
1361
1369
  .hidden { display: none !important; }
1362
1370
  .editor-view { container-name: editor-workspace; container-type: inline-size; display: grid; grid-template-rows: auto auto minmax(0, 1fr); height: 100%; }
1363
- .editor-toolbar { display: grid; grid-template-areas: "path path" "title actions"; grid-template-columns: minmax(0, 1fr) auto; align-items: flex-end; column-gap: 20px; row-gap: 6px; padding: 25px 7% 18px; border-bottom: 1px solid var(--line); }
1371
+ .editor-toolbar { position: relative; display: grid; grid-template-areas: "path path" "title actions"; grid-template-columns: minmax(0, 1fr) auto; align-items: flex-end; column-gap: 20px; row-gap: 6px; padding: 25px 7% 18px; border-bottom: 1px solid var(--line); }
1364
1372
  #chapter-path { grid-area: path; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1365
1373
  .chapter-title { grid-area: title; display: block; width: 100%; min-width: 0; border: 0; border-radius: 0; background: transparent; font-size: 27px; padding: 0; }
1366
1374
  .chapter-title:focus { box-shadow: none; border-bottom: 1px solid var(--accent); }
1367
1375
  .editor-actions { grid-area: actions; display: flex; align-items: center; gap: 10px; }
1368
1376
  .chapter-stats { color: var(--muted); font-size: 11px; }
1377
+ .chapter-search-panel { position: absolute; z-index: 8; top: calc(100% + 8px); right: 7%; display: grid; width: min(520px, calc(100% - 14%)); gap: 12px; padding: 14px; border: 1px solid var(--line-strong); outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 7px; background: var(--panel); box-shadow: 0 16px 36px rgba(36, 30, 24, .22); }
1378
+ .chapter-search-panel-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
1379
+ .chapter-search-panel-header .eyebrow { margin-bottom: 4px; }
1380
+ .chapter-search-panel-header h2 { margin: 0; color: var(--ink); font-size: 15px; font-weight: 650; }
1381
+ .chapter-search-panel-header p { margin: 4px 0 0; color: var(--muted); font-size: 10px; line-height: 1.45; }
1382
+ .chapter-search-panel-header .dialog-close { flex: 0 0 auto; }
1383
+ .chapter-search-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
1384
+ .chapter-search-fields label { display: grid; gap: 5px; min-width: 0; color: var(--muted); font-size: 10px; }
1385
+ .chapter-search-fields input { width: 100%; min-width: 0; min-height: 34px; padding: 7px 9px; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); color: var(--ink); font-size: 12px; }
1386
+ .chapter-search-fields input:focus { border-color: var(--accent); outline: none; box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 16%, transparent); }
1387
+ .chapter-search-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 6px; }
1388
+ .chapter-search-actions > span { flex: 1 1 120px; min-width: 0; color: var(--muted); font-size: 10px; line-height: 1.4; }
1389
+ .chapter-search-actions button { min-height: 32px; padding: 6px 9px; font-size: 10px; }
1390
+ .chapter-search-actions button:disabled { cursor: not-allowed; opacity: .45; }
1369
1391
  .chapter-foreshadow-reminder { --reminder-color: #80713d; display: grid; grid-template-areas: "summary actions" "details details"; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 9px 18px; padding: 10px 7%; border-bottom: 1px solid color-mix(in srgb, var(--reminder-color) 32%, var(--line)); background: color-mix(in srgb, var(--reminder-color) 7%, var(--surface)); }
1370
1392
  .chapter-foreshadow-reminder[data-role="payoff"] { --reminder-color: #49745c; }
1371
1393
  .chapter-foreshadow-reminder-summary { grid-area: summary; display: flex; min-width: 0; align-items: center; gap: 10px; }
@@ -1465,6 +1487,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
1465
1487
  .entity-lifecycle-badge { display: inline-flex; align-items: center; min-height: 20px; margin-left: 7px; padding: 2px 7px; border: 1px solid color-mix(in srgb, var(--accent) 58%, var(--line)); border-radius: 10px; background: color-mix(in srgb, var(--accent) 13%, var(--surface)); color: var(--accent-dark); font-size: 9px; font-weight: 650; line-height: 1; vertical-align: middle; white-space: nowrap; }
1466
1488
  .character-lock-badge svg { width: 11px; height: 11px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
1467
1489
  .character-filter-toolbar { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)) auto; gap: 12px; align-items: start; width: 100%; min-width: 0; box-sizing: border-box; margin-bottom: 18px; padding: 12px 14px; border: 1px solid var(--line); background: var(--surface-soft); }
1490
+ .character-filter-toolbar-with-extra-filters { grid-template-columns: repeat(4, minmax(0, 1fr)) auto; }
1468
1491
  .character-filter-dropdown { position: relative; min-width: 0; }
1469
1492
  .character-filter-dropdown summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 38px; padding: 0 11px; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); color: var(--ink); cursor: pointer; list-style: none; }
1470
1493
  .character-filter-dropdown summary::-webkit-details-marker { display: none; }
@@ -1572,6 +1595,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
1572
1595
  .platform-image-tool-field select { width: 100%; height: 36px; min-height: 36px; padding: 8px 10px; font-size: 12px; }
1573
1596
  .platform-image-tool-panel .config-save-button { flex: 0 0 auto; min-height: 36px; padding: 8px 14px; }
1574
1597
  .task-auto-run-panel {
1598
+ position: relative;
1575
1599
  display: grid;
1576
1600
  grid-template-columns: minmax(0, 1fr) 268px;
1577
1601
  gap: 12px;
@@ -1618,14 +1642,14 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
1618
1642
  .task-auto-run-alert strong { color: var(--ink); }
1619
1643
  .task-auto-run-alert span, .task-auto-run-alert small { color: var(--muted); }
1620
1644
  .task-auto-run-progress {
1645
+ position: absolute;
1646
+ top: 50%;
1647
+ right: 90px;
1621
1648
  display: grid;
1622
- grid-column: 2;
1623
- grid-row: 2 / 5;
1624
- align-self: center;
1625
- justify-self: start;
1626
- width: 192px;
1649
+ width: 184px;
1650
+ transform: translateY(-50%);
1627
1651
  }
1628
- .task-auto-run-progress-ring { position: relative; display: grid; width: 192px; height: 192px; place-items: center; }
1652
+ .task-auto-run-progress-ring { position: relative; display: grid; width: 184px; height: 184px; place-items: center; }
1629
1653
  .task-auto-run-progress-ring svg { display: block; width: 100%; height: 100%; overflow: visible; transform: rotate(-90deg); }
1630
1654
  .task-auto-run-progress-ring-track, .task-auto-run-progress-ring-value { fill: none; stroke-width: 8; }
1631
1655
  .task-auto-run-progress-ring-track { stroke: color-mix(in srgb, var(--line) 72%, transparent); }
@@ -2094,6 +2118,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
2094
2118
  .relationship-network.is-panning { cursor: grabbing; }
2095
2119
  .relationship-network-stage { contain: layout paint style; will-change: transform; }
2096
2120
  .relationship-network-stage.is-view-animating { transition: transform .34s cubic-bezier(.22,.78,.3,1); }
2121
+ .relationship-network-edge-canvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
2097
2122
  .relationship-network svg { overflow: visible; }
2098
2123
  .relationship-network .mind-edge-hit {
2099
2124
  stroke-width: 14px;
@@ -2235,6 +2260,13 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
2235
2260
  z-index: 3;
2236
2261
  will-change: left, top;
2237
2262
  }
2263
+ .relationship-network.is-dense .obsidian-node:not(:hover):not(:focus-visible):not(.is-hovered):not(.is-selected):not(.is-edge-endpoint) {
2264
+ box-shadow: none;
2265
+ }
2266
+ .relationship-network.is-dense .obsidian-node {
2267
+ transition: opacity .08s linear, transform .08s linear;
2268
+ will-change: auto;
2269
+ }
2238
2270
  .relationship-network .mind-node.is-settling { animation: relationship-node-settle .18s ease-out; }
2239
2271
  .relationship-network-focus, .relationship-network-help { position: absolute; z-index: 6; color: var(--relationship-focus); pointer-events: none; }
2240
2272
  .relationship-network-focus { top: 14px; left: 16px; display: grid; gap: 3px; }
@@ -2378,10 +2410,11 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
2378
2410
  .galaxy-node span { opacity: 0; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 3px 6px; border-radius: 4px; background: rgba(5,7,13,.68); font-size: 10px; text-align: center; text-shadow: 0 1px 3px #000; transform: translate3d(0, var(--node-label-offset, 0px), 0); transition: opacity .14s ease; }
2379
2411
  .galaxy-node.show-label span, .galaxy-node:hover span, .galaxy-node:focus-visible span, .galaxy-node.is-selected span, .galaxy-node.is-related span, .galaxy-node.is-edge-endpoint span { opacity: 1; }.galaxy-node.is-selected i { background: #fff4bd; box-shadow: 0 0 5px #fff, 0 0 18px #ffc86b, 0 0 42px rgba(255,173,66,.82); }.galaxy-node.is-related i { background: #d8f4ff; box-shadow: 0 0 4px #fff, 0 0 15px #438cff, 0 0 28px rgba(67,140,255,.56); }.galaxy-node.is-edge-endpoint i { background: #fff; box-shadow: 0 0 6px #fff, 0 0 22px #6fcaff, 0 0 48px rgba(67,140,255,.92); }.galaxy-node.is-dimmed { opacity: .16; }.galaxy-node.is-selected, .galaxy-node.is-related, .galaxy-node.is-edge-endpoint { z-index: 2; }
2380
2412
  .galaxy-node.is-dragging { cursor: grabbing; z-index: 6; }
2381
- .galaxy-close { position: fixed; z-index: 8; top: 22px; right: 25px; width: 42px; height: 42px; border: 1px solid rgba(255,255,255,.22); border-radius: 50%; background: rgba(5,7,13,.62); color: #fff; font-size: 25px; }
2413
+ .galaxy-shell.is-motion-off .galaxy-background, .galaxy-shell.is-motion-off .galaxy-node i, .galaxy-shell.is-motion-off .galaxy-node span { transition: none; animation: none; }
2414
+ .galaxy-close { position: fixed; z-index: 8; top: 22px; right: 25px; width: 36px; height: 36px; min-height: 0; border: 1px solid rgba(255,255,255,.22); border-radius: 50%; background: rgba(5,7,13,.62); color: #fff; font-size: 21px; }
2382
2415
  .galaxy-stats { position: fixed; z-index: 7; left: 22px; bottom: 20px; color: rgba(235,245,255,.82); font-size: 11px; }
2383
2416
  .relationship-node-search.is-galaxy { position: fixed; z-index: 9; top: 22px; left: 50%; width: min(320px, calc(100vw - 180px)); max-width: none; min-width: 0; margin: 0; color: rgba(220,235,250,.72); transform: translateX(-50%); }
2384
- .relationship-node-search.is-galaxy input { min-height: 42px; border-color: rgba(255,255,255,.18); border-radius: 7px; background: rgba(5,7,13,.74); color: #eef6ff; box-shadow: 0 8px 24px rgba(0,0,0,.26); backdrop-filter: blur(14px); font-size: 12px; }
2417
+ .relationship-node-search.is-galaxy input { min-height: 36px; padding-block: 5px; border-color: rgba(255,255,255,.18); border-radius: 7px; background: rgba(5,7,13,.74); color: #eef6ff; box-shadow: 0 8px 24px rgba(0,0,0,.26); backdrop-filter: blur(14px); font-size: 12px; }
2385
2418
  .relationship-node-search.is-galaxy input::placeholder { color: rgba(220,235,250,.58); }
2386
2419
  .relationship-node-search.is-galaxy input:focus { border-color: rgba(132,197,255,.66); outline-color: rgba(97,184,255,.24); }
2387
2420
  .relationship-node-search.is-galaxy .relationship-node-search-results { border-color: rgba(255,255,255,.16); background: rgba(5,7,13,.9); box-shadow: 0 14px 34px rgba(0,0,0,.42); backdrop-filter: blur(16px); }
@@ -2390,6 +2423,11 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
2390
2423
  .relationship-node-search.is-galaxy .relationship-node-search-results button small, .relationship-node-search.is-galaxy .relationship-node-search-empty { color: rgba(220,235,250,.64); }
2391
2424
  .galaxy-controls { position: fixed; z-index: 7; right: 23px; top: 50%; display: grid; width: 104px; gap: 7px; transform: translateY(-50%); padding: 10px; border: 1px solid rgba(255,255,255,.12); border-radius: 8px; background: rgba(5,7,13,.66); backdrop-filter: blur(12px); }
2392
2425
  .galaxy-controls button { border: 1px solid rgba(255,255,255,.14); border-radius: 5px; padding: 7px; background: rgba(255,255,255,.05); color: #dcecff; font-size: 9px; }
2426
+ .galaxy-controls button:disabled { opacity: .56; cursor: not-allowed; }
2427
+ .galaxy-motion-field { display: grid; gap: 4px; color: rgba(220,235,250,.72); font-size: 8px; }
2428
+ .galaxy-motion-field select { width: 100%; min-height: 28px; padding: 5px 22px 5px 7px; border: 1px solid rgba(255,255,255,.14); border-radius: 5px; background-color: rgba(255,255,255,.05); color: #dcecff; color-scheme: dark; font: 9px/1.25 var(--font-latin), monospace; }
2429
+ .galaxy-motion-field select option { background: #101722; color: #dcecff; }
2430
+ .galaxy-motion-status { min-height: 20px; color: rgba(220,235,250,.58); font-size: 8px; line-height: 1.35; }
2393
2431
  .galaxy-legend { position: fixed; z-index: 7; right: 22px; bottom: 18px; display: grid; grid-template-columns: 1fr 1fr; gap: 7px 12px; margin: 0; padding: 11px; list-style: none; border: 1px solid rgba(255,255,255,.12); border-radius: 7px; background: rgba(5,7,13,.66); color: rgba(235,245,255,.8); font-size: 9px; }.galaxy-legend li { display: flex; align-items: center; gap: 5px; }
2394
2432
  .galaxy-detail { position: fixed; z-index: 7; left: 22px; top: 22px; width: min(300px, 30vw); max-height: 55vh; overflow: auto; padding: 15px; border: 1px solid rgba(255,255,255,.14); border-radius: 8px; background: rgba(5,7,13,.74); backdrop-filter: blur(14px); }.galaxy-detail strong, .galaxy-detail small { display: block; }.galaxy-detail strong { font-size: 18px; }.galaxy-detail small, .galaxy-detail p { color: rgba(220,235,250,.65); font-size: 9px; }.galaxy-detail ul { display: grid; gap: 7px; padding: 0; list-style: none; font-size: 9px; }.galaxy-detail li { display: flex; align-items: center; gap: 6px; }
2395
2433
  .galaxy-shell .relationship-node-search, .galaxy-shell .relationship-node-search * { cursor: auto; }
@@ -2405,11 +2443,70 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
2405
2443
  .ai-heading-title { display: flex; flex: 0 0 auto; gap: 8px; align-items: center; }
2406
2444
  .ai-heading-title strong { white-space: nowrap; }
2407
2445
  .ai-heading-actions { display: flex; align-items: center; min-width: 0; margin-left: auto; gap: 5px; }
2408
- .ai-heading-actions > span { min-width: 0; max-width: 88px; overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
2409
2446
  .ai-heading-actions button { min-width: 28px; height: 28px; padding: 0 7px; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--muted); font-size: 9px; }
2410
2447
  .ai-heading-action-icon { display: block; width: 15px; height: 15px; margin: auto; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
2411
2448
  .ai-heading-actions #ai-new-conversation { padding: 0; font: 17px/1 var(--font-latin), monospace; }
2412
2449
  .ai-heading-actions button:hover, .ai-heading-actions button[aria-expanded="true"] { background: var(--paper-deep); color: var(--ink); }
2450
+ .ai-heading-actions .ai-conversation-switcher { display: flex; align-items: center; gap: 6px; width: min(116px, 29vw); min-width: 0; max-width: 116px; padding-inline: 8px 6px; color: var(--ink); text-align: left; }
2451
+ .ai-conversation-switcher > span { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2452
+ .ai-conversation-switcher > small { display: grid; place-items: center; width: 16px; height: 16px; flex: 0 0 auto; border-radius: 50%; background: var(--paper-deep); color: var(--muted); font: 9px/1 var(--font-latin), monospace; }
2453
+ .ai-conversation-switcher > svg { width: 9px; height: 6px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5; }
2454
+ .ai-conversation-switcher.has-background-activity > small { background: var(--accent); color: #fff; }
2455
+ .ai-panel.is-single-conversation .ai-conversation-switcher { cursor: default; border-color: transparent; background: transparent; }
2456
+ .ai-panel.is-single-conversation .ai-conversation-switcher > small,
2457
+ .ai-panel.is-single-conversation .ai-conversation-switcher > svg { display: none; }
2458
+ .ai-conversation-switcher-menu { position: absolute; z-index: 46; top: 51px; right: 12px; display: grid; width: min(340px, calc(100% - 24px)); max-height: min(520px, calc(100% - 70px)); overflow: hidden; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); box-shadow: 0 16px 38px rgba(36, 30, 24, .2); }
2459
+ .ai-conversation-switcher-menu > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 12px 10px; border-bottom: 1px solid var(--line); }
2460
+ .ai-conversation-switcher-menu > header > div { display: grid; gap: 2px; }
2461
+ .ai-conversation-switcher-menu > header strong { font-size: 12px; }
2462
+ .ai-conversation-switcher-menu > header small { color: var(--muted); font: 9px/1.3 var(--font-latin), monospace; }
2463
+ .ai-conversation-switcher-menu > header button,
2464
+ .ai-open-conversation-close { width: 28px; min-width: 28px; height: 28px; padding: 0; border: 0; border-radius: 4px; background: transparent; color: var(--muted); font: 16px/1 var(--font-latin), monospace; }
2465
+ .ai-conversation-switcher-menu > header button:hover,
2466
+ .ai-open-conversation-close:hover { background: var(--paper-deep); color: var(--accent-dark); }
2467
+ .ai-open-conversation-list { display: grid; gap: 5px; min-height: 0; padding: 7px; overflow-y: auto; }
2468
+ .ai-open-conversation-row { display: grid; grid-template-columns: minmax(0, 1fr) 28px; align-items: stretch; min-width: 0; border: 1px solid transparent; border-radius: 5px; }
2469
+ .ai-open-conversation-row:hover { background: var(--surface-soft); }
2470
+ .ai-open-conversation-row.is-active { border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); background: var(--row-active); }
2471
+ .ai-open-conversation-select { display: flex; align-items: center; gap: 9px; min-width: 0; padding: 9px 8px; border: 0; background: transparent; color: var(--ink); text-align: left; }
2472
+ .ai-open-conversation-copy { display: grid; gap: 3px; min-width: 0; }
2473
+ .ai-open-conversation-copy strong,
2474
+ .ai-open-conversation-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2475
+ .ai-open-conversation-copy strong { font-size: 11px; font-weight: 600; }
2476
+ .ai-open-conversation-copy small { color: var(--muted); font-size: 9px; }
2477
+ .ai-conversation-switcher-menu > footer { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; padding: 8px; border-top: 1px solid var(--line); }
2478
+ .ai-conversation-switcher-menu > footer button { min-width: 0; min-height: 31px; padding: 6px 8px; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--muted); font-size: 10px; }
2479
+ .ai-conversation-switcher-menu > footer button:hover { border-color: var(--accent); background: var(--paper-deep); color: var(--accent-dark); }
2480
+ .ai-chat-tabs { display: flex; flex: 0 0 auto; gap: 5px; min-width: 0; margin: 8px -3px 0; padding: 0 3px 4px; overflow-x: auto; overscroll-behavior-inline: contain; scrollbar-color: var(--muted) transparent; scrollbar-width: thin; }
2481
+ .ai-chat-tab { display: flex; flex: 0 0 auto; min-width: 0; max-width: 172px; min-height: 30px; overflow: hidden; border: 1px solid var(--line); border-radius: 4px; background: var(--surface-soft); }
2482
+ .ai-chat-tab:has(.ai-chat-tab-select[aria-selected="true"]) { border-color: color-mix(in srgb, var(--accent) 55%, var(--line)); background: var(--row-active); box-shadow: inset 0 -2px var(--accent); }
2483
+ .ai-chat-tab-select { display: flex; align-items: center; gap: 7px; min-width: 82px; max-width: 142px; padding: 5px 7px; border: 0; background: transparent; color: var(--muted); font-size: 10px; text-align: left; }
2484
+ .ai-chat-tab-select > span:last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2485
+ .ai-chat-tab-select:hover, .ai-chat-tab-select:focus-visible, .ai-chat-tab-select[aria-selected="true"] { color: var(--ink); }
2486
+ .ai-chat-tab-select:focus-visible, .ai-chat-tab-close:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
2487
+ .ai-chat-tab-status { width: 6px; height: 6px; flex: 0 0 auto; border-radius: 50%; background: var(--green); box-shadow: 0 0 0 2px color-mix(in srgb, var(--green) 14%, transparent); }
2488
+ .ai-chat-tab-status.is-streaming { background: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 18%, transparent); animation: ai-chat-tab-pulse 1.1s ease-in-out infinite; }
2489
+ .ai-chat-tab-status.is-error { background: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 18%, transparent); }
2490
+ .ai-chat-tab-status.is-unread { background: var(--ink); box-shadow: 0 0 0 2px color-mix(in srgb, var(--ink) 14%, transparent); }
2491
+ .ai-chat-tab-close { width: 25px; min-width: 25px; padding: 0; border: 0; border-left: 1px solid color-mix(in srgb, var(--line) 72%, transparent); background: transparent; color: var(--muted); font: 15px/1 var(--font-latin), monospace; }
2492
+ .ai-chat-tab-close:hover { background: color-mix(in srgb, var(--accent) 9%, transparent); color: var(--accent-dark); }
2493
+ .ai-chat-panels { display: flex; flex: 1; min-height: 0; }
2494
+ .ai-chat-panels > .ai-feed { width: 100%; }
2495
+ .ai-panel.is-conversation-workspace { position: fixed; z-index: 44; inset: 0; width: auto; height: 100dvh; max-height: 100dvh; padding: max(18px, env(safe-area-inset-top)) max(24px, calc((100vw - 1040px) / 2)) max(20px, env(safe-area-inset-bottom)); border: 0; box-shadow: 0 18px 50px rgba(36, 30, 24, .18); }
2496
+ .app-shell.ai-workspace-mode.ai-panel-collapsed .ai-panel.is-conversation-workspace { inset: 0; height: 100dvh; padding-block: max(18px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-bottom)); transform: none; }
2497
+ .app-shell.ai-workspace-mode .ai-panel.is-conversation-workspace .ai-heading { display: flex; justify-content: space-between; padding: 0 0 9px; }
2498
+ .app-shell.ai-workspace-mode .ai-panel.is-conversation-workspace .ai-heading > :not(.panel-collapse-button) { display: flex; }
2499
+ .app-shell.ai-workspace-mode .ai-panel.is-conversation-workspace > .quick-actions { display: grid; }
2500
+ .app-shell.ai-workspace-mode .ai-panel.is-conversation-workspace > .ai-chat-panels { display: flex; }
2501
+ .app-shell.ai-workspace-mode .ai-panel.is-conversation-workspace > .prompt-box { display: block; }
2502
+ .ai-panel.is-conversation-workspace > .panel-resize-handle { display: none; }
2503
+ .ai-panel.is-conversation-workspace > :is(.ai-heading, .quick-actions, .ai-chat-panels, .prompt-box) { width: min(1040px, 100%); margin-inline: auto; }
2504
+ .ai-panel.is-conversation-workspace .ai-conversation-switcher-menu { right: max(24px, calc((100vw - 1040px) / 2)); }
2505
+ @container (max-width: 300px) {
2506
+ .ai-heading-title strong { display: none; }
2507
+ .ai-heading-actions .ai-conversation-switcher { width: min(96px, 40cqw); max-width: 96px; }
2508
+ }
2509
+ @keyframes ai-chat-tab-pulse { 50% { opacity: .35; transform: scale(.72); } }
2413
2510
  .status-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--green); box-shadow: 0 0 0 3px rgba(94,118,92,.14); }
2414
2511
  .status-dot.is-error { background: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent); }
2415
2512
  .ai-history-dialog-body { min-height: min(360px, 55vh); max-height: 65vh; overflow-y: auto; padding: 18px 24px 24px; }
@@ -2585,7 +2682,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
2585
2682
  .ai-tool-call-detail section { min-width: 0; }
2586
2683
  .ai-tool-call-detail h3 { margin: 0 0 7px; color: var(--muted); font-size: 10px; font-weight: 600; }
2587
2684
  .ai-tool-call-code-block { position: relative; min-width: 0; }
2588
- .ai-tool-call-detail pre { min-height: 120px; max-height: 32vh; overflow: auto; margin: 0; padding: 30px 12px 12px; border: 1px solid var(--line); border-radius: 5px; background: var(--paper-deep); color: var(--ink); font: 10px/1.55 var(--font-latin), monospace; white-space: pre-wrap; word-break: break-word; }
2685
+ .ai-tool-call-detail pre { min-height: 120px; max-height: 32vh; overflow: auto; margin: 0; padding: 12px 44px 12px 12px; border: 1px solid var(--line); border-radius: 5px; background: var(--paper-deep); color: var(--ink); font: 10px/1.55 var(--font-latin), monospace; white-space: pre-wrap; word-break: break-word; }
2589
2686
  .ai-tool-call-copy-button { position: absolute; z-index: 1; top: 6px; right: 6px; display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; min-height: 0; padding: 0; border: 1px solid transparent; border-radius: 4px; background: color-mix(in srgb, var(--paper-deep) 86%, var(--ink)); color: var(--muted); }
2590
2687
  .ai-tool-call-copy-button svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
2591
2688
  .ai-tool-call-copy-button:hover, .ai-tool-call-copy-button:focus-visible, .ai-tool-call-copy-button.is-copied { border-color: color-mix(in srgb, var(--accent) 55%, var(--line)); background: color-mix(in srgb, var(--accent) 12%, var(--paper-deep)); color: var(--accent-dark); outline: none; }
@@ -2655,8 +2752,12 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
2655
2752
  .ai-context-distribution-row[data-key="skills"] { --distribution-color: var(--muted); }
2656
2753
  .ai-context-distribution-row[data-key="context"] { --distribution-color: var(--green); }
2657
2754
  .ai-context-distribution-row[data-key="left"] { --distribution-color: color-mix(in srgb, var(--muted) 55%, transparent); }
2658
- .ai-send-button { min-width: 54px; height: 32px; padding: 0 11px; border: 0; border-radius: 4px; background: var(--accent); color: #fff; font-size: 10px; font-weight: 600; box-shadow: 0 4px 12px rgba(139,61,44,.2); }
2659
- .ai-send-button:hover { background: var(--accent-dark); }.ai-send-button:disabled { cursor: wait; opacity: .62; }
2755
+ .ai-send-button { display: grid; flex: 0 0 32px; place-items: center; width: 32px; min-width: 32px; height: 32px; padding: 0; border: 0; border-radius: 4px; background: var(--accent); color: #fff; box-shadow: 0 4px 12px rgba(139,61,44,.2); }
2756
+ .ai-send-button:hover, .ai-send-button:focus-visible { background: var(--accent-dark); outline: 0; }
2757
+ .ai-send-button:focus-visible { box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 24%, transparent), 0 4px 12px rgba(139,61,44,.2); }
2758
+ .ai-send-button:disabled { cursor: wait; opacity: .62; }
2759
+ .ai-send-button-icon { width: 17px; height: 17px; overflow: visible; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
2760
+ .ai-send-button.is-stop .ai-send-button-icon { width: 15px; height: 15px; fill: currentColor; stroke: none; }
2660
2761
  .ai-citations { display: grid; gap: 6px; max-height: 190px; overflow-y: auto; margin-bottom: 8px; }
2661
2762
  .ai-citation-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; border: 1px solid var(--line); border-radius: 5px; background: var(--paper); overflow: hidden; }
2662
2763
  .ai-citation-main { min-width: 0; padding: 8px 9px; border: 0; background: transparent; text-align: left; }
@@ -2926,8 +3027,10 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
2926
3027
  .task-scope-volume-group:last-child { border-bottom: 0; }
2927
3028
  .task-scope-volume-group > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0 2px 2px; }
2928
3029
  .task-scope-volume-group > header strong { overflow: hidden; color: var(--accent-dark); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
2929
- .task-scope-volume-group > header span { flex: 0 0 auto; color: var(--muted); font-family: var(--font-latin), monospace; font-size: 8px; }
2930
- .dialog-fields .task-scope-volume-option { position: relative; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 8px; min-width: 0; margin: 0; color: var(--ink); cursor: pointer; }
3030
+ .task-scope-volume-group > header > .task-scope-volume-count { flex: 0 0 auto; color: var(--muted); font-family: var(--font-latin), monospace; font-size: 8px; }
3031
+ .task-scope-volume-options { display: grid; gap: 5px; min-width: 0; }
3032
+ .task-scope-volume-group.is-collapsed > .task-scope-volume-options { display: none; }
3033
+ .dialog-fields .task-scope-volume-option { position: relative; display: grid; flex: 1 1 auto; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 8px; min-width: 0; margin: 0; color: var(--ink); cursor: pointer; }
2931
3034
  .task-scope-volume-option input { position: absolute; width: 1px !important; min-width: 1px; height: 1px; padding: 0; border: 0; opacity: 0; }
2932
3035
  .task-scope-volume-option:hover, .task-scope-volume-option:has(input:focus-visible) { color: var(--accent-dark); }
2933
3036
  .task-scope-volume-option:has(input:checked) .task-scope-checkbox, .task-scope-volume-option:has(input:indeterminate) .task-scope-checkbox { border-color: var(--accent); background: var(--accent); }
@@ -2936,11 +3039,15 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
2936
3039
  .task-scope-volume-copy { display: grid; gap: 2px; min-width: 0; }
2937
3040
  .task-scope-volume-copy strong { overflow: hidden; color: inherit !important; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
2938
3041
  .task-scope-volume-copy small { overflow: hidden; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
3042
+ .task-scope-volume-collapse { display: inline-grid; flex: 0 0 auto; width: 24px; height: 24px; place-items: center; margin-left: 2px; padding: 0; border: 1px solid transparent; border-radius: 4px; background: transparent; color: var(--muted); font-size: 14px; line-height: 1; }
3043
+ .task-scope-volume-collapse > span { display: block; transition: transform .15s ease; }
3044
+ .task-scope-volume-collapse[aria-expanded="false"] > span { transform: rotate(180deg); }
3045
+ .task-scope-volume-collapse:hover, .task-scope-volume-collapse:focus-visible { border-color: var(--line); background: var(--surface); color: var(--accent-dark); outline: none; }
2939
3046
  .dialog-fields .task-scope-option { position: relative; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 8px; min-width: 0; padding: 8px 9px; border: 1px solid var(--line); border-radius: 5px; background: var(--surface-soft); color: var(--muted); cursor: pointer; transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease; }
2940
3047
  .dialog-fields .task-scope-option.hidden { display: none; }
2941
3048
  .task-scope-option:hover, .task-scope-option:has(input:focus-visible) { border-color: color-mix(in srgb, var(--accent) 54%, var(--line)); }
2942
3049
  .task-scope-option input { position: absolute; width: 1px !important; min-width: 1px; height: 1px; padding: 0; border: 0; opacity: 0; }
2943
- .task-scope-checkbox { display: inline-grid; width: 18px; height: 18px; place-items: center; border: 1px solid var(--line-strong); border-radius: 4px; background: var(--surface); transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease; }
3050
+ .task-scope-checkbox { display: inline-grid; width: 18px; height: 18px; place-items: center; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease; }
2944
3051
  .task-scope-checkbox::after { width: 8px; height: 5px; border: solid #fff; border-width: 0 0 2px 2px; content: ""; opacity: 0; transform: translateY(-1px) rotate(-45deg) scale(.7); transition: opacity .12s ease, transform .12s ease; }
2945
3052
  .task-scope-option strong { overflow: hidden; color: var(--ink); font-size: 10px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
2946
3053
  .task-scope-option-copy { display: grid; gap: 2px; min-width: 0; }
@@ -3038,9 +3145,9 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
3038
3145
  .character-code { display: flex; align-items: center; gap: 7px; margin-top: 10px; color: var(--muted); font-size: 10px; }
3039
3146
  .character-code b { font-weight: 500; }
3040
3147
  .character-code .pill { display: inline-flex; align-items: center; justify-content: center; margin: 0; min-height: 18px; padding: 2px 8px; line-height: 1; font-family: var(--font-latin), var(--font-cjk), monospace; }
3041
- .character-species { display: grid; grid-template-columns: max-content minmax(0, 1fr); align-items: center; gap: 6px; margin-top: 8px; color: var(--muted); font-size: 10px; }
3042
- .character-species b { font-weight: 500; }
3043
- .character-species .pill { display: inline-flex; align-items: center; justify-content: center; justify-self: start; min-width: 0; max-width: 100%; margin: 0; min-height: 18px; padding: 2px 8px; line-height: 1.25; overflow-wrap: anywhere; }
3148
+ .character-species, .character-gender { display: grid; grid-template-columns: max-content minmax(0, 1fr); align-items: center; gap: 6px; margin-top: 8px; color: var(--muted); font-size: 10px; }
3149
+ .character-species b, .character-gender b { font-weight: 500; }
3150
+ .character-species .pill, .character-gender .pill { display: inline-flex; align-items: center; justify-content: center; justify-self: start; min-width: 0; max-width: 100%; margin: 0; min-height: 18px; padding: 2px 8px; line-height: 1.25; overflow-wrap: anywhere; }
3044
3151
  .character-detail-list { display: grid; gap: 5px; margin: 12px 0; }
3045
3152
  .character-detail-list div { display: grid; grid-template-columns: minmax(70px, .42fr) minmax(0, 1fr); gap: 8px; font-size: 10px; }
3046
3153
  .character-detail-list dt { color: var(--muted); }
@@ -3126,6 +3233,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
3126
3233
  .import-mode-options { grid-template-columns: 1fr; }
3127
3234
  .import-mode-dialog .dialog-actions { flex-wrap: wrap; }
3128
3235
  .character-filter-toolbar { grid-template-columns: minmax(0, 1fr); }
3236
+ .character-filter-toolbar-with-extra-filters { grid-template-columns: minmax(0, 1fr); }
3129
3237
  .character-filter-toolbar-actions { justify-content: flex-start; }
3130
3238
  .draft-filter-toolbar { grid-template-columns: minmax(0, 1fr); }
3131
3239
  .setting-filter-toolbar { grid-template-columns: minmax(0, 1fr); }
@@ -3279,6 +3387,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
3279
3387
  .character-relationship-row { display: grid; gap: 10px; padding: 12px; border: 1px solid var(--line); border-radius: 5px; background: var(--surface-soft); }
3280
3388
  .character-relationship-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
3281
3389
  .character-relationship-heading > div { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px; min-width: 0; }
3390
+ .character-relationship-actions { display: flex; flex: 0 0 auto; flex-wrap: wrap; gap: 6px; }
3282
3391
  .character-relationship-heading strong { font-size: 14px; }
3283
3392
  .character-relationship-heading span { color: var(--muted); font-size: 10px; }
3284
3393
  .character-relationship-heading button { flex: 0 0 auto; padding: 6px 9px; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--muted); font-size: 10px; }
@@ -3463,7 +3572,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
3463
3572
  .task-auto-run-panel { grid-template-columns: minmax(0, 1fr); column-gap: 0; }
3464
3573
  .task-auto-run-header, .task-auto-run-controls, .task-auto-run-meta { grid-column: 1; }
3465
3574
  .task-auto-run-help, .task-auto-run-alert { grid-column: 1; }
3466
- .task-auto-run-progress { grid-column: 1; grid-row: auto; justify-self: stretch; width: 100%; }
3575
+ .task-auto-run-progress { position: static; top: auto; right: auto; width: 100%; transform: none; }
3467
3576
  .task-auto-run-progress-ring { display: none; }
3468
3577
  .task-auto-run-progress-bar-layout { display: grid; gap: 6px; width: 100%; }
3469
3578
  .settings-hub-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@@ -3536,6 +3645,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
3536
3645
  body { -webkit-text-size-adjust: 100%; }
3537
3646
  button, select, input, textarea, [contenteditable="true"] { touch-action: manipulation; }
3538
3647
  button, .ghost-button, .primary-button, .danger-button, select { min-height: 40px; }
3648
+ .task-scope-volume-collapse { width: 40px; min-width: 40px; height: 40px; min-height: 40px; }
3539
3649
 
3540
3650
  .app-shell {
3541
3651
  grid-template-columns: minmax(0, 1fr);
@@ -3564,7 +3674,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
3564
3674
  .brand-block .brand-mark { width: 30px; height: 30px; }
3565
3675
  .brand-block strong { font-size: 14px; }
3566
3676
  .brand-block small { display: none; }
3567
- .mobile-module-tab { position: fixed; z-index: 38; top: 132px; right: 0; display: grid; width: 34px; height: 42px; padding: 0; place-items: center; border: 1px solid var(--line); border-right: 0; border-radius: 5px 0 0 5px; background: var(--surface-soft); color: var(--accent-dark); font-size: 10px; writing-mode: vertical-rl; }
3677
+ .mobile-module-tab { position: fixed; z-index: 38; top: 124px; right: 0; display: grid; width: 34px; height: 42px; padding: 0; place-items: center; border: 1px solid var(--line); border-right: 0; border-radius: 5px 0 0 5px; background: var(--surface-soft); color: var(--accent-dark); font-size: 10px; writing-mode: vertical-rl; }
3568
3678
  .app-shell.shelf-mode .mobile-module-tab { display: none; }
3569
3679
  .mobile-panel-backdrop { position: fixed; z-index: 36; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: rgba(20, 17, 14, .28); }
3570
3680
  .app-shell:not(.shelf-mode):not(.left-panel-collapsed) .mobile-panel-backdrop { display: block; }
@@ -3628,7 +3738,8 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
3628
3738
  .module-nav .module-nav-secondary.hidden { display: none !important; }
3629
3739
  .panel-heading { display: flex; margin-top: 8px; }
3630
3740
  #novel-tree { display: block; padding-bottom: 18px; }
3631
- .volume-detail-button { display: inline-flex; flex: none; align-items: center; min-height: 40px; padding: 7px 9px; font-size: 11px; }
3741
+ .volume-detail-button { display: inline-flex; flex: 0 0 40px; align-items: center; justify-content: center; width: 40px; min-width: 40px; min-height: 40px; padding: 0; }
3742
+ .volume-detail-icon { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
3632
3743
  .app-shell.left-panel-collapsed .left-panel-body { padding: 8px var(--mobile-gutter) 0; }
3633
3744
  .app-shell.left-panel-collapsed .left-actions { display: block; padding: 0; }
3634
3745
 
@@ -3659,11 +3770,25 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
3659
3770
  transform: translateY(0);
3660
3771
  transition: transform .2s ease;
3661
3772
  }
3773
+ .ai-heading { gap: 6px; }
3774
+ .ai-heading-actions { gap: 4px; }
3775
+ .ai-heading-actions button { height: 32px; min-height: 32px; }
3776
+ .ai-heading-actions .ai-conversation-switcher { width: min(106px, 28vw); max-width: 106px; }
3777
+ .ai-conversation-switcher-menu { position: fixed; top: auto; right: var(--mobile-gutter); bottom: calc(var(--mobile-gutter) + env(safe-area-inset-bottom)); left: var(--mobile-gutter); width: auto; max-height: min(540px, calc(100dvh - 28px)); border-radius: 8px; }
3778
+ .ai-conversation-switcher-menu > header button { min-height: 28px; }
3779
+ .ai-conversation-switcher-menu > footer { grid-template-columns: minmax(0, 1fr); }
3780
+ .ai-panel.is-conversation-workspace { z-index: 44; inset: 0; width: auto; height: auto; padding: 12px var(--mobile-gutter) calc(18px + env(safe-area-inset-bottom)); border-top: 0; }
3781
+ .ai-panel.is-conversation-workspace > :is(.ai-heading, .quick-actions, .ai-chat-panels, .prompt-box) { width: 100%; }
3782
+ .ai-panel.is-conversation-workspace .ai-conversation-switcher-menu { right: var(--mobile-gutter); }
3662
3783
  .app-shell.shelf-mode .ai-panel { display: none; }
3663
3784
  .ai-panel > .panel-resize-handle { display: none; }
3664
3785
  .app-shell.ai-panel-collapsed .ai-panel { top: auto; height: 58px; padding-block: 8px; transform: translateY(0); }
3665
3786
  .app-shell.ai-panel-collapsed .ai-panel > :not(.ai-heading) { display: none; }
3666
3787
  .app-shell.ai-panel-collapsed .ai-heading { display: flex; justify-content: space-between; padding: 0; }
3788
+ .app-shell.ai-workspace-mode.ai-panel-collapsed .ai-panel.is-conversation-workspace .ai-heading > :not(.panel-collapse-button) { display: flex; }
3789
+ .app-shell.ai-workspace-mode.ai-panel-collapsed .ai-panel.is-conversation-workspace > .quick-actions { display: grid; }
3790
+ .app-shell.ai-workspace-mode.ai-panel-collapsed .ai-panel.is-conversation-workspace > .ai-chat-panels { display: flex; }
3791
+ .app-shell.ai-workspace-mode.ai-panel-collapsed .ai-panel.is-conversation-workspace > .prompt-box { display: block; }
3667
3792
 
3668
3793
  .shelf-view { height: 100%; min-height: 0; padding: 28px var(--mobile-gutter) 42px; }
3669
3794
  #shelf-view, #settings-hub-view { padding-bottom: 0; }
@@ -3684,13 +3809,15 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
3684
3809
  .welcome-grid { grid-template-columns: 1fr; margin-top: 34px; }
3685
3810
 
3686
3811
  .editor-toolbar { padding: 18px var(--mobile-gutter) 14px; }
3812
+ .chapter-search-panel { top: calc(100% + 8px); right: var(--mobile-gutter); left: var(--mobile-gutter); width: auto; max-height: calc(100dvh - 120px); overflow-y: auto; }
3813
+ .chapter-search-fields { grid-template-columns: minmax(0, 1fr); }
3687
3814
  .chapter-foreshadow-reminder { padding: 10px var(--mobile-gutter); }
3688
3815
  .chapter-foreshadow-reminder-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: 100%; }
3689
3816
  .chapter-foreshadow-reminder-counter { grid-column: 1 / -1; justify-self: start; }
3690
3817
  .chapter-foreshadow-reminder-actions button { width: 100%; min-width: 0; min-height: 38px; }
3691
3818
  .chapter-foreshadow-reminder[data-multiple="true"] #chapter-foreshadow-reminder-resolve { grid-column: span 2; }
3692
- .editor-actions { position: fixed; z-index: 34; right: 0; bottom: calc(76px + env(safe-area-inset-bottom)); left: auto; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: min(300px, 84vw); max-width: none; gap: 6px; padding: 10px; border: 1px solid var(--line); border-right: 0; border-radius: 6px 0 0 6px; background: var(--panel); box-shadow: -12px 0 36px rgba(36, 30, 24, .2); transform: translateX(0); transition: transform .2s ease; }
3693
- .app-shell.left-panel-collapsed .editor-actions { transform: translateX(0); pointer-events: auto; }
3819
+ .editor-actions { position: static; z-index: auto; right: auto; bottom: auto; left: auto; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; max-width: none; gap: 6px; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; transform: none; transition: none; }
3820
+ .app-shell.left-panel-collapsed .editor-actions { transform: none; pointer-events: auto; }
3694
3821
  .editor-actions .chapter-stats { grid-column: 1 / -1; }
3695
3822
  .editor-actions > button { min-width: 0; min-height: 36px; padding-inline: 8px; font-size: 11px; }
3696
3823
  .chapter-title { font-size: 23px; }
@@ -3846,7 +3973,10 @@ body { font-size: var(--ui-font-size); }
3846
3973
  .ai-history-dialog,
3847
3974
  .ai-tool-call-dialog { font-size: var(--ai-font-size); }
3848
3975
  .ai-heading-title strong { font-size: calc(14px * var(--ai-font-scale)); }
3849
- .ai-heading-actions > span, .ai-heading-actions button { font-size: calc(9px * var(--ai-font-scale)); }
3976
+ .ai-heading-actions button { font-size: calc(9px * var(--ai-font-scale)); }
3977
+ .ai-open-conversation-copy strong { font-size: calc(11px * var(--ai-font-scale)); }
3978
+ .ai-open-conversation-copy small, .ai-conversation-switcher-menu > header small { font-size: calc(9px * var(--ai-font-scale)); }
3979
+ .ai-chat-tab-select { font-size: calc(10px * var(--ai-font-scale)); }
3850
3980
  .quick-actions button { font-size: calc(10px * var(--ai-font-scale)); }
3851
3981
  .ai-context-compaction-divider { font-size: calc(9px * var(--ai-font-scale)); }
3852
3982
  .assistant-message, .user-message { font-size: var(--ai-font-size); }
@@ -3871,7 +4001,6 @@ body { font-size: var(--ui-font-size); }
3871
4001
  .ai-context-popover-header strong { font-size: calc(12px * var(--ai-font-scale)); }
3872
4002
  .ai-context-popover-header small, .ai-context-distribution-label { font-size: calc(10px * var(--ai-font-scale)); }
3873
4003
  .ai-context-distribution-label small, .ai-context-distribution-label strong { font-size: calc(9px * var(--ai-font-scale)); }
3874
- .ai-send-button { font-size: calc(10px * var(--ai-font-scale)); }
3875
4004
  .ai-citation-main strong { font-size: calc(10px * var(--ai-font-scale)); }
3876
4005
  .ai-citation-main small, .ai-citation-main span, .message-citations span, .user-message-mentions { font-size: calc(9px * var(--ai-font-scale)); }
3877
4006
  .ai-history-item strong { font-size: calc(14px * var(--ai-font-scale)); }
@@ -4005,6 +4134,9 @@ body { font-size: var(--ui-font-size); }
4005
4134
  background: var(--reader-surface);
4006
4135
  box-shadow: 0 18px 44px rgba(20, 18, 15, .2);
4007
4136
  }
4137
+ .reader-settings-group { display: grid; min-width: 0; gap: 10px; }
4138
+ .reader-settings-section-title { color: var(--reader-ink); font-size: 10px; font-weight: 600; }
4139
+ .reader-navigation-group { padding-top: 10px; border-top: 1px solid var(--reader-line); }
4008
4140
  .reader-settings-panel label,
4009
4141
  .reader-jump-controls label { display: grid; min-width: 0; gap: 4px; color: var(--reader-muted); font-size: 9px; }
4010
4142
  .reader-settings-panel select,
@@ -4027,6 +4159,14 @@ body { font-size: var(--ui-font-size); }
4027
4159
  width: min(920px, 100%);
4028
4160
  margin: 0 auto;
4029
4161
  }
4162
+ .reader-settings-panel .reader-jump-controls {
4163
+ grid-column: auto;
4164
+ grid-template-columns: minmax(0, 1fr);
4165
+ width: 100%;
4166
+ margin: 0;
4167
+ gap: 8px;
4168
+ }
4169
+ .reader-settings-panel .reader-jump-controls label:last-child { grid-column: auto; }
4030
4170
  .reader-viewport {
4031
4171
  position: relative;
4032
4172
  min-width: 0;
@@ -4038,7 +4178,7 @@ body { font-size: var(--ui-font-size); }
4038
4178
  scrollbar-gutter: stable;
4039
4179
  }
4040
4180
  .reader-viewport:focus { outline: none; }
4041
- .reader-viewport:focus-visible { box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--reader-accent) 55%, transparent); }
4181
+ .reader-viewport:focus-visible { box-shadow: none; }
4042
4182
  .reader-document {
4043
4183
  box-sizing: border-box;
4044
4184
  width: min(820px, calc(100% - 32px));
@@ -4133,8 +4273,6 @@ body { font-size: var(--ui-font-size); }
4133
4273
  .reader-settings > summary { min-height: 40px; }
4134
4274
  .reader-settings > summary { padding: 7px 10px; }
4135
4275
  .reader-settings-panel { position: static; width: min(250px, calc(100vw - 24px)); margin-top: 9px; }
4136
- .reader-jump-controls { grid-column: 1 / -1; grid-row: 3; grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); gap: 7px; }
4137
- .reader-jump-controls label:last-child { grid-column: 1 / -1; }
4138
4276
  .reader-settings-panel select, .reader-jump-controls select { min-height: 40px; font-size: 10px; }
4139
4277
  .reader-document { width: 100%; padding: 34px 20px 58px; border: 0; box-shadow: none; }
4140
4278
  .reader-chapter-header { margin-bottom: 30px; }
@@ -2,6 +2,8 @@ import { chmodSync, cpSync, existsSync, mkdirSync, readdirSync, readFileSync, re
2
2
  import { fileURLToPath } from "node:url";
3
3
  import { basename, join } from "node:path";
4
4
  import { createRuntime } from "./app.js";
5
+ import { resolveAiChatTabLimit } from "./ai-chat-tab-limit.js";
6
+ import { resolveAiRetryPolicy } from "./ai-retry.js";
5
7
  import { resolveAiStreamIdleTimeoutMs } from "./ai-stream-timeout.js";
6
8
  import { DATABASE_SCHEMA_VERSION, readDatabaseSchemaVersion } from "./database.js";
7
9
  import { loadMasterSecret } from "./credential-vault.js";
@@ -9,6 +11,7 @@ import { isDevelopmentAuthBypassEnabled, resolveRuntimeSecurity } from "./securi
9
11
  import { logger, sanitizeError } from "./logger.js";
10
12
  import { resolveReleaseCheckIntervalMs, resolveReleaseCheckRetries, resolveReleaseCheckTimeoutMs } from "./release-update.js";
11
13
  import { resolveImageUploadLimits } from "./upload-limits.js";
14
+ import { resolveBetaVersionLabel } from "./version.js";
12
15
  const publicPath = fileURLToPath(new URL("./public/", import.meta.url));
13
16
  export const PRE_MIGRATION_BACKUP_RETENTION_ENV = "SCRIVERSE_PRE_MIGRATION_BACKUP_RETENTION";
14
17
  export const DEFAULT_PRE_MIGRATION_BACKUP_RETENTION = 5;
@@ -195,9 +198,12 @@ export async function startLocalServer(options) {
195
198
  disableUserAuth: devAuthBypass,
196
199
  devAuthBypass,
197
200
  developmentServer: isDevelopmentServer(options.env),
201
+ betaVersionLabel: resolveBetaVersionLabel(options.env),
198
202
  releaseCheckIntervalMs: resolveReleaseCheckIntervalMs(options.env.APP_UPDATE_CHECK_INTERVAL_MINUTES),
199
203
  releaseCheckTimeoutMs: resolveReleaseCheckTimeoutMs(options.env.APP_UPDATE_CHECK_TIMEOUT_SECONDS),
200
204
  releaseCheckRetries: resolveReleaseCheckRetries(options.env.APP_UPDATE_CHECK_RETRIES),
205
+ aiChatTabLimit: resolveAiChatTabLimit(options.env),
206
+ aiRetryPolicy: resolveAiRetryPolicy(options.env),
201
207
  aiStreamIdleTimeoutMs: resolveAiStreamIdleTimeoutMs(options.env),
202
208
  uploadLimits: resolveImageUploadLimits(options.env)
203
209
  });
@@ -1 +1 @@
1
- {"version":3,"file":"server-runtime.js","sourceRoot":"","sources":["../src/server-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-runtime.js","sourceRoot":"","sources":["../src/server-runtime.ts"],"names":[],"mappings":"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"}