@musnows/scriverse 0.4.12 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai.js +175 -4
- package/dist/ai.js.map +1 -1
- package/dist/app.js +30 -11
- package/dist/app.js.map +1 -1
- package/dist/database.js +55 -0
- package/dist/database.js.map +1 -1
- package/dist/pagination.js +1 -1
- package/dist/public/app.js +400 -74
- package/dist/public/global-search.d.ts +12 -0
- package/dist/public/global-search.js +23 -0
- package/dist/public/index.html +17 -4
- package/dist/public/relationship-filters.d.ts +10 -0
- package/dist/public/relationship-filters.js +11 -0
- package/dist/public/relationship-graph.js +59 -3
- package/dist/public/styles.css +209 -2
- package/dist/store.js +110 -32
- package/dist/store.js.map +1 -1
- package/dist/user-auth.js +12 -0
- package/dist/user-auth.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type GlobalSearchTarget =
|
|
2
|
+
| { kind: "chapter"; type: "chapter"; id: string; module: "editor" }
|
|
3
|
+
| {
|
|
4
|
+
kind: "entity";
|
|
5
|
+
type: "setting" | "character" | "race" | "organization";
|
|
6
|
+
id: string;
|
|
7
|
+
module: "settings" | "characters" | "races" | "organizations";
|
|
8
|
+
entity: "setting" | "character" | "race" | "organization";
|
|
9
|
+
apiPath: string;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export function resolveGlobalSearchTarget(result?: { type?: unknown; id?: unknown }): GlobalSearchTarget | null;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const entityTargets = Object.freeze({
|
|
2
|
+
setting: Object.freeze({ module: "settings", entity: "setting", resource: "settings" }),
|
|
3
|
+
character: Object.freeze({ module: "characters", entity: "character", resource: "characters" }),
|
|
4
|
+
race: Object.freeze({ module: "races", entity: "race", resource: "races" }),
|
|
5
|
+
organization: Object.freeze({ module: "organizations", entity: "organization", resource: "organizations" })
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export function resolveGlobalSearchTarget(result = {}) {
|
|
9
|
+
const type = String(result.type ?? "").trim();
|
|
10
|
+
const id = String(result.id ?? "").trim();
|
|
11
|
+
if (!id) return null;
|
|
12
|
+
if (type === "chapter") return { kind: "chapter", type, id, module: "editor" };
|
|
13
|
+
const target = entityTargets[type];
|
|
14
|
+
if (!target) return null;
|
|
15
|
+
return {
|
|
16
|
+
kind: "entity",
|
|
17
|
+
type,
|
|
18
|
+
id,
|
|
19
|
+
module: target.module,
|
|
20
|
+
entity: target.entity,
|
|
21
|
+
apiPath: `/api/${target.resource}/${encodeURIComponent(id)}`
|
|
22
|
+
};
|
|
23
|
+
}
|
package/dist/public/index.html
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<link rel="icon" href="/icon.svg?v=20260712" type="image/svg+xml">
|
|
11
11
|
<link rel="manifest" href="/site.webmanifest">
|
|
12
12
|
<link rel="stylesheet" href="/vendor/vditor/dist/index.css?v=3.11.2">
|
|
13
|
-
<link rel="stylesheet" href="/styles.css?v=20260726-
|
|
13
|
+
<link rel="stylesheet" href="/styles.css?v=20260726-relationship-label-scale">
|
|
14
14
|
</head>
|
|
15
15
|
<body class="auth-pending">
|
|
16
16
|
<section id="auth-view" class="auth-view hidden" aria-labelledby="auth-title">
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
<div class="settings-hub-grid">
|
|
173
173
|
<button id="platform-ai-button" class="settings-hub-card hidden" type="button" data-settings-action="ai"><span class="settings-card-mark">AI</span><strong>AI 管理</strong><small>供应商、模型、上下文与全局提示词</small></button>
|
|
174
174
|
<button id="user-management-button" class="settings-hub-card hidden" type="button"><span class="settings-card-mark">人</span><strong>用户管理</strong><small>管理员、普通用户与账户状态</small></button>
|
|
175
|
-
<button id="platform-ui-settings-button" class="settings-hub-card hidden" type="button"><span class="settings-card-mark">界</span><strong
|
|
175
|
+
<button id="platform-ui-settings-button" class="settings-hub-card hidden" type="button"><span class="settings-card-mark">界</span><strong>界面与分页</strong><small>设置通知位置及各模块的单页数量</small></button>
|
|
176
176
|
<button id="collaboration-button" class="settings-hub-card" type="button"><span class="settings-card-mark">协</span><strong>作品协作</strong><small>邀请注册用户共同编辑当前作品</small></button>
|
|
177
177
|
<button id="appearance-button" class="settings-hub-card" type="button" data-settings-action="appearance"><span class="settings-card-mark">Aa</span><strong>显示设置</strong><small>中文字体、等宽英文字体、字号与行距</small></button>
|
|
178
178
|
<button id="export-button" class="settings-hub-card" type="button" data-settings-action="export"><span class="settings-card-mark">MD</span><strong>导出作品</strong><small>将当前作品安全导出为 Markdown</small></button>
|
|
@@ -337,6 +337,10 @@
|
|
|
337
337
|
<button class="dialog-close" value="cancel" aria-label="关闭" type="submit">×</button>
|
|
338
338
|
</div>
|
|
339
339
|
<div id="dialog-fields" class="dialog-fields"></div>
|
|
340
|
+
<div id="dialog-submit-status" class="dialog-submit-status hidden" role="status" aria-live="polite">
|
|
341
|
+
<span id="dialog-submit-status-message">正在提交,请稍候</span>
|
|
342
|
+
<div class="dialog-submit-progress" role="progressbar" aria-label="提交处理中" aria-valuetext="正在等待服务器响应"><span></span></div>
|
|
343
|
+
</div>
|
|
340
344
|
<div class="dialog-actions">
|
|
341
345
|
<button class="ghost-button" value="cancel" type="submit">取消</button>
|
|
342
346
|
<button id="dialog-submit" class="primary-button" value="default" type="submit">保存</button>
|
|
@@ -575,11 +579,20 @@
|
|
|
575
579
|
</dialog>
|
|
576
580
|
|
|
577
581
|
<dialog id="platform-ui-settings-dialog" class="dialog" aria-labelledby="platform-ui-settings-title">
|
|
578
|
-
<div class="dialog-header"><div><span class="eyebrow">系统管理员</span><h2 id="platform-ui-settings-title"
|
|
582
|
+
<div class="dialog-header"><div><span class="eyebrow">系统管理员</span><h2 id="platform-ui-settings-title">界面与分页</h2></div><button id="platform-ui-settings-close" class="dialog-close" aria-label="关闭" type="button">×</button></div>
|
|
579
583
|
<form id="platform-ui-settings-form">
|
|
580
584
|
<div class="dialog-fields">
|
|
581
585
|
<label>Toast 提示位置<select id="toast-position" name="toastPosition" aria-label="Toast 提示位置"><option value="bottom-right">右下角(默认)</option><option value="top-right">右上角</option></select></label>
|
|
582
586
|
<small>该设置对所有用户生效,保存后的提示会立即显示在新位置。</small>
|
|
587
|
+
<fieldset class="pagination-settings-fieldset">
|
|
588
|
+
<legend>各模块单页数量</legend>
|
|
589
|
+
<small>每个模块独立设置,允许 10–100 条;默认均为 30 条。</small>
|
|
590
|
+
<div class="pagination-settings-grid">
|
|
591
|
+
<label>角色列表<input id="page-size-characters" name="pageSizeCharacters" type="number" min="10" max="100" step="1" required aria-label="角色列表单页数量"></label>
|
|
592
|
+
<label>AI 分析任务<input id="page-size-analysis-tasks" name="pageSizeAnalysisTasks" type="number" min="10" max="100" step="1" required aria-label="AI 分析任务单页数量"></label>
|
|
593
|
+
<label>正文导入历史<input id="page-size-file-versions" name="pageSizeFileVersions" type="number" min="10" max="100" step="1" required aria-label="正文导入历史单页数量"></label>
|
|
594
|
+
</div>
|
|
595
|
+
</fieldset>
|
|
583
596
|
</div>
|
|
584
597
|
<div class="dialog-actions"><button class="ghost-button" id="platform-ui-settings-cancel" type="button">取消</button><button class="primary-button" id="platform-ui-settings-save" type="submit">保存设置</button></div>
|
|
585
598
|
</form>
|
|
@@ -732,6 +745,6 @@
|
|
|
732
745
|
<div id="auth-loading" class="auth-loading" role="status" aria-label="正在载入工作台"></div>
|
|
733
746
|
<script id="vditorIconScript" src="/vendor/vditor/dist/js/icons/ant.js?v=3.11.2"></script>
|
|
734
747
|
<script src="/vendor/vditor/dist/index.min.js?v=3.11.2"></script>
|
|
735
|
-
<script type="module" src="/app.js?v=20260726-
|
|
748
|
+
<script type="module" src="/app.js?v=20260726-trace-security-review-relationship-filters"></script>
|
|
736
749
|
</body>
|
|
737
750
|
</html>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type RelationshipFilterItem = {
|
|
2
|
+
id?: string;
|
|
3
|
+
fromCharacterId?: string | null;
|
|
4
|
+
toCharacterId?: string | null;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export declare function filterRelationships<T extends RelationshipFilterItem>(
|
|
8
|
+
relationships: T[],
|
|
9
|
+
filters?: { fromCharacterIds?: string[]; toCharacterIds?: string[] }
|
|
10
|
+
): T[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function filterRelationships(relationships, { fromCharacterIds = [], toCharacterIds = [] } = {}) {
|
|
2
|
+
const selectedFromCharacterIds = new Set(fromCharacterIds.map(String).filter(Boolean));
|
|
3
|
+
const selectedToCharacterIds = new Set(toCharacterIds.map(String).filter(Boolean));
|
|
4
|
+
return relationships.filter((relationship) => {
|
|
5
|
+
const matchesFromCharacter = selectedFromCharacterIds.size === 0
|
|
6
|
+
|| selectedFromCharacterIds.has(String(relationship?.fromCharacterId ?? ""));
|
|
7
|
+
const matchesToCharacter = selectedToCharacterIds.size === 0
|
|
8
|
+
|| selectedToCharacterIds.has(String(relationship?.toCharacterId ?? ""));
|
|
9
|
+
return matchesFromCharacter && matchesToCharacter;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
@@ -45,6 +45,32 @@ export function getRelationshipNetworkInitialScale(nodeCount, expanded = false)
|
|
|
45
45
|
return 1;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
export function getRelationshipNodeFocusView(position, viewport, layout, currentScale = 1) {
|
|
49
|
+
const width = Math.max(0, Number(viewport?.width) || 0);
|
|
50
|
+
const height = Math.max(0, Number(viewport?.height) || 0);
|
|
51
|
+
const layoutWidth = Math.max(1, Number(layout?.width) || 1);
|
|
52
|
+
const layoutHeight = Math.max(1, Number(layout?.height) || 1);
|
|
53
|
+
const scale = clamp(Math.max(Number(currentScale) || 1, 1.8), 0.45, 3.2);
|
|
54
|
+
return {
|
|
55
|
+
scale,
|
|
56
|
+
x: width / 2 - Number(position?.x ?? 0) / layoutWidth * width * scale,
|
|
57
|
+
y: height / 2 - Number(position?.y ?? 0) / layoutHeight * height * scale
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function shouldShowRelationshipNodeLabel(nodeIndex, degree, nodeCount, viewScale, expanded = false) {
|
|
62
|
+
const count = Math.max(0, Number(nodeCount) || 0);
|
|
63
|
+
const defaultLabelLimit = count > 180 ? 36 : count > 120 ? 48 : count > 80 ? 64 : count;
|
|
64
|
+
return Boolean(expanded) || Number(nodeIndex) < defaultLabelLimit || Number(degree) >= 4 || Number(viewScale) > 1.35;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function getRelationshipNodeLabelFontSize(viewScale, nodeCount) {
|
|
68
|
+
const scale = clamp(Number(viewScale) || 1, 0.45, 3.2);
|
|
69
|
+
const count = Math.max(0, Number(nodeCount) || 0);
|
|
70
|
+
const screenFontSize = count > 180 ? 8 : count > 120 ? 8.5 : 9;
|
|
71
|
+
return screenFontSize / scale;
|
|
72
|
+
}
|
|
73
|
+
|
|
48
74
|
const GALAXY_CELESTIAL_PALETTES = Object.freeze([
|
|
49
75
|
Object.freeze({ key: "solar", hue: 42, saturation: 96, lightness: 68, color: "#ffc95f", core: "#fff8d4", rim: "#9f3c18", atmosphere: "rgba(255,184,72,.58)", ring: "rgba(255,222,151,.72)" }),
|
|
50
76
|
Object.freeze({ key: "azure", hue: 211, saturation: 94, lightness: 68, color: "#61b8ff", core: "#effaff", rim: "#173b85", atmosphere: "rgba(79,156,255,.56)", ring: "rgba(164,214,255,.68)" }),
|
|
@@ -835,12 +861,25 @@ export function renderRelationshipMindMap(container, graph, options = {}) {
|
|
|
835
861
|
help.textContent = "滚轮缩放 · 拖拽空白平移 · 拖拽节点固定 · 悬浮高亮关联";
|
|
836
862
|
viewport.append(focusBadge, help);
|
|
837
863
|
|
|
864
|
+
const nodeElements = new Map();
|
|
865
|
+
const updateNodeLabelVisibility = () => {
|
|
866
|
+
graph.nodes.forEach((node, index) => {
|
|
867
|
+
nodeElements.get(node.id)?.classList.toggle(
|
|
868
|
+
"is-label-visible",
|
|
869
|
+
shouldShowRelationshipNodeLabel(index, node.degree, graph.nodes.length, viewScale, options.expanded)
|
|
870
|
+
);
|
|
871
|
+
});
|
|
872
|
+
};
|
|
838
873
|
const updateViewTransform = (animate = false) => {
|
|
874
|
+
const labelFontSize = getRelationshipNodeLabelFontSize(viewScale, graph.nodes.length);
|
|
839
875
|
stage.classList.toggle("is-view-animating", animate);
|
|
840
876
|
stage.style.transform = `translate(${viewX}px, ${viewY}px) scale(${viewScale})`;
|
|
877
|
+
stage.style.setProperty("--relationship-node-label-font-size", `${labelFontSize.toFixed(3)}px`);
|
|
841
878
|
viewport.dataset.graphScale = viewScale.toFixed(3);
|
|
842
879
|
viewport.dataset.viewX = viewX.toFixed(1);
|
|
843
880
|
viewport.dataset.viewY = viewY.toFixed(1);
|
|
881
|
+
viewport.dataset.nodeLabelScreenFontSize = (labelFontSize * viewScale).toFixed(3);
|
|
882
|
+
updateNodeLabelVisibility();
|
|
844
883
|
if (animate) window.setTimeout(() => stage.classList.remove("is-view-animating"), 360);
|
|
845
884
|
};
|
|
846
885
|
updateViewTransform();
|
|
@@ -948,8 +987,6 @@ export function renderRelationshipMindMap(container, graph, options = {}) {
|
|
|
948
987
|
svg.append(label);
|
|
949
988
|
stage.append(svg);
|
|
950
989
|
|
|
951
|
-
const nodeElements = new Map();
|
|
952
|
-
const defaultLabelLimit = graph.nodes.length > 180 ? 36 : graph.nodes.length > 120 ? 48 : graph.nodes.length > 80 ? 64 : graph.nodes.length;
|
|
953
990
|
const updateNodePosition = (nodeId) => {
|
|
954
991
|
const position = positions.get(nodeId);
|
|
955
992
|
const button = nodeElements.get(nodeId);
|
|
@@ -1271,7 +1308,7 @@ export function renderRelationshipMindMap(container, graph, options = {}) {
|
|
|
1271
1308
|
button.className = `mind-node network-node obsidian-node${node.locked ? " is-locked" : ""}${node.degree === 0 ? " is-isolated" : ""}`;
|
|
1272
1309
|
button.dataset.nodeId = node.id;
|
|
1273
1310
|
button.dataset.groupKey = node.groupKey || appearance.group.key;
|
|
1274
|
-
button.classList.toggle("is-label-visible", graph.nodes.indexOf(node)
|
|
1311
|
+
button.classList.toggle("is-label-visible", shouldShowRelationshipNodeLabel(graph.nodes.indexOf(node), node.degree, graph.nodes.length, viewScale, options.expanded));
|
|
1275
1312
|
button.style.setProperty("--node-size", `${nodeSize}px`);
|
|
1276
1313
|
button.style.setProperty("--node-color-light", node.color || appearance.color);
|
|
1277
1314
|
button.style.setProperty("--node-color-dark", node.darkColor || appearance.darkColor);
|
|
@@ -1368,6 +1405,7 @@ export function renderRelationshipMindMap(container, graph, options = {}) {
|
|
|
1368
1405
|
selectedId = node.id;
|
|
1369
1406
|
options.onSelect?.(node.id);
|
|
1370
1407
|
applyNodeFocus(node.id);
|
|
1408
|
+
focusViewOnNode(node.id);
|
|
1371
1409
|
});
|
|
1372
1410
|
}
|
|
1373
1411
|
|
|
@@ -1375,6 +1413,7 @@ export function renderRelationshipMindMap(container, graph, options = {}) {
|
|
|
1375
1413
|
viewScale = 1;
|
|
1376
1414
|
viewX = 0;
|
|
1377
1415
|
viewY = 0;
|
|
1416
|
+
delete viewport.dataset.focusedNodeId;
|
|
1378
1417
|
updateViewTransform(true);
|
|
1379
1418
|
};
|
|
1380
1419
|
const setDefaultView = (animate = false) => {
|
|
@@ -1383,8 +1422,22 @@ export function renderRelationshipMindMap(container, graph, options = {}) {
|
|
|
1383
1422
|
const height = viewport.clientHeight;
|
|
1384
1423
|
viewX = width ? (width - width * viewScale) / 2 : 0;
|
|
1385
1424
|
viewY = height ? (height - height * viewScale) / 2 : 0;
|
|
1425
|
+
delete viewport.dataset.focusedNodeId;
|
|
1386
1426
|
updateViewTransform(animate);
|
|
1387
1427
|
};
|
|
1428
|
+
const focusViewOnNode = (nodeId) => {
|
|
1429
|
+
const position = positions.get(nodeId);
|
|
1430
|
+
if (!position) return;
|
|
1431
|
+
const focused = getRelationshipNodeFocusView(position, {
|
|
1432
|
+
width: viewport.clientWidth,
|
|
1433
|
+
height: viewport.clientHeight
|
|
1434
|
+
}, layout, viewScale);
|
|
1435
|
+
viewScale = focused.scale;
|
|
1436
|
+
viewX = focused.x;
|
|
1437
|
+
viewY = focused.y;
|
|
1438
|
+
viewport.dataset.focusedNodeId = nodeId;
|
|
1439
|
+
updateViewTransform(true);
|
|
1440
|
+
};
|
|
1388
1441
|
const animatePositions = (targets, duration = 650) => {
|
|
1389
1442
|
freezePhysics();
|
|
1390
1443
|
if (animationFrame) window.cancelAnimationFrame(animationFrame);
|
|
@@ -1439,6 +1492,7 @@ export function renderRelationshipMindMap(container, graph, options = {}) {
|
|
|
1439
1492
|
if (!panState || event.pointerId !== panState.pointerId) return;
|
|
1440
1493
|
viewX = panState.viewX + event.clientX - panState.startX;
|
|
1441
1494
|
viewY = panState.viewY + event.clientY - panState.startY;
|
|
1495
|
+
delete viewport.dataset.focusedNodeId;
|
|
1442
1496
|
updateViewTransform();
|
|
1443
1497
|
});
|
|
1444
1498
|
const endPan = (event) => {
|
|
@@ -1460,6 +1514,7 @@ export function renderRelationshipMindMap(container, graph, options = {}) {
|
|
|
1460
1514
|
viewX = pointerX - (pointerX - viewX) * ratio;
|
|
1461
1515
|
viewY = pointerY - (pointerY - viewY) * ratio;
|
|
1462
1516
|
viewScale = nextScale;
|
|
1517
|
+
delete viewport.dataset.focusedNodeId;
|
|
1463
1518
|
updateViewTransform();
|
|
1464
1519
|
}, { passive: false });
|
|
1465
1520
|
viewport.addEventListener("click", (event) => {
|
|
@@ -1467,6 +1522,7 @@ export function renderRelationshipMindMap(container, graph, options = {}) {
|
|
|
1467
1522
|
selectedEdgeId = null;
|
|
1468
1523
|
selectedId = null;
|
|
1469
1524
|
hoveredId = null;
|
|
1525
|
+
delete viewport.dataset.focusedNodeId;
|
|
1470
1526
|
clearGraphHighlight();
|
|
1471
1527
|
});
|
|
1472
1528
|
|
package/dist/public/styles.css
CHANGED
|
@@ -1187,10 +1187,95 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1187
1187
|
.task-auto-run-progress-bar::-webkit-progress-bar { border-radius: inherit; background: color-mix(in srgb, var(--line) 72%, transparent); }
|
|
1188
1188
|
.task-auto-run-progress-bar::-webkit-progress-value { border-radius: inherit; background: var(--accent); transition: width .25s ease; }
|
|
1189
1189
|
.task-auto-run-progress-bar::-moz-progress-bar { border-radius: inherit; background: var(--accent); transition: width .25s ease; }
|
|
1190
|
+
.task-auto-run-progress-bar.is-running { animation: task-auto-run-active 1.8s ease-in-out infinite; }
|
|
1191
|
+
.task-auto-run-progress-bar.is-running::-webkit-progress-value { background: var(--green); }
|
|
1192
|
+
.task-auto-run-progress-bar.is-running::-moz-progress-bar { background: var(--green); }
|
|
1193
|
+
.task-status-cell { width: 116px; white-space: nowrap; }
|
|
1194
|
+
.task-status-badge {
|
|
1195
|
+
--task-status-color: var(--muted);
|
|
1196
|
+
display: inline-flex;
|
|
1197
|
+
align-items: center;
|
|
1198
|
+
gap: 8px;
|
|
1199
|
+
min-height: 27px;
|
|
1200
|
+
padding: 4px 10px;
|
|
1201
|
+
border: 1px solid color-mix(in srgb, var(--task-status-color) 28%, var(--line));
|
|
1202
|
+
border-radius: 999px;
|
|
1203
|
+
background: color-mix(in srgb, var(--task-status-color) 8%, transparent);
|
|
1204
|
+
color: var(--task-status-color);
|
|
1205
|
+
font-size: 11px;
|
|
1206
|
+
font-weight: 600;
|
|
1207
|
+
}
|
|
1208
|
+
.task-status-indicator {
|
|
1209
|
+
position: relative;
|
|
1210
|
+
flex: 0 0 7px;
|
|
1211
|
+
width: 7px;
|
|
1212
|
+
height: 7px;
|
|
1213
|
+
border-radius: 50%;
|
|
1214
|
+
background: currentColor;
|
|
1215
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, currentColor 13%, transparent);
|
|
1216
|
+
}
|
|
1217
|
+
.task-status-indicator::after {
|
|
1218
|
+
content: "";
|
|
1219
|
+
position: absolute;
|
|
1220
|
+
inset: -5px;
|
|
1221
|
+
border: 1px solid currentColor;
|
|
1222
|
+
border-radius: inherit;
|
|
1223
|
+
opacity: 0;
|
|
1224
|
+
}
|
|
1225
|
+
.task-status-badge.is-pending { --task-status-color: color-mix(in srgb, var(--accent) 48%, #b69043); }
|
|
1226
|
+
.task-status-badge.is-pending .task-status-indicator { background: transparent; border: 1px solid currentColor; animation: task-status-waiting 1.7s ease-in-out infinite; }
|
|
1227
|
+
.task-status-badge.is-running {
|
|
1228
|
+
--task-status-color: var(--green);
|
|
1229
|
+
animation: task-status-running-breathe 1.8s ease-in-out infinite;
|
|
1230
|
+
}
|
|
1231
|
+
.task-status-badge.is-running .task-status-indicator::after { animation: task-status-running-ripple 1.8s ease-out infinite; }
|
|
1232
|
+
.task-status-badge.is-review, .task-status-badge.is-completed { --task-status-color: var(--green); }
|
|
1233
|
+
.task-status-badge.is-partial { --task-status-color: var(--accent); }
|
|
1234
|
+
.task-status-badge.is-expired { --task-status-color: color-mix(in srgb, var(--muted) 72%, var(--accent)); border-style: dashed; }
|
|
1235
|
+
.task-status-badge.is-cancelled, .task-status-badge.is-unknown { --task-status-color: var(--muted); }
|
|
1236
|
+
.task-status-badge.is-cancelled .task-status-indicator, .task-status-badge.is-unknown .task-status-indicator { background: transparent; border: 1px solid currentColor; box-shadow: none; }
|
|
1237
|
+
.task-status-badge.is-state-change { animation: task-status-enter .42s cubic-bezier(.22, .8, .32, 1) both; }
|
|
1238
|
+
.task-status-badge.is-running.is-state-change { animation: task-status-enter .42s cubic-bezier(.22, .8, .32, 1) both, task-status-running-breathe 1.8s ease-in-out .42s infinite; }
|
|
1239
|
+
.task-status-badge.is-partial.is-state-change { animation: task-status-attention .46s ease-out both; }
|
|
1240
|
+
.task-progress-cell { width: 128px; }
|
|
1241
|
+
.task-progress { display: grid; grid-template-columns: 36px minmax(58px, 1fr); align-items: center; gap: 8px; min-width: 102px; }
|
|
1242
|
+
.task-progress-value { color: var(--ink); font-family: var(--font-latin), monospace; font-size: 11px; font-variant-numeric: tabular-nums; font-weight: 600; }
|
|
1243
|
+
.task-progress-track { position: relative; display: block; height: 5px; overflow: hidden; border-radius: 999px; background: color-mix(in srgb, var(--line) 72%, transparent); }
|
|
1244
|
+
.task-progress-fill { position: relative; display: block; width: var(--task-progress); height: 100%; overflow: hidden; border-radius: inherit; background: var(--muted); transition: width .35s ease; }
|
|
1245
|
+
.task-progress.is-running .task-progress-fill, .task-progress.is-review .task-progress-fill, .task-progress.is-completed .task-progress-fill { background: var(--green); }
|
|
1246
|
+
.task-progress.is-partial .task-progress-fill { background: var(--accent); }
|
|
1247
|
+
.task-progress.is-running .task-progress-fill::after {
|
|
1248
|
+
content: "";
|
|
1249
|
+
position: absolute;
|
|
1250
|
+
inset: 0;
|
|
1251
|
+
background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--surface) 64%, transparent), transparent);
|
|
1252
|
+
transform: translateX(-100%);
|
|
1253
|
+
animation: task-progress-shimmer 1.55s ease-in-out infinite;
|
|
1254
|
+
}
|
|
1255
|
+
.task-progress.is-pending .task-progress-track::after {
|
|
1256
|
+
content: "";
|
|
1257
|
+
position: absolute;
|
|
1258
|
+
top: 0;
|
|
1259
|
+
bottom: 0;
|
|
1260
|
+
width: 34%;
|
|
1261
|
+
border-radius: inherit;
|
|
1262
|
+
background: color-mix(in srgb, var(--accent) 32%, transparent);
|
|
1263
|
+
animation: task-progress-waiting 1.9s ease-in-out infinite;
|
|
1264
|
+
}
|
|
1265
|
+
@keyframes task-auto-run-active { 0%, 100% { filter: drop-shadow(0 0 0 transparent); opacity: .72; } 50% { filter: drop-shadow(0 0 4px color-mix(in srgb, var(--green) 42%, transparent)); opacity: 1; } }
|
|
1266
|
+
@keyframes task-status-waiting { 0%, 100% { opacity: .45; transform: scale(.74); } 50% { opacity: 1; transform: scale(1); } }
|
|
1267
|
+
@keyframes task-status-running-breathe { 0%, 100% { background: color-mix(in srgb, var(--green) 5%, transparent); box-shadow: 0 0 0 0 transparent; opacity: .72; } 50% { background: color-mix(in srgb, var(--green) 16%, transparent); box-shadow: 0 0 12px color-mix(in srgb, var(--green) 20%, transparent); opacity: 1; } }
|
|
1268
|
+
@keyframes task-status-running-ripple { 0% { opacity: .62; transform: scale(.38); } 70%, 100% { opacity: 0; transform: scale(1.18); } }
|
|
1269
|
+
@keyframes task-status-enter { from { opacity: .25; transform: translateY(3px) scale(.92); } 65% { transform: translateY(0) scale(1.04); } to { opacity: 1; transform: scale(1); } }
|
|
1270
|
+
@keyframes task-status-attention { 0% { opacity: .35; transform: translateX(0); } 35% { transform: translateX(-3px); } 65% { transform: translateX(3px); } 100% { opacity: 1; transform: translateX(0); } }
|
|
1271
|
+
@keyframes task-progress-shimmer { 0% { transform: translateX(-100%); } 58%, 100% { transform: translateX(100%); } }
|
|
1272
|
+
@keyframes task-progress-waiting { 0% { left: -34%; opacity: .32; } 50% { opacity: .74; } 100% { left: 100%; opacity: .32; } }
|
|
1190
1273
|
.task-row-actions { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
1191
1274
|
.task-detail { display: grid; gap: 12px; }
|
|
1192
1275
|
.task-detail p, .task-detail div { margin: 0; font-size: 12px; line-height: 1.55; }
|
|
1193
1276
|
.task-detail ul { margin: 6px 0 0; padding-left: 18px; }
|
|
1277
|
+
.task-detail-overview { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 22px; padding: 16px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-soft); }
|
|
1278
|
+
.task-detail-overview > div, .task-detail-overview > p:first-child, .task-detail-overview > p:last-child { grid-column: 1 / -1; }
|
|
1194
1279
|
.task-detail-result {
|
|
1195
1280
|
max-height: 220px;
|
|
1196
1281
|
overflow: auto;
|
|
@@ -1202,6 +1287,67 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1202
1287
|
font-size: 10px;
|
|
1203
1288
|
white-space: pre-wrap;
|
|
1204
1289
|
}
|
|
1290
|
+
.task-trace-section { display: grid; gap: 16px; min-width: 0; margin-top: 6px; }
|
|
1291
|
+
.task-trace-heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; padding-top: 8px; }
|
|
1292
|
+
.task-trace-heading h3 { margin: 3px 0 0; font-size: 19px; font-weight: 600; }
|
|
1293
|
+
.task-trace-heading p { max-width: 500px; color: var(--muted); text-align: right; }
|
|
1294
|
+
.task-trace-metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); overflow: hidden; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-soft); }
|
|
1295
|
+
.task-trace-metrics > div { display: grid; gap: 2px; padding: 13px 15px; border-right: 1px solid var(--line); }
|
|
1296
|
+
.task-trace-metrics > div:last-child { border-right: 0; }
|
|
1297
|
+
.task-trace-metrics strong { color: var(--accent-dark); font-family: var(--font-latin), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 17px; font-variant-numeric: tabular-nums; }
|
|
1298
|
+
.task-trace-metrics span { color: var(--muted); font-size: 9px; letter-spacing: .04em; }
|
|
1299
|
+
.task-trace-calls { display: grid; gap: 10px; }
|
|
1300
|
+
.task-trace-call { overflow: hidden; border: 1px solid var(--line); border-radius: 7px; background: var(--surface); }
|
|
1301
|
+
.task-trace-call > summary { display: grid; grid-template-columns: 30px minmax(0, 1fr) max-content; gap: 11px; align-items: center; padding: 13px 15px; cursor: pointer; list-style: none; }
|
|
1302
|
+
.task-trace-call > summary::-webkit-details-marker, .task-trace-prompt > summary::-webkit-details-marker { display: none; }
|
|
1303
|
+
.task-trace-call > summary:hover, .task-trace-call > summary:focus-visible { background: var(--surface-soft); outline: none; }
|
|
1304
|
+
.task-trace-call > summary > span:nth-child(2) { display: grid; min-width: 0; gap: 2px; }
|
|
1305
|
+
.task-trace-call > summary small { overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
|
|
1306
|
+
.task-trace-call-index, .task-trace-round-index { display: grid; place-items: center; width: 28px; height: 28px; border: 1px solid color-mix(in srgb, var(--accent) 42%, var(--line)); border-radius: 50%; background: color-mix(in srgb, var(--accent) 9%, var(--surface)); color: var(--accent-dark); font-family: var(--font-latin), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 10px; font-weight: 700; }
|
|
1307
|
+
.task-trace-status { padding: 3px 8px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font-size: 9px; }
|
|
1308
|
+
.task-trace-call.is-completed .task-trace-status { border-color: color-mix(in srgb, var(--green) 42%, var(--line)); color: var(--green); }
|
|
1309
|
+
.task-trace-call-body { display: grid; gap: 13px; padding: 0 15px 16px 54px; border-top: 1px solid var(--line); }
|
|
1310
|
+
.task-trace-call-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; padding-top: 12px; color: var(--muted); font-size: 9px !important; }
|
|
1311
|
+
.task-trace-call-meta code { overflow-wrap: anywhere; }
|
|
1312
|
+
.task-trace-initial, .task-trace-prompt, .task-trace-response, .task-trace-tools > details, .task-trace-request-meta { border: 1px solid var(--line); border-radius: 5px; background: var(--surface-soft); }
|
|
1313
|
+
.task-trace-initial > summary, .task-trace-prompt > summary, .task-trace-response > summary, .task-trace-tools > details > summary, .task-trace-request-meta > summary { padding: 9px 11px; color: var(--muted); cursor: pointer; font-size: 10px; font-weight: 600; }
|
|
1314
|
+
.task-trace-initial[open] > summary, .task-trace-prompt[open] > summary, .task-trace-response[open] > summary, .task-trace-tools > details[open] > summary, .task-trace-request-meta[open] > summary { border-bottom: 1px solid var(--line); color: var(--ink); }
|
|
1315
|
+
.task-trace-messages { display: grid; gap: 8px; padding: 10px; }
|
|
1316
|
+
.task-trace-message { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-left: 3px solid var(--line-strong); border-radius: 4px; background: var(--surface); }
|
|
1317
|
+
.task-trace-message.is-system { border-left-color: var(--accent); }
|
|
1318
|
+
.task-trace-message.is-user { border-left-color: color-mix(in srgb, var(--accent) 56%, #9d7a45); }
|
|
1319
|
+
.task-trace-message.is-assistant { border-left-color: var(--green); }
|
|
1320
|
+
.task-trace-message header { display: flex; justify-content: space-between; gap: 12px; padding: 7px 9px; border-bottom: 1px solid var(--line); color: var(--muted); }
|
|
1321
|
+
.task-trace-message header span { color: var(--ink); font-size: 10px; font-weight: 600; }
|
|
1322
|
+
.task-trace-message header small { font-family: var(--font-latin), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 8px; font-variant-numeric: tabular-nums; }
|
|
1323
|
+
.task-trace-message pre, .task-trace-response pre, .task-trace-tools pre, .task-trace-request-meta pre { max-height: 360px; overflow: auto; margin: 0; padding: 10px; background: transparent; color: var(--ink); font-family: var(--font-latin), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 10px; line-height: 1.55; tab-size: 2; white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
1324
|
+
.task-trace-message > details { margin: 0 9px 9px; border: 1px solid var(--line); border-radius: 4px; }
|
|
1325
|
+
.task-trace-message > details summary { padding: 6px 8px; cursor: pointer; color: var(--muted); font-size: 9px; }
|
|
1326
|
+
.task-trace-message > small { display: block; padding: 0 9px 9px; color: var(--muted); font-size: 8px; }
|
|
1327
|
+
.task-trace-rounds { display: grid; gap: 18px; }
|
|
1328
|
+
.task-trace-round { position: relative; display: grid; gap: 10px; min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-soft); }
|
|
1329
|
+
.task-trace-round-header { display: grid; grid-template-columns: 28px minmax(0, 1fr) max-content; gap: 10px; align-items: center; }
|
|
1330
|
+
.task-trace-round-header > div { display: grid; gap: 2px; }
|
|
1331
|
+
.task-trace-round-header small, .task-trace-round-header time { color: var(--muted); font-size: 9px; }
|
|
1332
|
+
.task-trace-flow { display: flex; align-items: center; gap: 7px; padding-left: 38px; color: var(--muted); font-size: 9px !important; }
|
|
1333
|
+
.task-trace-flow span { padding: 3px 7px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface); }
|
|
1334
|
+
.task-trace-flow i { color: var(--line-strong); font-style: normal; }
|
|
1335
|
+
.task-trace-attempts { display: grid; gap: 8px; }
|
|
1336
|
+
.task-trace-attempt { display: grid; gap: 8px; min-width: 0; padding: 10px; border-left: 2px solid var(--line-strong); background: var(--surface); }
|
|
1337
|
+
.task-trace-attempt.is-completed { border-left-color: var(--green); }
|
|
1338
|
+
.task-trace-attempt.is-failed { border-left-color: var(--accent); }
|
|
1339
|
+
.task-trace-attempt > header { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; }
|
|
1340
|
+
.task-trace-attempt > header span, .task-trace-attempt > header small { color: var(--muted); font-size: 9px; }
|
|
1341
|
+
.task-trace-attempt > header small { margin-left: auto; }
|
|
1342
|
+
.task-trace-tools { display: grid; gap: 7px; }
|
|
1343
|
+
.task-trace-tool-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
1344
|
+
.task-trace-tool-grid > div + div { border-left: 1px solid var(--line); }
|
|
1345
|
+
.task-trace-tool-grid small { display: block; padding: 8px 10px 0; color: var(--muted); font-size: 8px; }
|
|
1346
|
+
.task-trace-failure { max-height: 220px; overflow: auto; margin: 0; padding: 9px 10px; border: 1px solid color-mix(in srgb, var(--accent) 46%, var(--line)); border-radius: 4px; background: color-mix(in srgb, var(--accent) 7%, var(--surface)); color: var(--accent-dark); font-family: var(--font-latin), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 10px; white-space: pre-wrap; }
|
|
1347
|
+
.task-trace-empty { padding: 10px; color: var(--muted); font-size: 10px !important; }
|
|
1348
|
+
.task-trace-unavailable { padding: 18px; border: 1px dashed var(--line-strong); border-radius: 6px; background: var(--surface-soft); }
|
|
1349
|
+
.task-trace-unavailable strong { font-size: 12px; }
|
|
1350
|
+
.task-trace-unavailable p { margin-top: 5px; color: var(--muted); }
|
|
1205
1351
|
.config-section-header { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 14px; }
|
|
1206
1352
|
.config-section-header h2 { margin: 0 0 6px; font-size: 18px; font-weight: 600; }
|
|
1207
1353
|
.config-section-header p { margin: 0; color: var(--muted); font-size: 11px; }
|
|
@@ -1365,7 +1511,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1365
1511
|
white-space: nowrap;
|
|
1366
1512
|
pointer-events: none;
|
|
1367
1513
|
color: var(--relationship-node-label);
|
|
1368
|
-
font-size: 9px;
|
|
1514
|
+
font-size: var(--relationship-node-label-font-size, 9px);
|
|
1369
1515
|
font-weight: 400;
|
|
1370
1516
|
letter-spacing: .01em;
|
|
1371
1517
|
text-shadow: var(--relationship-node-text-shadow);
|
|
@@ -1715,6 +1861,8 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1715
1861
|
|
|
1716
1862
|
.dialog { width: min(570px, 92vw); max-height: 88vh; border: 1px solid var(--line); border-radius: 5px; padding: 0; background: var(--panel); box-shadow: var(--shadow); }
|
|
1717
1863
|
.wide-dialog { width: min(800px, 92vw); }
|
|
1864
|
+
.trace-dialog { width: min(1180px, 94vw); }
|
|
1865
|
+
.trace-dialog .dialog-fields { max-height: 68vh; }
|
|
1718
1866
|
.dialog::backdrop { background: rgba(34,30,25,.42); backdrop-filter: blur(3px); }
|
|
1719
1867
|
.dialog-header { display: flex; justify-content: space-between; align-items: flex-start; padding: 22px 24px 16px; border-bottom: 1px solid var(--line); }
|
|
1720
1868
|
.dialog-header h2 { margin: 0; font-size: 23px; font-weight: 500; }
|
|
@@ -1823,6 +1971,40 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1823
1971
|
.member-chip input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
1824
1972
|
.checkbox-field { display: flex !important; align-items: center; grid-template-columns: 18px 1fr; }
|
|
1825
1973
|
.checkbox-field input { width: 16px; }
|
|
1974
|
+
.dialog-submit-status {
|
|
1975
|
+
display: grid;
|
|
1976
|
+
gap: 9px;
|
|
1977
|
+
padding: 12px 24px 4px;
|
|
1978
|
+
border-top: 1px solid color-mix(in srgb, var(--green) 24%, var(--line));
|
|
1979
|
+
background: color-mix(in srgb, var(--green) 5%, var(--panel));
|
|
1980
|
+
color: var(--green);
|
|
1981
|
+
font-size: 10px;
|
|
1982
|
+
font-weight: 600;
|
|
1983
|
+
}
|
|
1984
|
+
.dialog-submit-status.hidden { display: none; }
|
|
1985
|
+
.dialog-submit-status > span { display: flex; align-items: center; gap: 8px; }
|
|
1986
|
+
.dialog-submit-status > span::before {
|
|
1987
|
+
flex: 0 0 auto;
|
|
1988
|
+
width: 7px;
|
|
1989
|
+
height: 7px;
|
|
1990
|
+
border-radius: 50%;
|
|
1991
|
+
background: var(--green);
|
|
1992
|
+
box-shadow: 0 0 0 0 color-mix(in srgb, var(--green) 32%, transparent);
|
|
1993
|
+
content: "";
|
|
1994
|
+
animation: dialog-submit-pulse 1.45s ease-in-out infinite;
|
|
1995
|
+
}
|
|
1996
|
+
.dialog-submit-progress { height: 3px; overflow: hidden; border-radius: 2px; background: color-mix(in srgb, var(--green) 16%, transparent); }
|
|
1997
|
+
.dialog-submit-progress > span {
|
|
1998
|
+
display: block;
|
|
1999
|
+
width: 36%;
|
|
2000
|
+
height: 100%;
|
|
2001
|
+
border-radius: inherit;
|
|
2002
|
+
background: var(--green);
|
|
2003
|
+
animation: dialog-submit-progress 1.35s ease-in-out infinite;
|
|
2004
|
+
}
|
|
2005
|
+
#dynamic-form.is-submitting .dialog-fields { opacity: .68; pointer-events: none; transition: opacity .15s ease; }
|
|
2006
|
+
@keyframes dialog-submit-pulse { 0%, 100% { opacity: .48; transform: scale(.78); } 50% { box-shadow: 0 0 0 5px transparent; opacity: 1; transform: scale(1); } }
|
|
2007
|
+
@keyframes dialog-submit-progress { from { transform: translateX(-110%); } to { transform: translateX(280%); } }
|
|
1826
2008
|
.dialog-actions { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 24px 20px; }
|
|
1827
2009
|
.dialog-actions .reset-button { margin-right: auto; }
|
|
1828
2010
|
.import-mode-dialog { width: min(560px, calc(100vw - 32px)); }
|
|
@@ -1859,6 +2041,11 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1859
2041
|
.module-pagination span { color: var(--muted); font-size: 10px; }
|
|
1860
2042
|
.module-pagination button { min-width: 58px; min-height: 28px; padding: 5px 9px; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--muted); font-size: 10px; }
|
|
1861
2043
|
.module-pagination button:disabled { cursor: default; opacity: .46; }
|
|
2044
|
+
.pagination-settings-fieldset { display: grid; gap: 10px; margin: 8px 0 0; padding: 14px; border: 1px solid var(--line); border-radius: 6px; }
|
|
2045
|
+
.pagination-settings-fieldset legend { padding: 0 6px; color: var(--text); font-weight: 700; }
|
|
2046
|
+
.pagination-settings-fieldset > small { color: var(--muted); }
|
|
2047
|
+
.pagination-settings-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
|
|
2048
|
+
.pagination-settings-grid label { display: grid; gap: 6px; min-width: 0; }
|
|
1862
2049
|
.entity-editor-view { position: fixed; z-index: 700; inset: 0; overflow: hidden; background: var(--panel); color: var(--ink); }
|
|
1863
2050
|
.entity-editor-view.hidden, .entity-editor-page.hidden { display: none; }
|
|
1864
2051
|
.entity-editor-page { width: 100%; height: 100%; min-height: 0; }
|
|
@@ -2357,7 +2544,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
2357
2544
|
.settings-layout-toggle, .module-layout-toggle { width: 100%; }
|
|
2358
2545
|
.settings-layout-toggle button { flex: 1; }
|
|
2359
2546
|
|
|
2360
|
-
.dialog, .wide-dialog, .account-dialog {
|
|
2547
|
+
.dialog, .wide-dialog, .trace-dialog, .account-dialog {
|
|
2361
2548
|
width: calc(100vw - 20px);
|
|
2362
2549
|
max-width: calc(100vw - 20px);
|
|
2363
2550
|
max-height: calc(100dvh - 20px);
|
|
@@ -2367,6 +2554,25 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
2367
2554
|
.dialog-header { padding: 14px 16px 12px; }
|
|
2368
2555
|
.dialog-header h2 { font-size: 20px; }
|
|
2369
2556
|
.dialog-fields, .appearance-grid, .access-dialog-body, .account-settings-body, .versions-list, .entity-history-list { padding-inline: 16px; }
|
|
2557
|
+
.task-detail-overview { grid-template-columns: minmax(0, 1fr); padding: 12px; }
|
|
2558
|
+
.task-detail-overview > * { grid-column: 1 !important; }
|
|
2559
|
+
.task-trace-heading { align-items: start; flex-direction: column; gap: 5px; }
|
|
2560
|
+
.task-trace-heading p { text-align: left; }
|
|
2561
|
+
.task-trace-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
2562
|
+
.task-trace-metrics > div { border-bottom: 1px solid var(--line); }
|
|
2563
|
+
.task-trace-metrics > div:nth-child(2n) { border-right: 0; }
|
|
2564
|
+
.task-trace-metrics > div:last-child { grid-column: 1 / -1; border-bottom: 0; }
|
|
2565
|
+
.task-trace-call > summary { grid-template-columns: 28px minmax(0, 1fr); }
|
|
2566
|
+
.task-trace-call > summary .task-trace-status { grid-column: 2; justify-self: start; }
|
|
2567
|
+
.task-trace-call-body { padding: 0 10px 12px; }
|
|
2568
|
+
.task-trace-round { padding: 10px; }
|
|
2569
|
+
.task-trace-round-header { grid-template-columns: 28px minmax(0, 1fr); }
|
|
2570
|
+
.task-trace-round-header time { grid-column: 2; }
|
|
2571
|
+
.task-trace-flow { overflow-x: auto; padding-left: 0; white-space: nowrap; }
|
|
2572
|
+
.task-trace-attempt > header small { width: 100%; margin-left: 0; }
|
|
2573
|
+
.task-trace-tool-grid { grid-template-columns: minmax(0, 1fr); }
|
|
2574
|
+
.task-trace-tool-grid > div + div { border-top: 1px solid var(--line); border-left: 0; }
|
|
2575
|
+
.dialog-submit-status { padding: 10px 16px 4px; }
|
|
2370
2576
|
.dialog-actions { flex-wrap: wrap; padding: 12px 16px 16px; }
|
|
2371
2577
|
.dialog-actions > button { flex: 1 1 120px; }
|
|
2372
2578
|
.search-form { grid-template-columns: minmax(0, 1fr); }
|
|
@@ -2415,4 +2621,5 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
2415
2621
|
|
|
2416
2622
|
@media (prefers-reduced-motion: reduce) {
|
|
2417
2623
|
*, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
|
|
2624
|
+
.dialog-submit-progress > span { width: 100%; transform: none; }
|
|
2418
2625
|
}
|