loadtoagent 1.0.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.ko.md +7 -0
  2. package/README.md +7 -0
  3. package/README.zh-CN.md +7 -0
  4. package/docs/PROVIDER-CONTRACTS.md +23 -1
  5. package/docs/UI-AUDIT-100.md +118 -0
  6. package/docs/UI-AUDIT-101-200.md +120 -0
  7. package/docs/UI-AUDIT-201-300.md +120 -0
  8. package/main.js +183 -37
  9. package/package.json +15 -4
  10. package/preload.js +11 -0
  11. package/renderer/app-agent-actions.js +125 -53
  12. package/renderer/app-bootstrap.js +54 -9
  13. package/renderer/app-dashboard.js +197 -58
  14. package/renderer/app-drawer-content.js +103 -86
  15. package/renderer/app-drawer-data.js +26 -13
  16. package/renderer/app-drawer.js +79 -55
  17. package/renderer/app-events-dialogs.js +146 -37
  18. package/renderer/app-events-filters.js +172 -9
  19. package/renderer/app-events-navigation.js +78 -31
  20. package/renderer/app-events-sessions.js +171 -4
  21. package/renderer/app-events.js +2 -1
  22. package/renderer/app-graph-model.js +32 -4
  23. package/renderer/app-graph-orchestration.js +16 -13
  24. package/renderer/app-graph-view.js +228 -112
  25. package/renderer/app-management.js +211 -0
  26. package/renderer/app-provider-visibility.js +124 -0
  27. package/renderer/app-quality.js +568 -0
  28. package/renderer/app-run-modal.js +103 -33
  29. package/renderer/app-runtime-overview.js +312 -0
  30. package/renderer/app-session-render.js +94 -37
  31. package/renderer/app-tmux-render.js +119 -38
  32. package/renderer/app.js +155 -76
  33. package/renderer/i18n-messages.js +833 -15
  34. package/renderer/i18n.js +104 -0
  35. package/renderer/index.html +162 -75
  36. package/renderer/shared.js +17 -0
  37. package/renderer/styles-agent-map.css +50 -1
  38. package/renderer/styles-cards.css +26 -0
  39. package/renderer/styles-collaboration.css +18 -88
  40. package/renderer/styles-components.css +126 -14
  41. package/renderer/styles-management.css +355 -0
  42. package/renderer/styles-overlays.css +13 -2
  43. package/renderer/styles-product.css +24 -16
  44. package/renderer/styles-quality.css +312 -0
  45. package/renderer/styles-readability.css +862 -0
  46. package/renderer/styles-responsive-product.css +84 -12
  47. package/renderer/styles-responsive-runtime.css +31 -14
  48. package/renderer/styles-responsive-shell.css +44 -48
  49. package/renderer/styles-responsive-workflows.css +37 -17
  50. package/renderer/styles-run-composer.css +5 -0
  51. package/renderer/styles-runtime-overview.css +285 -0
  52. package/renderer/styles-settings.css +160 -0
  53. package/renderer/styles-terminal.css +339 -2
  54. package/renderer/styles-tmux.css +154 -0
  55. package/renderer/styles-workflow-map.css +362 -15
  56. package/renderer/styles-workflows.css +69 -2
  57. package/renderer/styles.css +27 -12
  58. package/renderer/terminal-agent.js +17 -13
  59. package/renderer/terminal-events.js +233 -40
  60. package/renderer/terminal-workbench.js +176 -78
  61. package/renderer/terminal.js +350 -37
  62. package/src/agentMonitor/claudeParser.js +96 -7
  63. package/src/agentMonitor/codexParser.js +59 -4
  64. package/src/agentMonitor/executionActivity.js +282 -0
  65. package/src/agentMonitor/genericParser.js +56 -13
  66. package/src/agentMonitor/hierarchy.js +17 -0
  67. package/src/agentMonitor/responseIntent.js +51 -0
  68. package/src/agentMonitor.js +21 -3
  69. package/src/agentRunner.js +66 -1
  70. package/src/attentionNotifier.js +71 -0
  71. package/src/automationMonitor.js +258 -0
  72. package/src/contracts.js +10 -1
  73. package/src/ipc/registerAgentIpc.js +9 -3
  74. package/src/ipc/registerAppIpc.js +4 -1
  75. package/src/ipc/registerTerminalIpc.js +12 -6
  76. package/src/macUpdateHelper.js +210 -0
  77. package/src/monitorWorker.js +65 -6
  78. package/src/platformPath.js +80 -0
  79. package/src/processMonitor.js +81 -23
  80. package/src/providerVisibilityStore.js +45 -0
  81. package/src/sessionIntelligence.js +247 -0
  82. package/src/terminalHost.js +381 -0
  83. package/src/terminalHostDaemon.js +60 -0
  84. package/src/terminalManager.js +158 -3
  85. package/src/tmuxMonitor.js +2 -2
  86. package/src/updateInstaller.js +175 -0
