@oddessentials/agent-guild 0.5.0 → 0.6.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 +1 -1
- package/package.json +1 -1
- package/src/manager/changelog.mjs +195 -0
- package/src/manager/main.mjs +3 -0
- package/src/manager/news.mjs +5 -5
- package/src/manager/server.mjs +27 -8
- package/web/app.js +353 -8
- package/web/art/art.css +372 -159
- package/web/art/characters/anthropic/idle.avif +0 -0
- package/web/art/characters/anthropic/idle.webp +0 -0
- package/web/art/characters/anthropic/locked.avif +0 -0
- package/web/art/characters/anthropic/locked.webp +0 -0
- package/web/art/characters/anthropic/working.avif +0 -0
- package/web/art/characters/anthropic/working.webp +0 -0
- package/web/art/characters/google/idle.avif +0 -0
- package/web/art/characters/google/idle.webp +0 -0
- package/web/art/characters/google/locked.avif +0 -0
- package/web/art/characters/google/locked.webp +0 -0
- package/web/art/characters/google/working.avif +0 -0
- package/web/art/characters/google/working.webp +0 -0
- package/web/art/characters/openai/idle.avif +0 -0
- package/web/art/characters/openai/idle.webp +0 -0
- package/web/art/characters/openai/locked.avif +0 -0
- package/web/art/characters/openai/locked.webp +0 -0
- package/web/art/characters/openai/working.avif +0 -0
- package/web/art/characters/openai/working.webp +0 -0
- package/web/art/characters/shell/idle.avif +0 -0
- package/web/art/characters/shell/idle.webp +0 -0
- package/web/art/characters/shell/locked.avif +0 -0
- package/web/art/characters/shell/locked.webp +0 -0
- package/web/art/characters/shell/working.avif +0 -0
- package/web/art/characters/shell/working.webp +0 -0
- package/web/art/characters/xai/idle.avif +0 -0
- package/web/art/characters/xai/idle.webp +0 -0
- package/web/art/characters/xai/locked.avif +0 -0
- package/web/art/characters/xai/locked.webp +0 -0
- package/web/art/characters/xai/working.avif +0 -0
- package/web/art/characters/xai/working.webp +0 -0
- package/web/art/icons/anthropic.avif +0 -0
- package/web/art/icons/anthropic.webp +0 -0
- package/web/art/icons/google.avif +0 -0
- package/web/art/icons/google.webp +0 -0
- package/web/art/icons/openai.avif +0 -0
- package/web/art/icons/openai.webp +0 -0
- package/web/art/icons/shell.avif +0 -0
- package/web/art/icons/shell.webp +0 -0
- package/web/art/icons/xai.avif +0 -0
- package/web/art/icons/xai.webp +0 -0
- package/web/art/page-light.avif +0 -0
- package/web/art/page-light.webp +0 -0
- package/web/art/page.avif +0 -0
- package/web/art/page.webp +0 -0
- package/web/art/ui/empty-state.avif +0 -0
- package/web/art/ui/empty-state.webp +0 -0
- package/web/art/ui/favicon.png +0 -0
- package/web/art/ui/frame-ornate.png +0 -0
- package/web/art/ui/guild-crest.png +0 -0
- package/web/fonts/OFL.txt +93 -0
- package/web/fonts/cinzel.woff2 +0 -0
- package/web/index.html +35 -11
- package/web/styles.css +168 -71
- package/web/art/characters/anthropic/idle.png +0 -0
- package/web/art/characters/anthropic/locked.png +0 -0
- package/web/art/characters/anthropic/working.png +0 -0
- package/web/art/characters/google/idle.png +0 -0
- package/web/art/characters/google/locked.png +0 -0
- package/web/art/characters/google/working.png +0 -0
- package/web/art/characters/openai/idle.png +0 -0
- package/web/art/characters/openai/locked.png +0 -0
- package/web/art/characters/openai/working.png +0 -0
- package/web/art/characters/shell/idle.png +0 -0
- package/web/art/characters/shell/locked.png +0 -0
- package/web/art/characters/shell/working.png +0 -0
- package/web/art/characters/xai/idle.png +0 -0
- package/web/art/characters/xai/locked.png +0 -0
- package/web/art/characters/xai/working.png +0 -0
- package/web/art/icons/anthropic.png +0 -0
- package/web/art/icons/google.png +0 -0
- package/web/art/icons/openai.png +0 -0
- package/web/art/icons/shell.png +0 -0
- package/web/art/icons/xai.png +0 -0
- package/web/art/page.png +0 -0
package/web/styles.css
CHANGED
|
@@ -1,21 +1,50 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: "Cinzel";
|
|
3
|
+
src: url("/fonts/cinzel.woff2") format("woff2");
|
|
4
|
+
font-weight: 400 900;
|
|
5
|
+
font-display: swap;
|
|
6
|
+
}
|
|
7
|
+
@font-face {
|
|
8
|
+
font-family: "Cinzel Fallback";
|
|
9
|
+
src: local("Palatino Linotype"), local("Palatino"), local("Georgia");
|
|
10
|
+
ascent-override: 97.6%;
|
|
11
|
+
descent-override: 37.2%;
|
|
12
|
+
line-gap-override: 0%;
|
|
13
|
+
}
|
|
14
|
+
|
|
1
15
|
:root {
|
|
2
|
-
--bg: #
|
|
3
|
-
--surface: #
|
|
4
|
-
--surface-2: #
|
|
5
|
-
--border: #
|
|
6
|
-
--text: #
|
|
7
|
-
--muted: #
|
|
8
|
-
--
|
|
16
|
+
--bg: #f3eee3;
|
|
17
|
+
--surface: #fffcf6;
|
|
18
|
+
--surface-2: #f5eedf;
|
|
19
|
+
--border: #e3d7bd;
|
|
20
|
+
--text: #221b12;
|
|
21
|
+
--muted: #6b5c45;
|
|
22
|
+
--heading: #2c2216;
|
|
23
|
+
--accent: #5a3fc0;
|
|
24
|
+
--accent-fill: #5a3fc0;
|
|
9
25
|
--accent-text: #ffffff;
|
|
10
|
-
--danger: #
|
|
11
|
-
--ok: #
|
|
12
|
-
--warn: #
|
|
13
|
-
--
|
|
26
|
+
--danger: #a8302b;
|
|
27
|
+
--ok: #1d6e40;
|
|
28
|
+
--warn: #8a5300;
|
|
29
|
+
--gold: #b8892f;
|
|
30
|
+
--gold-ink: #7a5715;
|
|
31
|
+
--focus: #5a3fc0;
|
|
32
|
+
--wordmark: linear-gradient(180deg, #a77a26 0%, #7a5715 55%, #563c0b 100%);
|
|
33
|
+
--shadow: 0 1px 2px rgba(70, 48, 12, 0.08), 0 4px 14px rgba(70, 48, 12, 0.08);
|
|
14
34
|
--term-bg: #0f1115;
|
|
15
|
-
--radius:
|
|
35
|
+
--radius: 6px;
|
|
36
|
+
--ease: cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
37
|
+
--font-display: "Cinzel", "Cinzel Fallback", "Palatino Linotype", Palatino, Georgia, serif;
|
|
38
|
+
--font-mono: ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, monospace;
|
|
39
|
+
--icon-sun: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='4.2'/%3E%3Cpath d='M12 2.5v2.2M12 19.3v2.2M2.5 12h2.2M19.3 12h2.2M5.3 5.3l1.6 1.6M17.1 17.1l1.6 1.6M5.3 18.7l1.6-1.6M17.1 6.9l1.6-1.6'/%3E%3C/svg%3E");
|
|
40
|
+
--icon-moon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M19.5 14.6A8 8 0 0 1 9.4 4.5a8 8 0 1 0 10.1 10.1z'/%3E%3C/svg%3E");
|
|
41
|
+
--icon-external: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17L17 7M9 7h8v8'/%3E%3C/svg%3E");
|
|
42
|
+
--icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 5.5l6.5 6.5L9 18.5'/%3E%3C/svg%3E");
|
|
43
|
+
--icon-info: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 10.8v6.2' stroke-width='2.4'/%3E%3Ccircle cx='12' cy='7.3' r='1.2' fill='black' stroke='none'/%3E%3C/svg%3E");
|
|
16
44
|
font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
|
|
17
45
|
font-size: 15px;
|
|
18
46
|
color-scheme: light;
|
|
47
|
+
scrollbar-color: color-mix(in srgb, var(--muted) 45%, transparent) transparent;
|
|
19
48
|
}
|
|
20
49
|
|
|
21
50
|
/* theme.js sets data-theme from the saved choice or the system setting before the first paint. */
|
|
@@ -26,20 +55,31 @@
|
|
|
26
55
|
--border: #2a303b;
|
|
27
56
|
--text: #e6e9ef;
|
|
28
57
|
--muted: #9aa4b2;
|
|
29
|
-
--
|
|
58
|
+
--heading: #f1e2c2;
|
|
59
|
+
--accent: #ac9ff7;
|
|
60
|
+
--accent-fill: #5b40d0;
|
|
30
61
|
--danger: #ef6b66;
|
|
31
62
|
--ok: #4cc38a;
|
|
32
63
|
--warn: #e0a84a;
|
|
64
|
+
--gold: #e8c47c;
|
|
65
|
+
--gold-ink: #e8c47c;
|
|
66
|
+
--focus: #e8c47c;
|
|
67
|
+
--wordmark: linear-gradient(180deg, #fbe9bd 0%, #e2b867 55%, #a97b35 100%);
|
|
33
68
|
--shadow: none;
|
|
34
69
|
color-scheme: dark;
|
|
35
70
|
}
|
|
36
71
|
|
|
37
72
|
* { box-sizing: border-box; }
|
|
38
73
|
body { margin: 0; background: var(--bg); color: var(--text); min-height: 100vh; }
|
|
39
|
-
|
|
40
|
-
h1 {
|
|
41
|
-
|
|
42
|
-
|
|
74
|
+
::selection { background: color-mix(in srgb, var(--accent) 32%, transparent); }
|
|
75
|
+
h1, h2 { margin: 0; font-family: var(--font-display); color: var(--heading); }
|
|
76
|
+
h1 {
|
|
77
|
+
font-size: 1.32rem; font-weight: 700; letter-spacing: 0.02em; white-space: nowrap;
|
|
78
|
+
background: var(--wordmark); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
|
|
79
|
+
}
|
|
80
|
+
h2 { font-size: 1.02rem; font-weight: 600; letter-spacing: 0.03em; }
|
|
81
|
+
h2 .count { font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; letter-spacing: 0; }
|
|
82
|
+
code, pre { font-family: var(--font-mono); }
|
|
43
83
|
[hidden] { display: none !important; }
|
|
44
84
|
|
|
45
85
|
.topbar {
|
|
@@ -48,35 +88,41 @@ code, pre { font-family: ui-monospace, "Cascadia Code", Menlo, Consolas, monospa
|
|
|
48
88
|
position: sticky; top: 0; z-index: 5;
|
|
49
89
|
}
|
|
50
90
|
.brand { display: flex; align-items: center; gap: 10px; }
|
|
51
|
-
.brand-mark { width: 26px; height: 26px; color: var(--accent); flex: none; }
|
|
52
91
|
.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;
|
|
92
|
+
position: relative; font-family: inherit; font-size: 0.72rem; font-weight: 600; padding: 1px 7px; border-radius: 999px; white-space: nowrap;
|
|
93
|
+
background: var(--surface-2); color: var(--muted); border: 1px solid var(--border); font-variant-numeric: tabular-nums; cursor: pointer;
|
|
94
|
+
}
|
|
95
|
+
.version:hover { color: var(--text); border-color: var(--muted); }
|
|
96
|
+
.version:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
|
|
97
|
+
.version.unread::after {
|
|
98
|
+
content: ""; position: absolute; top: -3px; right: -3px; width: 8px; height: 8px; border-radius: 50%;
|
|
99
|
+
background: var(--accent); box-shadow: 0 0 0 2px var(--surface);
|
|
55
100
|
}
|
|
56
101
|
.topbar-end { display: flex; align-items: center; justify-content: flex-end; gap: 14px; flex-wrap: wrap; min-width: 0; }
|
|
57
102
|
.connection { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 0.85rem; }
|
|
58
|
-
.connection .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--
|
|
59
|
-
.connection.ok .dot {
|
|
60
|
-
.connection.down .dot {
|
|
103
|
+
.connection .dot { --dot: var(--warn); width: 8px; height: 8px; border-radius: 50%; background: var(--dot); }
|
|
104
|
+
.connection.ok .dot { --dot: var(--ok); }
|
|
105
|
+
.connection.down .dot { --dot: var(--danger); }
|
|
61
106
|
|
|
62
|
-
main { max-width: 1200px; margin: 0 auto; padding:
|
|
107
|
+
main { max-width: 1200px; margin: 0 auto; padding: 26px 16px 56px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 34px; }
|
|
63
108
|
.section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
|
|
64
109
|
.count { color: var(--muted); font-weight: 500; }
|
|
65
110
|
|
|
66
111
|
.cwd { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 0.85rem; flex: 1 1 280px; max-width: 520px; }
|
|
67
112
|
.cwd input, .auth input {
|
|
68
|
-
flex: 1; min-width: 0; padding: 7px 10px; border-radius:
|
|
113
|
+
flex: 1; min-width: 0; padding: 7px 10px; border-radius: var(--radius); border: 1px solid var(--border);
|
|
69
114
|
background: var(--surface); color: var(--text); font: inherit; font-size: 0.9rem;
|
|
70
115
|
}
|
|
71
|
-
.cwd input:focus, .auth input:focus { outline: 2px solid var(--
|
|
116
|
+
.cwd input:focus, .auth input:focus { outline: 2px solid var(--focus); outline-offset: 1px; }
|
|
72
117
|
|
|
73
118
|
.providers { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
|
|
74
119
|
.provider {
|
|
75
|
-
display:
|
|
120
|
+
display: flex; flex-direction: column; gap: 10px; padding: 14px;
|
|
76
121
|
border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow);
|
|
77
122
|
}
|
|
123
|
+
.provider-head { display: flex; align-items: center; gap: 12px; min-width: 0; }
|
|
78
124
|
.provider.unavailable .provider-icon { filter: grayscale(1); opacity: 0.45; }
|
|
79
|
-
.provider-text { display: grid; gap: 2px; min-width: 0; }
|
|
125
|
+
.provider-text { flex: 1; display: grid; gap: 2px; min-width: 0; }
|
|
80
126
|
.provider .vendor-line { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 6px; min-width: 0; }
|
|
81
127
|
.provider .vendor { font-weight: 600; }
|
|
82
128
|
.provider .tier {
|
|
@@ -89,17 +135,17 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
89
135
|
.provider .state.update-available { color: var(--warn); }
|
|
90
136
|
.provider.unavailable .state { color: var(--muted); }
|
|
91
137
|
.provider .update { color: var(--warn); border-color: var(--warn); }
|
|
92
|
-
.provider .accounts {
|
|
138
|
+
.provider .accounts { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
93
139
|
.account-chip {
|
|
94
140
|
font: inherit; font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 999px; cursor: pointer;
|
|
95
141
|
border: 1px solid var(--border); background: var(--surface-2); color: var(--muted); max-width: 100%;
|
|
96
142
|
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
97
143
|
}
|
|
98
144
|
.account-chip:hover { border-color: var(--muted); }
|
|
99
|
-
.account-chip:focus-visible { outline: 2px solid var(--
|
|
100
|
-
.account-chip[aria-selected="true"] { background: var(--accent); border-color: var(--accent); color: var(--accent-text); }
|
|
145
|
+
.account-chip:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
|
|
146
|
+
.account-chip[aria-selected="true"] { background: var(--accent-fill); border-color: var(--accent-fill); color: var(--accent-text); }
|
|
101
147
|
.account-chip.unsigned { border-style: dashed; }
|
|
102
|
-
.provider .usage {
|
|
148
|
+
.provider .usage { display: grid; gap: 4px; }
|
|
103
149
|
.provider .usage:empty { display: none; }
|
|
104
150
|
.meter { display: grid; grid-template-columns: 5.5em 1fr auto; align-items: center; gap: 8px; font-size: 0.75rem; color: var(--muted); }
|
|
105
151
|
.meter-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
@@ -110,7 +156,7 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
110
156
|
.meter-value { white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
111
157
|
.usage-note { font-size: 0.75rem; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
112
158
|
.provider .model-stats {
|
|
113
|
-
|
|
159
|
+
display: grid; grid-template-columns: max-content minmax(24px, 1fr) auto; align-items: center; gap: 2px 8px;
|
|
114
160
|
}
|
|
115
161
|
.provider .model-stats:empty { display: none; }
|
|
116
162
|
.provider .model-stats > .usage-note { grid-column: 1 / -1; contain: inline-size; }
|
|
@@ -119,9 +165,13 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
119
165
|
font: inherit; font-size: 0.78rem; text-align: left; cursor: pointer;
|
|
120
166
|
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
121
167
|
}
|
|
122
|
-
.model-stats-head::after
|
|
168
|
+
.model-stats-head::after, .console-link::after, .theme-toggle::before, .model-name::before, .provider .copies summary::before {
|
|
169
|
+
content: ""; display: inline-block; flex: none; width: 0.75em; height: 0.75em; margin-left: 0.3em; vertical-align: -0.05em;
|
|
170
|
+
background: currentColor; mask: var(--icon-chevron) center / contain no-repeat;
|
|
171
|
+
}
|
|
172
|
+
.console-link::after { width: 0.7em; height: 0.7em; margin-left: 0.25em; mask-image: var(--icon-external); }
|
|
123
173
|
.model-stats-head:hover { text-decoration: underline; }
|
|
124
|
-
.model-stats-head:focus-visible { outline: 2px solid var(--
|
|
174
|
+
.model-stats-head:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-radius: 3px; }
|
|
125
175
|
|
|
126
176
|
.stat {
|
|
127
177
|
--tier: var(--border);
|
|
@@ -131,16 +181,16 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
131
181
|
.stat-label { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
|
|
132
182
|
.stat-reading { grid-column: 2 / -1; display: grid; grid-template-columns: subgrid; align-items: center; }
|
|
133
183
|
.info {
|
|
134
|
-
position: relative; flex: none; display: inline-grid; place-items: center; width:
|
|
135
|
-
border:
|
|
136
|
-
font: italic 700 0.68rem/1 Georgia, "Times New Roman", serif; cursor: help;
|
|
184
|
+
position: relative; flex: none; display: inline-grid; place-items: center; width: 0.9rem; height: 0.9rem; padding: 0;
|
|
185
|
+
border: 0; border-radius: 50%; background: none; color: var(--muted); font-size: 0; cursor: help;
|
|
137
186
|
}
|
|
187
|
+
.info::before { content: ""; position: absolute; inset: 0; background: currentColor; mask: var(--icon-info) center / contain no-repeat; }
|
|
138
188
|
.info::after { content: ""; position: absolute; inset: -6px; }
|
|
139
|
-
.info:hover, .info:focus-visible { color: var(--accent);
|
|
140
|
-
.info:focus-visible { outline: 2px solid var(--
|
|
189
|
+
.info:hover, .info:focus-visible { color: var(--accent); }
|
|
190
|
+
.info:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
|
|
141
191
|
.tip {
|
|
142
192
|
position: fixed; z-index: 30; width: max-content; max-width: min(320px, calc(100vw - 16px)); margin: 0; padding: 9px 11px;
|
|
143
|
-
border-radius:
|
|
193
|
+
border-radius: var(--radius); background: var(--text); color: var(--bg); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
|
|
144
194
|
font-size: 0.78rem; line-height: 1.45; pointer-events: none;
|
|
145
195
|
}
|
|
146
196
|
.tip strong { font-weight: 600; }
|
|
@@ -172,14 +222,17 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
172
222
|
.tier-c { --tier: #4ade80; --tier-ink: #c6f6d5; }
|
|
173
223
|
.tier-d { --tier: #94a3b8; --tier-ink: #d4dbe4; }
|
|
174
224
|
}
|
|
175
|
-
.provider-links {
|
|
225
|
+
.provider-links { display: flex; gap: 14px; font-size: 0.78rem; }
|
|
176
226
|
.console-link { color: var(--accent); text-decoration: none; }
|
|
177
227
|
.console-link:hover { text-decoration: underline; }
|
|
178
|
-
.console-link:focus-visible { outline: 2px solid var(--
|
|
179
|
-
.provider-actions {
|
|
228
|
+
.console-link:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-radius: 3px; }
|
|
229
|
+
.provider-actions { margin-top: auto; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
|
|
180
230
|
.provider .hint { font-size: 0.78rem; color: var(--muted); overflow-wrap: anywhere; }
|
|
181
|
-
.provider .copies {
|
|
182
|
-
.provider .copies summary { cursor: pointer; color: var(--warn); }
|
|
231
|
+
.provider .copies { font-size: 0.78rem; color: var(--muted); overflow-wrap: anywhere; }
|
|
232
|
+
.provider .copies summary { cursor: pointer; color: var(--warn); list-style: none; }
|
|
233
|
+
.provider .copies summary::-webkit-details-marker { display: none; }
|
|
234
|
+
.provider .copies summary::before { margin: 0 0.3em 0 0; transition: transform 0.15s var(--ease); }
|
|
235
|
+
.provider .copies[open] summary::before { transform: rotate(90deg); }
|
|
183
236
|
.provider .copies ul { margin: 6px 0 0; padding: 0; list-style: none; display: grid; gap: 8px; }
|
|
184
237
|
.provider .copies li span { display: block; }
|
|
185
238
|
.provider .copies .copy-name { color: var(--text); }
|
|
@@ -200,8 +253,8 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
200
253
|
display: grid; gap: 12px; padding: 14px; border: 1px solid var(--border); border-radius: var(--radius);
|
|
201
254
|
background: var(--surface); box-shadow: var(--shadow); cursor: pointer;
|
|
202
255
|
}
|
|
203
|
-
.session-card:focus-visible { outline: 2px solid var(--
|
|
204
|
-
.session-card.exited {
|
|
256
|
+
.session-card:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
|
|
257
|
+
.session-card.exited .name { color: var(--muted); }
|
|
205
258
|
.card-top { display: flex; align-items: center; gap: 12px; }
|
|
206
259
|
.card-title { flex: 1; min-width: 0; }
|
|
207
260
|
.card-title .name { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
@@ -218,10 +271,13 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
218
271
|
border: 0; font-family: inherit; cursor: pointer;
|
|
219
272
|
}
|
|
220
273
|
.model-pill:hover { background: color-mix(in srgb, var(--accent) 24%, var(--surface)); }
|
|
221
|
-
.model-pill:focus-visible { outline: 2px solid var(--
|
|
274
|
+
.model-pill:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
|
|
222
275
|
.model-pill.screen { font-weight: 500; }
|
|
223
276
|
.status-pill.active { color: var(--ok); }
|
|
224
|
-
.status-pill.active::before {
|
|
277
|
+
.status-pill.active::before {
|
|
278
|
+
content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 5px; vertical-align: 1px; border-radius: 50%;
|
|
279
|
+
background: currentColor; box-shadow: 0 0 6px currentColor; animation: pulse 1.2s ease-in-out infinite;
|
|
280
|
+
}
|
|
225
281
|
.status-pill.exited { color: var(--danger); }
|
|
226
282
|
|
|
227
283
|
.agents-row { display: flex; align-items: center; gap: 10px; min-height: 30px; }
|
|
@@ -244,16 +300,20 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
244
300
|
|
|
245
301
|
.card-actions { display: flex; gap: 8px; flex-wrap: wrap; }
|
|
246
302
|
.btn {
|
|
247
|
-
padding: 6px 12px; border-radius:
|
|
303
|
+
padding: 6px 12px; border-radius: var(--radius); border: 1px solid var(--border); background: var(--surface-2);
|
|
248
304
|
color: var(--text); font: inherit; font-size: 0.85rem; cursor: pointer;
|
|
305
|
+
transition: border-color 0.15s, box-shadow 0.15s, filter 0.15s, transform 0.1s;
|
|
249
306
|
}
|
|
307
|
+
.btn:active:not(:disabled) { transform: translateY(1px); }
|
|
250
308
|
.btn:hover { border-color: var(--muted); }
|
|
251
|
-
.btn:focus-visible { outline: 2px solid var(--
|
|
252
|
-
.btn.primary { background: var(--accent); border-color: var(--accent); color: var(--accent-text); }
|
|
309
|
+
.btn:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
|
|
310
|
+
.btn.primary { background: var(--accent-fill); border-color: var(--accent-fill); color: var(--accent-text); }
|
|
253
311
|
.btn.danger { color: var(--danger); }
|
|
254
312
|
.btn.danger:hover { border-color: var(--danger); }
|
|
255
313
|
.btn:disabled { opacity: 0.6; cursor: progress; }
|
|
256
314
|
.stop-manager, .restart-manager, .theme-toggle, .upgrade { white-space: nowrap; }
|
|
315
|
+
.theme-toggle::before { width: 1em; height: 1em; margin: 0 0.4em 0 0; vertical-align: -0.15em; mask-image: var(--icon-sun); }
|
|
316
|
+
.theme-toggle[data-next="dark"]::before { mask-image: var(--icon-moon); }
|
|
257
317
|
.btn.upgrade, .btn.restart-manager.pending { color: var(--warn); border-color: var(--warn); }
|
|
258
318
|
.upgrade-note { font-size: 0.85rem; color: var(--warn); }
|
|
259
319
|
|
|
@@ -261,7 +321,7 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
261
321
|
|
|
262
322
|
.auth { max-width: 560px; margin: 60px auto; padding: 24px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); display: grid; gap: 12px; }
|
|
263
323
|
.auth p { margin: 0; color: var(--muted); line-height: 1.5; }
|
|
264
|
-
.auth pre { margin: 0; padding: 10px 12px; background: var(--surface-2); border-radius:
|
|
324
|
+
.auth pre { margin: 0; padding: 10px 12px; background: var(--surface-2); border-radius: var(--radius); }
|
|
265
325
|
.auth form { display: flex; gap: 8px; }
|
|
266
326
|
.stopped-help { display: grid; gap: 12px; }
|
|
267
327
|
.command { display: flex; align-items: center; gap: 8px; }
|
|
@@ -313,10 +373,10 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
313
373
|
font: inherit; font-size: 0.85rem; text-align: left; cursor: pointer;
|
|
314
374
|
}
|
|
315
375
|
.model-toggle:hover { background: var(--surface-2); }
|
|
316
|
-
.model-toggle:focus-visible { outline: 2px solid var(--
|
|
376
|
+
.model-toggle:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
|
|
317
377
|
.model-title { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; min-width: 0; }
|
|
318
378
|
.model-name { font-weight: 600; overflow-wrap: anywhere; }
|
|
319
|
-
.model-name::before {
|
|
379
|
+
.model-name::before { width: 0.7em; height: 0.7em; margin: 0 0.3em 0 0; background-color: var(--muted); transition: transform 0.15s var(--ease); }
|
|
320
380
|
.model-toggle[aria-expanded="true"] .model-name::before { transform: rotate(90deg); }
|
|
321
381
|
.model-context { color: var(--muted); font-variant-numeric: tabular-nums; }
|
|
322
382
|
.badge {
|
|
@@ -325,10 +385,10 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
325
385
|
}
|
|
326
386
|
.badge.in-use { --badge: var(--accent); color: color-mix(in srgb, var(--badge) 80%, #000); }
|
|
327
387
|
.badge.new { --badge: var(--ok); color: color-mix(in srgb, var(--badge) 72%, #000); }
|
|
328
|
-
.badge.expires { --badge: var(--warn); color: color-mix(in srgb, var(--badge) 62%, #000); }
|
|
329
|
-
.badge.in-use, .badge.new, .badge.expires { border-color: color-mix(in srgb, var(--badge) 45%, transparent); }
|
|
388
|
+
.badge.expires, .badge.installed { --badge: var(--warn); color: color-mix(in srgb, var(--badge) 62%, #000); }
|
|
389
|
+
.badge.in-use, .badge.new, .badge.expires, .badge.installed { border-color: color-mix(in srgb, var(--badge) 45%, transparent); }
|
|
330
390
|
:where(:root[data-theme="dark"]) {
|
|
331
|
-
.badge.in-use, .badge.new, .badge.expires { color: var(--badge); }
|
|
391
|
+
.badge.in-use, .badge.new, .badge.expires, .badge.installed { color: var(--badge); }
|
|
332
392
|
}
|
|
333
393
|
.model-detail {
|
|
334
394
|
display: grid; grid-template-columns: max-content minmax(48px, 1fr) auto minmax(0, 19em); gap: 14px 10px;
|
|
@@ -360,7 +420,7 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
|
|
|
360
420
|
.news-link { color: var(--text); font-weight: 600; text-decoration: none; }
|
|
361
421
|
a.news-link:hover, .news-discussion:hover { text-decoration: underline; }
|
|
362
422
|
a.news-link:visited { color: var(--muted); }
|
|
363
|
-
.news-link:focus-visible, .news-discussion:focus-visible { outline: 2px solid var(--
|
|
423
|
+
.news-link:focus-visible, .news-discussion:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-radius: 3px; }
|
|
364
424
|
.news-meta { color: var(--muted); font-size: 0.78rem; white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
365
425
|
|
|
366
426
|
.news-panel {
|
|
@@ -368,7 +428,19 @@ a.news-link:visited { color: var(--muted); }
|
|
|
368
428
|
border: 0; border-left: 1px solid var(--border); background: var(--surface); color: var(--text);
|
|
369
429
|
box-shadow: -16px 0 48px rgba(0, 0, 0, 0.25);
|
|
370
430
|
}
|
|
371
|
-
.news-panel[open] { display: flex; flex-direction: column;
|
|
431
|
+
.news-panel[open] { display: flex; flex-direction: column; }
|
|
432
|
+
.models, .news-panel {
|
|
433
|
+
transition: opacity 0.22s var(--ease), transform 0.22s var(--ease), overlay 0.22s allow-discrete, display 0.22s allow-discrete;
|
|
434
|
+
}
|
|
435
|
+
.models:not([open]) { opacity: 0; transform: translateY(12px) scale(0.98); }
|
|
436
|
+
.news-panel:not([open]) { opacity: 0; transform: translateX(28px); }
|
|
437
|
+
.models::backdrop, .news-panel::backdrop { transition: opacity 0.22s, overlay 0.22s allow-discrete, display 0.22s allow-discrete; }
|
|
438
|
+
.models:not([open])::backdrop, .news-panel:not([open])::backdrop { opacity: 0; }
|
|
439
|
+
@starting-style {
|
|
440
|
+
.models[open] { opacity: 0; transform: translateY(12px) scale(0.98); }
|
|
441
|
+
.news-panel[open] { opacity: 0; transform: translateX(28px); }
|
|
442
|
+
.models[open]::backdrop, .news-panel[open]::backdrop { opacity: 0; }
|
|
443
|
+
}
|
|
372
444
|
.news-panel::backdrop { background: rgba(15, 17, 21, 0.4); }
|
|
373
445
|
.news-bar { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-bottom: 1px solid var(--border); }
|
|
374
446
|
.news-heading { flex: 1; min-width: 0; }
|
|
@@ -379,8 +451,8 @@ a.news-link:visited { color: var(--muted); }
|
|
|
379
451
|
border: 1px solid var(--border); background: var(--surface-2); color: var(--muted);
|
|
380
452
|
}
|
|
381
453
|
.news-filter:hover { border-color: var(--muted); }
|
|
382
|
-
.news-filter:focus-visible { outline: 2px solid var(--
|
|
383
|
-
.news-filter[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: var(--accent-text); }
|
|
454
|
+
.news-filter:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
|
|
455
|
+
.news-filter[aria-pressed="true"] { background: var(--accent-fill); border-color: var(--accent-fill); color: var(--accent-text); }
|
|
384
456
|
.news-body { flex: 1; min-height: 0; overflow: auto; padding: 0 14px 14px; }
|
|
385
457
|
.news-fresh { width: 100%; margin-top: 12px; }
|
|
386
458
|
.news-day {
|
|
@@ -402,12 +474,25 @@ a.news-link:visited { color: var(--muted); }
|
|
|
402
474
|
.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
475
|
.news-status span { display: block; }
|
|
404
476
|
|
|
477
|
+
.changelog-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
|
|
478
|
+
.changelog-actions .btn { flex: 1 1 auto; }
|
|
479
|
+
.changelog-list { list-style: none; margin: 0; padding: 0; }
|
|
480
|
+
.changelog-release { padding: 14px 0 12px; }
|
|
481
|
+
.changelog-release + .changelog-release { border-top: 1px solid var(--border); }
|
|
482
|
+
.changelog-release h3 { margin: 0; font-size: 1rem; }
|
|
483
|
+
.changelog-release .news-meta { display: block; margin-top: 2px; }
|
|
484
|
+
.changelog-type { margin: 10px 0 4px; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); }
|
|
485
|
+
.changelog-type.breaking { color: var(--danger); }
|
|
486
|
+
.changelog-changes { margin: 0; padding-left: 1.2em; display: grid; gap: 4px; list-style: disc; font-size: 0.85rem; line-height: 1.45; overflow-wrap: anywhere; }
|
|
487
|
+
.changelog-changes li::marker { color: var(--muted); }
|
|
488
|
+
.changelog-changes code { font-size: 0.8rem; padding: 0 4px; border-radius: 4px; background: var(--surface-2); }
|
|
489
|
+
|
|
405
490
|
.history-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 10px 14px 0; }
|
|
406
491
|
.history-tools input[type="search"] {
|
|
407
|
-
flex: 1 1 220px; min-width: 0; padding: 7px 10px; border-radius:
|
|
492
|
+
flex: 1 1 220px; min-width: 0; padding: 7px 10px; border-radius: var(--radius); border: 1px solid var(--border);
|
|
408
493
|
background: var(--surface); color: var(--text); font: inherit; font-size: 0.9rem;
|
|
409
494
|
}
|
|
410
|
-
.history-tools input:focus-visible, .history-form input:focus-visible { outline: 2px solid var(--
|
|
495
|
+
.history-tools input:focus-visible, .history-form input:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
|
|
411
496
|
.history-here { display: flex; align-items: center; gap: 6px; font-size: 0.8rem; color: var(--muted); white-space: nowrap; cursor: pointer; }
|
|
412
497
|
.history-here:has(input:disabled) { opacity: 0.6; cursor: default; }
|
|
413
498
|
.history .models-body { padding-top: 6px; }
|
|
@@ -425,29 +510,41 @@ a.news-link:visited { color: var(--muted); }
|
|
|
425
510
|
border-radius: 6px; border: 1px solid var(--border); background: var(--surface-2); color: var(--muted); cursor: copy; white-space: nowrap;
|
|
426
511
|
}
|
|
427
512
|
.session-id:hover { color: var(--text); border-color: var(--muted); }
|
|
428
|
-
.session-id:focus-visible { outline: 2px solid var(--
|
|
513
|
+
.session-id:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
|
|
429
514
|
.card-title .meta { display: flex; align-items: center; gap: 8px; min-width: 0; }
|
|
430
515
|
.card-title .meta-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
431
516
|
.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
517
|
.history-form input {
|
|
433
|
-
flex: 1; min-width: 0; padding: 6px 10px; border-radius:
|
|
518
|
+
flex: 1; min-width: 0; padding: 6px 10px; border-radius: var(--radius); border: 1px solid var(--border);
|
|
434
519
|
background: var(--surface); color: var(--text); font: inherit; font-size: 0.85rem;
|
|
435
520
|
}
|
|
436
521
|
|
|
437
522
|
.toast {
|
|
438
523
|
position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); z-index: 20;
|
|
439
|
-
max-width: min(640px, calc(100vw - 32px)); padding: 10px 14px; border-radius:
|
|
524
|
+
max-width: min(640px, calc(100vw - 32px)); padding: 10px 14px; border-radius: var(--radius);
|
|
440
525
|
background: var(--text); color: var(--bg); font-size: 0.9rem; box-shadow: var(--shadow); white-space: pre-wrap;
|
|
441
526
|
}
|
|
442
527
|
|
|
528
|
+
.toast:not([hidden]) { animation: toast-in 0.25s var(--ease); }
|
|
529
|
+
.tip:not([hidden]) { animation: fade-in 0.12s ease-out; }
|
|
530
|
+
|
|
531
|
+
::view-transition-old(root), ::view-transition-new(root) { animation: none; mix-blend-mode: normal; }
|
|
532
|
+
::view-transition-new(root) { animation: theme-reveal 0.6s var(--ease); }
|
|
533
|
+
|
|
443
534
|
@keyframes pulse { 50% { opacity: 0.35; } }
|
|
444
535
|
@keyframes ring { 0% { transform: scale(0.85); opacity: 0.8; } 100% { transform: scale(1.3); opacity: 0; } }
|
|
445
536
|
@keyframes stat-fill { from { transform: scaleX(0); } }
|
|
446
|
-
@keyframes
|
|
537
|
+
@keyframes toast-in { from { opacity: 0; transform: translate(-50%, 10px); } }
|
|
538
|
+
@keyframes fade-in { from { opacity: 0; } }
|
|
539
|
+
@keyframes theme-reveal {
|
|
540
|
+
from { clip-path: circle(0 at var(--reveal-x) var(--reveal-y)); }
|
|
541
|
+
to { clip-path: circle(var(--reveal-r) at var(--reveal-x) var(--reveal-y)); }
|
|
542
|
+
}
|
|
447
543
|
|
|
448
544
|
@media (prefers-reduced-motion: reduce) {
|
|
449
|
-
.status-pill.active::before, .agent.working::after, .model-detail .stat-fill, .
|
|
450
|
-
.model-name::before { transition: none; }
|
|
545
|
+
.status-pill.active::before, .agent.working::after, .model-detail .stat-fill, .toast:not([hidden]), .tip:not([hidden]) { animation: none; }
|
|
546
|
+
.model-name::before, .provider .copies summary::before, .btn, .models, .news-panel, .models::backdrop, .news-panel::backdrop { transition: none; }
|
|
547
|
+
.btn:active:not(:disabled) { transform: none; }
|
|
451
548
|
}
|
|
452
549
|
|
|
453
550
|
@media (max-width: 640px) {
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/web/art/icons/google.png
DELETED
|
Binary file
|
package/web/art/icons/openai.png
DELETED
|
Binary file
|
package/web/art/icons/shell.png
DELETED
|
Binary file
|
package/web/art/icons/xai.png
DELETED
|
Binary file
|
package/web/art/page.png
DELETED
|
Binary file
|