ec-web 0.0.28 → 0.0.29
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/server.js +21 -3
- package/dist/sources/basic-settings.js +4 -3
- package/dist/sources/msg.js +9 -5
- package/dist/sources/relation-roles.js +5 -0
- package/dist/sources/role-definitions.js +7 -0
- package/dist/sources/session-origin.js +2 -2
- package/dist/sources/triggers.js +2 -12
- package/dist/static/app.js +728 -144
- package/dist/static/basic-settings.js +10 -9
- package/dist/static/index.html +33 -12
- package/dist/static/style.css +613 -38
- package/package.json +1 -1
package/dist/static/style.css
CHANGED
|
@@ -326,6 +326,21 @@ tr:hover td { background: var(--bg2); }
|
|
|
326
326
|
.col-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 12px; color: var(--dim); font-size: 11px; text-transform: uppercase; position: sticky; top: 0; background: var(--bg); border-bottom: 1px solid var(--border); }
|
|
327
327
|
.col-count { color: var(--fg); font-variant-numeric: tabular-nums; }
|
|
328
328
|
.msg-peers .list-item .name { display: flex; align-items: center; gap: 4px; min-width: 0; }
|
|
329
|
+
.msg-aids-list { display: block; }
|
|
330
|
+
.msg-tree-view { display: none; }
|
|
331
|
+
.msg-tree-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 12px; color: var(--dim); font-size: 11px; text-transform: uppercase; position: sticky; top: 0; background: var(--bg); border-bottom: 1px solid var(--border); z-index: 1; }
|
|
332
|
+
.msg-tree-agent { border-bottom: 1px solid var(--border); }
|
|
333
|
+
.msg-tree-agent-toggle { display: flex; align-items: flex-start; gap: 7px; width: 100%; padding: 9px 10px; border: 0; background: transparent; color: var(--fg); text-align: left; cursor: pointer; font: inherit; }
|
|
334
|
+
.msg-tree-agent-toggle:hover { background: var(--bg2); }
|
|
335
|
+
.msg-tree-agent.sel > .msg-tree-agent-toggle { background: var(--bg3); color: var(--fg); }
|
|
336
|
+
.msg-tree-chevron { width: 14px; flex: 0 0 14px; color: var(--dim); line-height: 1.4; text-align: center; }
|
|
337
|
+
.msg-tree-agent-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
|
|
338
|
+
.msg-tree-agent-main .name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
339
|
+
.msg-tree-agent-main .sub { color: var(--dim); font-size: 11px; line-height: 1.35; }
|
|
340
|
+
.msg-tree-chats { border-top: 1px solid var(--border); }
|
|
341
|
+
.msg-tree-chat { padding-left: 31px; background: color-mix(in srgb, var(--bg) 72%, var(--bg2)); }
|
|
342
|
+
.msg-tree-chat:hover { background: var(--bg2); }
|
|
343
|
+
.msg-tree-empty { padding: 10px 14px 10px 31px; color: var(--dim); font-size: 11px; }
|
|
329
344
|
.msg-peer-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
330
345
|
.msg-partition-mark {
|
|
331
346
|
display: inline-flex; align-items: center; flex-shrink: 0; height: 18px; padding: 0 5px;
|
|
@@ -385,12 +400,18 @@ tr:hover td { background: var(--bg2); }
|
|
|
385
400
|
[data-theme="dark"] .msg-channel-daemon,
|
|
386
401
|
[data-theme="dark"] .msg-channel-other { --msg-channel-color: #a8b6c6; }
|
|
387
402
|
|
|
388
|
-
.msg-session-header { height:
|
|
403
|
+
.sess-header.msg-session-header { height: auto; min-height: 0; padding: 0; box-sizing: border-box; z-index: 2; }
|
|
389
404
|
.msg-session-header .sh-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
390
|
-
.msg-session-context-row { display:
|
|
391
|
-
.msg-session-id-row { display: flex; align-items:
|
|
392
|
-
.msg-session-id {
|
|
393
|
-
.msg-session-
|
|
405
|
+
.msg-session-context-row { display: block; min-width: 0; }
|
|
406
|
+
.msg-session-id-row { display: flex; align-items: center; gap: 10px; min-width: 0; min-height: 32px; padding: 0 12px; cursor: pointer; user-select: none; }
|
|
407
|
+
.msg-session-id-row:hover { background: var(--bg3); }
|
|
408
|
+
.msg-session-id-row:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
409
|
+
.msg-session-id { flex: 1 1 auto; min-width: 0; color: var(--fg); font-family: ui-monospace, "SF Mono", Consolas, monospace; font-size: 12px; line-height: 1.35; white-space: normal; overflow-wrap: anywhere; word-break: break-word; }
|
|
410
|
+
.msg-session-toggle { display: inline-grid; place-items: center; flex: 0 0 24px; width: 24px; height: 24px; margin-left: auto; color: var(--dim); font-size: 16px; line-height: 1; pointer-events: none; }
|
|
411
|
+
.msg-session-toggle-icon { display: block; }
|
|
412
|
+
.msg-session-grid { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 16px; min-width: 0; padding: 0 12px 8px; cursor: pointer; user-select: none; }
|
|
413
|
+
.msg-session-grid:hover { background: var(--bg3); }
|
|
414
|
+
.msg-session-grid:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
394
415
|
.msg-session-stat { display: flex; align-items: baseline; min-width: 0; gap: 8px; }
|
|
395
416
|
.msg-session-label { color: var(--dim); font-size: 10px; line-height: 1.2; flex-shrink: 0; }
|
|
396
417
|
.msg-session-value { overflow: hidden; color: var(--fg); font-size: 12px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
|
|
@@ -438,6 +459,14 @@ tr:hover td { background: var(--bg2); }
|
|
|
438
459
|
|
|
439
460
|
/* 会话头 */
|
|
440
461
|
.sess-header { position: sticky; top: 0; background: var(--bg2); border-bottom: 1px solid var(--border); padding: 12px 20px; z-index: 1; }
|
|
462
|
+
.sess-header-collapsible { padding: 0; }
|
|
463
|
+
.sess-header-toggle-row { display: flex; align-items: center; gap: 10px; min-width: 0; min-height: 42px; padding: 8px 20px; cursor: pointer; user-select: none; }
|
|
464
|
+
.sess-header-toggle-row:hover, .sess-header-details:hover { background: var(--bg3); }
|
|
465
|
+
.sess-header-toggle-row:focus-visible, .sess-header-details:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
466
|
+
.sess-header-toggle-row .sh-title { flex: 1; min-width: 0; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
467
|
+
.sess-header-toggle { display: inline-grid; place-items: center; flex: 0 0 24px; width: 24px; height: 24px; margin-left: auto; color: var(--dim); font-size: 16px; line-height: 1; pointer-events: none; }
|
|
468
|
+
.sess-header-toggle-icon { display: block; }
|
|
469
|
+
.sess-header-details { padding: 0 20px 12px; cursor: pointer; user-select: none; }
|
|
441
470
|
.sh-title { font-size: 15px; font-weight: 600; margin-bottom: 8px; }
|
|
442
471
|
.sh-title-row { display: flex; align-items: center; height: 24px; min-width: 0; }
|
|
443
472
|
.sh-title-row .sh-title { flex: 1; min-width: 0; margin-bottom: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
@@ -976,14 +1005,35 @@ a.ctrl-btn { display: inline-flex; align-items: center; text-decoration: none; l
|
|
|
976
1005
|
border-bottom: 1px solid var(--border);
|
|
977
1006
|
background: var(--bg2);
|
|
978
1007
|
}
|
|
979
|
-
.agent-ops-cell {
|
|
1008
|
+
.agent-ops-cell {
|
|
1009
|
+
position: sticky;
|
|
1010
|
+
right: 0;
|
|
1011
|
+
z-index: 2;
|
|
1012
|
+
width: 1%;
|
|
1013
|
+
min-width: 92px;
|
|
1014
|
+
white-space: nowrap;
|
|
1015
|
+
vertical-align: middle;
|
|
1016
|
+
background: var(--bg);
|
|
1017
|
+
box-shadow: -1px 0 0 var(--border);
|
|
1018
|
+
}
|
|
1019
|
+
#view-agents .agents-table th:last-child {
|
|
1020
|
+
position: sticky;
|
|
1021
|
+
right: 0;
|
|
1022
|
+
z-index: 4;
|
|
1023
|
+
width: 1%;
|
|
1024
|
+
min-width: 92px;
|
|
1025
|
+
background: var(--bg2);
|
|
1026
|
+
box-shadow: -1px 0 0 var(--border);
|
|
1027
|
+
}
|
|
1028
|
+
#view-agents .agents-table td.agent-ops-cell:has(.ops-more.open) { z-index: 5; }
|
|
1029
|
+
#view-agents .agents-table tr:hover td.agent-ops-cell { background: var(--bg2); }
|
|
980
1030
|
|
|
981
1031
|
/* disabled 行淡化 */
|
|
982
1032
|
tr.ag-disabled td { opacity: .5; }
|
|
983
1033
|
tr.ag-disabled .ag-name { color: var(--dim); }
|
|
984
1034
|
|
|
985
1035
|
/* 操作区:主按钮 + ··· 下拉 */
|
|
986
|
-
.agent-ops { display: flex; align-items: center; gap: 5px; }
|
|
1036
|
+
.agent-ops { display: inline-flex; align-items: center; gap: 5px; min-width: max-content; }
|
|
987
1037
|
.agent-ops .ctrl-btn { padding: 2px 9px; font-size: 11px; }
|
|
988
1038
|
.ops-enable { color: var(--green) !important; border-color: var(--green) !important; }
|
|
989
1039
|
.ops-clear-queue { color: var(--orange) !important; border-color: var(--orange) !important; }
|
|
@@ -1081,7 +1131,7 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1081
1131
|
|
|
1082
1132
|
/* 两行一个 agent:主行 + 信息行 */
|
|
1083
1133
|
#view-agents tr.ag-main > td { border-bottom: none; padding-bottom: 3px; }
|
|
1084
|
-
#view-agents tr.ag-sub > td { padding-top: 0; padding-bottom: 9px; color: var(--dim); }
|
|
1134
|
+
#view-agents tr.ag-sub > td { padding-top: 0; padding-bottom: 9px; color: var(--dim); border-bottom: none; }
|
|
1085
1135
|
#view-agents tr.ag-main:hover td, #view-agents tr.ag-sub:hover td { background: var(--bg2); }
|
|
1086
1136
|
|
|
1087
1137
|
/* AID 单元:状态点 + 显示名(主) + aid(次,dim) */
|
|
@@ -1658,8 +1708,6 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1658
1708
|
/* 渠道标:非 AUN 渠道才渲染,用冷色和消息标记区分开 */
|
|
1659
1709
|
.ag-msg .mtag-channel { color: var(--blue); font-weight: 600; }
|
|
1660
1710
|
.ag-msg .mtags { color: var(--magenta); font-size: 10.5px; }
|
|
1661
|
-
.ag-path { font-family: ui-monospace, Consolas, monospace; font-size: 10.5px; color: var(--dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 70vw; }
|
|
1662
|
-
|
|
1663
1711
|
/* 消息 tooltip(JS 定位的单例浮层)*/
|
|
1664
1712
|
.msg-tip-src { display: none; }
|
|
1665
1713
|
.msg-tip { display: none; position: fixed; top: 0; left: 0; z-index: 200; background: var(--bg2); border: 1px solid var(--border); border-radius: 8px; box-shadow: 0 4px 16px rgba(0,0,0,.2); padding: 8px 12px; min-width: 300px; max-width: 600px; white-space: normal; }
|
|
@@ -1745,6 +1793,11 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1745
1793
|
.trig-table-col .trig-prompt { max-width: 240px; overflow: hidden; text-overflow: ellipsis; }
|
|
1746
1794
|
.trig-table-col tr.trig-disabled td:not(:last-child) { color: var(--dim); }
|
|
1747
1795
|
.trig-table-col tr.trig-disabled td:last-child { color: var(--fg); }
|
|
1796
|
+
.trig-table-col .trig-id-col,
|
|
1797
|
+
.trig-table-col .trig-subscription-col,
|
|
1798
|
+
.trig-table-col .trig-target-channel-col,
|
|
1799
|
+
.trig-table-col .trig-channel-id-col,
|
|
1800
|
+
.trig-table-col .trig-channel-type-col { display: none !important; }
|
|
1748
1801
|
.trig-badge { display: inline-block; padding: 1px 7px; border-radius: 9px; font-size: 11px; border: 1px solid transparent; white-space: nowrap; }
|
|
1749
1802
|
.trig-badge-active { color: var(--green, #3fb950); border-color: var(--green, #3fb950); }
|
|
1750
1803
|
.trig-badge-disabled { color: var(--dim); border-color: var(--border); }
|
|
@@ -1788,6 +1841,12 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1788
1841
|
.trig-history-drawer {
|
|
1789
1842
|
width: min(980px, 100vw);
|
|
1790
1843
|
}
|
|
1844
|
+
.trig-history-actions { align-items: center; }
|
|
1845
|
+
.trig-history-count {
|
|
1846
|
+
margin-right: auto;
|
|
1847
|
+
color: var(--dim);
|
|
1848
|
+
font-size: 12px;
|
|
1849
|
+
}
|
|
1791
1850
|
.trig-history-content {
|
|
1792
1851
|
display: grid;
|
|
1793
1852
|
grid-template-columns: 300px minmax(0, 1fr);
|
|
@@ -1797,31 +1856,24 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1797
1856
|
}
|
|
1798
1857
|
.trig-history-list-pane {
|
|
1799
1858
|
min-width: 0;
|
|
1859
|
+
min-height: 0;
|
|
1800
1860
|
overflow-y: auto;
|
|
1801
1861
|
border-right: 1px solid var(--border);
|
|
1802
1862
|
background: var(--bg);
|
|
1803
1863
|
}
|
|
1804
|
-
.trig-history-pane-title {
|
|
1805
|
-
position: sticky;
|
|
1806
|
-
top: 0;
|
|
1807
|
-
z-index: 1;
|
|
1808
|
-
padding: 10px 12px;
|
|
1809
|
-
border-bottom: 1px solid var(--border);
|
|
1810
|
-
background: var(--bg2);
|
|
1811
|
-
color: var(--dim);
|
|
1812
|
-
font-size: 11px;
|
|
1813
|
-
font-weight: 700;
|
|
1814
|
-
}
|
|
1815
1864
|
.trig-history-list {
|
|
1816
1865
|
display: flex;
|
|
1817
1866
|
flex-direction: column;
|
|
1818
1867
|
}
|
|
1868
|
+
.trig-history-entry {
|
|
1869
|
+
border-bottom: 1px solid var(--border);
|
|
1870
|
+
}
|
|
1819
1871
|
.trig-history-item {
|
|
1820
1872
|
width: 100%;
|
|
1821
1873
|
min-width: 0;
|
|
1822
1874
|
padding: 10px 12px;
|
|
1823
1875
|
border: 0;
|
|
1824
|
-
border-bottom:
|
|
1876
|
+
border-bottom: 0;
|
|
1825
1877
|
border-left: 3px solid transparent;
|
|
1826
1878
|
background: transparent;
|
|
1827
1879
|
color: var(--fg);
|
|
@@ -1843,6 +1895,14 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1843
1895
|
font-size: 12px;
|
|
1844
1896
|
font-variant-numeric: tabular-nums;
|
|
1845
1897
|
}
|
|
1898
|
+
.trig-history-chevron {
|
|
1899
|
+
margin-left: auto;
|
|
1900
|
+
color: var(--dim);
|
|
1901
|
+
font-size: 18px;
|
|
1902
|
+
line-height: 1;
|
|
1903
|
+
transition: transform .15s ease;
|
|
1904
|
+
}
|
|
1905
|
+
.trig-history-entry.expanded .trig-history-chevron { transform: rotate(90deg); color: var(--accent); }
|
|
1846
1906
|
.trig-history-item-meta {
|
|
1847
1907
|
display: flex;
|
|
1848
1908
|
gap: 5px 10px;
|
|
@@ -1856,15 +1916,6 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1856
1916
|
text-overflow: ellipsis;
|
|
1857
1917
|
white-space: nowrap;
|
|
1858
1918
|
}
|
|
1859
|
-
.trig-history-item-preview {
|
|
1860
|
-
margin-top: 6px;
|
|
1861
|
-
overflow: hidden;
|
|
1862
|
-
color: var(--dim);
|
|
1863
|
-
font-size: 11px;
|
|
1864
|
-
line-height: 1.35;
|
|
1865
|
-
text-overflow: ellipsis;
|
|
1866
|
-
white-space: nowrap;
|
|
1867
|
-
}
|
|
1868
1919
|
.trig-run-status {
|
|
1869
1920
|
flex-shrink: 0;
|
|
1870
1921
|
padding: 1px 6px;
|
|
@@ -1881,12 +1932,24 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1881
1932
|
.trig-run-status-skipped { color: var(--orange); border-color: color-mix(in srgb, var(--orange) 55%, var(--border)); }
|
|
1882
1933
|
.trig-run-status-failed { color: var(--red); border-color: color-mix(in srgb, var(--red) 55%, var(--border)); }
|
|
1883
1934
|
.trig-run-status-dry-run { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 55%, var(--border)); }
|
|
1884
|
-
.trig-history-detail {
|
|
1935
|
+
.trig-history-detail-pane {
|
|
1885
1936
|
min-width: 0;
|
|
1937
|
+
min-height: 0;
|
|
1886
1938
|
overflow-y: auto;
|
|
1887
|
-
padding: 16px 18px 24px;
|
|
1888
1939
|
background: var(--bg2);
|
|
1889
1940
|
}
|
|
1941
|
+
.trig-history-detail,
|
|
1942
|
+
.trig-history-inline-detail {
|
|
1943
|
+
min-width: 0;
|
|
1944
|
+
padding: 14px 16px 22px;
|
|
1945
|
+
border-top: 1px solid var(--border);
|
|
1946
|
+
background: var(--bg2);
|
|
1947
|
+
}
|
|
1948
|
+
.trig-history-inline-detail { display: none; }
|
|
1949
|
+
.trig-history-detail-pane > .trig-history-detail {
|
|
1950
|
+
min-height: 100%;
|
|
1951
|
+
border-top: 0;
|
|
1952
|
+
}
|
|
1890
1953
|
.trig-history-detail-title {
|
|
1891
1954
|
display: flex;
|
|
1892
1955
|
align-items: center;
|
|
@@ -2119,16 +2182,27 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
2119
2182
|
.trig-edit-grid .ag-edit-field-wide {
|
|
2120
2183
|
grid-column: 1 / -1;
|
|
2121
2184
|
}
|
|
2122
|
-
@media (
|
|
2185
|
+
@media (orientation: portrait) {
|
|
2186
|
+
.trig-history-drawer { width: 100vw; }
|
|
2123
2187
|
.trig-history-backdrop { justify-content: flex-start; }
|
|
2124
2188
|
.trig-history-content {
|
|
2125
|
-
|
|
2126
|
-
|
|
2189
|
+
display: flex;
|
|
2190
|
+
flex-direction: column;
|
|
2127
2191
|
}
|
|
2128
2192
|
.trig-history-list-pane {
|
|
2129
|
-
|
|
2130
|
-
|
|
2193
|
+
flex: 1;
|
|
2194
|
+
min-height: 0;
|
|
2195
|
+
border: 0;
|
|
2196
|
+
}
|
|
2197
|
+
.trig-history-detail-pane {
|
|
2198
|
+
display: none;
|
|
2131
2199
|
}
|
|
2200
|
+
.trig-history-inline-detail {
|
|
2201
|
+
display: block;
|
|
2202
|
+
}
|
|
2203
|
+
}
|
|
2204
|
+
|
|
2205
|
+
@media (max-width: 760px), (orientation: portrait) {
|
|
2132
2206
|
.trig-history-summary { grid-template-columns: 1fr; }
|
|
2133
2207
|
.trig-exec-grid,
|
|
2134
2208
|
.trig-limit-grid,
|
|
@@ -4934,3 +5008,504 @@ textarea.basic-settings-control { min-height: 78px; resize: vertical; line-heigh
|
|
|
4934
5008
|
.basic-settings-secondary-btn,
|
|
4935
5009
|
.basic-settings-primary-btn { padding-inline: 9px; }
|
|
4936
5010
|
}
|
|
5011
|
+
|
|
5012
|
+
/* ── Responsive console layout ──
|
|
5013
|
+
The application remains server-rendered vanilla HTML. These rules only
|
|
5014
|
+
change the geometry and visibility of the existing view containers. */
|
|
5015
|
+
:root { --topbar-height: 44px; }
|
|
5016
|
+
html, body { min-width: 0; }
|
|
5017
|
+
body { min-height: 100vh; }
|
|
5018
|
+
.app { min-width: 0; min-height: 100vh; height: 100dvh; }
|
|
5019
|
+
.content, .view, .msg-layout, .msg-columns, .sess-layout, .trig-layout { min-width: 0; min-height: 0; }
|
|
5020
|
+
.content { padding-bottom: env(safe-area-inset-bottom); }
|
|
5021
|
+
.topbar { min-width: 0; padding-left: max(12px, env(safe-area-inset-left)); padding-right: max(12px, env(safe-area-inset-right)); }
|
|
5022
|
+
.topbar > * { min-width: 0; }
|
|
5023
|
+
.topbar-spacer { flex: 1 1 auto; }
|
|
5024
|
+
.mobile-menu-btn, .mobile-page-title, .mobile-nav-drawer, .mobile-nav-backdrop { display: none; }
|
|
5025
|
+
|
|
5026
|
+
/* Messages: three columns on wide screens, stacked selection rail on narrow
|
|
5027
|
+
landscape/portrait screens. */
|
|
5028
|
+
.msg-layout { display: flex; flex-direction: column; height: 100%; }
|
|
5029
|
+
.msg-columns { display: grid; grid-template-columns: 220px 260px minmax(0, 1fr); height: 100%; flex: 1; overflow: hidden; }
|
|
5030
|
+
.msg-columns > .msg-col { width: auto; min-width: 0; height: 100%; overflow: auto; }
|
|
5031
|
+
.msg-mobile-controls { display: none; }
|
|
5032
|
+
.msg-stream { min-width: 0; }
|
|
5033
|
+
.msg-stream .detail-toolbar { position: sticky; top: 0; z-index: 3; }
|
|
5034
|
+
|
|
5035
|
+
/* Sessions use two columns: the list (with filters above it) and the detail. */
|
|
5036
|
+
.sess-layout { display: grid; grid-template-columns: 360px minmax(0, 1fr); height: 100%; overflow: hidden; }
|
|
5037
|
+
.sess-list, .sess-detail { width: auto; min-width: 0; height: 100%; overflow: hidden; }
|
|
5038
|
+
.sess-list { border-right: 1px solid var(--border); display: flex; flex-direction: column; }
|
|
5039
|
+
.sess-detail { overflow-y: auto; }
|
|
5040
|
+
.sess-list .sess-items { min-height: 0; }
|
|
5041
|
+
.detail-toolbar { display: flex; align-items: center; gap: 10px; min-height: 42px; padding: 8px 14px; background: var(--bg2); border-bottom: 1px solid var(--border); }
|
|
5042
|
+
.sess-detail-toolbar .sess-view-control { margin-left: auto; }
|
|
5043
|
+
.detail-toolbar-title, .detail-placeholder { color: var(--dim); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
5044
|
+
.view.detail-fullscreen .msg-columns, .view.detail-fullscreen .sess-layout { grid-template-columns: minmax(0, 1fr); }
|
|
5045
|
+
.view.detail-fullscreen .msg-mobile-controls, .view.detail-fullscreen #msg-aids, .view.detail-fullscreen #msg-peers,
|
|
5046
|
+
.view.detail-fullscreen #sess-list { display: none; }
|
|
5047
|
+
.view.detail-fullscreen #msg-stream, .view.detail-fullscreen #sess-detail { display: block; grid-column: 1; width: 100%; }
|
|
5048
|
+
|
|
5049
|
+
/* Logs: low-frequency filters collapse behind one touch-sized control. */
|
|
5050
|
+
.log-more-filters { display: none; min-height: 30px; border: 1px solid var(--border); border-radius: 5px; background: var(--bg); color: var(--fg); padding: 0 10px; cursor: pointer; font: inherit; white-space: nowrap; }
|
|
5051
|
+
.log-more-filters:hover { border-color: var(--accent); }
|
|
5052
|
+
|
|
5053
|
+
/* Trigger rows become compact cards on phones while retaining the existing
|
|
5054
|
+
operation buttons and drawers. */
|
|
5055
|
+
.trig-row { transition: background .12s ease; }
|
|
5056
|
+
|
|
5057
|
+
/* Agent table: keep the dense desktop table, but expose the identity, state,
|
|
5058
|
+
queue, model, recent activity and operations as the compact mobile card. */
|
|
5059
|
+
|
|
5060
|
+
@media (min-width: 901px) and (max-width: 1199px) and (orientation: landscape) {
|
|
5061
|
+
.msg-columns { grid-template-columns: minmax(150px, 21vw) minmax(180px, 25vw) minmax(0, 1fr); }
|
|
5062
|
+
.msg-columns #msg-aids, .msg-columns #msg-peers, .msg-columns #msg-stream { grid-column: auto; grid-row: auto; height: 100%; }
|
|
5063
|
+
.sess-layout { grid-template-columns: minmax(260px, 30vw) minmax(0, 1fr); }
|
|
5064
|
+
}
|
|
5065
|
+
|
|
5066
|
+
/* A tall Pad keeps the detail preview visible but stacks the two selection
|
|
5067
|
+
rails in the first column, matching the portrait two-column interaction. */
|
|
5068
|
+
@media (min-width: 901px) and (max-width: 1199px) and (orientation: portrait) {
|
|
5069
|
+
.msg-columns { grid-template-columns: minmax(220px, 34%) minmax(0, 1fr); }
|
|
5070
|
+
.msg-columns #msg-aids, .msg-columns #msg-peers { grid-column: 1; width: auto; border-right: 1px solid var(--border); }
|
|
5071
|
+
.msg-columns #msg-aids { grid-row: 1; height: 44%; border-bottom: 1px solid var(--border); }
|
|
5072
|
+
.msg-columns #msg-peers { grid-row: 2; height: 56%; }
|
|
5073
|
+
.msg-columns #msg-stream { grid-column: 2; grid-row: 1 / span 2; }
|
|
5074
|
+
.sess-layout { grid-template-columns: minmax(220px, 34%) minmax(0, 1fr); }
|
|
5075
|
+
.sess-list { grid-column: 1; grid-row: 1; }
|
|
5076
|
+
.sess-detail { grid-column: 2; grid-row: 1; }
|
|
5077
|
+
}
|
|
5078
|
+
|
|
5079
|
+
@media (max-width: 1199px) {
|
|
5080
|
+
.topbar { gap: 10px; }
|
|
5081
|
+
.tabs { gap: 2px; overflow-x: auto; scrollbar-width: none; }
|
|
5082
|
+
.tabs::-webkit-scrollbar { display: none; }
|
|
5083
|
+
.tab { padding-inline: 9px; }
|
|
5084
|
+
.build-ts { display: none !important; }
|
|
5085
|
+
}
|
|
5086
|
+
|
|
5087
|
+
@media (max-width: 900px) {
|
|
5088
|
+
.topbar { height: 48px; gap: 10px; }
|
|
5089
|
+
.mobile-menu-btn { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; flex: 0 0 36px; border: 1px solid var(--border); border-radius: 6px; background: var(--bg); color: var(--fg); font-size: 20px; cursor: pointer; }
|
|
5090
|
+
.brand { display: none; }
|
|
5091
|
+
.mobile-page-title { display: block; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
|
|
5092
|
+
.topbar-spacer { display: none; }
|
|
5093
|
+
.tabs { display: none; }
|
|
5094
|
+
.build-ts, #lang-btn, #theme-btn, #basic-settings-btn, #logout-btn { display: none !important; }
|
|
5095
|
+
.conn-status { margin-left: auto; font-size: 11px; white-space: nowrap; }
|
|
5096
|
+
.mobile-nav-backdrop { position: fixed; inset: 0; z-index: 20; background: rgba(0,0,0,.34); }
|
|
5097
|
+
.mobile-nav-backdrop.open { display: block; }
|
|
5098
|
+
.mobile-nav-drawer { display: flex; position: fixed; z-index: 21; inset: 0 auto 0 0; width: min(320px, 86vw); flex-direction: column; background: var(--bg2); border-right: 1px solid var(--border); box-shadow: 12px 0 30px rgba(0,0,0,.18); transform: translateX(-102%); transition: transform .18s ease; padding: max(10px, env(safe-area-inset-top)) 0 max(10px, env(safe-area-inset-bottom)); }
|
|
5099
|
+
.mobile-nav-drawer.open { transform: translateX(0); }
|
|
5100
|
+
.mobile-nav-head { display: flex; align-items: center; justify-content: space-between; min-height: 48px; padding: 0 14px; border-bottom: 1px solid var(--border); }
|
|
5101
|
+
.icon-btn { width: 34px; height: 34px; border: 1px solid var(--border); border-radius: 6px; background: var(--bg); color: var(--fg); font-size: 22px; cursor: pointer; }
|
|
5102
|
+
.mobile-nav-list { display: flex; flex-direction: column; gap: 3px; padding: 10px; overflow-y: auto; }
|
|
5103
|
+
.mobile-nav-item, .mobile-nav-tool { min-height: 42px; border: 0; border-radius: 6px; padding: 8px 12px; background: transparent; color: var(--fg); text-align: left; font: inherit; cursor: pointer; }
|
|
5104
|
+
.mobile-nav-item:hover, .mobile-nav-tool:hover, .mobile-nav-item.active { background: var(--bg3); color: var(--accent); }
|
|
5105
|
+
.mobile-nav-tools { display: flex; flex-direction: column; gap: 3px; padding: 10px; border-top: 1px solid var(--border); margin-top: auto; }
|
|
5106
|
+
.mobile-nav-tool { display: flex; align-items: center; gap: 10px; }
|
|
5107
|
+
body.mobile-nav-open { overflow: hidden; }
|
|
5108
|
+
.msg-mobile-controls { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; padding: 8px 10px; background: var(--bg2); border-bottom: 1px solid var(--border); flex-shrink: 0; }
|
|
5109
|
+
.msg-mobile-controls label { display: flex; flex-direction: column; gap: 3px; min-width: 0; color: var(--dim); font-size: 10px; }
|
|
5110
|
+
.msg-mobile-controls select { width: 100%; min-width: 0; min-height: 34px; border: 1px solid var(--border); border-radius: 6px; background: var(--bg); color: var(--fg); padding: 0 8px; font: inherit; }
|
|
5111
|
+
.msg-columns { grid-template-columns: minmax(190px, 34%) minmax(0, 1fr); }
|
|
5112
|
+
.msg-columns #msg-aids, .msg-columns #msg-peers { grid-column: 1; width: auto; border-right: 1px solid var(--border); }
|
|
5113
|
+
.msg-columns #msg-aids { grid-row: 1; height: 44%; border-bottom: 1px solid var(--border); }
|
|
5114
|
+
.msg-columns #msg-peers { grid-row: 2; height: 56%; }
|
|
5115
|
+
.msg-columns #msg-stream { grid-column: 2; grid-row: 1 / span 2; }
|
|
5116
|
+
.sess-layout { grid-template-columns: minmax(210px, 34%) minmax(0, 1fr); }
|
|
5117
|
+
.sess-list { grid-column: 1; grid-row: 1; }
|
|
5118
|
+
.sess-detail { grid-column: 2; grid-row: 1; }
|
|
5119
|
+
.sess-select-row { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; }
|
|
5120
|
+
.log-toolbar { overflow: visible; }
|
|
5121
|
+
.log-more-filters { display: inline-flex; align-items: center; justify-content: center; }
|
|
5122
|
+
.log-toolbar:not(.filters-expanded) .log-secondary-control { display: none; }
|
|
5123
|
+
.log-toolbar.filters-expanded .log-secondary-control { display: flex; }
|
|
5124
|
+
}
|
|
5125
|
+
|
|
5126
|
+
/* Portrait devices keep the desktop tool access in the top bar. The title
|
|
5127
|
+
yields space first so language, theme, settings and logout remain visible. */
|
|
5128
|
+
@media (max-width: 900px) and (orientation: portrait) {
|
|
5129
|
+
.topbar { gap: 6px; }
|
|
5130
|
+
.mobile-page-title { flex: 1 1 auto; }
|
|
5131
|
+
#lang-btn,
|
|
5132
|
+
#theme-btn,
|
|
5133
|
+
#basic-settings-btn,
|
|
5134
|
+
#logout-btn {
|
|
5135
|
+
display: inline-flex !important;
|
|
5136
|
+
align-items: center;
|
|
5137
|
+
justify-content: center;
|
|
5138
|
+
flex: 0 0 auto;
|
|
5139
|
+
margin-left: 0;
|
|
5140
|
+
}
|
|
5141
|
+
#lang-btn,
|
|
5142
|
+
#theme-btn,
|
|
5143
|
+
#basic-settings-btn { width: 30px; height: 30px; padding: 0; }
|
|
5144
|
+
#logout-btn { min-width: 32px; min-height: 30px; padding: 2px 5px; font-size: 11px; }
|
|
5145
|
+
}
|
|
5146
|
+
|
|
5147
|
+
@media (max-width: 720px) {
|
|
5148
|
+
/* The view itself must remain the vertical scroll owner on phones. The
|
|
5149
|
+
inner panes still own their own scroll where they are intentionally
|
|
5150
|
+
split into columns. */
|
|
5151
|
+
.view { overflow-x: hidden; overflow-y: auto; }
|
|
5152
|
+
.msg-columns { grid-template-columns: minmax(155px, 38%) minmax(0, 1fr); }
|
|
5153
|
+
.msg-mobile-controls { grid-template-columns: 1fr 1fr; }
|
|
5154
|
+
.sess-layout { grid-template-columns: minmax(0, 42%) minmax(0, 1fr); }
|
|
5155
|
+
.sess-filter { padding: 8px; }
|
|
5156
|
+
.sess-items .list-item { padding: 10px 9px; }
|
|
5157
|
+
.detail-toolbar { padding-inline: 10px; }
|
|
5158
|
+
.log-toolbar { grid-template-columns: 1fr 1fr; display: grid; gap: 8px; padding: 8px 10px; }
|
|
5159
|
+
.log-primary-control, .log-search { min-width: 0; }
|
|
5160
|
+
.log-search { grid-column: 1 / -1; }
|
|
5161
|
+
.log-more-filters { width: 100%; }
|
|
5162
|
+
.log-toolbar.filters-expanded .log-secondary-control { display: flex; }
|
|
5163
|
+
.log-line { grid-template-columns: 96px 52px minmax(0, 1fr); gap: 7px; padding: 5px 10px; }
|
|
5164
|
+
.log-module { max-width: 100%; }
|
|
5165
|
+
#view-agents { padding: 0 8px; overflow-x: hidden; overflow-y: auto; }
|
|
5166
|
+
#view-agents table { display: block; width: 100%; }
|
|
5167
|
+
#view-agents table thead { display: none; }
|
|
5168
|
+
#view-agents table tbody, #view-agents table tr { display: block; }
|
|
5169
|
+
#view-agents tr.ag-main { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 10px; margin: 8px 0 0; padding: 10px; border: 1px solid var(--border); border-radius: 8px 8px 0 0; background: var(--bg2); }
|
|
5170
|
+
#view-agents tr.ag-main > td { display: none; padding: 0; border: 0; min-width: 0; }
|
|
5171
|
+
#view-agents tr.ag-main > td:nth-child(1), #view-agents tr.ag-main > td:nth-child(2), #view-agents tr.ag-main > td:nth-child(3), #view-agents tr.ag-main > td:nth-child(4), #view-agents tr.ag-main > td:nth-child(11), #view-agents tr.ag-main > td:nth-child(12) { display: block; }
|
|
5172
|
+
#view-agents tr.ag-main > td:nth-child(1) { grid-column: 1; grid-row: 1; }
|
|
5173
|
+
#view-agents tr.ag-main > td:nth-child(2) { grid-column: 2; grid-row: 1; text-align: right; }
|
|
5174
|
+
#view-agents tr.ag-main > td:nth-child(3) { grid-column: 1; grid-row: 2; }
|
|
5175
|
+
#view-agents tr.ag-main > td:nth-child(4) { grid-column: 2; grid-row: 2; text-align: right; font-size: 11px; }
|
|
5176
|
+
#view-agents tr.ag-main > td:nth-child(11) { grid-column: 1; grid-row: 3; color: var(--dim); font-size: 11px; }
|
|
5177
|
+
#view-agents tr.ag-main > td:nth-child(12) { grid-column: 2; grid-row: 3; text-align: right; }
|
|
5178
|
+
#view-agents tr.ag-sub { display: block; margin: 0 0 8px; padding: 0 10px 9px; border: 1px solid var(--border); border-top: 0; border-radius: 0 0 8px 8px; background: var(--bg2); }
|
|
5179
|
+
#view-agents tr.ag-sub > td { display: block; padding: 0; border: 0; }
|
|
5180
|
+
.agent-ops { justify-content: flex-end; flex-wrap: wrap; }
|
|
5181
|
+
.agent-ops .ctrl-btn { min-height: 30px; }
|
|
5182
|
+
.trig-layout { flex-direction: column; overflow: auto; }
|
|
5183
|
+
.trig-agents-col { width: 100%; max-height: 118px; border-right: 0; border-bottom: 1px solid var(--border); }
|
|
5184
|
+
.trig-agents-col.collapsed { width: 100%; height: 38px; min-height: 38px; }
|
|
5185
|
+
.trig-table-col { overflow: visible; }
|
|
5186
|
+
.trig-table-col table, .trig-table-col tbody { display: block; width: 100%; }
|
|
5187
|
+
.trig-table-col thead { display: none; }
|
|
5188
|
+
.trig-table-col tr.trig-row { display: block; margin: 8px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg2); overflow: hidden; }
|
|
5189
|
+
.trig-table-col tr.trig-row td { display: none; white-space: normal; max-width: none; padding: 8px 10px; border-bottom: 1px solid var(--border); }
|
|
5190
|
+
.trig-table-col tr.trig-row td:nth-child(1), .trig-table-col tr.trig-row td:nth-child(2), .trig-table-col tr.trig-row td:nth-child(4), .trig-table-col tr.trig-row td:nth-child(7), .trig-table-col tr.trig-row td:nth-child(9), .trig-table-col tr.trig-row td:nth-child(11), .trig-table-col tr.trig-row td:last-child { display: flex; align-items: baseline; gap: 8px; }
|
|
5191
|
+
.trig-table-col tr.trig-row td:nth-child(1) { font-weight: 600; }
|
|
5192
|
+
.trig-table-col tr.trig-row td::before { content: attr(data-mobile-label); }
|
|
5193
|
+
.trig-table-col tr.trig-row td::before { flex: 0 0 68px; color: var(--dim); font-size: 10px; }
|
|
5194
|
+
.trig-table-col tr.trig-row.trig-expanded td { display: flex; }
|
|
5195
|
+
.trig-table-col tr.trig-row td.trig-ops-col { position: static; }
|
|
5196
|
+
.trig-table-col tr.trig-row td:last-child { border-bottom: 0; }
|
|
5197
|
+
.trig-table-col .trig-ops { margin-left: auto; }
|
|
5198
|
+
}
|
|
5199
|
+
|
|
5200
|
+
@media (max-width: 479px) {
|
|
5201
|
+
.msg-mobile-controls { grid-template-columns: 1fr; }
|
|
5202
|
+
.msg-columns { display: block; overflow: auto; }
|
|
5203
|
+
.msg-columns #msg-aids, .msg-columns #msg-peers { display: none; }
|
|
5204
|
+
.msg-columns #msg-stream { display: block; height: 100%; }
|
|
5205
|
+
.sess-layout { display: block; overflow: auto; }
|
|
5206
|
+
.sess-list { height: auto; min-height: 42%; border-right: 0; }
|
|
5207
|
+
.sess-detail { display: none; height: 100%; }
|
|
5208
|
+
.view.detail-fullscreen .sess-list { display: none; }
|
|
5209
|
+
.view.detail-fullscreen .sess-detail { display: block; }
|
|
5210
|
+
.view.detail-fullscreen .sess-layout { display: block; }
|
|
5211
|
+
.log-toolbar { grid-template-columns: 1fr; }
|
|
5212
|
+
.log-follow { justify-content: flex-start; }
|
|
5213
|
+
.log-line { display: block; padding: 6px 10px; }
|
|
5214
|
+
.log-time, .log-level, .log-module { display: inline-block; margin-right: 7px; }
|
|
5215
|
+
.log-content { margin-top: 3px; }
|
|
5216
|
+
.mobile-nav-drawer { width: min(300px, 88vw); }
|
|
5217
|
+
}
|
|
5218
|
+
|
|
5219
|
+
/* Portrait log pages keep only the four high-frequency controls in one row:
|
|
5220
|
+
source, level, line count and follow-tail. */
|
|
5221
|
+
@media (max-width: 900px) and (orientation: portrait) {
|
|
5222
|
+
.log-toolbar {
|
|
5223
|
+
display: grid;
|
|
5224
|
+
grid-template-columns: minmax(0, 1.3fr) minmax(0, .9fr) minmax(0, .9fr) max-content;
|
|
5225
|
+
gap: 6px;
|
|
5226
|
+
overflow: hidden;
|
|
5227
|
+
padding: 8px 10px;
|
|
5228
|
+
}
|
|
5229
|
+
.log-toolbar .log-secondary-control:not(.log-limit-control),
|
|
5230
|
+
.log-toolbar .log-search,
|
|
5231
|
+
.log-toolbar .log-more-filters { display: none !important; }
|
|
5232
|
+
.log-toolbar .log-limit-control,
|
|
5233
|
+
.log-toolbar:not(.filters-expanded) .log-limit-control { display: flex !important; }
|
|
5234
|
+
.log-toolbar .log-control,
|
|
5235
|
+
.log-toolbar .log-follow { min-width: 0; }
|
|
5236
|
+
.log-toolbar select { height: 30px; min-width: 0; padding-inline: 5px; font-size: 11px; }
|
|
5237
|
+
.log-toolbar .log-follow { gap: 4px; font-size: 11px; }
|
|
5238
|
+
}
|
|
5239
|
+
|
|
5240
|
+
/* Keep agents and triggers as scannable lists in portrait mode. The compact
|
|
5241
|
+
card treatment is reserved for narrow landscape windows only. */
|
|
5242
|
+
@media (max-width: 900px) and (orientation: portrait) {
|
|
5243
|
+
#view-agents { padding: 0; overflow-x: hidden; overflow-y: auto; }
|
|
5244
|
+
#view-agents table { display: table; width: 100%; min-width: 0; }
|
|
5245
|
+
#view-agents table thead { display: table-header-group; }
|
|
5246
|
+
#view-agents table tbody { display: table-row-group; }
|
|
5247
|
+
#view-agents table tr { display: table-row; }
|
|
5248
|
+
#view-agents table th, #view-agents table td { display: table-cell; }
|
|
5249
|
+
#view-agents tr.ag-main {
|
|
5250
|
+
display: table-row; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent;
|
|
5251
|
+
}
|
|
5252
|
+
#view-agents tr.ag-main > td,
|
|
5253
|
+
#view-agents tr.ag-main > td:nth-child(n) {
|
|
5254
|
+
display: table-cell; padding: 7px 12px; border: 0; border-bottom: 1px solid var(--border); min-width: 0;
|
|
5255
|
+
}
|
|
5256
|
+
#view-agents tr.ag-sub {
|
|
5257
|
+
display: table-row; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent;
|
|
5258
|
+
}
|
|
5259
|
+
#view-agents tr.ag-sub > td { display: table-cell; padding: 0 12px 9px; border: 0; }
|
|
5260
|
+
.agent-ops { justify-content: flex-start; flex-wrap: nowrap; }
|
|
5261
|
+
.agent-ops .ctrl-btn { min-height: 0; }
|
|
5262
|
+
|
|
5263
|
+
.trig-layout { flex-direction: row; overflow: hidden; }
|
|
5264
|
+
.trig-agents-col { width: 200px; max-height: none; border-right: 1px solid var(--border); border-bottom: 0; }
|
|
5265
|
+
.trig-agents-col.collapsed { width: 34px; height: auto; min-height: 0; }
|
|
5266
|
+
.trig-table-col { overflow: auto; }
|
|
5267
|
+
.trig-table-col table { display: table; width: max-content; min-width: 100%; }
|
|
5268
|
+
.trig-table-col tbody { display: table-row-group; width: auto; }
|
|
5269
|
+
.trig-table-col thead { display: table-header-group; }
|
|
5270
|
+
.trig-table-col tr.trig-row {
|
|
5271
|
+
display: table-row; margin: 0; border: 0; border-radius: 0; background: transparent; overflow: visible;
|
|
5272
|
+
}
|
|
5273
|
+
.trig-table-col tr.trig-row td,
|
|
5274
|
+
.trig-table-col tr.trig-row td:nth-child(n),
|
|
5275
|
+
.trig-table-col tr.trig-row.trig-expanded td {
|
|
5276
|
+
display: table-cell; white-space: nowrap; max-width: none; padding: 6px 10px; border-bottom: 1px solid var(--border);
|
|
5277
|
+
}
|
|
5278
|
+
.trig-table-col tr.trig-row td::before { content: none; display: none; }
|
|
5279
|
+
.trig-table-col tr.trig-row td.trig-ops-col { position: sticky; right: 0; }
|
|
5280
|
+
.trig-table-col tr.trig-row td:last-child { border-bottom: 1px solid var(--border); }
|
|
5281
|
+
.trig-table-col .trig-ops { margin-left: 0; }
|
|
5282
|
+
}
|
|
5283
|
+
|
|
5284
|
+
/* The left rail already identifies the selected agent in every portrait
|
|
5285
|
+
layout, so the duplicate Agent column is hidden from the trigger table. */
|
|
5286
|
+
@media (orientation: portrait) {
|
|
5287
|
+
.trig-table-col .trig-agent-col { display: none !important; }
|
|
5288
|
+
}
|
|
5289
|
+
|
|
5290
|
+
/* In the two-column message layout, Agent and Chats share one expandable
|
|
5291
|
+
navigation rail. The independent selectors are reserved for the narrowest
|
|
5292
|
+
single-column layout. */
|
|
5293
|
+
@media (min-width: 480px) and (max-width: 900px),
|
|
5294
|
+
(min-width: 901px) and (max-width: 1199px) and (orientation: portrait) {
|
|
5295
|
+
.msg-mobile-controls { display: none !important; }
|
|
5296
|
+
.msg-columns #msg-aids {
|
|
5297
|
+
grid-column: 1;
|
|
5298
|
+
grid-row: 1;
|
|
5299
|
+
height: 100%;
|
|
5300
|
+
border-right: 1px solid var(--border);
|
|
5301
|
+
border-bottom: 0;
|
|
5302
|
+
}
|
|
5303
|
+
.msg-columns #msg-peers { display: none !important; }
|
|
5304
|
+
.msg-columns #msg-stream { grid-column: 2; grid-row: 1; height: 100%; }
|
|
5305
|
+
.msg-aids-list { display: none; }
|
|
5306
|
+
.msg-tree-view { display: block; }
|
|
5307
|
+
}
|
|
5308
|
+
|
|
5309
|
+
/* Agent statistics are useful on wide screens, but they should never force
|
|
5310
|
+
the Agent view itself to scroll horizontally on a narrow viewport. */
|
|
5311
|
+
@media (max-width: 1199px) {
|
|
5312
|
+
#view-agents { overflow-x: hidden; overflow-y: auto; }
|
|
5313
|
+
#view-agents .agents-table {
|
|
5314
|
+
width: 100%;
|
|
5315
|
+
min-width: 0;
|
|
5316
|
+
/* Let the browser size text columns naturally. Fixed layout was making
|
|
5317
|
+
the operation cell collapse when the statistics columns were hidden. */
|
|
5318
|
+
table-layout: auto;
|
|
5319
|
+
}
|
|
5320
|
+
#view-agents .agents-table th,
|
|
5321
|
+
#view-agents .agents-table td {
|
|
5322
|
+
min-width: 0;
|
|
5323
|
+
overflow: visible;
|
|
5324
|
+
text-overflow: clip;
|
|
5325
|
+
}
|
|
5326
|
+
#view-agents .agents-table th:not(:last-child),
|
|
5327
|
+
#view-agents .agents-table td:not(.agent-ops-cell) {
|
|
5328
|
+
overflow: hidden;
|
|
5329
|
+
text-overflow: ellipsis;
|
|
5330
|
+
}
|
|
5331
|
+
#view-agents .agents-table-enabled th:nth-child(6),
|
|
5332
|
+
#view-agents .agents-table-enabled td:nth-child(6),
|
|
5333
|
+
#view-agents .agents-table-enabled th:nth-child(7),
|
|
5334
|
+
#view-agents .agents-table-enabled td:nth-child(7),
|
|
5335
|
+
#view-agents .agents-table-enabled th:nth-child(8),
|
|
5336
|
+
#view-agents .agents-table-enabled td:nth-child(8),
|
|
5337
|
+
#view-agents .agents-table-enabled th:nth-child(9),
|
|
5338
|
+
#view-agents .agents-table-enabled td:nth-child(9),
|
|
5339
|
+
#view-agents .agents-table-enabled th:nth-child(10),
|
|
5340
|
+
#view-agents .agents-table-enabled td:nth-child(10) {
|
|
5341
|
+
display: none;
|
|
5342
|
+
}
|
|
5343
|
+
#view-agents .agents-table-enabled .agent-ops-cell {
|
|
5344
|
+
width: 1%;
|
|
5345
|
+
min-width: 92px;
|
|
5346
|
+
white-space: nowrap;
|
|
5347
|
+
}
|
|
5348
|
+
#view-agents .agents-table-disabled .agent-ops-cell {
|
|
5349
|
+
width: 1%;
|
|
5350
|
+
min-width: 92px;
|
|
5351
|
+
white-space: nowrap;
|
|
5352
|
+
}
|
|
5353
|
+
#view-agents .agents-table .agent-ops-cell { overflow: visible; }
|
|
5354
|
+
#view-agents .agents-table-enabled .agent-ops { flex-wrap: wrap; gap: 3px; }
|
|
5355
|
+
}
|
|
5356
|
+
|
|
5357
|
+
@media (max-width: 900px) and (orientation: portrait) {
|
|
5358
|
+
/* Portrait agents stay a real table. Keep the action cell readable and
|
|
5359
|
+
allow the outer view to scroll vertically when rows exceed the viewport. */
|
|
5360
|
+
#view-agents { overflow-x: hidden; overflow-y: auto; }
|
|
5361
|
+
#view-agents .agents-table th,
|
|
5362
|
+
#view-agents .agents-table th:last-child { background: var(--bg2); }
|
|
5363
|
+
#view-agents .agents-table-enabled th:nth-child(1),
|
|
5364
|
+
#view-agents .agents-table-enabled td:nth-child(1) { width: 30%; }
|
|
5365
|
+
#view-agents .agents-table-enabled th:nth-child(2),
|
|
5366
|
+
#view-agents .agents-table-enabled td:nth-child(2) { width: 13%; }
|
|
5367
|
+
#view-agents .agents-table-enabled th:nth-child(3),
|
|
5368
|
+
#view-agents .agents-table-enabled td:nth-child(3) { width: 12%; }
|
|
5369
|
+
#view-agents .agents-table-enabled th:nth-child(4),
|
|
5370
|
+
#view-agents .agents-table-enabled td:nth-child(4) { width: 13%; }
|
|
5371
|
+
#view-agents .agents-table-enabled th:nth-child(5),
|
|
5372
|
+
#view-agents .agents-table-enabled td:nth-child(5) { width: 10%; }
|
|
5373
|
+
#view-agents .agents-table-enabled th:nth-child(11),
|
|
5374
|
+
#view-agents .agents-table-enabled td:nth-child(11) { width: 12%; }
|
|
5375
|
+
#view-agents .agents-table-enabled th:nth-child(12),
|
|
5376
|
+
#view-agents .agents-table-enabled td:nth-child(12) { width: 1%; min-width: 92px; }
|
|
5377
|
+
#view-agents .agents-table-enabled .agent-ops-cell { white-space: normal; }
|
|
5378
|
+
#view-agents .agents-table-enabled .agent-ops { flex-wrap: wrap; }
|
|
5379
|
+
#view-agents .agents-table-disabled th:nth-child(1),
|
|
5380
|
+
#view-agents .agents-table-disabled td:nth-child(1) { width: 86%; }
|
|
5381
|
+
#view-agents .agents-table-disabled th:nth-child(2),
|
|
5382
|
+
#view-agents .agents-table-disabled td:nth-child(2) { width: 1%; min-width: 92px; }
|
|
5383
|
+
#view-agents .agents-table-disabled .agent-ops-cell { white-space: normal; }
|
|
5384
|
+
}
|
|
5385
|
+
|
|
5386
|
+
/* Narrow screens use the same list/table treatment as the horizontal view.
|
|
5387
|
+
This final block intentionally overrides the older compact-card rules above
|
|
5388
|
+
so rows keep their column alignment and the page can scroll vertically. */
|
|
5389
|
+
@media (max-width: 720px) {
|
|
5390
|
+
#view-agents { padding: 0; overflow-x: hidden; overflow-y: auto; }
|
|
5391
|
+
#view-agents .agents-table {
|
|
5392
|
+
display: table;
|
|
5393
|
+
width: 100%;
|
|
5394
|
+
max-width: 100%;
|
|
5395
|
+
min-width: 0;
|
|
5396
|
+
table-layout: auto;
|
|
5397
|
+
}
|
|
5398
|
+
#view-agents .agents-table thead { display: table-header-group; }
|
|
5399
|
+
#view-agents .agents-table tbody { display: table-row-group; }
|
|
5400
|
+
#view-agents .agents-table tr,
|
|
5401
|
+
#view-agents .agents-table tr.ag-main,
|
|
5402
|
+
#view-agents .agents-table tr.ag-sub { display: table-row; }
|
|
5403
|
+
#view-agents .agents-table th,
|
|
5404
|
+
#view-agents .agents-table td,
|
|
5405
|
+
#view-agents .agents-table tr.ag-main > td,
|
|
5406
|
+
#view-agents .agents-table tr.ag-sub > td {
|
|
5407
|
+
display: table-cell;
|
|
5408
|
+
min-width: 0;
|
|
5409
|
+
padding: 7px 8px;
|
|
5410
|
+
border: 0;
|
|
5411
|
+
border-bottom: 1px solid var(--border);
|
|
5412
|
+
background: transparent;
|
|
5413
|
+
vertical-align: middle;
|
|
5414
|
+
}
|
|
5415
|
+
#view-agents .agents-table th,
|
|
5416
|
+
#view-agents .agents-table th:last-child { background: var(--bg2); }
|
|
5417
|
+
/* The row reset above restores table-cell display for alignment; reapply
|
|
5418
|
+
the narrow-screen statistics policy afterwards so hidden cells do not
|
|
5419
|
+
consume zero-width columns before the operations cell. */
|
|
5420
|
+
#view-agents .agents-table-enabled th:nth-child(6),
|
|
5421
|
+
#view-agents .agents-table-enabled td:nth-child(6),
|
|
5422
|
+
#view-agents .agents-table-enabled th:nth-child(7),
|
|
5423
|
+
#view-agents .agents-table-enabled td:nth-child(7),
|
|
5424
|
+
#view-agents .agents-table-enabled th:nth-child(8),
|
|
5425
|
+
#view-agents .agents-table-enabled td:nth-child(8),
|
|
5426
|
+
#view-agents .agents-table-enabled th:nth-child(9),
|
|
5427
|
+
#view-agents .agents-table-enabled td:nth-child(9),
|
|
5428
|
+
#view-agents .agents-table-enabled th:nth-child(10),
|
|
5429
|
+
#view-agents .agents-table-enabled td:nth-child(10),
|
|
5430
|
+
#view-agents .agents-table-enabled tr.ag-main > td:nth-child(6),
|
|
5431
|
+
#view-agents .agents-table-enabled tr.ag-main > td:nth-child(7),
|
|
5432
|
+
#view-agents .agents-table-enabled tr.ag-main > td:nth-child(8),
|
|
5433
|
+
#view-agents .agents-table-enabled tr.ag-main > td:nth-child(9),
|
|
5434
|
+
#view-agents .agents-table-enabled tr.ag-main > td:nth-child(10) { display: none; }
|
|
5435
|
+
#view-agents .agents-table tr.ag-sub > td { padding-top: 0; padding-bottom: 8px; border-bottom: none; }
|
|
5436
|
+
#view-agents .agents-table-enabled tr.ag-main > td { border-bottom: none; }
|
|
5437
|
+
#view-agents .agents-table-enabled th:nth-child(1),
|
|
5438
|
+
#view-agents .agents-table-enabled td:nth-child(1) { width: 24%; }
|
|
5439
|
+
#view-agents .agents-table-enabled th:nth-child(2),
|
|
5440
|
+
#view-agents .agents-table-enabled td:nth-child(2) { width: 10%; }
|
|
5441
|
+
#view-agents .agents-table-enabled th:nth-child(3),
|
|
5442
|
+
#view-agents .agents-table-enabled td:nth-child(3) { width: 8%; }
|
|
5443
|
+
#view-agents .agents-table-enabled th:nth-child(4),
|
|
5444
|
+
#view-agents .agents-table-enabled td:nth-child(4) { width: 13%; }
|
|
5445
|
+
#view-agents .agents-table-enabled th:nth-child(5),
|
|
5446
|
+
#view-agents .agents-table-enabled td:nth-child(5) { width: 10%; }
|
|
5447
|
+
#view-agents .agents-table-enabled th:nth-child(11),
|
|
5448
|
+
#view-agents .agents-table-enabled td:nth-child(11) { width: 13%; }
|
|
5449
|
+
#view-agents .agents-table-enabled th:nth-child(12),
|
|
5450
|
+
#view-agents .agents-table-enabled td:nth-child(12) { width: 1%; min-width: 92px; }
|
|
5451
|
+
#view-agents .agents-table-enabled td:not(.agent-ops-cell) {
|
|
5452
|
+
overflow: hidden;
|
|
5453
|
+
text-overflow: ellipsis;
|
|
5454
|
+
white-space: normal;
|
|
5455
|
+
}
|
|
5456
|
+
#view-agents .agents-table-enabled .agent-ops-cell {
|
|
5457
|
+
min-width: 92px;
|
|
5458
|
+
overflow: visible;
|
|
5459
|
+
white-space: normal;
|
|
5460
|
+
}
|
|
5461
|
+
#view-agents .agents-table-disabled .agent-ops-cell {
|
|
5462
|
+
min-width: 92px;
|
|
5463
|
+
overflow: visible;
|
|
5464
|
+
white-space: normal;
|
|
5465
|
+
}
|
|
5466
|
+
#view-agents .agents-table td.agent-ops-cell { background: var(--bg); box-shadow: -1px 0 0 var(--border); }
|
|
5467
|
+
#view-agents .agents-table tr:hover td.agent-ops-cell { background: var(--bg2); }
|
|
5468
|
+
#view-agents .agents-table-enabled .agent-ops,
|
|
5469
|
+
#view-agents .agents-table-disabled .agent-ops {
|
|
5470
|
+
justify-content: flex-start;
|
|
5471
|
+
flex-wrap: wrap;
|
|
5472
|
+
gap: 3px;
|
|
5473
|
+
}
|
|
5474
|
+
#view-agents .agents-table-enabled .agent-ops .ctrl-btn,
|
|
5475
|
+
#view-agents .agents-table-disabled .agent-ops .ctrl-btn {
|
|
5476
|
+
min-height: 26px;
|
|
5477
|
+
padding: 2px 5px;
|
|
5478
|
+
font-size: 10px;
|
|
5479
|
+
}
|
|
5480
|
+
#view-agents .agents-table-enabled .agent-ops-cell .agent-ops { min-width: 0; }
|
|
5481
|
+
#view-agents .agents-table-disabled th:nth-child(1),
|
|
5482
|
+
#view-agents .agents-table-disabled td:nth-child(1) { width: 86%; }
|
|
5483
|
+
#view-agents .agents-table-disabled th:nth-child(2),
|
|
5484
|
+
#view-agents .agents-table-disabled td:nth-child(2) { width: 1%; min-width: 92px; }
|
|
5485
|
+
#view-agents .agents-table-disabled td:nth-child(1) {
|
|
5486
|
+
overflow: hidden;
|
|
5487
|
+
text-overflow: ellipsis;
|
|
5488
|
+
white-space: normal;
|
|
5489
|
+
}
|
|
5490
|
+
|
|
5491
|
+
.trig-layout { flex-direction: row; overflow: hidden; }
|
|
5492
|
+
.trig-agents-col { width: min(200px, 34vw); max-height: none; border-right: 1px solid var(--border); border-bottom: 0; }
|
|
5493
|
+
.trig-agents-col.collapsed { width: 34px; height: auto; min-height: 0; }
|
|
5494
|
+
.trig-table-col { overflow: auto; }
|
|
5495
|
+
.trig-table-col table { display: table; width: max-content; min-width: 100%; }
|
|
5496
|
+
.trig-table-col tbody { display: table-row-group; }
|
|
5497
|
+
.trig-table-col thead { display: table-header-group; }
|
|
5498
|
+
.trig-table-col tr.trig-row { display: table-row; margin: 0; border: 0; border-radius: 0; background: transparent; overflow: visible; }
|
|
5499
|
+
.trig-table-col tr.trig-row td,
|
|
5500
|
+
.trig-table-col tr.trig-row td:nth-child(n),
|
|
5501
|
+
.trig-table-col tr.trig-row.trig-expanded td {
|
|
5502
|
+
display: table-cell;
|
|
5503
|
+
white-space: nowrap;
|
|
5504
|
+
max-width: none;
|
|
5505
|
+
padding: 6px 10px;
|
|
5506
|
+
border-bottom: 1px solid var(--border);
|
|
5507
|
+
}
|
|
5508
|
+
.trig-table-col tr.trig-row td::before { content: none; display: none; }
|
|
5509
|
+
.trig-table-col tr.trig-row td.trig-ops-col { position: sticky; right: 0; }
|
|
5510
|
+
.trig-table-col .trig-ops { margin-left: 0; }
|
|
5511
|
+
}
|