@@ -0,0 +1,355 @@
1
+ /*
2
+ * Agent management
3
+ * ----------------
4
+ * Action inbox, operational health, structured progress, evidence, and outcome surfaces.
5
+ */
6
+
7
+ .advanced-tools-nav {
8
+ margin: 8px 0;
9
+ border: 1px solid var(--line-soft);
10
+ border-radius: 12px;
11
+ background: rgba(10, 15, 24, .54);
12
+ overflow: hidden;
13
+ }
14
+
15
+ .advanced-tools-nav > summary {
16
+ display: grid;
17
+ grid-template-columns: 28px 1fr auto 14px;
18
+ align-items: center;
19
+ gap: 8px;
20
+ min-height: 42px;
21
+ padding: 0 12px;
22
+ color: var(--muted);
23
+ cursor: pointer;
24
+ list-style: none;
25
+ }
26
+
27
+ .advanced-tools-nav > summary::-webkit-details-marker { display: none; }
28
+ .advanced-tools-nav > summary:hover,
29
+ .advanced-tools-nav.active > summary { color: var(--text); background: rgba(89, 216, 255, .06); }
30
+ .advanced-tools-nav > summary b { min-width: 24px; padding: 3px 7px; border-radius: 999px; color: #8ce6ff; background: #152d3a; text-align: center; font-size: 12px; }
31
+ .advanced-tools-nav > summary i { font-style: normal; transition: transform .18s ease; }
32
+ .advanced-tools-nav[open] > summary i { transform: rotate(180deg); }
33
+ .advanced-tools-list { display: grid; gap: 3px; padding: 4px; border-top: 1px solid var(--line-soft); }
34
+ .advanced-tools-list .nav-item { width: 100%; min-height: 38px; padding-left: 10px; }
35
+
36
+ .operations-overview,
37
+ .attention-inbox {
38
+ margin-bottom: 18px;
39
+ border: 1px solid var(--line);
40
+ border-radius: 16px;
41
+ background: #0b121c;
42
+ overflow: hidden;
43
+ }
44
+
45
+ .operations-overview > header,
46
+ .attention-inbox-head {
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: space-between;
50
+ gap: 18px;
51
+ padding: 15px 18px;
52
+ border-bottom: 1px solid var(--line-soft);
53
+ }
54
+
55
+ .operations-heading {
56
+ min-width: 0;
57
+ display: flex;
58
+ align-items: center;
59
+ gap: 12px;
60
+ }
61
+
62
+ .operations-signal {
63
+ width: 36px;
64
+ height: 36px;
65
+ flex: 0 0 36px;
66
+ display: grid;
67
+ place-items: center;
68
+ border: 1px solid rgba(246, 189, 85, .28);
69
+ border-radius: 11px;
70
+ background: rgba(246, 189, 85, .08);
71
+ color: #f3c66f;
72
+ font-size: 15px;
73
+ font-weight: 800;
74
+ }
75
+
76
+ .operations-heading-copy { min-width: 0; }
77
+ .operations-heading-copy p,
78
+ .attention-inbox-head p { margin: 0 0 5px; color: var(--green); font-size: 12px; font-weight: 800; letter-spacing: .12em; }
79
+ .operations-heading-copy p { margin-bottom: 3px; color: #95a8b6; font-size: 12px; letter-spacing: .08em; }
80
+ .operations-heading-copy h2,
81
+ .attention-inbox-head h2 { margin: 0; font-size: clamp(20px, 2vw, 28px); }
82
+ .operations-heading-copy h2 { font-size: 19px; letter-spacing: -.025em; }
83
+ .operations-heading-copy > span,
84
+ .attention-inbox-head span { max-width: 620px; color: var(--muted); line-height: 1.55; }
85
+ .operations-heading-copy > span { display: block; margin-top: 3px; font-size: 12px; }
86
+ .operations-review-total {
87
+ flex: 0 0 auto;
88
+ display: flex;
89
+ align-items: baseline;
90
+ gap: 8px;
91
+ padding: 8px 11px;
92
+ border: 1px solid #2a3a48;
93
+ border-radius: 10px;
94
+ background: #101a26;
95
+ }
96
+ .operations-review-total strong { color: #f4f8fa; font-size: 21px; line-height: 1; }
97
+ .operations-review-total span { color: #a7b6c2; font-size: 12px; white-space: nowrap; }
98
+ .attention-inbox-head strong { color: var(--text); font-size: 36px; }
99
+
100
+ .operations-metrics {
101
+ display: grid;
102
+ grid-template-columns: repeat(5, 1fr);
103
+ border-bottom: 1px solid var(--line-soft);
104
+ }
105
+
106
+ .operations-metrics > * {
107
+ display: flex;
108
+ align-items: baseline;
109
+ justify-content: space-between;
110
+ gap: 12px;
111
+ min-height: 54px;
112
+ padding: 10px 16px;
113
+ border: 0;
114
+ border-right: 1px solid var(--line-soft);
115
+ color: var(--muted);
116
+ background: transparent;
117
+ text-align: left;
118
+ font-size: 12px;
119
+ }
120
+
121
+ .operations-metrics > *:last-child { border-right: 0; }
122
+ .operations-metrics button { cursor: pointer; }
123
+ .operations-metrics button:hover { background: rgba(89, 216, 255, .055); }
124
+ .operations-metrics b { color: var(--text); font-size: 21px; line-height: 1; }
125
+ .operations-metrics > *:nth-child(1) b { color: #ff8792; }
126
+ .operations-metrics > *:nth-child(2) b { color: #efc96f; }
127
+ .operations-metrics > *:nth-child(3) b { color: #8edff4; }
128
+ .operations-metrics > *:nth-child(4) b { color: #b8a8de; }
129
+ .operations-metrics > *:nth-child(5) b { color: #83ddb1; }
130
+ .operations-priority { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; padding: 10px; }
131
+ .operations-priority button { display: grid; grid-template-columns: 8px 1fr auto; align-items: center; gap: 11px; min-width: 0; padding: 10px 12px; border: 1px solid var(--line-soft); border-radius: 10px; color: var(--text); background: #0c131d; text-align: left; cursor: pointer; }
132
+ .operations-priority button:hover { border-color: #35516a; }
133
+ .operations-priority i { width: 8px; height: 8px; border-radius: 50%; background: #e9b949; box-shadow: 0 0 9px rgba(233, 185, 73, .45); }
134
+ .operations-priority i.critical { background: #ff6b76; box-shadow: 0 0 9px rgba(255, 107, 118, .5); }
135
+ .operations-priority i.warning { background: #e9b949; box-shadow: 0 0 9px rgba(233, 185, 73, .45); }
136
+ .operations-priority i.attention { background: #64cbe5; box-shadow: 0 0 9px rgba(100, 203, 229, .42); }
137
+ .operations-priority i.unknown { background: #aa92dc; box-shadow: 0 0 9px rgba(170, 146, 220, .42); }
138
+ .operations-priority span { min-width: 0; }
139
+ .operations-priority b,
140
+ .operations-priority small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
141
+ .operations-priority b { font-size: 13px; }
142
+ .operations-priority small,
143
+ .operations-priority em { color: #a6b4c0; font-size: 12px; font-style: normal; }
144
+ .operations-priority small { margin-top: 2px; }
145
+ .operations-more { display: flex; justify-content: flex-end; padding: 0 10px 10px; }
146
+ .operations-more button { min-height: 44px; display: inline-flex; align-items: center; gap: 7px; padding: 0 12px; border: 1px solid #2d4659; border-radius: 9px; color: #b9d9e4; background: #0d1923; font-size: 12px; font-weight: 750; cursor: pointer; }
147
+ .operations-more button:hover { border-color: #4cabc3; color: #effcff; }
148
+ .operations-more button b { color: #6dd6ee; }
149
+ .operations-more button i { font-style: normal; }
150
+ .operations-clear { margin: 0; padding: 13px 18px; color: #8edab7; font-size: 12px; }
151
+
152
+ .attention-inbox-summary { display: flex; flex-wrap: wrap; gap: 8px; padding: 12px 20px; border-bottom: 1px solid var(--line-soft); }
153
+ .attention-inbox-summary button { min-height: 44px; display: inline-flex; gap: 7px; align-items: center; padding: 7px 12px; border: 1px solid var(--line-soft); border-radius: 999px; color: var(--muted); background: #0c141e; font-size: 12px; cursor: pointer; }
154
+ .attention-inbox-summary button:hover { border-color: #3c596b; color: #e2ebf0; }
155
+ .attention-inbox-summary button[aria-pressed="true"] { border-color: #4cabc3; color: #e8f8fb; background: #122935; box-shadow: inset 0 0 0 1px rgba(89,216,255,.12); }
156
+ .attention-inbox-summary button b { color: currentColor; }
157
+ .attention-inbox-summary i { width: 6px; height: 6px; border-radius: 50%; background: #e9b949; }
158
+ .attention-inbox-summary [data-management-inbox-filter="critical"] i { background: #ff6b76; }
159
+ .attention-inbox-summary [data-management-inbox-filter="warning"] i { background: #e9b949; }
160
+ .attention-inbox-summary [data-management-inbox-filter="attention"] i { background: #64cbe5; }
161
+ .attention-inbox-summary [data-management-inbox-filter="unknown"] i { background: #aa92dc; }
162
+ .attention-inbox-summary [data-management-inbox-filter="all"] i { background: #9dabb6; }
163
+ .attention-card-list { display: grid; gap: 12px; padding: 16px; }
164
+ .attention-card { position: relative; display: grid; gap: 13px; padding: 18px; border: 1px solid var(--line); border-left: 3px solid var(--management-provider, #e9b949); border-radius: 16px; background: #0b121d; }
165
+ .attention-card > header { display: grid; grid-template-columns: 38px 1fr auto; gap: 12px; align-items: center; }
166
+ .attention-card > header h3 { margin: 3px 0 0; font-size: 17px; }
167
+ .attention-card > header small { color: var(--management-provider, var(--cyan)); }
168
+ .confidence { padding: 5px 8px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font-size: 12px; font-style: normal; }
169
+ .confidence.high { color: #82ddb0; border-color: rgba(76, 227, 154, .3); }
170
+ .attention-reason { display: grid; grid-template-columns: 110px 1fr auto; gap: 12px; align-items: start; padding: 12px 14px; border-radius: 11px; background: rgba(233, 185, 73, .07); }
171
+ .attention-reason span { color: #e9b949; font-size: 12px; font-weight: 800; }
172
+ .attention-reason p { margin: 0; color: #e7edf6; line-height: 1.55; }
173
+ .attention-reason small { color: var(--muted); }
174
+ .management-quick-actions,
175
+ .management-control-buttons { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
176
+ .management-quick-actions button,
177
+ .management-control-buttons button { min-height: 34px; padding: 0 12px; border: 1px solid #2a3a4c; border-radius: 9px; color: #c9d5e4; background: #111a27; }
178
+ .management-quick-actions button:hover,
179
+ .management-control-buttons button:hover { border-color: var(--cyan); color: #fff; }
180
+ .management-quick-actions .approve { color: #72dfaa; border-color: rgba(76, 227, 154, .35); background: rgba(76, 227, 154, .08); }
181
+ .management-control-buttons .danger { color: #ff9ba3; border-color: rgba(255, 107, 118, .3); }
182
+
183
+ .management-progress,
184
+ .management-health,
185
+ .management-artifacts,
186
+ .management-checks,
187
+ .management-evidence,
188
+ .management-controls,
189
+ .management-attention-detail,
190
+ .management-outcome { border: 1px solid var(--line-soft); border-radius: 14px; background: rgba(9, 15, 24, .72); overflow: hidden; }
191
+ .management-progress > header,
192
+ .management-health > header,
193
+ .management-artifacts > header,
194
+ .management-checks > header,
195
+ .management-evidence > header,
196
+ .management-controls > header { display: flex; align-items: center; gap: 10px; padding: 11px 13px; border-bottom: 1px solid var(--line-soft); }
197
+ .management-progress > header span,
198
+ .management-health > header span,
199
+ .management-artifacts > header span,
200
+ .management-checks > header span,
201
+ .management-evidence > header span,
202
+ .management-controls > header span { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: .06em; }
203
+ .management-progress > header b,
204
+ .management-health > header b,
205
+ .management-artifacts > header b,
206
+ .management-checks > header b,
207
+ .management-evidence > header b,
208
+ .management-controls > header b { margin-left: auto; color: #cbd6e3; font-size: 12px; }
209
+ .management-progress > header strong,
210
+ .management-health > header strong { min-width: 40px; color: var(--green); text-align: right; }
211
+ .management-progress-track { height: 5px; margin: 12px 13px 0; border-radius: 999px; background: #182333; overflow: hidden; }
212
+ .management-progress-track i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--cyan), var(--green)); }
213
+ .management-progress > p { display: flex; justify-content: space-between; gap: 12px; margin: 0; padding: 10px 13px 12px; }
214
+ .management-progress > p b { font-size: 12px; }
215
+ .management-progress > p span { color: var(--muted); font-size: 12px; }
216
+ .management-progress > aside { margin: 0 13px 12px; padding: 9px 11px; border-radius: 9px; color: #f0cc75; background: rgba(233, 185, 73, .08); }
217
+ .management-progress > aside span { display: block; margin-bottom: 3px; font-size: 12px; }
218
+ .management-checkpoints,
219
+ .management-health ul,
220
+ .management-artifacts ul,
221
+ .management-checks ul { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
222
+ .management-checkpoints li,
223
+ .management-health li,
224
+ .management-artifacts li,
225
+ .management-checks li { display: flex; align-items: center; gap: 10px; padding: 10px 13px; border-top: 1px solid var(--line-soft); }
226
+ .management-checkpoints i,
227
+ .management-health li i,
228
+ .management-checks li i { flex: 0 0 auto; width: 7px; height: 7px; border-radius: 50%; background: #728197; }
229
+ .management-checkpoints li.completed i,
230
+ .management-checks li.passed i { background: var(--green); }
231
+ .management-checkpoints li.failed i,
232
+ .management-health li.critical i,
233
+ .management-checks li.failed i { background: #ff6b76; }
234
+ .management-checkpoints li.running i,
235
+ .management-health li.warning i { background: #e9b949; }
236
+ .management-checkpoints div { min-width: 0; flex: 1; }
237
+ .management-checkpoints b,
238
+ .management-checkpoints small { display: block; }
239
+ .management-checkpoints small,
240
+ .management-checkpoints li > span,
241
+ .management-health li span,
242
+ .management-artifacts li span,
243
+ .management-checks li span { margin-left: auto; color: var(--muted); font-size: 12px; }
244
+ .management-health > p,
245
+ .management-artifacts > p,
246
+ .management-checks > p { margin: 0; padding: 13px; color: var(--muted); }
247
+ .management-health.critical > header strong { color: #ff7d87; }
248
+ .management-health.warning > header strong { color: #e9b949; }
249
+ .management-health.healthy > header strong { color: var(--green); }
250
+
251
+ .management-detail {
252
+ container: management-detail / inline-size;
253
+ display: grid;
254
+ gap: 12px;
255
+ }
256
+ .management-detail .management-health li {
257
+ display: grid;
258
+ grid-template-columns: 7px minmax(148px, max-content) minmax(0, 1fr);
259
+ align-items: start;
260
+ }
261
+ .management-detail .management-health li > i { margin-top: .4em; }
262
+ .management-detail .management-health li > b {
263
+ min-width: 0;
264
+ font-size: 13px;
265
+ line-height: 1.45;
266
+ }
267
+ .management-detail .management-health li > span {
268
+ min-width: 0;
269
+ line-height: 1.45;
270
+ overflow-wrap: anywhere;
271
+ }
272
+ .management-outcome { padding: 16px; border-color: #2b3a4d; }
273
+ .management-outcome > header { display: flex; justify-content: space-between; gap: 16px; }
274
+ .management-outcome h3 { margin: 4px 0 0; font-size: 20px; }
275
+ .management-outcome header span { color: var(--green); font-size: 12px; font-weight: 800; }
276
+ .management-outcome em { align-self: start; padding: 5px 8px; border-radius: 999px; color: #f0c56d; background: rgba(233, 185, 73, .09); font-size: 12px; font-style: normal; }
277
+ .management-outcome em.verified { color: #74dca8; background: rgba(76, 227, 154, .09); }
278
+ .management-outcome > p { margin: 14px 0 0; color: #d8e2ee; line-height: 1.65; white-space: pre-wrap; }
279
+ .management-attention-detail { padding: 14px; border-color: rgba(233, 185, 73, .25); }
280
+ .management-attention-detail > header span { display: block; margin-bottom: 5px; color: #e9b949; font-size: 12px; }
281
+ .management-attention-detail > header b { line-height: 1.5; }
282
+ .management-attention-detail .management-quick-actions { margin-top: 12px; }
283
+ .management-attention-detail .agent-command-panel { margin-top: 12px; }
284
+ .management-artifacts li i { min-width: 50px; padding: 3px 6px; border-radius: 6px; color: #7ddaf1; background: #142330; font-size: 12px; font-style: normal; text-align: center; text-transform: uppercase; }
285
+ .management-artifacts li {
286
+ display: grid;
287
+ grid-template-columns: auto minmax(0, 1fr) auto;
288
+ }
289
+ .management-artifacts li b {
290
+ min-width: 0;
291
+ overflow: hidden;
292
+ color: #e5ebf3;
293
+ font-size: 13px;
294
+ font-weight: 650;
295
+ line-height: 1.45;
296
+ text-overflow: ellipsis;
297
+ white-space: nowrap;
298
+ }
299
+ .management-evidence dl { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; }
300
+ .management-evidence dl div { padding: 11px 13px; border-right: 1px solid var(--line-soft); }
301
+ .management-evidence dl div:last-child { border-right: 0; }
302
+ .management-evidence dt { color: var(--muted); font-size: 12px; }
303
+ .management-evidence dd { margin: 4px 0 0; color: #dce6f1; font-size: 12px; }
304
+ .management-evidence > p { margin: 0; padding: 10px 13px; border-top: 1px solid var(--line-soft); color: var(--muted); font-size: 12px; }
305
+ .management-controls .management-control-buttons { padding: 12px; }
306
+ .management-empty { display: grid; gap: 5px; padding: 34px; color: var(--muted); text-align: center; }
307
+ .management-empty b { color: var(--text); font-size: 18px; }
308
+
309
+ .session-card > .management-progress,
310
+ .session-card > .management-health { margin-top: 10px; }
311
+ .session-card > .management-health ul { display: flex; flex-wrap: wrap; padding: 8px 10px; }
312
+ .session-card > .management-health li { padding: 4px 7px; border: 0; }
313
+ .session-card > .management-health li span { display: none; }
314
+
315
+ .global-stat.critical strong { color: #ff7d87; }
316
+ .global-stat.warning strong { color: #e9b949; }
317
+
318
+ @container management-detail (max-width: 600px) {
319
+ .management-detail .management-health li {
320
+ grid-template-columns: 7px minmax(0, 1fr);
321
+ column-gap: 10px;
322
+ row-gap: 2px;
323
+ }
324
+ .management-detail .management-health li > b,
325
+ .management-detail .management-health li > span { grid-column: 2; }
326
+ .management-detail .management-health li > span {
327
+ display: -webkit-box;
328
+ margin-left: 0;
329
+ overflow: hidden;
330
+ -webkit-box-orient: vertical;
331
+ -webkit-line-clamp: 2;
332
+ }
333
+ }
334
+
335
+ @media (max-width: 980px) {
336
+ .operations-metrics { grid-template-columns: repeat(5, minmax(0, 1fr)); }
337
+ .operations-metrics > * { min-width: 0; padding-inline: 9px; }
338
+ .operations-priority { grid-template-columns: 1fr; }
339
+ .attention-card > header { grid-template-columns: 38px 1fr; }
340
+ .attention-card > header .confidence { grid-column: 2; justify-self: start; }
341
+ .attention-reason { grid-template-columns: 1fr; }
342
+ .management-evidence dl { grid-template-columns: 1fr; }
343
+ .management-evidence dl div { border-right: 0; border-bottom: 1px solid var(--line-soft); }
344
+ }
345
+
346
+ @media (max-width: 640px) {
347
+ .operations-overview > header,
348
+ .attention-inbox-head { align-items: flex-start; flex-direction: column; padding: 18px; }
349
+ .operations-review-total { align-self: stretch; justify-content: space-between; }
350
+ .operations-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
351
+ .operations-metrics > * { min-height: 62px; padding: 12px; }
352
+ .attention-card-list { padding: 10px; }
353
+ .attention-card { padding: 13px; }
354
+ .management-progress > p { align-items: flex-start; flex-direction: column; }
355
+ }
@@ -153,6 +153,7 @@
153
153
 
154
154
  .drawer-backdrop.closing {
155
155
  animation: motion-backdrop-out 260ms ease both;
156
+ pointer-events: none;
156
157
  }
157
158
 
158
159
  .detail-drawer {
@@ -176,6 +177,10 @@
176
177
  box-shadow: -32px 0 88px rgba(0,0,0,.52);
177
178
  }
178
179
 
180
+ .detail-drawer:not(.open) {
181
+ pointer-events: none;
182
+ }
183
+
179
184
  .modal-backdrop:not(.hidden) {
180
185
  animation: motion-backdrop-in var(--motion-medium) ease both;
181
186
  }
@@ -205,6 +210,12 @@
205
210
  color: #c6f8e4;
206
211
  }
207
212
 
213
+ .drawer-meta .origin-project-meta {
214
+ border-color: rgba(89,216,255,.24);
215
+ background: rgba(89,216,255,.06);
216
+ color: #79cce4;
217
+ }
218
+
208
219
  .drawer-meta .work-state.working {
209
220
  border-color: rgba(76,227,154,.3);
210
221
  background: rgba(76,227,154,.09);
@@ -224,8 +235,8 @@
224
235
  }
225
236
 
226
237
  .close-button {
227
- width: 32px;
228
- height: 32px;
238
+ width: 40px;
239
+ height: 40px;
229
240
  margin-left: auto;
230
241
  border: 1px solid var(--line);
231
242
  border-radius: 9px;
@@ -466,8 +466,8 @@
466
466
  background: transparent;
467
467
  color: #7f8ba0;
468
468
  cursor: pointer;
469
- width: 34px;
470
- height: 34px;
469
+ width: 40px;
470
+ height: 40px;
471
471
  font-size: 17px;
472
472
  }
473
473
 
@@ -551,15 +551,18 @@
551
551
 
552
552
  .workspace-list {
553
553
  display: grid;
554
- overflow: auto;
555
- padding-right: 2px;
556
- gap: 5px;
554
+ overflow-x: hidden;
555
+ overflow-y: auto;
556
+ padding-right: 4px;
557
+ gap: 3px;
558
+ scrollbar-width: thin;
559
+ scrollbar-color: #314352 transparent;
557
560
  }
558
561
 
559
562
  .workspace-row {
560
563
  position: relative;
561
564
  display: grid;
562
- grid-template-columns: minmax(0,1fr) 34px;
565
+ grid-template-columns: minmax(0,1fr) 44px;
563
566
  align-items: center;
564
567
  gap: 4px;
565
568
  }
@@ -573,14 +576,15 @@
573
576
  transition: transform var(--motion-fast) var(--motion-ease),background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-medium) ease,opacity var(--motion-fast) ease;
574
577
  display: flex;
575
578
  align-items: center;
576
- gap: 9px;
577
- padding: 0 8px;
579
+ gap: 8px;
580
+ padding: 0 9px;
578
581
  border-radius: 9px;
579
- min-height: 42px;
582
+ min-height: 44px;
580
583
  height: auto;
581
584
  font-size: 13px;
582
585
  position: relative;
583
586
  width: 100%;
587
+ min-width: 0;
584
588
  border: 1px solid transparent;
585
589
  background: transparent;
586
590
  color: #b4bfcc;
@@ -607,19 +611,23 @@
607
611
  }
608
612
 
609
613
  .workspace-remove {
610
- width: 34px;
611
- height: 34px;
612
- border: 0;
613
- border-radius: 9px;
614
- background: #131c27;
615
- color: #94a2b2;
616
- font-size: 15px;
614
+ width: 44px;
615
+ height: 44px;
616
+ padding: 0;
617
+ border: 1px solid transparent;
618
+ border-radius: 8px;
619
+ background: transparent;
620
+ color: #8292a1;
621
+ font-size: 14px;
617
622
  cursor: pointer;
623
+ opacity: .72;
618
624
  }
619
625
 
620
626
  .workspace-remove:hover {
627
+ border-color: rgba(255, 107, 127, .25);
621
628
  background: #2d1d24;
622
629
  color: #ff9baa;
630
+ opacity: 1;
623
631
  }
624
632
 
625
633
  .child-row {