@oddessentials/agent-guild 0.3.0 → 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/README.md +12 -7
- package/bin/agent-guild-report.mjs +14 -1
- package/bin/agent-guild.mjs +85 -46
- package/config/providers.default.json +4 -0
- package/package.json +1 -1
- package/src/manager/launch.mjs +64 -0
- package/src/manager/main.mjs +27 -4
- package/src/manager/news.mjs +470 -0
- package/src/manager/providers.mjs +11 -0
- package/src/manager/server.mjs +30 -8
- package/src/manager/session-history.mjs +496 -0
- package/src/manager/session-manager.mjs +4 -0
- package/src/manager/session.mjs +16 -0
- package/src/report/hooks.mjs +4 -0
- package/web/app.js +715 -50
- package/web/art/art.css +20 -0
- package/web/index.html +74 -4
- package/web/styles.css +104 -4
package/web/art/art.css
CHANGED
|
@@ -155,6 +155,26 @@
|
|
|
155
155
|
.badge { background: rgba(0, 0, 0, 0.45); border-color: #4a3d25; }
|
|
156
156
|
.model-pill:hover { border-color: var(--gold-dim); }
|
|
157
157
|
|
|
158
|
+
.news-latest {
|
|
159
|
+
border-radius: 6px; border-color: #4a3d25; background: var(--card-bg);
|
|
160
|
+
box-shadow: inset 0 0 0 1px rgba(232, 196, 124, 0.06), 0 8px 24px rgba(0, 0, 0, 0.35);
|
|
161
|
+
}
|
|
162
|
+
.news-row + .news-row, .news-bar, .news-filters, .news-item, .news-status { border-color: #2a2418; }
|
|
163
|
+
.news-link { color: #f3ead8; }
|
|
164
|
+
a.news-link:visited { color: var(--muted); }
|
|
165
|
+
.news-panel {
|
|
166
|
+
background: #12141a; border-left-color: #4a3d25;
|
|
167
|
+
box-shadow: inset 1px 0 0 rgba(232, 196, 124, 0.08), -24px 0 60px rgba(0, 0, 0, 0.6);
|
|
168
|
+
}
|
|
169
|
+
.news-panel::backdrop { background: rgba(5, 6, 9, 0.72); }
|
|
170
|
+
.news-bar { padding: 16px 18px 12px; }
|
|
171
|
+
.news-filters, .news-status { padding-left: 18px; padding-right: 18px; }
|
|
172
|
+
.news-body { padding: 0 18px 14px; }
|
|
173
|
+
.news-day { background: #12141a; color: #c9ab72; }
|
|
174
|
+
.news-filter { border-color: #4a3d25; background: rgba(0, 0, 0, 0.35); }
|
|
175
|
+
.news-filter:hover { border-color: var(--gold-dim); }
|
|
176
|
+
.news-filter[aria-pressed="true"] { border-color: #b8955a; color: #fff; background: linear-gradient(#8e8ef6, #6262d6); }
|
|
177
|
+
|
|
158
178
|
.session-card { padding-left: 152px; min-height: 196px; }
|
|
159
179
|
.session-card::before {
|
|
160
180
|
inset: 0 auto 0 0; width: 168px; background-size: 168px auto;
|
package/web/index.html
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
<div class="brand">
|
|
17
17
|
<svg class="brand-mark" viewBox="0 0 32 32" aria-hidden="true"><rect width="32" height="32" rx="8" fill="currentColor"/><path d="M9 22l7-12 7 12" stroke="#fff" stroke-width="3" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
18
18
|
<h1>Agent Guild</h1>
|
|
19
|
+
<span id="version" class="version" hidden></span>
|
|
19
20
|
</div>
|
|
20
21
|
<div class="topbar-end">
|
|
21
22
|
<div id="connection" class="connection" role="status" aria-live="polite">
|
|
@@ -24,6 +25,7 @@
|
|
|
24
25
|
<span id="upgrade-note" class="upgrade-note" hidden></span>
|
|
25
26
|
<button id="upgrade" class="btn upgrade" type="button" hidden></button>
|
|
26
27
|
<button id="theme-toggle" class="btn theme-toggle" type="button"></button>
|
|
28
|
+
<button id="restart-manager" class="btn restart-manager" type="button" hidden>Restart manager</button>
|
|
27
29
|
<button id="stop-manager" class="btn danger stop-manager" type="button" hidden title="Stop the session manager. This ends every session.">Stop manager</button>
|
|
28
30
|
</div>
|
|
29
31
|
</header>
|
|
@@ -47,6 +49,15 @@
|
|
|
47
49
|
<div id="sessions" class="session-grid" role="list"></div>
|
|
48
50
|
<p id="empty" class="empty">No sessions yet. Pick a provider above to start one. Sessions keep running when you close this page.</p>
|
|
49
51
|
</section>
|
|
52
|
+
|
|
53
|
+
<section class="news" aria-labelledby="news-heading">
|
|
54
|
+
<div class="section-head">
|
|
55
|
+
<h2 id="news-heading">Latest news <span id="news-count" class="count"></span></h2>
|
|
56
|
+
<button id="news-all" class="btn" type="button" aria-haspopup="dialog">All news</button>
|
|
57
|
+
</div>
|
|
58
|
+
<ol id="news-latest" class="news-latest" hidden></ol>
|
|
59
|
+
<p id="news-note" class="empty">Loading news…</p>
|
|
60
|
+
</section>
|
|
50
61
|
</main>
|
|
51
62
|
|
|
52
63
|
<section id="auth" class="auth" hidden>
|
|
@@ -64,9 +75,15 @@
|
|
|
64
75
|
<section id="stopped" class="auth notice" hidden aria-live="polite">
|
|
65
76
|
<h2 id="stopped-title">Stopping the session manager…</h2>
|
|
66
77
|
<p id="stopped-text">Ending every session. This can take a few seconds.</p>
|
|
67
|
-
<
|
|
68
|
-
|
|
69
|
-
|
|
78
|
+
<div id="stopped-help" class="stopped-help" hidden>
|
|
79
|
+
<p id="stopped-how">To start again, open a terminal and run:</p>
|
|
80
|
+
<div class="command">
|
|
81
|
+
<pre>agent-guild open</pre>
|
|
82
|
+
<button id="copy-command" class="btn" type="button" title="Copy the command">Copy</button>
|
|
83
|
+
</div>
|
|
84
|
+
<p id="stopped-launcher" hidden>Or double-click <code id="stopped-launcher-path"></code> in your file manager.</p>
|
|
85
|
+
<p>This page reconnects by itself when the manager is back.</p>
|
|
86
|
+
</div>
|
|
70
87
|
</section>
|
|
71
88
|
|
|
72
89
|
<div id="terminal-panel" class="terminal-panel" hidden role="dialog" aria-modal="false" aria-labelledby="panel-title">
|
|
@@ -105,6 +122,47 @@
|
|
|
105
122
|
<p id="models-source" class="models-source"></p>
|
|
106
123
|
</dialog>
|
|
107
124
|
|
|
125
|
+
<dialog id="news" class="news-panel" aria-labelledby="news-title">
|
|
126
|
+
<div class="news-bar">
|
|
127
|
+
<div class="news-heading">
|
|
128
|
+
<h2 id="news-title">News</h2>
|
|
129
|
+
<p id="news-sub" class="sub"></p>
|
|
130
|
+
</div>
|
|
131
|
+
<button id="news-close" class="btn" type="button">Close</button>
|
|
132
|
+
</div>
|
|
133
|
+
<div id="news-filters" class="news-filters" role="group" aria-label="Show"></div>
|
|
134
|
+
<div class="news-body">
|
|
135
|
+
<button id="news-fresh" class="btn news-fresh" type="button" hidden></button>
|
|
136
|
+
<div id="news-list"></div>
|
|
137
|
+
<p id="news-empty" class="news-empty" hidden></p>
|
|
138
|
+
</div>
|
|
139
|
+
<p id="news-status" class="news-status" hidden></p>
|
|
140
|
+
</dialog>
|
|
141
|
+
|
|
142
|
+
<dialog id="history" class="models history" aria-labelledby="history-title">
|
|
143
|
+
<div class="models-bar">
|
|
144
|
+
<span id="history-icon" class="provider-icon small"></span>
|
|
145
|
+
<div class="models-heading">
|
|
146
|
+
<h2 id="history-title"></h2>
|
|
147
|
+
<p id="history-sub" class="sub"></p>
|
|
148
|
+
</div>
|
|
149
|
+
<button id="history-close" class="btn" type="button">Close</button>
|
|
150
|
+
</div>
|
|
151
|
+
<div class="history-tools">
|
|
152
|
+
<input id="history-filter" type="search" placeholder="Filter by title, folder or id" aria-label="Filter sessions" spellcheck="false" autocomplete="off">
|
|
153
|
+
<label class="history-here"><input id="history-here" type="checkbox"><span>Working folder only</span></label>
|
|
154
|
+
</div>
|
|
155
|
+
<div class="models-body">
|
|
156
|
+
<div id="history-list" class="history-list" role="list"></div>
|
|
157
|
+
<p id="history-note" class="models-note"></p>
|
|
158
|
+
</div>
|
|
159
|
+
<form id="history-form" class="history-form">
|
|
160
|
+
<label for="history-id">Resume by id</label>
|
|
161
|
+
<input id="history-id" type="text" placeholder="Session id or name" spellcheck="false" autocomplete="off">
|
|
162
|
+
<button type="submit" class="btn">Resume</button>
|
|
163
|
+
</form>
|
|
164
|
+
</dialog>
|
|
165
|
+
|
|
108
166
|
<div id="tip" class="tip" aria-hidden="true" hidden><strong id="tip-title"></strong><span id="tip-source"></span><p id="tip-text"></p></div>
|
|
109
167
|
|
|
110
168
|
<div id="toast" class="toast" role="alert" hidden></div>
|
|
@@ -168,6 +226,17 @@
|
|
|
168
226
|
</section>
|
|
169
227
|
</template>
|
|
170
228
|
|
|
229
|
+
<template id="history-template">
|
|
230
|
+
<article class="history-row" role="listitem">
|
|
231
|
+
<div class="history-main">
|
|
232
|
+
<div class="history-title"></div>
|
|
233
|
+
<div class="history-meta"></div>
|
|
234
|
+
</div>
|
|
235
|
+
<button class="session-id" type="button"></button>
|
|
236
|
+
<button class="btn primary history-resume" type="button"></button>
|
|
237
|
+
</article>
|
|
238
|
+
</template>
|
|
239
|
+
|
|
171
240
|
<template id="session-template">
|
|
172
241
|
<article class="session-card" role="listitem" tabindex="0">
|
|
173
242
|
<span class="level-badge" aria-hidden="true"></span>
|
|
@@ -175,7 +244,7 @@
|
|
|
175
244
|
<span class="provider-icon"></span>
|
|
176
245
|
<div class="card-title">
|
|
177
246
|
<div class="name"></div>
|
|
178
|
-
<div class="meta"></div>
|
|
247
|
+
<div class="meta"><span class="meta-text"></span><button class="session-id" type="button" hidden></button></div>
|
|
179
248
|
</div>
|
|
180
249
|
<button class="model-pill" type="button"></button>
|
|
181
250
|
<span class="status-pill"></span>
|
|
@@ -187,6 +256,7 @@
|
|
|
187
256
|
</div>
|
|
188
257
|
<div class="card-actions">
|
|
189
258
|
<button class="btn primary open" type="button">Open</button>
|
|
259
|
+
<button class="btn resume" type="button" hidden>Resume</button>
|
|
190
260
|
<button class="btn rename" type="button">Rename</button>
|
|
191
261
|
<button class="btn danger stop" type="button">Stop</button>
|
|
192
262
|
<button class="btn remove" type="button">Remove</button>
|
package/web/styles.css
CHANGED
|
@@ -49,6 +49,10 @@ code, pre { font-family: ui-monospace, "Cascadia Code", Menlo, Consolas, monospa
|
|
|
49
49
|
}
|
|
50
50
|
.brand { display: flex; align-items: center; gap: 10px; }
|
|
51
51
|
.brand-mark { width: 26px; height: 26px; color: var(--accent); flex: none; }
|
|
52
|
+
.version {
|
|
53
|
+
font-size: 0.72rem; font-weight: 600; padding: 1px 7px; border-radius: 999px; white-space: nowrap;
|
|
54
|
+
background: var(--surface-2); color: var(--muted); border: 1px solid var(--border); font-variant-numeric: tabular-nums;
|
|
55
|
+
}
|
|
52
56
|
.topbar-end { display: flex; align-items: center; justify-content: flex-end; gap: 14px; flex-wrap: wrap; min-width: 0; }
|
|
53
57
|
.connection { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 0.85rem; }
|
|
54
58
|
.connection .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--warn); }
|
|
@@ -249,8 +253,8 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
249
253
|
.btn.danger { color: var(--danger); }
|
|
250
254
|
.btn.danger:hover { border-color: var(--danger); }
|
|
251
255
|
.btn:disabled { opacity: 0.6; cursor: progress; }
|
|
252
|
-
.stop-manager, .theme-toggle, .upgrade { white-space: nowrap; }
|
|
253
|
-
.btn.upgrade { color: var(--warn); border-color: var(--warn); }
|
|
256
|
+
.stop-manager, .restart-manager, .theme-toggle, .upgrade { white-space: nowrap; }
|
|
257
|
+
.btn.upgrade, .btn.restart-manager.pending { color: var(--warn); border-color: var(--warn); }
|
|
254
258
|
.upgrade-note { font-size: 0.85rem; color: var(--warn); }
|
|
255
259
|
|
|
256
260
|
.empty { color: var(--muted); margin: 8px 0 0; }
|
|
@@ -259,8 +263,12 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
259
263
|
.auth p { margin: 0; color: var(--muted); line-height: 1.5; }
|
|
260
264
|
.auth pre { margin: 0; padding: 10px 12px; background: var(--surface-2); border-radius: 8px; }
|
|
261
265
|
.auth form { display: flex; gap: 8px; }
|
|
266
|
+
.stopped-help { display: grid; gap: 12px; }
|
|
267
|
+
.command { display: flex; align-items: center; gap: 8px; }
|
|
268
|
+
.command pre { flex: 1; min-width: 0; overflow-x: auto; }
|
|
269
|
+
.stopped-help code { color: var(--text); overflow-wrap: anywhere; }
|
|
262
270
|
.notice h2 { color: var(--danger); }
|
|
263
|
-
.notice.stopping h2 { color: var(--warn); }
|
|
271
|
+
.notice.stopping h2, .notice.restarting h2 { color: var(--warn); }
|
|
264
272
|
.error { color: var(--danger); min-height: 1.2em; }
|
|
265
273
|
|
|
266
274
|
.terminal-panel {
|
|
@@ -341,6 +349,91 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
341
349
|
.models-note { margin: 14px 0 0; color: var(--muted); }
|
|
342
350
|
.models-source { margin: 0; padding: 10px 14px; border-top: 1px solid var(--border); color: var(--muted); font-size: 0.75rem; line-height: 1.45; }
|
|
343
351
|
|
|
352
|
+
.news-latest {
|
|
353
|
+
list-style: none; margin: 0; padding: 0;
|
|
354
|
+
border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow);
|
|
355
|
+
}
|
|
356
|
+
.news-row { display: flex; align-items: baseline; gap: 4px 10px; min-width: 0; padding: 9px 14px; }
|
|
357
|
+
.news-row + .news-row { border-top: 1px solid var(--border); }
|
|
358
|
+
.news-row .news-link { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
359
|
+
.news-row .badge, .news-row .news-meta { flex: none; }
|
|
360
|
+
.news-link { color: var(--text); font-weight: 600; text-decoration: none; }
|
|
361
|
+
a.news-link:hover, .news-discussion:hover { text-decoration: underline; }
|
|
362
|
+
a.news-link:visited { color: var(--muted); }
|
|
363
|
+
.news-link:focus-visible, .news-discussion:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 3px; }
|
|
364
|
+
.news-meta { color: var(--muted); font-size: 0.78rem; white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
365
|
+
|
|
366
|
+
.news-panel {
|
|
367
|
+
width: min(460px, 100vw); max-width: 100vw; height: 100dvh; max-height: 100dvh; margin: 0 0 0 auto; padding: 0;
|
|
368
|
+
border: 0; border-left: 1px solid var(--border); background: var(--surface); color: var(--text);
|
|
369
|
+
box-shadow: -16px 0 48px rgba(0, 0, 0, 0.25);
|
|
370
|
+
}
|
|
371
|
+
.news-panel[open] { display: flex; flex-direction: column; animation: news-in 0.18s ease-out; }
|
|
372
|
+
.news-panel::backdrop { background: rgba(15, 17, 21, 0.4); }
|
|
373
|
+
.news-bar { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-bottom: 1px solid var(--border); }
|
|
374
|
+
.news-heading { flex: 1; min-width: 0; }
|
|
375
|
+
.news-heading .sub { margin: 2px 0 0; color: var(--muted); font-size: 0.78rem; }
|
|
376
|
+
.news-filters { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 14px; border-bottom: 1px solid var(--border); }
|
|
377
|
+
.news-filter {
|
|
378
|
+
font: inherit; font-size: 0.75rem; font-weight: 600; padding: 3px 11px; border-radius: 999px; cursor: pointer;
|
|
379
|
+
border: 1px solid var(--border); background: var(--surface-2); color: var(--muted);
|
|
380
|
+
}
|
|
381
|
+
.news-filter:hover { border-color: var(--muted); }
|
|
382
|
+
.news-filter:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
383
|
+
.news-filter[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: var(--accent-text); }
|
|
384
|
+
.news-body { flex: 1; min-height: 0; overflow: auto; padding: 0 14px 14px; }
|
|
385
|
+
.news-fresh { width: 100%; margin-top: 12px; }
|
|
386
|
+
.news-day {
|
|
387
|
+
position: sticky; top: 0; z-index: 1; margin: 0; padding: 12px 0 6px; background: var(--surface);
|
|
388
|
+
color: var(--muted); font-size: 0.7rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase;
|
|
389
|
+
}
|
|
390
|
+
.news-items { list-style: none; margin: 0; padding: 0; }
|
|
391
|
+
.news-item { padding: 10px 0; border-top: 1px solid var(--border); }
|
|
392
|
+
.news-head { display: flex; align-items: baseline; gap: 6px; }
|
|
393
|
+
.news-head .news-link { overflow-wrap: anywhere; }
|
|
394
|
+
.news-head .badge { flex: none; margin-left: auto; }
|
|
395
|
+
.news-item .news-meta { display: block; margin-top: 3px; }
|
|
396
|
+
.news-summary {
|
|
397
|
+
margin: 4px 0 0; color: var(--muted); font-size: 0.82rem; line-height: 1.45; overflow-wrap: anywhere;
|
|
398
|
+
display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;
|
|
399
|
+
}
|
|
400
|
+
.news-discussion { color: inherit; text-decoration: none; }
|
|
401
|
+
.news-empty { margin: 14px 0 0; color: var(--muted); }
|
|
402
|
+
.news-status { margin: 0; padding: 10px 14px; border-top: 1px solid var(--border); color: var(--muted); font-size: 0.75rem; line-height: 1.45; }
|
|
403
|
+
.news-status span { display: block; }
|
|
404
|
+
|
|
405
|
+
.history-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 10px 14px 0; }
|
|
406
|
+
.history-tools input[type="search"] {
|
|
407
|
+
flex: 1 1 220px; min-width: 0; padding: 7px 10px; border-radius: 8px; border: 1px solid var(--border);
|
|
408
|
+
background: var(--surface); color: var(--text); font: inherit; font-size: 0.9rem;
|
|
409
|
+
}
|
|
410
|
+
.history-tools input:focus-visible, .history-form input:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
411
|
+
.history-here { display: flex; align-items: center; gap: 6px; font-size: 0.8rem; color: var(--muted); white-space: nowrap; cursor: pointer; }
|
|
412
|
+
.history-here:has(input:disabled) { opacity: 0.6; cursor: default; }
|
|
413
|
+
.history .models-body { padding-top: 6px; }
|
|
414
|
+
.history-row {
|
|
415
|
+
display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 4px 12px;
|
|
416
|
+
padding: 10px 8px; border-bottom: 1px solid var(--border);
|
|
417
|
+
}
|
|
418
|
+
.history-main { min-width: 0; }
|
|
419
|
+
.history-title { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
420
|
+
.history-row.untitled .history-title { font-weight: 500; color: var(--muted); }
|
|
421
|
+
.history-meta { color: var(--muted); font-size: 0.78rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
422
|
+
.history-row.running .history-meta { color: var(--ok); }
|
|
423
|
+
.session-id {
|
|
424
|
+
font-family: ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, monospace; font-size: 0.72rem; padding: 2px 7px;
|
|
425
|
+
border-radius: 6px; border: 1px solid var(--border); background: var(--surface-2); color: var(--muted); cursor: copy; white-space: nowrap;
|
|
426
|
+
}
|
|
427
|
+
.session-id:hover { color: var(--text); border-color: var(--muted); }
|
|
428
|
+
.session-id:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
429
|
+
.card-title .meta { display: flex; align-items: center; gap: 8px; min-width: 0; }
|
|
430
|
+
.card-title .meta-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
431
|
+
.history-form { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-top: 1px solid var(--border); font-size: 0.85rem; color: var(--muted); }
|
|
432
|
+
.history-form input {
|
|
433
|
+
flex: 1; min-width: 0; padding: 6px 10px; border-radius: 8px; border: 1px solid var(--border);
|
|
434
|
+
background: var(--surface); color: var(--text); font: inherit; font-size: 0.85rem;
|
|
435
|
+
}
|
|
436
|
+
|
|
344
437
|
.toast {
|
|
345
438
|
position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); z-index: 20;
|
|
346
439
|
max-width: min(640px, calc(100vw - 32px)); padding: 10px 14px; border-radius: 8px;
|
|
@@ -350,9 +443,10 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
350
443
|
@keyframes pulse { 50% { opacity: 0.35; } }
|
|
351
444
|
@keyframes ring { 0% { transform: scale(0.85); opacity: 0.8; } 100% { transform: scale(1.3); opacity: 0; } }
|
|
352
445
|
@keyframes stat-fill { from { transform: scaleX(0); } }
|
|
446
|
+
@keyframes news-in { from { transform: translateX(24px); opacity: 0; } }
|
|
353
447
|
|
|
354
448
|
@media (prefers-reduced-motion: reduce) {
|
|
355
|
-
.status-pill.active::before, .agent.working::after, .model-detail .stat-fill { animation: none; }
|
|
449
|
+
.status-pill.active::before, .agent.working::after, .model-detail .stat-fill, .news-panel[open] { animation: none; }
|
|
356
450
|
.model-name::before { transition: none; }
|
|
357
451
|
}
|
|
358
452
|
|
|
@@ -370,4 +464,10 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
370
464
|
.model-detail .stat { padding-bottom: 6px; }
|
|
371
465
|
.model-detail .stat-reading { row-gap: 1px; }
|
|
372
466
|
.model-detail .stat-note { grid-column: 1 / -1; }
|
|
467
|
+
.news-row { flex-wrap: wrap; }
|
|
468
|
+
.news-row .news-link { flex-basis: 100%; white-space: normal; }
|
|
469
|
+
.news-panel { border-left: 0; }
|
|
470
|
+
.history-row { grid-template-columns: minmax(0, 1fr) auto; }
|
|
471
|
+
.history-row .session-id { grid-row: 2; justify-self: start; }
|
|
472
|
+
.history-form { flex-wrap: wrap; }
|
|
373
473
|
}
|