Skip to content
306 linesCodeBlameRaw

Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.

Merge remote-tracking branch 'origin/claude/cool-newton-7nm8r9' into claude/cool-newton-7nm8r91/* The settings window, in the launcher's colours (launcher.css): rows of
2 settings under small headings, each with its switch on the right. */
3:root {
4 --bg: #0f0f11;
5 --fg: #ededf0;
6 --muted: #9a9aa6;
7 --line: #26262c;
8 --surface: #17171b;
9 --accent: #b6a8ff;
10 --accent-ink: #15112e;
11 --error: #ff8a8a;
12 color-scheme: dark;
13}
14* {
15 box-sizing: border-box;
16}
17html,
18body {
19 margin: 0;
20}
21body {
22 background: var(--bg);
23 color: var(--fg);
24 font: 14px/1.45 system-ui, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
25 -webkit-font-smoothing: antialiased;
26 user-select: none;
27 cursor: default;
28}
29/* g1t's own title bar, when the window has no system frame: fixed at the top, 36px tall. */
30.titlebar {
31 position: fixed;
32 inset: 0 0 auto 0;
33 z-index: 10;
34 height: 36px;
35 display: flex;
36 align-items: center;
37 justify-content: space-between;
38 padding-left: 14px;
39 background: #050507;
40 color: var(--muted);
41 font-size: 12px;
42 font-weight: 500;
43}
44.titlebar[hidden] {
45 display: none;
46}
47.mac .titlebar {
48 padding-left: 78px;
49}
50.mac .titlebar .caption {
51 display: none;
52}
53.titlebar .caption {
54 all: unset;
55 display: inline-flex;
56 align-items: center;
57 justify-content: center;
58 width: 46px;
59 height: 36px;
60}
61.titlebar .caption:hover {
62 background: #c42b1c;
63 color: #fff;
64}
65/* Under it, the page scrolls on its own, so its scrollbar starts below the bar. */
66body.framed .page {
67 position: fixed;
68 inset: 36px 0 0 0;
69 overflow-y: auto;
70}
71main {
72 max-width: 36rem;
73 margin: 0 auto;
74 padding: 1.5rem 1.25rem 1.25rem;
75}
76h1 {
77 font-size: 1.25rem;
78 font-weight: 600;
79 margin: 0 0 0.25rem;
80}
81h2 {
82 font-size: 0.75rem;
83 font-weight: 600;
84 letter-spacing: 0.06em;
85 text-transform: uppercase;
86 color: var(--muted);
87 margin: 0 0 0.25rem;
88}
89p {
90 margin: 0;
91}
92.lede {
93 margin-bottom: 1.5rem;
94}
95.muted {
96 color: var(--muted);
97}
98.small {
99 font-size: 0.8125rem;
100}
101section {
102 margin-bottom: 1.5rem;
103}
104.setting {
105 display: flex;
106 align-items: center;
107 justify-content: space-between;
108 gap: 1rem;
109 padding: 0.75rem 0;
110 border-bottom: 1px solid var(--line);
111}
112section .setting:last-child {
113 border-bottom: 0;
114}
115.setting > span {
116 display: flex;
117 flex-direction: column;
118 gap: 0.125rem;
119 min-width: 0;
120}
121.setting strong {
122 font-weight: 500;
123 overflow-wrap: anywhere;
124}
125.setting .muted {
126 font-size: 0.8125rem;
127}
128.setting.off {
129 opacity: 0.5;
130}
131input[type="checkbox"][role="switch"] {
132 appearance: none;
133 flex: none;
134 width: 36px;
135 height: 20px;
136 margin: 0;
137 border-radius: 999px;
138 background: var(--line);
139 position: relative;
140 transition: background 0.15s;
141}
142input[type="checkbox"][role="switch"]::after {
143 content: "";
144 position: absolute;
145 top: 2px;
146 left: 2px;
147 width: 16px;
148 height: 16px;
149 border-radius: 50%;
150 background: var(--fg);
151 transition: transform 0.15s;
152}
153input[type="checkbox"][role="switch"]:checked {
154 background: var(--accent);
155}
156input[type="checkbox"][role="switch"]:checked::after {
157 transform: translateX(16px);
158 background: var(--accent-ink);
159}
160input:disabled {
161 opacity: 0.5;
162}
163@media (prefers-reduced-motion: reduce) {
164 input[type="checkbox"][role="switch"],
165 input[type="checkbox"][role="switch"]::after {
166 transition: none;
167 }
168}
169button,
170select {
171 flex: none;
172 font: inherit;
173 font-size: 0.8125rem;
174 font-weight: 500;
175 padding: 0.375rem 0.75rem;
176 border-radius: 8px;
177 border: 1px solid var(--line);
178 background: var(--surface);
179 color: var(--fg);
180 cursor: default;
181}
182button:hover,
183select:hover {
184 border-color: #3a3a44;
185}
186.setting > .buttons {
187 flex-direction: row;
188 flex: none;
189 gap: 0.5rem;
190}
191button.primary {
192 background: var(--accent);
193 border-color: var(--accent);
194 color: var(--accent-ink);
195}
196button.primary:hover {
197 filter: brightness(1.06);
198}
199button[hidden] {
200 display: none;
201}
202button:disabled {
203 opacity: 0.6;
204}
205button:focus-visible,
206select:focus-visible,
207input:focus-visible,
208a:focus-visible {
209 outline: 2px solid var(--accent);
210 outline-offset: 2px;
211}
212a {
213 color: var(--muted);
214 text-decoration: underline;
215 text-underline-offset: 3px;
216}
217a:hover {
218 color: var(--fg);
219}
220.error {
221 color: var(--error);
222 font-size: 0.875rem;
223 margin-bottom: 1rem;
224}
225.foot {
226 text-align: center;
227}
Merge the desktop app's runner: it starts with the app for the signed-in person, sandboxed by default and running nothing where no sandbox is available yet, registers through the site, keeps itself up to date, and says everywhere what it is doing, why it is not, and how to fix it.228code {
229 font: 0.8125rem ui-monospace, SFMono-Regular, Consolas, monospace;
230}
231/* The runner's state: a dot in its tone, what it is doing, and when it
232 isn't running, why and the fix, with its buttons. */
233.diagnosis {
234 display: flex;
235 align-items: flex-start;
236 gap: 0.75rem;
237 margin: 0.25rem 0 0.5rem;
238 padding: 0.75rem;
239 border: 1px solid var(--line);
240 border-radius: 10px;
241 background: var(--surface);
242}
243.diagnosis-text {
244 display: flex;
245 flex-direction: column;
246 gap: 0.25rem;
247 min-width: 0;
248 flex: 1;
249 font-size: 0.8125rem;
250}
251.diagnosis-text strong {
252 font-size: 0.875rem;
253 font-weight: 500;
254}
255.diagnosis-text .buttons {
256 display: flex;
257 flex-wrap: wrap;
258 gap: 0.5rem;
259 margin-top: 0.25rem;
260}
261.diagnosis-text .buttons:empty {
262 display: none;
263}
264.dot {
265 flex: none;
266 width: 8px;
267 height: 8px;
268 margin-top: 0.4rem;
269 border-radius: 50%;
270 background: var(--muted);
271}
272.dot.ok {
273 background: #4ade80;
274}
275.dot.working {
276 background: #60a5fa;
277}
278.dot.warning {
279 background: #fbbf24;
280}
281.dot.problem {
282 background: var(--error);
283}
284.warning-note {
285 color: #fbbf24;
286}
287details.log {
288 padding: 0.75rem 0;
289}
290details.log summary {
291 color: var(--muted);
292 font-size: 0.8125rem;
293}
294details.log pre {
295 max-height: 12rem;
296 overflow: auto;
297 margin: 0.5rem 0;
298 padding: 0.5rem;
299 border-radius: 8px;
300 background: #050507;
301 color: var(--muted);
302 font: 0.75rem/1.4 ui-monospace, SFMono-Regular, Consolas, monospace;
303 white-space: pre-wrap;
304 overflow-wrap: anywhere;
305 user-select: text;
306}

This file's history is long; its oldest lines are credited to the oldest commit read.