codebay 0.11.0 → 0.12.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.
Files changed (37) hide show
  1. package/.mochi/manifest.json +114 -106
  2. package/.mochi/svelte-client/HydratableIsland-4j3bazeq.js +1 -0
  3. package/.mochi/svelte-client/{_hydrate-AppShell_2rtnxn6pgp2rh-v65ctd99.js → _hydrate-AppShell_2rtnxn6pgp2rh-aqm4k957.js} +2 -2
  4. package/.mochi/svelte-client/{_hydrate-AvatarsView_257s9yq1wwr4f-htjfv8q9.js → _hydrate-AvatarsView_257s9yq1wwr4f-m7h7xdxn.js} +1 -1
  5. package/.mochi/svelte-client/{_hydrate-InstanceView_2ma45l9bybfhl-v07seqge.js → _hydrate-InstanceView_2ma45l9bybfhl-d256bw54.js} +1 -1
  6. package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-pwbtv8ma.js +39 -0
  7. package/.mochi/svelte-client/{chunk-wjagstre.js → chunk-1ttqgrz7.js} +1 -1
  8. package/.mochi/svelte-client/{chunk-czkxd74n.js → chunk-2eaagsfc.js} +1 -1
  9. package/.mochi/svelte-client/chunk-6v5d7dex.js +2 -0
  10. package/.mochi/svelte-client/{chunk-qx1defbm.js → chunk-a5e8vytv.js} +2 -2
  11. package/.mochi/svelte-client/{chunk-hxydjtda.js → chunk-d8rdrqsh.js} +1 -1
  12. package/.mochi/svelte-client/{chunk-566rqq4c.js → chunk-d9bszcp8.js} +1 -1
  13. package/.mochi/svelte-client/chunk-krevp8yb.js +2 -0
  14. package/.mochi/svelte-client/{chunk-0zkdsrth.js → chunk-s70rry6z.js} +1 -1
  15. package/.mochi/svelte-client/{chunk-79aj59e0.js → chunk-wcfbjj3x.js} +2 -2
  16. package/.mochi/svelte-client/{chunk-y9yy1004.js → chunk-y1xjps59.js} +1 -1
  17. package/.mochi/svelte-compile/{App-mzn3dqjm.server.js → App-bhak71kt.server.js} +4 -3
  18. package/.mochi/svelte-compile/{Settings-tvc5yp08.server.js → Settings-j3aygrjb.server.js} +178 -147
  19. package/.mochi/svelte-compile/{chunk-bpqwf1nw.js → chunk-pqb403fh.js} +12 -1
  20. package/.mochi/svelte-css/AppShell-22m1mjm8nq2hn.css +1 -0
  21. package/.mochi/svelte-css/{InstanceView-oozmmctp8m3p.css → InstanceView-32j12hyg8v9u0.css} +1 -1
  22. package/package.json +1 -1
  23. package/src/components/AppShell.svelte +5 -1
  24. package/src/components/InstanceView.svelte +1 -1
  25. package/src/components/SettingsView.svelte +36 -1
  26. package/src/components/UiShowcase.svelte +4 -1
  27. package/src/container-injections/code-server-dark.ts +216 -0
  28. package/src/lib/devcontainer.server.ts +37 -16
  29. package/src/lib/injections.server.ts +4 -2
  30. package/src/lib/instances.server.ts +6 -4
  31. package/src/settings.ts +13 -0
  32. package/src/shell.html +21 -6
  33. package/.mochi/svelte-client/HydratableIsland-dammyce5.js +0 -1
  34. package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-hj9yvqc4.js +0 -38
  35. package/.mochi/svelte-client/chunk-r3wxmmc0.js +0 -2
  36. package/.mochi/svelte-client/chunk-vs6pd2b4.js +0 -2
  37. package/.mochi/svelte-css/AppShell-36mpg5smnbmuw.css +0 -1
@@ -5,9 +5,11 @@ import {
5
5
  Terminal,
6
6
  playChime,
7
7
  setSoundEnabled,
8
+ setTabShortcutsEnabled,
8
9
  soundEnabled,
10
+ tabShortcutsEnabled,
9
11
  unlockAudio
10
- } from "./chunk-bpqwf1nw.js";
12
+ } from "./chunk-pqb403fh.js";
11
13
  import {
12
14
  CLAUDE_EFFORT_LEVELS,
13
15
  CLAUDE_PERMISSION_MODES,
@@ -38,11 +40,11 @@ import"./chunk-xpt1a7jm.js";
38
40
 
39
41
  // src/pages/Settings.svelte
40
42
  import"svelte/internal/flags/async";
41
- import * as $27 from "svelte/internal/server";
43
+ import * as $28 from "svelte/internal/server";
42
44
 
43
45
  // src/components/SettingsView.svelte
44
46
  import"svelte/internal/flags/async";
45
- import * as $26 from "svelte/internal/server";
47
+ import * as $27 from "svelte/internal/server";
46
48
 
47
49
  // node_modules/@lucide/svelte/dist/icons/container.svelte
48
50
  import"svelte/internal/flags/async";
@@ -91,9 +93,30 @@ function Volume_2($$renderer, $$props) {
91
93
  ];
92
94
  Icon($$renderer, $3.spread_props([{ name: "volume-2" }, props, { iconNode }]));
93
95
  }
94
- // node_modules/@lucide/svelte/dist/icons/paw-print.svelte
96
+ // node_modules/@lucide/svelte/dist/icons/keyboard.svelte
95
97
  import"svelte/internal/flags/async";
96
98
  import * as $4 from "svelte/internal/server";
99
+ function Keyboard($$renderer, $$props) {
100
+ let { $$slots, $$events, ...props } = $$props;
101
+ const iconNode = [
102
+ ["path", { d: "M10 8h.01" }],
103
+ ["path", { d: "M12 12h.01" }],
104
+ ["path", { d: "M14 8h.01" }],
105
+ ["path", { d: "M16 12h.01" }],
106
+ ["path", { d: "M18 8h.01" }],
107
+ ["path", { d: "M6 8h.01" }],
108
+ ["path", { d: "M7 16h10" }],
109
+ ["path", { d: "M8 12h.01" }],
110
+ [
111
+ "rect",
112
+ { width: "20", height: "16", x: "2", y: "4", rx: "2" }
113
+ ]
114
+ ];
115
+ Icon($$renderer, $4.spread_props([{ name: "keyboard" }, props, { iconNode }]));
116
+ }
117
+ // node_modules/@lucide/svelte/dist/icons/paw-print.svelte
118
+ import"svelte/internal/flags/async";
119
+ import * as $5 from "svelte/internal/server";
97
120
  function Paw_print($$renderer, $$props) {
98
121
  let { $$slots, $$events, ...props } = $$props;
99
122
  const iconNode = [
@@ -107,11 +130,11 @@ function Paw_print($$renderer, $$props) {
107
130
  }
108
131
  ]
109
132
  ];
110
- Icon($$renderer, $4.spread_props([{ name: "paw-print" }, props, { iconNode }]));
133
+ Icon($$renderer, $5.spread_props([{ name: "paw-print" }, props, { iconNode }]));
111
134
  }
112
135
  // node_modules/@lucide/svelte/dist/icons/sun-moon.svelte
113
136
  import"svelte/internal/flags/async";
114
- import * as $5 from "svelte/internal/server";
137
+ import * as $6 from "svelte/internal/server";
115
138
  function Sun_moon($$renderer, $$props) {
116
139
  let { $$slots, $$events, ...props } = $$props;
117
140
  const iconNode = [
@@ -126,15 +149,15 @@ function Sun_moon($$renderer, $$props) {
126
149
  ["path", { d: "m19 5-1.256 1.256" }],
127
150
  ["path", { d: "M20 12h2" }]
128
151
  ];
129
- Icon($$renderer, $5.spread_props([{ name: "sun-moon" }, props, { iconNode }]));
152
+ Icon($$renderer, $6.spread_props([{ name: "sun-moon" }, props, { iconNode }]));
130
153
  }
131
154
  // src/components/ThemePicker.svelte
132
155
  import"svelte/internal/flags/async";
133
- import * as $9 from "svelte/internal/server";
156
+ import * as $10 from "svelte/internal/server";
134
157
 
135
158
  // node_modules/@lucide/svelte/dist/icons/sun.svelte
136
159
  import"svelte/internal/flags/async";
137
- import * as $6 from "svelte/internal/server";
160
+ import * as $7 from "svelte/internal/server";
138
161
  function Sun($$renderer, $$props) {
139
162
  let { $$slots, $$events, ...props } = $$props;
140
163
  const iconNode = [
@@ -148,11 +171,11 @@ function Sun($$renderer, $$props) {
148
171
  ["path", { d: "m6.34 17.66-1.41 1.41" }],
149
172
  ["path", { d: "m19.07 4.93-1.41 1.41" }]
150
173
  ];
151
- Icon($$renderer, $6.spread_props([{ name: "sun" }, props, { iconNode }]));
174
+ Icon($$renderer, $7.spread_props([{ name: "sun" }, props, { iconNode }]));
152
175
  }
153
176
  // node_modules/@lucide/svelte/dist/icons/moon.svelte
154
177
  import"svelte/internal/flags/async";
155
- import * as $7 from "svelte/internal/server";
178
+ import * as $8 from "svelte/internal/server";
156
179
  function Moon($$renderer, $$props) {
157
180
  let { $$slots, $$events, ...props } = $$props;
158
181
  const iconNode = [
@@ -163,11 +186,11 @@ function Moon($$renderer, $$props) {
163
186
  }
164
187
  ]
165
188
  ];
166
- Icon($$renderer, $7.spread_props([{ name: "moon" }, props, { iconNode }]));
189
+ Icon($$renderer, $8.spread_props([{ name: "moon" }, props, { iconNode }]));
167
190
  }
168
191
  // node_modules/@lucide/svelte/dist/icons/monitor.svelte
169
192
  import"svelte/internal/flags/async";
170
- import * as $8 from "svelte/internal/server";
193
+ import * as $9 from "svelte/internal/server";
171
194
  function Monitor($$renderer, $$props) {
172
195
  let { $$slots, $$events, ...props } = $$props;
173
196
  const iconNode = [
@@ -178,7 +201,7 @@ function Monitor($$renderer, $$props) {
178
201
  ["line", { x1: "8", x2: "16", y1: "21", y2: "21" }],
179
202
  ["line", { x1: "12", x2: "12", y1: "17", y2: "21" }]
180
203
  ];
181
- Icon($$renderer, $8.spread_props([{ name: "monitor" }, props, { iconNode }]));
204
+ Icon($$renderer, $9.spread_props([{ name: "monitor" }, props, { iconNode }]));
182
205
  }
183
206
  // src/components/ThemePicker.svelte
184
207
  function ThemePicker($$renderer, $$props) {
@@ -212,10 +235,10 @@ function ThemePicker($$renderer, $$props) {
212
235
  phase = null;
213
236
  }
214
237
  $$renderer2.push(`<div class="picker svelte-3gcwuj" role="radiogroup" aria-label="Theme"><!--[-->`);
215
- const each_array = $9.ensure_array_like(options);
238
+ const each_array = $10.ensure_array_like(options);
216
239
  for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
217
240
  let { value, label, icon: Icon2 } = each_array[$$index];
218
- $$renderer2.push(`<button type="button"${$9.attr_class("segment svelte-3gcwuj", undefined, { active: theme === value })} role="radio"${$9.attr("aria-checked", theme === value)}>`);
241
+ $$renderer2.push(`<button type="button"${$10.attr_class("segment svelte-3gcwuj", undefined, { active: theme === value })} role="radio"${$10.attr("aria-checked", theme === value)}>`);
219
242
  if (Icon2) {
220
243
  $$renderer2.push("<!--[-->");
221
244
  Icon2($$renderer2, { size: 13 });
@@ -224,12 +247,12 @@ function ThemePicker($$renderer, $$props) {
224
247
  $$renderer2.push("<!--[!-->");
225
248
  $$renderer2.push("<!--]-->");
226
249
  }
227
- $$renderer2.push(` ${$9.escape(label)}</button>`);
250
+ $$renderer2.push(` ${$10.escape(label)}</button>`);
228
251
  }
229
252
  $$renderer2.push(`<!--]--></div> `);
230
253
  if (phase) {
231
254
  $$renderer2.push("<!--[0-->");
232
- $$renderer2.push(`<div${$9.attr_class("crt svelte-3gcwuj", undefined, {
255
+ $$renderer2.push(`<div${$10.attr_class("crt svelte-3gcwuj", undefined, {
233
256
  collapse: phase === "collapse",
234
257
  restore: phase === "restore"
235
258
  })}><span class="bar top svelte-3gcwuj"></span> <span class="bar bottom svelte-3gcwuj"></span> <span class="line svelte-3gcwuj"></span></div>`);
@@ -242,7 +265,7 @@ function ThemePicker($$renderer, $$props) {
242
265
 
243
266
  // node_modules/@lucide/svelte/dist/icons/layers.svelte
244
267
  import"svelte/internal/flags/async";
245
- import * as $10 from "svelte/internal/server";
268
+ import * as $11 from "svelte/internal/server";
246
269
  function Layers($$renderer, $$props) {
247
270
  let { $$slots, $$events, ...props } = $$props;
248
271
  const iconNode = [
@@ -265,11 +288,11 @@ function Layers($$renderer, $$props) {
265
288
  }
266
289
  ]
267
290
  ];
268
- Icon($$renderer, $10.spread_props([{ name: "layers" }, props, { iconNode }]));
291
+ Icon($$renderer, $11.spread_props([{ name: "layers" }, props, { iconNode }]));
269
292
  }
270
293
  // node_modules/@lucide/svelte/dist/icons/folder-minus.svelte
271
294
  import"svelte/internal/flags/async";
272
- import * as $11 from "svelte/internal/server";
295
+ import * as $12 from "svelte/internal/server";
273
296
  function Folder_minus($$renderer, $$props) {
274
297
  let { $$slots, $$events, ...props } = $$props;
275
298
  const iconNode = [
@@ -281,11 +304,11 @@ function Folder_minus($$renderer, $$props) {
281
304
  }
282
305
  ]
283
306
  ];
284
- Icon($$renderer, $11.spread_props([{ name: "folder-minus" }, props, { iconNode }]));
307
+ Icon($$renderer, $12.spread_props([{ name: "folder-minus" }, props, { iconNode }]));
285
308
  }
286
309
  // node_modules/@lucide/svelte/dist/icons/trash-2.svelte
287
310
  import"svelte/internal/flags/async";
288
- import * as $12 from "svelte/internal/server";
311
+ import * as $13 from "svelte/internal/server";
289
312
  function Trash_2($$renderer, $$props) {
290
313
  let { $$slots, $$events, ...props } = $$props;
291
314
  const iconNode = [
@@ -295,11 +318,11 @@ function Trash_2($$renderer, $$props) {
295
318
  ["path", { d: "M3 6h18" }],
296
319
  ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }]
297
320
  ];
298
- Icon($$renderer, $12.spread_props([{ name: "trash-2" }, props, { iconNode }]));
321
+ Icon($$renderer, $13.spread_props([{ name: "trash-2" }, props, { iconNode }]));
299
322
  }
300
323
  // node_modules/@lucide/svelte/dist/icons/hammer.svelte
301
324
  import"svelte/internal/flags/async";
302
- import * as $13 from "svelte/internal/server";
325
+ import * as $14 from "svelte/internal/server";
303
326
  function Hammer($$renderer, $$props) {
304
327
  let { $$slots, $$events, ...props } = $$props;
305
328
  const iconNode = [
@@ -312,11 +335,11 @@ function Hammer($$renderer, $$props) {
312
335
  }
313
336
  ]
314
337
  ];
315
- Icon($$renderer, $13.spread_props([{ name: "hammer" }, props, { iconNode }]));
338
+ Icon($$renderer, $14.spread_props([{ name: "hammer" }, props, { iconNode }]));
316
339
  }
317
340
  // node_modules/@lucide/svelte/dist/icons/key-round.svelte
318
341
  import"svelte/internal/flags/async";
319
- import * as $14 from "svelte/internal/server";
342
+ import * as $15 from "svelte/internal/server";
320
343
  function Key_round($$renderer, $$props) {
321
344
  let { $$slots, $$events, ...props } = $$props;
322
345
  const iconNode = [
@@ -331,11 +354,11 @@ function Key_round($$renderer, $$props) {
331
354
  { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor" }
332
355
  ]
333
356
  ];
334
- Icon($$renderer, $14.spread_props([{ name: "key-round" }, props, { iconNode }]));
357
+ Icon($$renderer, $15.spread_props([{ name: "key-round" }, props, { iconNode }]));
335
358
  }
336
359
  // node_modules/@lucide/svelte/dist/icons/user-cog.svelte
337
360
  import"svelte/internal/flags/async";
338
- import * as $15 from "svelte/internal/server";
361
+ import * as $16 from "svelte/internal/server";
339
362
  function User_cog($$renderer, $$props) {
340
363
  let { $$slots, $$events, ...props } = $$props;
341
364
  const iconNode = [
@@ -351,11 +374,11 @@ function User_cog($$renderer, $$props) {
351
374
  ["circle", { cx: "18", cy: "15", r: "3" }],
352
375
  ["circle", { cx: "9", cy: "7", r: "4" }]
353
376
  ];
354
- Icon($$renderer, $15.spread_props([{ name: "user-cog" }, props, { iconNode }]));
377
+ Icon($$renderer, $16.spread_props([{ name: "user-cog" }, props, { iconNode }]));
355
378
  }
356
379
  // node_modules/@lucide/svelte/dist/icons/cpu.svelte
357
380
  import"svelte/internal/flags/async";
358
- import * as $16 from "svelte/internal/server";
381
+ import * as $17 from "svelte/internal/server";
359
382
  function Cpu($$renderer, $$props) {
360
383
  let { $$slots, $$events, ...props } = $$props;
361
384
  const iconNode = [
@@ -377,11 +400,11 @@ function Cpu($$renderer, $$props) {
377
400
  ],
378
401
  ["rect", { x: "8", y: "8", width: "8", height: "8", rx: "1" }]
379
402
  ];
380
- Icon($$renderer, $16.spread_props([{ name: "cpu" }, props, { iconNode }]));
403
+ Icon($$renderer, $17.spread_props([{ name: "cpu" }, props, { iconNode }]));
381
404
  }
382
405
  // node_modules/@lucide/svelte/dist/icons/variable.svelte
383
406
  import"svelte/internal/flags/async";
384
- import * as $17 from "svelte/internal/server";
407
+ import * as $18 from "svelte/internal/server";
385
408
  function Variable($$renderer, $$props) {
386
409
  let { $$slots, $$events, ...props } = $$props;
387
410
  const iconNode = [
@@ -390,11 +413,11 @@ function Variable($$renderer, $$props) {
390
413
  ["line", { x1: "15", x2: "9", y1: "9", y2: "15" }],
391
414
  ["line", { x1: "9", x2: "15", y1: "9", y2: "15" }]
392
415
  ];
393
- Icon($$renderer, $17.spread_props([{ name: "variable" }, props, { iconNode }]));
416
+ Icon($$renderer, $18.spread_props([{ name: "variable" }, props, { iconNode }]));
394
417
  }
395
418
  // node_modules/@lucide/svelte/dist/icons/key-square.svelte
396
419
  import"svelte/internal/flags/async";
397
- import * as $18 from "svelte/internal/server";
420
+ import * as $19 from "svelte/internal/server";
398
421
  function Key_square($$renderer, $$props) {
399
422
  let { $$slots, $$events, ...props } = $$props;
400
423
  const iconNode = [
@@ -412,11 +435,11 @@ function Key_square($$renderer, $$props) {
412
435
  }
413
436
  ]
414
437
  ];
415
- Icon($$renderer, $18.spread_props([{ name: "key-square" }, props, { iconNode }]));
438
+ Icon($$renderer, $19.spread_props([{ name: "key-square" }, props, { iconNode }]));
416
439
  }
417
440
  // node_modules/@lucide/svelte/dist/icons/sliders-horizontal.svelte
418
441
  import"svelte/internal/flags/async";
419
- import * as $19 from "svelte/internal/server";
442
+ import * as $20 from "svelte/internal/server";
420
443
  function Sliders_horizontal($$renderer, $$props) {
421
444
  let { $$slots, $$events, ...props } = $$props;
422
445
  const iconNode = [
@@ -430,11 +453,11 @@ function Sliders_horizontal($$renderer, $$props) {
430
453
  ["path", { d: "M8 10v4" }],
431
454
  ["path", { d: "M8 12H3" }]
432
455
  ];
433
- Icon($$renderer, $19.spread_props([{ name: "sliders-horizontal" }, props, { iconNode }]));
456
+ Icon($$renderer, $20.spread_props([{ name: "sliders-horizontal" }, props, { iconNode }]));
434
457
  }
435
458
  // node_modules/@lucide/svelte/dist/icons/list-ordered.svelte
436
459
  import"svelte/internal/flags/async";
437
- import * as $20 from "svelte/internal/server";
460
+ import * as $21 from "svelte/internal/server";
438
461
  function List_ordered($$renderer, $$props) {
439
462
  let { $$slots, $$events, ...props } = $$props;
440
463
  const iconNode = [
@@ -450,11 +473,11 @@ function List_ordered($$renderer, $$props) {
450
473
  }
451
474
  ]
452
475
  ];
453
- Icon($$renderer, $20.spread_props([{ name: "list-ordered" }, props, { iconNode }]));
476
+ Icon($$renderer, $21.spread_props([{ name: "list-ordered" }, props, { iconNode }]));
454
477
  }
455
478
  // node_modules/@lucide/svelte/dist/icons/boxes.svelte
456
479
  import"svelte/internal/flags/async";
457
- import * as $21 from "svelte/internal/server";
480
+ import * as $22 from "svelte/internal/server";
458
481
  function Boxes($$renderer, $$props) {
459
482
  let { $$slots, $$events, ...props } = $$props;
460
483
  const iconNode = [
@@ -486,11 +509,11 @@ function Boxes($$renderer, $$props) {
486
509
  ["path", { d: "m12 8 4.74-2.85" }],
487
510
  ["path", { d: "M12 13.5V8" }]
488
511
  ];
489
- Icon($$renderer, $21.spread_props([{ name: "boxes" }, props, { iconNode }]));
512
+ Icon($$renderer, $22.spread_props([{ name: "boxes" }, props, { iconNode }]));
490
513
  }
491
514
  // node_modules/@lucide/svelte/dist/icons/puzzle.svelte
492
515
  import"svelte/internal/flags/async";
493
- import * as $22 from "svelte/internal/server";
516
+ import * as $23 from "svelte/internal/server";
494
517
  function Puzzle($$renderer, $$props) {
495
518
  let { $$slots, $$events, ...props } = $$props;
496
519
  const iconNode = [
@@ -501,14 +524,14 @@ function Puzzle($$renderer, $$props) {
501
524
  }
502
525
  ]
503
526
  ];
504
- Icon($$renderer, $22.spread_props([{ name: "puzzle" }, props, { iconNode }]));
527
+ Icon($$renderer, $23.spread_props([{ name: "puzzle" }, props, { iconNode }]));
505
528
  }
506
529
  // src/components/SettingsView.svelte
507
530
  import { flushSync } from "svelte";
508
531
 
509
532
  // src/components/CoinButton.svelte
510
533
  import"svelte/internal/flags/async";
511
- import * as $23 from "svelte/internal/server";
534
+ import * as $24 from "svelte/internal/server";
512
535
  function CoinButton($$renderer, $$props) {
513
536
  let { href = "/avatars" } = $$props;
514
537
  const coinArt = {
@@ -524,14 +547,14 @@ function CoinButton($$renderer, $$props) {
524
547
  "..####.."
525
548
  ]
526
549
  };
527
- $$renderer.push(`<div class="coin-row svelte-1ioj7vz"><span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span> <a class="coin-btn svelte-1ioj7vz"${$23.attr("href", href)} aria-label="Draw your own avatar" title="Draw your own avatar"><span class="new svelte-1ioj7vz" aria-hidden="true">New</span> <span class="coin svelte-1ioj7vz" aria-hidden="true">`);
550
+ $$renderer.push(`<div class="coin-row svelte-1ioj7vz"><span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span> <a class="coin-btn svelte-1ioj7vz"${$24.attr("href", href)} aria-label="Draw your own avatar" title="Draw your own avatar"><span class="new svelte-1ioj7vz" aria-hidden="true">New</span> <span class="coin svelte-1ioj7vz" aria-hidden="true">`);
528
551
  Avatar($$renderer, { art: coinArt, name: "coin", scale: 3 });
529
552
  $$renderer.push(`<!----></span></a> <span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span></div>`);
530
553
  }
531
554
 
532
555
  // node_modules/@lucide/svelte/dist/icons/shield-check.svelte
533
556
  import"svelte/internal/flags/async";
534
- import * as $24 from "svelte/internal/server";
557
+ import * as $25 from "svelte/internal/server";
535
558
  function Shield_check($$renderer, $$props) {
536
559
  let { $$slots, $$events, ...props } = $$props;
537
560
  const iconNode = [
@@ -543,18 +566,18 @@ function Shield_check($$renderer, $$props) {
543
566
  ],
544
567
  ["path", { d: "m9 12 2 2 4-4" }]
545
568
  ];
546
- Icon($$renderer, $24.spread_props([{ name: "shield-check" }, props, { iconNode }]));
569
+ Icon($$renderer, $25.spread_props([{ name: "shield-check" }, props, { iconNode }]));
547
570
  }
548
571
  // node_modules/@lucide/svelte/dist/icons/gauge.svelte
549
572
  import"svelte/internal/flags/async";
550
- import * as $25 from "svelte/internal/server";
573
+ import * as $26 from "svelte/internal/server";
551
574
  function Gauge($$renderer, $$props) {
552
575
  let { $$slots, $$events, ...props } = $$props;
553
576
  const iconNode = [
554
577
  ["path", { d: "m12 14 4-4" }],
555
578
  ["path", { d: "M3.34 19a10 10 0 1 1 17.32 0" }]
556
579
  ];
557
- Icon($$renderer, $25.spread_props([{ name: "gauge" }, props, { iconNode }]));
580
+ Icon($$renderer, $26.spread_props([{ name: "gauge" }, props, { iconNode }]));
558
581
  }
559
582
  // src/components/SettingsView.svelte
560
583
  function SettingsView($$renderer, $$props) {
@@ -601,6 +624,7 @@ function SettingsView($$renderer, $$props) {
601
624
  version
602
625
  } = $$props;
603
626
  let sound = soundEnabled();
627
+ let tabShortcuts = tabShortcutsEnabled();
604
628
  let petArt = pet;
605
629
  let savingPet = false;
606
630
  let petError = null;
@@ -968,7 +992,7 @@ function SettingsView($$renderer, $$props) {
968
992
  manualModelsMsg = "Saved.";
969
993
  }
970
994
  });
971
- let litellmBlocker = $26.derived(() => manualTokens ? "Set tokens manually" : manualModelOverride ? "Override models manually" : null);
995
+ let litellmBlocker = $27.derived(() => manualTokens ? "Set tokens manually" : manualModelOverride ? "Override models manually" : null);
972
996
  let hostEnvVars = hostEnvVarsEnabled;
973
997
  let savingHostEnvToggle = false;
974
998
  let hostEnvToggleError = null;
@@ -1099,6 +1123,10 @@ function SettingsView($$renderer, $$props) {
1099
1123
  if (on)
1100
1124
  playChime("done");
1101
1125
  }
1126
+ function toggleTabShortcuts(on) {
1127
+ tabShortcuts = on;
1128
+ setTabShortcutsEnabled(on);
1129
+ }
1102
1130
  const petToggleOpts = {
1103
1131
  onPending: (v) => savingPet = v,
1104
1132
  submit: () => {
@@ -1140,30 +1168,30 @@ function SettingsView($$renderer, $$props) {
1140
1168
  $$renderer2.push(`<!----> <main class="content svelte-1n6ht58"><section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/defaultMode"><div class="label svelte-1n6ht58">`);
1141
1169
  Terminal($$renderer2, { size: 20 });
1142
1170
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Default editor</div> <div class="desc svelte-1n6ht58">What new instances start in. <strong>Full IDE</strong> serves browser VS Code; <strong>Terminal</strong> is lighter \u2014 just Claude Code in a terminal, no code-server. You
1143
- can override this per instance when creating one.</div></div></div> <input type="hidden" name="mode"${$26.attr("value", modeChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Default editor mode"><button type="button"${$26.attr_class("mode-btn svelte-1n6ht58", undefined, { active: modeChoice === "ide" })}${$26.attr("aria-pressed", modeChoice === "ide")}${$26.attr("disabled", savingMode, true)}>`);
1171
+ can override this per instance when creating one.</div></div></div> <input type="hidden" name="mode"${$27.attr("value", modeChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Default editor mode"><button type="button"${$27.attr_class("mode-btn svelte-1n6ht58", undefined, { active: modeChoice === "ide" })}${$27.attr("aria-pressed", modeChoice === "ide")}${$27.attr("disabled", savingMode, true)}>`);
1144
1172
  Layout_template($$renderer2, { size: 15 });
1145
- $$renderer2.push(`<!----> Full IDE</button> <button type="button"${$26.attr_class("mode-btn svelte-1n6ht58", undefined, { active: modeChoice === "terminal" })}${$26.attr("aria-pressed", modeChoice === "terminal")}${$26.attr("disabled", savingMode, true)}>`);
1173
+ $$renderer2.push(`<!----> Full IDE</button> <button type="button"${$27.attr_class("mode-btn svelte-1n6ht58", undefined, { active: modeChoice === "terminal" })}${$27.attr("aria-pressed", modeChoice === "terminal")}${$27.attr("disabled", savingMode, true)}>`);
1146
1174
  Terminal($$renderer2, { size: 15 });
1147
1175
  $$renderer2.push(`<!----> Terminal</button></div></form> `);
1148
1176
  if (modeError) {
1149
1177
  $$renderer2.push("<!--[0-->");
1150
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(modeError)}</div></div>`);
1178
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(modeError)}</div></div>`);
1151
1179
  } else {
1152
1180
  $$renderer2.push("<!--[-1-->");
1153
1181
  }
1154
1182
  $$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/claudePermissionMode"><div class="label svelte-1n6ht58">`);
1155
1183
  Shield_check($$renderer2, { size: 20 });
1156
1184
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Claude permission mode</div> <div class="desc svelte-1n6ht58">The mode Claude Code starts in inside new instances. <strong>Default</strong> runs <code class="svelte-1n6ht58">--dangerously-skip-permissions</code>, which never prompts; the other three pass <code class="svelte-1n6ht58">--permission-mode</code> instead, because the skip flag overrides them. Applies on
1157
- create and rebuild, not to already-running instances.</div></div></div> <input type="hidden" name="mode"${$26.attr("value", permissionChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude permission mode"><!--[-->`);
1158
- const each_array = $26.ensure_array_like(CLAUDE_PERMISSION_MODES);
1185
+ create and rebuild, not to already-running instances.</div></div></div> <input type="hidden" name="mode"${$27.attr("value", permissionChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude permission mode"><!--[-->`);
1186
+ const each_array = $27.ensure_array_like(CLAUDE_PERMISSION_MODES);
1159
1187
  for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
1160
1188
  let option = each_array[$$index];
1161
- $$renderer2.push(`<button type="button"${$26.attr_class("mode-btn svelte-1n6ht58", undefined, { active: permissionChoice === option })}${$26.attr("aria-pressed", permissionChoice === option)}${$26.attr("disabled", savingPermission, true)}>${$26.escape(PERMISSION_LABELS[option])}</button>`);
1189
+ $$renderer2.push(`<button type="button"${$27.attr_class("mode-btn svelte-1n6ht58", undefined, { active: permissionChoice === option })}${$27.attr("aria-pressed", permissionChoice === option)}${$27.attr("disabled", savingPermission, true)}>${$27.escape(PERMISSION_LABELS[option])}</button>`);
1162
1190
  }
1163
1191
  $$renderer2.push(`<!--]--></div></form> `);
1164
1192
  if (permissionError) {
1165
1193
  $$renderer2.push("<!--[0-->");
1166
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(permissionError)}</div></div>`);
1194
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(permissionError)}</div></div>`);
1167
1195
  } else {
1168
1196
  $$renderer2.push("<!--[-1-->");
1169
1197
  }
@@ -1171,16 +1199,16 @@ function SettingsView($$renderer, $$props) {
1171
1199
  Gauge($$renderer2, { size: 20 });
1172
1200
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Claude effort level</div> <div class="desc svelte-1n6ht58">The default reasoning effort Claude Code starts new sessions at inside instances,
1173
1201
  written to <code class="svelte-1n6ht58">~/.claude/settings.json</code>. Applies on create and rebuild, not to
1174
- already-running instances.</div></div></div> <input type="hidden" name="level"${$26.attr("value", effortChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude effort level"><!--[-->`);
1175
- const each_array_1 = $26.ensure_array_like(CLAUDE_EFFORT_LEVELS);
1202
+ already-running instances.</div></div></div> <input type="hidden" name="level"${$27.attr("value", effortChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude effort level"><!--[-->`);
1203
+ const each_array_1 = $27.ensure_array_like(CLAUDE_EFFORT_LEVELS);
1176
1204
  for (let $$index_1 = 0, $$length = each_array_1.length;$$index_1 < $$length; $$index_1++) {
1177
1205
  let option = each_array_1[$$index_1];
1178
- $$renderer2.push(`<button type="button"${$26.attr_class("mode-btn svelte-1n6ht58", undefined, { active: effortChoice === option })}${$26.attr("aria-pressed", effortChoice === option)}${$26.attr("disabled", savingEffort, true)}>${$26.escape(EFFORT_LABELS[option])}</button>`);
1206
+ $$renderer2.push(`<button type="button"${$27.attr_class("mode-btn svelte-1n6ht58", undefined, { active: effortChoice === option })}${$27.attr("aria-pressed", effortChoice === option)}${$27.attr("disabled", savingEffort, true)}>${$27.escape(EFFORT_LABELS[option])}</button>`);
1179
1207
  }
1180
1208
  $$renderer2.push(`<!--]--></div></form> `);
1181
1209
  if (effortError) {
1182
1210
  $$renderer2.push("<!--[0-->");
1183
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(effortError)}</div></div>`);
1211
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(effortError)}</div></div>`);
1184
1212
  } else {
1185
1213
  $$renderer2.push("<!--[-1-->");
1186
1214
  }
@@ -1189,12 +1217,12 @@ function SettingsView($$renderer, $$props) {
1189
1217
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Default container image `);
1190
1218
  if (dockerArch) {
1191
1219
  $$renderer2.push("<!--[0-->");
1192
- $$renderer2.push(`<span class="arch svelte-1n6ht58" title="Docker daemon architecture">${$26.escape(dockerArch)}</span>`);
1220
+ $$renderer2.push(`<span class="arch svelte-1n6ht58" title="Docker daemon architecture">${$27.escape(dockerArch)}</span>`);
1193
1221
  } else {
1194
1222
  $$renderer2.push("<!--[-1-->");
1195
1223
  }
1196
1224
  $$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">Used only when a project folder ships no devcontainer.json. Takes effect for instances
1197
- created from now on.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="image" class="image-input svelte-1n6ht58"${$26.attr("value", image)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="mcr.microsoft.com/devcontainers/base:ubuntu"/> `);
1225
+ created from now on.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="image" class="image-input svelte-1n6ht58"${$27.attr("value", image)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="mcr.microsoft.com/devcontainers/base:ubuntu"/> `);
1198
1226
  Button($$renderer2, {
1199
1227
  type: "submit",
1200
1228
  disabled: savingImage,
@@ -1209,14 +1237,14 @@ function SettingsView($$renderer, $$props) {
1209
1237
  icon: Rotate_ccw,
1210
1238
  disabled: savingImage,
1211
1239
  onclick: resetImage,
1212
- title: `Reset to default (${$26.stringify(builtinImage)})`,
1240
+ title: `Reset to default (${$27.stringify(builtinImage)})`,
1213
1241
  "aria-label": "Reset to default image"
1214
1242
  });
1215
1243
  $$renderer2.push(`<!----></div> <div class="desc tip svelte-1n6ht58">`);
1216
1244
  if (dockerArch) {
1217
1245
  $$renderer2.push("<!--[0-->");
1218
- $$renderer2.push(`Your Docker daemon runs on <strong>${$26.escape(dockerArch)}</strong> \u2014 pick an image that publishes
1219
- an <strong>${$26.escape(dockerArch)}</strong> manifest, or the pull will fail.`);
1246
+ $$renderer2.push(`Your Docker daemon runs on <strong>${$27.escape(dockerArch)}</strong> \u2014 pick an image that publishes
1247
+ an <strong>${$27.escape(dockerArch)}</strong> manifest, or the pull will fail.`);
1220
1248
  } else {
1221
1249
  $$renderer2.push("<!--[-1-->");
1222
1250
  $$renderer2.push(`Pick an image whose manifest covers your Docker daemon's architecture, or the pull will
@@ -1225,7 +1253,7 @@ function SettingsView($$renderer, $$props) {
1225
1253
  $$renderer2.push(`<!--]--></div> `);
1226
1254
  if (imageError) {
1227
1255
  $$renderer2.push("<!--[0-->");
1228
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(imageError)}</div>`);
1256
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(imageError)}</div>`);
1229
1257
  } else if (imageSaved) {
1230
1258
  $$renderer2.push("<!--[1-->");
1231
1259
  $$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
@@ -1236,7 +1264,7 @@ function SettingsView($$renderer, $$props) {
1236
1264
  Folder_minus($$renderer2, { size: 20 });
1237
1265
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Skip when copying a local folder</div> <div class="desc svelte-1n6ht58">Comma-separated folder/file names excluded when copying a local source folder into a
1238
1266
  new instance's workspace. Leave blank to copy everything. Only applies to local
1239
- folders \u2014 cloning a Git repo URL is unaffected.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="patterns" class="image-input svelte-1n6ht58"${$26.attr("value", copyIgnore)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="node_modules, .venv, dist"/> `);
1267
+ folders \u2014 cloning a Git repo URL is unaffected.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="patterns" class="image-input svelte-1n6ht58"${$27.attr("value", copyIgnore)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="node_modules, .venv, dist"/> `);
1240
1268
  Button($$renderer2, {
1241
1269
  type: "submit",
1242
1270
  disabled: savingCopyIgnore,
@@ -1251,13 +1279,13 @@ function SettingsView($$renderer, $$props) {
1251
1279
  icon: Rotate_ccw,
1252
1280
  disabled: savingCopyIgnore,
1253
1281
  onclick: resetCopyIgnore,
1254
- title: `Reset to default (${$26.stringify(builtinCopyIgnore)})`,
1282
+ title: `Reset to default (${$27.stringify(builtinCopyIgnore)})`,
1255
1283
  "aria-label": "Reset to default copy-ignore patterns"
1256
1284
  });
1257
1285
  $$renderer2.push(`<!----></div> `);
1258
1286
  if (copyIgnoreError) {
1259
1287
  $$renderer2.push("<!--[0-->");
1260
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(copyIgnoreError)}</div>`);
1288
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(copyIgnoreError)}</div>`);
1261
1289
  } else if (copyIgnoreSaved) {
1262
1290
  $$renderer2.push("<!--[1-->");
1263
1291
  $$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
@@ -1268,10 +1296,10 @@ function SettingsView($$renderer, $$props) {
1268
1296
  User_cog($$renderer2, { size: 20 });
1269
1297
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Override git identity</div> <div class="desc svelte-1n6ht58">Inject a name and email as <code class="svelte-1n6ht58">git config --global user.name/user.email</code> in every
1270
1298
  new container, taking precedence over the host's own git config. When off, each container
1271
- falls back to the host's identity.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", gitIdentity, true)}${$26.attr("disabled", savingGitToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1299
+ falls back to the host's identity.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", gitIdentity, true)}${$27.attr("disabled", savingGitToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1272
1300
  if (gitToggleError) {
1273
1301
  $$renderer2.push("<!--[0-->");
1274
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(gitToggleError)}</div></div>`);
1302
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(gitToggleError)}</div></div>`);
1275
1303
  } else {
1276
1304
  $$renderer2.push("<!--[-1-->");
1277
1305
  }
@@ -1279,7 +1307,7 @@ function SettingsView($$renderer, $$props) {
1279
1307
  if (gitIdentity) {
1280
1308
  $$renderer2.push("<!--[0-->");
1281
1309
  $$renderer2.push(`<form class="row divided token-row svelte-1n6ht58" method="POST" action="?/gitIdentityOverride"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Identity</div> <div class="desc svelte-1n6ht58">Both fields are required \u2014 leave either blank and the container falls back to the
1282
- host's identity.</div></div></div> <div class="model-fields svelte-1n6ht58"><label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Name</span> <input type="text" name="name" class="image-input svelte-1n6ht58"${$26.attr("value", gitName)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="Jane Doe"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Email</span> <input type="text" name="email" class="image-input svelte-1n6ht58"${$26.attr("value", gitEmail)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="jane@example.com"/></label> <div class="model-save-row svelte-1n6ht58">`);
1310
+ host's identity.</div></div></div> <div class="model-fields svelte-1n6ht58"><label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Name</span> <input type="text" name="name" class="image-input svelte-1n6ht58"${$27.attr("value", gitName)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="Jane Doe"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Email</span> <input type="text" name="email" class="image-input svelte-1n6ht58"${$27.attr("value", gitEmail)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="jane@example.com"/></label> <div class="model-save-row svelte-1n6ht58">`);
1283
1311
  Button($$renderer2, {
1284
1312
  type: "submit",
1285
1313
  disabled: savingGitIdentity,
@@ -1291,7 +1319,7 @@ function SettingsView($$renderer, $$props) {
1291
1319
  $$renderer2.push(`<!----></div></div> `);
1292
1320
  if (gitIdentityError) {
1293
1321
  $$renderer2.push("<!--[0-->");
1294
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(gitIdentityError)}</div>`);
1322
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(gitIdentityError)}</div>`);
1295
1323
  } else if (gitIdentitySaved) {
1296
1324
  $$renderer2.push("<!--[1-->");
1297
1325
  $$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
@@ -1305,10 +1333,10 @@ function SettingsView($$renderer, $$props) {
1305
1333
  $$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/disableBuildCache"><div class="label svelte-1n6ht58">`);
1306
1334
  Layers($$renderer2, { size: 20 });
1307
1335
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Disable build cache</div> <div class="desc svelte-1n6ht58">Build every new container with <code class="svelte-1n6ht58">--build-no-cache</code>. Applies to first boot
1308
- and rebuilds \u2014 slower, but always picks up upstream image/layer changes.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", noCache, true)}${$26.attr("disabled", savingCache, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1336
+ and rebuilds \u2014 slower, but always picks up upstream image/layer changes.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", noCache, true)}${$27.attr("disabled", savingCache, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1309
1337
  if (cacheError) {
1310
1338
  $$renderer2.push("<!--[0-->");
1311
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(cacheError)}</div></div>`);
1339
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(cacheError)}</div></div>`);
1312
1340
  } else {
1313
1341
  $$renderer2.push("<!--[-1-->");
1314
1342
  }
@@ -1318,10 +1346,10 @@ function SettingsView($$renderer, $$props) {
1318
1346
  remove pulled images.</div> `);
1319
1347
  if (clearError) {
1320
1348
  $$renderer2.push("<!--[0-->");
1321
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(clearError)}</div>`);
1349
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(clearError)}</div>`);
1322
1350
  } else if (clearMsg) {
1323
1351
  $$renderer2.push("<!--[1-->");
1324
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(clearMsg)}</div>`);
1352
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(clearMsg)}</div>`);
1325
1353
  } else {
1326
1354
  $$renderer2.push("<!--[-1-->");
1327
1355
  }
@@ -1331,7 +1359,7 @@ function SettingsView($$renderer, $$props) {
1331
1359
  icon: Trash_2,
1332
1360
  disabled: clearing,
1333
1361
  children: ($$renderer3) => {
1334
- $$renderer3.push(`<!---->${$26.escape(clearing ? "Clearing\u2026" : "Clear cache")}`);
1362
+ $$renderer3.push(`<!---->${$27.escape(clearing ? "Clearing\u2026" : "Clear cache")}`);
1335
1363
  },
1336
1364
  $$slots: { default: true }
1337
1365
  });
@@ -1341,10 +1369,10 @@ function SettingsView($$renderer, $$props) {
1341
1369
  layers. In-container edits are kept; stopped instances are left alone.</div> `);
1342
1370
  if (rebuildError) {
1343
1371
  $$renderer2.push("<!--[0-->");
1344
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(rebuildError)}</div>`);
1372
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(rebuildError)}</div>`);
1345
1373
  } else if (rebuildMsg) {
1346
1374
  $$renderer2.push("<!--[1-->");
1347
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(rebuildMsg)}</div>`);
1375
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(rebuildMsg)}</div>`);
1348
1376
  } else {
1349
1377
  $$renderer2.push("<!--[-1-->");
1350
1378
  }
@@ -1354,11 +1382,11 @@ function SettingsView($$renderer, $$props) {
1354
1382
  icon: Hammer,
1355
1383
  disabled: rebuilding,
1356
1384
  children: ($$renderer3) => {
1357
- $$renderer3.push(`<!---->${$26.escape(rebuilding ? "Starting\u2026" : "Rebuild all")}`);
1385
+ $$renderer3.push(`<!---->${$27.escape(rebuilding ? "Starting\u2026" : "Rebuild all")}`);
1358
1386
  },
1359
1387
  $$slots: { default: true }
1360
1388
  });
1361
- $$renderer2.push(`<!----></form></section> <section${$26.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": customEndpoint })}><form class="row svelte-1n6ht58" method="POST" action="?/manualTokensToggle"><div class="label svelte-1n6ht58">`);
1389
+ $$renderer2.push(`<!----></form></section> <section${$27.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": customEndpoint })}><form class="row svelte-1n6ht58" method="POST" action="?/manualTokensToggle"><div class="label svelte-1n6ht58">`);
1362
1390
  Key_round($$renderer2, { size: 20 });
1363
1391
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Set tokens manually `);
1364
1392
  if (customEndpoint) {
@@ -1379,10 +1407,10 @@ function SettingsView($$renderer, $$props) {
1379
1407
  token set here is injected into every new container and overrides host credential
1380
1408
  discovery.`);
1381
1409
  }
1382
- $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", manualTokens, true)}${$26.attr("disabled", savingManualToggle || customEndpoint, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1410
+ $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", manualTokens, true)}${$27.attr("disabled", savingManualToggle || customEndpoint, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1383
1411
  if (manualToggleError) {
1384
1412
  $$renderer2.push("<!--[0-->");
1385
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(manualToggleError)}</div></div>`);
1413
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(manualToggleError)}</div></div>`);
1386
1414
  } else {
1387
1415
  $$renderer2.push("<!--[-1-->");
1388
1416
  }
@@ -1390,7 +1418,7 @@ function SettingsView($$renderer, $$props) {
1390
1418
  if (manualTokens && !customEndpoint) {
1391
1419
  $$renderer2.push("<!--[0-->");
1392
1420
  $$renderer2.push(`<form class="row divided token-row svelte-1n6ht58" method="POST" action="?/githubToken"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">GitHub token</div> <div class="desc svelte-1n6ht58">macOS / Linux: run <code class="svelte-1n6ht58">gh auth token</code> to print your GitHub CLI token, or
1393
- create a Personal Access Token at <code class="svelte-1n6ht58">github.com/settings/tokens</code> (scopes: <code class="svelte-1n6ht58">repo</code>, <code class="svelte-1n6ht58">read:org</code>). Leave blank and Save to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="githubToken" class="image-input svelte-1n6ht58"${$26.attr("value", githubToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$26.attr("placeholder", ghSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "ghp_\u2026 / gho_\u2026")}/> `);
1421
+ create a Personal Access Token at <code class="svelte-1n6ht58">github.com/settings/tokens</code> (scopes: <code class="svelte-1n6ht58">repo</code>, <code class="svelte-1n6ht58">read:org</code>). Leave blank and Save to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="githubToken" class="image-input svelte-1n6ht58"${$27.attr("value", githubToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$27.attr("placeholder", ghSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "ghp_\u2026 / gho_\u2026")}/> `);
1394
1422
  Button($$renderer2, {
1395
1423
  type: "submit",
1396
1424
  disabled: savingGithub,
@@ -1402,17 +1430,17 @@ function SettingsView($$renderer, $$props) {
1402
1430
  $$renderer2.push(`<!----></div> `);
1403
1431
  if (githubError) {
1404
1432
  $$renderer2.push("<!--[0-->");
1405
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(githubError)}</div>`);
1433
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(githubError)}</div>`);
1406
1434
  } else if (githubMsg) {
1407
1435
  $$renderer2.push("<!--[1-->");
1408
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(githubMsg)}</div>`);
1436
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(githubMsg)}</div>`);
1409
1437
  } else {
1410
1438
  $$renderer2.push("<!--[-1-->");
1411
1439
  }
1412
1440
  $$renderer2.push(`<!--]--></form> <form class="row divided token-row svelte-1n6ht58" method="POST" action="?/claudeToken"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Claude Code token</div> <div class="desc svelte-1n6ht58">macOS / Linux: run <code class="svelte-1n6ht58">claude setup-token</code> to mint a long-lived token and
1413
1441
  paste it here. Copying a live login out of the keychain or <code class="svelte-1n6ht58">~/.claude/.credentials.json</code> works too, but that credential rotates \u2014
1414
1442
  the first <code class="svelte-1n6ht58">claude</code> to refresh it signs the other one out. Leave blank and Save
1415
- to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="claudeToken" class="image-input svelte-1n6ht58"${$26.attr("value", claudeToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$26.attr("placeholder", claudeSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "sk-ant-oat\u2026")}/> `);
1443
+ to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="claudeToken" class="image-input svelte-1n6ht58"${$27.attr("value", claudeToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$27.attr("placeholder", claudeSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "sk-ant-oat\u2026")}/> `);
1416
1444
  Button($$renderer2, {
1417
1445
  type: "submit",
1418
1446
  disabled: savingClaude,
@@ -1424,10 +1452,10 @@ function SettingsView($$renderer, $$props) {
1424
1452
  $$renderer2.push(`<!----></div> `);
1425
1453
  if (claudeError) {
1426
1454
  $$renderer2.push("<!--[0-->");
1427
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(claudeError)}</div>`);
1455
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(claudeError)}</div>`);
1428
1456
  } else if (claudeMsg) {
1429
1457
  $$renderer2.push("<!--[1-->");
1430
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(claudeMsg)}</div>`);
1458
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(claudeMsg)}</div>`);
1431
1459
  } else {
1432
1460
  $$renderer2.push("<!--[-1-->");
1433
1461
  }
@@ -1435,19 +1463,19 @@ function SettingsView($$renderer, $$props) {
1435
1463
  } else {
1436
1464
  $$renderer2.push("<!--[-1-->");
1437
1465
  }
1438
- $$renderer2.push(`<!--]--></section> <section${$26.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": litellmBlocker() })}><form class="row svelte-1n6ht58" method="POST" action="?/customEndpointToggle"><div class="label svelte-1n6ht58">`);
1466
+ $$renderer2.push(`<!--]--></section> <section${$27.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": litellmBlocker() })}><form class="row svelte-1n6ht58" method="POST" action="?/customEndpointToggle"><div class="label svelte-1n6ht58">`);
1439
1467
  Key_round($$renderer2, { size: 20 });
1440
1468
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">LiteLLM + Bedrock `);
1441
1469
  if (litellmBlocker()) {
1442
1470
  $$renderer2.push("<!--[0-->");
1443
- $$renderer2.push(`<span class="arch svelte-1n6ht58"${$26.attr("title", `Disabled while ${$26.stringify(litellmBlocker())} is on`)}>disabled</span>`);
1471
+ $$renderer2.push(`<span class="arch svelte-1n6ht58"${$27.attr("title", `Disabled while ${$27.stringify(litellmBlocker())} is on`)}>disabled</span>`);
1444
1472
  } else {
1445
1473
  $$renderer2.push("<!--[-1-->");
1446
1474
  }
1447
1475
  $$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">`);
1448
1476
  if (litellmBlocker()) {
1449
1477
  $$renderer2.push("<!--[0-->");
1450
- $$renderer2.push(`Not available while "${$26.escape(litellmBlocker())}" is enabled \u2014 these modes are mutually
1478
+ $$renderer2.push(`Not available while "${$27.escape(litellmBlocker())}" is enabled \u2014 these modes are mutually
1451
1479
  incompatible.`);
1452
1480
  } else {
1453
1481
  $$renderer2.push("<!--[-1-->");
@@ -1455,17 +1483,17 @@ function SettingsView($$renderer, $$props) {
1455
1483
  default API. When enabled, the Bedrock endpoint variables are injected into every new
1456
1484
  container, host OAuth credentials are not used, and "Set tokens manually" is disabled.`);
1457
1485
  }
1458
- $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", customEndpoint, true)}${$26.attr("disabled", savingCustomToggle || !!litellmBlocker(), true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1486
+ $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", customEndpoint, true)}${$27.attr("disabled", savingCustomToggle || !!litellmBlocker(), true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1459
1487
  if (customToggleError) {
1460
1488
  $$renderer2.push("<!--[0-->");
1461
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(customToggleError)}</div></div>`);
1489
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(customToggleError)}</div></div>`);
1462
1490
  } else {
1463
1491
  $$renderer2.push("<!--[-1-->");
1464
1492
  }
1465
1493
  $$renderer2.push(`<!--]--> `);
1466
1494
  if (customEndpoint) {
1467
1495
  $$renderer2.push("<!--[0-->");
1468
- $$renderer2.push(`<form class="row divided token-row svelte-1n6ht58" method="POST" action="?/customBaseUrl"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Base URL</div> <div class="desc svelte-1n6ht58">The LiteLLM proxy endpoint, e.g. <code class="svelte-1n6ht58">https://litellm.example.com/bedrock</code>. Passed as <code class="svelte-1n6ht58">ANTHROPIC_BEDROCK_BASE_URL</code>.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="baseUrl" class="image-input svelte-1n6ht58"${$26.attr("value", customBaseUrl)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="https://litellm.example.com/bedrock"/> `);
1496
+ $$renderer2.push(`<form class="row divided token-row svelte-1n6ht58" method="POST" action="?/customBaseUrl"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Base URL</div> <div class="desc svelte-1n6ht58">The LiteLLM proxy endpoint, e.g. <code class="svelte-1n6ht58">https://litellm.example.com/bedrock</code>. Passed as <code class="svelte-1n6ht58">ANTHROPIC_BEDROCK_BASE_URL</code>.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="baseUrl" class="image-input svelte-1n6ht58"${$27.attr("value", customBaseUrl)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="https://litellm.example.com/bedrock"/> `);
1469
1497
  Button($$renderer2, {
1470
1498
  type: "submit",
1471
1499
  disabled: savingCustomBaseUrl,
@@ -1477,15 +1505,15 @@ function SettingsView($$renderer, $$props) {
1477
1505
  $$renderer2.push(`<!----></div> `);
1478
1506
  if (customBaseUrlError) {
1479
1507
  $$renderer2.push("<!--[0-->");
1480
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(customBaseUrlError)}</div>`);
1508
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(customBaseUrlError)}</div>`);
1481
1509
  } else if (customBaseUrlMsg) {
1482
1510
  $$renderer2.push("<!--[1-->");
1483
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(customBaseUrlMsg)}</div>`);
1511
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(customBaseUrlMsg)}</div>`);
1484
1512
  } else {
1485
1513
  $$renderer2.push("<!--[-1-->");
1486
1514
  }
1487
1515
  $$renderer2.push(`<!--]--></form> <form class="row divided token-row svelte-1n6ht58" method="POST" action="?/customToken"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Auth token</div> <div class="desc svelte-1n6ht58">Your LiteLLM API key. Passed as <code class="svelte-1n6ht58">ANTHROPIC_AUTH_TOKEN</code>. Leave blank and
1488
- Save to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="token" class="image-input svelte-1n6ht58"${$26.attr("value", customToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$26.attr("placeholder", customTokenSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "sk-\u2026")}/> `);
1516
+ Save to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="token" class="image-input svelte-1n6ht58"${$27.attr("value", customToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$27.attr("placeholder", customTokenSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "sk-\u2026")}/> `);
1489
1517
  Button($$renderer2, {
1490
1518
  type: "submit",
1491
1519
  disabled: savingCustomToken,
@@ -1497,15 +1525,15 @@ function SettingsView($$renderer, $$props) {
1497
1525
  $$renderer2.push(`<!----></div> `);
1498
1526
  if (customTokenError) {
1499
1527
  $$renderer2.push("<!--[0-->");
1500
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(customTokenError)}</div>`);
1528
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(customTokenError)}</div>`);
1501
1529
  } else if (customTokenMsg) {
1502
1530
  $$renderer2.push("<!--[1-->");
1503
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(customTokenMsg)}</div>`);
1531
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(customTokenMsg)}</div>`);
1504
1532
  } else {
1505
1533
  $$renderer2.push("<!--[-1-->");
1506
1534
  }
1507
1535
  $$renderer2.push(`<!--]--></form> <form class="row divided token-row svelte-1n6ht58" method="POST" action="?/customModels"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Model IDs</div> <div class="desc svelte-1n6ht58">Model aliases to use for each tier. Prefilled with defaults from the reference
1508
- launcher script. Leave a field as-is to keep its current value.</div></div></div> <div class="model-fields svelte-1n6ht58"><label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Opus</span> <input type="text" name="opusModel" class="image-input svelte-1n6ht58"${$26.attr("value", customOpusModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Sonnet</span> <input type="text" name="sonnetModel" class="image-input svelte-1n6ht58"${$26.attr("value", customSonnetModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Haiku</span> <input type="text" name="haikuModel" class="image-input svelte-1n6ht58"${$26.attr("value", customHaikuModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Small/fast</span> <input type="text" name="smallFastModel" class="image-input svelte-1n6ht58"${$26.attr("value", customSmallFastModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Default</span> <input type="text" name="defaultModel" class="image-input svelte-1n6ht58"${$26.attr("value", customDefaultModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58">`);
1536
+ launcher script. Leave a field as-is to keep its current value.</div></div></div> <div class="model-fields svelte-1n6ht58"><label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Opus</span> <input type="text" name="opusModel" class="image-input svelte-1n6ht58"${$27.attr("value", customOpusModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Sonnet</span> <input type="text" name="sonnetModel" class="image-input svelte-1n6ht58"${$27.attr("value", customSonnetModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Haiku</span> <input type="text" name="haikuModel" class="image-input svelte-1n6ht58"${$27.attr("value", customHaikuModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Small/fast</span> <input type="text" name="smallFastModel" class="image-input svelte-1n6ht58"${$27.attr("value", customSmallFastModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Default</span> <input type="text" name="defaultModel" class="image-input svelte-1n6ht58"${$27.attr("value", customDefaultModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58">`);
1509
1537
  Button($$renderer2, {
1510
1538
  type: "submit",
1511
1539
  disabled: savingCustomModels,
@@ -1517,10 +1545,10 @@ function SettingsView($$renderer, $$props) {
1517
1545
  $$renderer2.push(`<!----></div></div> `);
1518
1546
  if (customModelsError) {
1519
1547
  $$renderer2.push("<!--[0-->");
1520
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(customModelsError)}</div>`);
1548
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(customModelsError)}</div>`);
1521
1549
  } else if (customModelsMsg) {
1522
1550
  $$renderer2.push("<!--[1-->");
1523
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(customModelsMsg)}</div>`);
1551
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(customModelsMsg)}</div>`);
1524
1552
  } else {
1525
1553
  $$renderer2.push("<!--[-1-->");
1526
1554
  }
@@ -1528,7 +1556,7 @@ function SettingsView($$renderer, $$props) {
1528
1556
  } else {
1529
1557
  $$renderer2.push("<!--[-1-->");
1530
1558
  }
1531
- $$renderer2.push(`<!--]--></section> <section${$26.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": customEndpoint })}><form class="row svelte-1n6ht58" method="POST" action="?/manualModelToggle"><div class="label svelte-1n6ht58">`);
1559
+ $$renderer2.push(`<!--]--></section> <section${$27.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": customEndpoint })}><form class="row svelte-1n6ht58" method="POST" action="?/manualModelToggle"><div class="label svelte-1n6ht58">`);
1532
1560
  Cpu($$renderer2, { size: 18 });
1533
1561
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Override models manually `);
1534
1562
  if (customEndpoint) {
@@ -1547,17 +1575,17 @@ function SettingsView($$renderer, $$props) {
1547
1575
  $$renderer2.push(`Pin which model <code class="svelte-1n6ht58">claude</code> uses on the standard (subscription) path. Only
1548
1576
  the fields you fill are injected into new containers as <code class="svelte-1n6ht58">ANTHROPIC_*_MODEL</code> variables; blanks fall through to Claude Code's own defaults.`);
1549
1577
  }
1550
- $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", manualModelOverride, true)}${$26.attr("disabled", savingManualModelToggle || customEndpoint, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1578
+ $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", manualModelOverride, true)}${$27.attr("disabled", savingManualModelToggle || customEndpoint, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1551
1579
  if (manualModelToggleError) {
1552
1580
  $$renderer2.push("<!--[0-->");
1553
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(manualModelToggleError)}</div></div>`);
1581
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(manualModelToggleError)}</div></div>`);
1554
1582
  } else {
1555
1583
  $$renderer2.push("<!--[-1-->");
1556
1584
  }
1557
1585
  $$renderer2.push(`<!--]--> `);
1558
1586
  if (manualModelOverride) {
1559
1587
  $$renderer2.push("<!--[0-->");
1560
- $$renderer2.push(`<form class="row divided token-row svelte-1n6ht58" method="POST" action="?/manualModels"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Model IDs</div> <div class="desc svelte-1n6ht58">A model name or alias per tier, e.g. <code class="svelte-1n6ht58">opusplan</code>, <code class="svelte-1n6ht58">opus</code>, <code class="svelte-1n6ht58">sonnet</code>, or a full <code class="svelte-1n6ht58">claude-\u2026</code> id. Leave a field blank to skip it.</div></div></div> <div class="model-fields svelte-1n6ht58"><label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Opus</span> <input type="text" name="opusModel" class="image-input svelte-1n6ht58"${$26.attr("value", manualOpus)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Sonnet</span> <input type="text" name="sonnetModel" class="image-input svelte-1n6ht58"${$26.attr("value", manualSonnet)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Haiku</span> <input type="text" name="haikuModel" class="image-input svelte-1n6ht58"${$26.attr("value", manualHaiku)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Small/fast</span> <input type="text" name="smallFastModel" class="image-input svelte-1n6ht58"${$26.attr("value", manualSmallFast)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Default</span> <input type="text" name="defaultModel" class="image-input svelte-1n6ht58"${$26.attr("value", manualDefault)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58">`);
1588
+ $$renderer2.push(`<form class="row divided token-row svelte-1n6ht58" method="POST" action="?/manualModels"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Model IDs</div> <div class="desc svelte-1n6ht58">A model name or alias per tier, e.g. <code class="svelte-1n6ht58">opusplan</code>, <code class="svelte-1n6ht58">opus</code>, <code class="svelte-1n6ht58">sonnet</code>, or a full <code class="svelte-1n6ht58">claude-\u2026</code> id. Leave a field blank to skip it.</div></div></div> <div class="model-fields svelte-1n6ht58"><label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Opus</span> <input type="text" name="opusModel" class="image-input svelte-1n6ht58"${$27.attr("value", manualOpus)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Sonnet</span> <input type="text" name="sonnetModel" class="image-input svelte-1n6ht58"${$27.attr("value", manualSonnet)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Haiku</span> <input type="text" name="haikuModel" class="image-input svelte-1n6ht58"${$27.attr("value", manualHaiku)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Small/fast</span> <input type="text" name="smallFastModel" class="image-input svelte-1n6ht58"${$27.attr("value", manualSmallFast)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Default</span> <input type="text" name="defaultModel" class="image-input svelte-1n6ht58"${$27.attr("value", manualDefault)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58">`);
1561
1589
  Button($$renderer2, {
1562
1590
  type: "submit",
1563
1591
  disabled: savingManualModels,
@@ -1569,10 +1597,10 @@ function SettingsView($$renderer, $$props) {
1569
1597
  $$renderer2.push(`<!----></div></div> `);
1570
1598
  if (manualModelsError) {
1571
1599
  $$renderer2.push("<!--[0-->");
1572
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(manualModelsError)}</div>`);
1600
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(manualModelsError)}</div>`);
1573
1601
  } else if (manualModelsMsg) {
1574
1602
  $$renderer2.push("<!--[1-->");
1575
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(manualModelsMsg)}</div>`);
1603
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(manualModelsMsg)}</div>`);
1576
1604
  } else {
1577
1605
  $$renderer2.push("<!--[-1-->");
1578
1606
  }
@@ -1584,10 +1612,10 @@ function SettingsView($$renderer, $$props) {
1584
1612
  Variable($$renderer2, { size: 20 });
1585
1613
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Host environment variables</div> <div class="desc svelte-1n6ht58">Forward selected environment variables from this machine into every new container's
1586
1614
  interactive shells. Values are read from this process's own environment at container
1587
- start and are never shown here or stored \u2014 only the variable names are saved.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", hostEnvVars, true)}${$26.attr("disabled", savingHostEnvToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1615
+ start and are never shown here or stored \u2014 only the variable names are saved.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", hostEnvVars, true)}${$27.attr("disabled", savingHostEnvToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1588
1616
  if (hostEnvToggleError) {
1589
1617
  $$renderer2.push("<!--[0-->");
1590
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(hostEnvToggleError)}</div></div>`);
1618
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(hostEnvToggleError)}</div></div>`);
1591
1619
  } else {
1592
1620
  $$renderer2.push("<!--[-1-->");
1593
1621
  }
@@ -1595,18 +1623,18 @@ function SettingsView($$renderer, $$props) {
1595
1623
  if (hostEnvVars) {
1596
1624
  $$renderer2.push("<!--[0-->");
1597
1625
  $$renderer2.push(`<div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58">`);
1598
- const each_array_2 = $26.ensure_array_like(hostEnvNames);
1626
+ const each_array_2 = $27.ensure_array_like(hostEnvNames);
1599
1627
  if (each_array_2.length !== 0) {
1600
1628
  $$renderer2.push("<!--[-->");
1601
1629
  for (let $$index_3 = 0, $$length = each_array_2.length;$$index_3 < $$length; $$index_3++) {
1602
1630
  let name = each_array_2[$$index_3];
1603
1631
  $$renderer2.push(`<form class="var-item svelte-1n6ht58" method="POST" action="?/hostEnvVarNames"><!--[-->`);
1604
- const each_array_3 = $26.ensure_array_like(hostEnvNames.filter((n) => n !== name));
1632
+ const each_array_3 = $27.ensure_array_like(hostEnvNames.filter((n) => n !== name));
1605
1633
  for (let $$index_2 = 0, $$length2 = each_array_3.length;$$index_2 < $$length2; $$index_2++) {
1606
1634
  let other = each_array_3[$$index_2];
1607
- $$renderer2.push(`<input type="hidden" name="names"${$26.attr("value", other)}/>`);
1635
+ $$renderer2.push(`<input type="hidden" name="names"${$27.attr("value", other)}/>`);
1608
1636
  }
1609
- $$renderer2.push(`<!--]--> <span class="var-name svelte-1n6ht58">${$26.escape(name)}</span> <span${$26.attr_class("var-status svelte-1n6ht58", undefined, { present: hostEnvPresence[name] })}${$26.attr("title", hostEnvPresence[name] ? "Set on this host \u2014 will be injected" : "Not set on this host \u2014 will be skipped")}>${$26.escape(hostEnvPresence[name] ? "set" : "missing")}</span> <button type="submit" class="var-remove svelte-1n6ht58"${$26.attr("disabled", savingHostEnvNames, true)}${$26.attr("aria-label", `Remove ${name}`)}>`);
1637
+ $$renderer2.push(`<!--]--> <span class="var-name svelte-1n6ht58">${$27.escape(name)}</span> <span${$27.attr_class("var-status svelte-1n6ht58", undefined, { present: hostEnvPresence[name] })}${$27.attr("title", hostEnvPresence[name] ? "Set on this host \u2014 will be injected" : "Not set on this host \u2014 will be skipped")}>${$27.escape(hostEnvPresence[name] ? "set" : "missing")}</span> <button type="submit" class="var-remove svelte-1n6ht58"${$27.attr("disabled", savingHostEnvNames, true)}${$27.attr("aria-label", `Remove ${name}`)}>`);
1610
1638
  X($$renderer2, { size: 13 });
1611
1639
  $$renderer2.push(`<!----></button></form>`);
1612
1640
  }
@@ -1615,12 +1643,12 @@ function SettingsView($$renderer, $$props) {
1615
1643
  $$renderer2.push(`<div class="var-empty svelte-1n6ht58">No variables added yet.</div>`);
1616
1644
  }
1617
1645
  $$renderer2.push(`<!--]--></div> <form class="var-add svelte-1n6ht58" method="POST" action="?/hostEnvVarNames"><!--[-->`);
1618
- const each_array_4 = $26.ensure_array_like(hostEnvNames);
1646
+ const each_array_4 = $27.ensure_array_like(hostEnvNames);
1619
1647
  for (let $$index_4 = 0, $$length = each_array_4.length;$$index_4 < $$length; $$index_4++) {
1620
1648
  let name = each_array_4[$$index_4];
1621
- $$renderer2.push(`<input type="hidden" name="names"${$26.attr("value", name)}/>`);
1649
+ $$renderer2.push(`<input type="hidden" name="names"${$27.attr("value", name)}/>`);
1622
1650
  }
1623
- $$renderer2.push(`<!--]--> <input type="text" name="names" class="image-input svelte-1n6ht58"${$26.attr("value", newHostEnvName)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="AWS_ACCESS_KEY_ID"/> `);
1651
+ $$renderer2.push(`<!--]--> <input type="text" name="names" class="image-input svelte-1n6ht58"${$27.attr("value", newHostEnvName)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="AWS_ACCESS_KEY_ID"/> `);
1624
1652
  Button($$renderer2, {
1625
1653
  type: "submit",
1626
1654
  icon: Plus,
@@ -1633,10 +1661,10 @@ function SettingsView($$renderer, $$props) {
1633
1661
  $$renderer2.push(`<!----></form> `);
1634
1662
  if (hostEnvNamesError) {
1635
1663
  $$renderer2.push("<!--[0-->");
1636
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(hostEnvNamesError)}</div>`);
1664
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(hostEnvNamesError)}</div>`);
1637
1665
  } else if (hostEnvNamesMsg) {
1638
1666
  $$renderer2.push("<!--[1-->");
1639
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(hostEnvNamesMsg)}</div>`);
1667
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(hostEnvNamesMsg)}</div>`);
1640
1668
  } else {
1641
1669
  $$renderer2.push("<!--[-1-->");
1642
1670
  }
@@ -1648,10 +1676,10 @@ function SettingsView($$renderer, $$props) {
1648
1676
  Key_square($$renderer2, { size: 20 });
1649
1677
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Custom environment variables</div> <div class="desc svelte-1n6ht58">Inject your own <code class="svelte-1n6ht58">NAME=value</code> pairs into every new container as <code class="svelte-1n6ht58">containerEnv</code>, available to all processes. Values are secret \u2014 stored
1650
1678
  locally, masked in the build log, and never shown here after saving. Re-add a name to
1651
- update its value.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", customEnvEnabled, true)}${$26.attr("disabled", savingCustomEnvToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1679
+ update its value.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", customEnvEnabled, true)}${$27.attr("disabled", savingCustomEnvToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1652
1680
  if (customEnvToggleError) {
1653
1681
  $$renderer2.push("<!--[0-->");
1654
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(customEnvToggleError)}</div></div>`);
1682
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(customEnvToggleError)}</div></div>`);
1655
1683
  } else {
1656
1684
  $$renderer2.push("<!--[-1-->");
1657
1685
  }
@@ -1659,12 +1687,12 @@ function SettingsView($$renderer, $$props) {
1659
1687
  if (customEnvEnabled) {
1660
1688
  $$renderer2.push("<!--[0-->");
1661
1689
  $$renderer2.push(`<div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58">`);
1662
- const each_array_5 = $26.ensure_array_like(customEnvNames);
1690
+ const each_array_5 = $27.ensure_array_like(customEnvNames);
1663
1691
  if (each_array_5.length !== 0) {
1664
1692
  $$renderer2.push("<!--[-->");
1665
1693
  for (let $$index_5 = 0, $$length = each_array_5.length;$$index_5 < $$length; $$index_5++) {
1666
1694
  let name = each_array_5[$$index_5];
1667
- $$renderer2.push(`<form class="var-item svelte-1n6ht58" method="POST" action="?/removeCustomEnvVar"><input type="hidden" name="name"${$26.attr("value", name)}/> <span class="var-name svelte-1n6ht58">${$26.escape(name)}</span> <span class="var-status present svelte-1n6ht58" title="Set \u2014 injected into every new container">\u2022\u2022\u2022\u2022 saved</span> <button type="submit" class="var-remove svelte-1n6ht58"${$26.attr("disabled", savingCustomEnv, true)}${$26.attr("aria-label", `Remove ${name}`)}>`);
1695
+ $$renderer2.push(`<form class="var-item svelte-1n6ht58" method="POST" action="?/removeCustomEnvVar"><input type="hidden" name="name"${$27.attr("value", name)}/> <span class="var-name svelte-1n6ht58">${$27.escape(name)}</span> <span class="var-status present svelte-1n6ht58" title="Set \u2014 injected into every new container">\u2022\u2022\u2022\u2022 saved</span> <button type="submit" class="var-remove svelte-1n6ht58"${$27.attr("disabled", savingCustomEnv, true)}${$27.attr("aria-label", `Remove ${name}`)}>`);
1668
1696
  X($$renderer2, { size: 13 });
1669
1697
  $$renderer2.push(`<!----></button></form>`);
1670
1698
  }
@@ -1672,7 +1700,7 @@ function SettingsView($$renderer, $$props) {
1672
1700
  $$renderer2.push("<!--[!-->");
1673
1701
  $$renderer2.push(`<div class="var-empty svelte-1n6ht58">No variables added yet.</div>`);
1674
1702
  }
1675
- $$renderer2.push(`<!--]--></div> <form class="var-add svelte-1n6ht58" method="POST" action="?/setCustomEnvVar"><input type="text" name="name" class="image-input svelte-1n6ht58"${$26.attr("value", newCustomEnvName)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="MY_SECRET"/> <input type="password" name="value" class="image-input svelte-1n6ht58"${$26.attr("value", newCustomEnvValue)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="value"/> `);
1703
+ $$renderer2.push(`<!--]--></div> <form class="var-add svelte-1n6ht58" method="POST" action="?/setCustomEnvVar"><input type="text" name="name" class="image-input svelte-1n6ht58"${$27.attr("value", newCustomEnvName)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="MY_SECRET"/> <input type="password" name="value" class="image-input svelte-1n6ht58"${$27.attr("value", newCustomEnvValue)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="value"/> `);
1676
1704
  Button($$renderer2, {
1677
1705
  type: "submit",
1678
1706
  icon: Plus,
@@ -1685,10 +1713,10 @@ function SettingsView($$renderer, $$props) {
1685
1713
  $$renderer2.push(`<!----></form> `);
1686
1714
  if (customEnvError) {
1687
1715
  $$renderer2.push("<!--[0-->");
1688
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(customEnvError)}</div>`);
1716
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(customEnvError)}</div>`);
1689
1717
  } else if (customEnvMsg) {
1690
1718
  $$renderer2.push("<!--[1-->");
1691
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(customEnvMsg)}</div>`);
1719
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(customEnvMsg)}</div>`);
1692
1720
  } else {
1693
1721
  $$renderer2.push("<!--[-1-->");
1694
1722
  }
@@ -1702,12 +1730,15 @@ function SettingsView($$renderer, $$props) {
1702
1730
  ThemePicker($$renderer2, {});
1703
1731
  $$renderer2.push(`<!----></div></section> <section class="card svelte-1n6ht58"><div class="row svelte-1n6ht58"><div class="label svelte-1n6ht58">`);
1704
1732
  Volume_2($$renderer2, { size: 20 });
1705
- $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Attention sound</div> <div class="desc svelte-1n6ht58">Play a chime when an instance finishes a task or needs your input.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox"${$26.attr("checked", sound, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></div></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/petToggle"><div class="label svelte-1n6ht58">`);
1733
+ $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Attention sound</div> <div class="desc svelte-1n6ht58">Play a chime when an instance finishes a task or needs your input.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox"${$27.attr("checked", sound, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></div></section> <section class="card svelte-1n6ht58"><div class="row svelte-1n6ht58"><div class="label svelte-1n6ht58">`);
1734
+ Keyboard($$renderer2, { size: 20 });
1735
+ $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Tab keyboard shortcuts</div> <div class="desc svelte-1n6ht58">Jump between open instance tabs with <code class="svelte-1n6ht58">Alt</code>+<code class="svelte-1n6ht58">1</code>\u2013<code class="svelte-1n6ht58">9</code> (9 is
1736
+ always the last tab). Turn off to leave those keystrokes to the editor.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox"${$27.attr("checked", tabShortcuts, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></div></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/petToggle"><div class="label svelte-1n6ht58">`);
1706
1737
  Paw_print($$renderer2, { size: 18 });
1707
- $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Pet logo</div> <div class="desc svelte-1n6ht58">Swap the box in the header for a pixel pet.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", !!petArt, true)}${$26.attr("disabled", savingPet, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1738
+ $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Pet logo</div> <div class="desc svelte-1n6ht58">Swap the box in the header for a pixel pet.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", !!petArt, true)}${$27.attr("disabled", savingPet, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1708
1739
  if (petError) {
1709
1740
  $$renderer2.push("<!--[0-->");
1710
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(petError)}</div></div>`);
1741
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(petError)}</div></div>`);
1711
1742
  } else {
1712
1743
  $$renderer2.push("<!--[-1-->");
1713
1744
  }
@@ -1715,10 +1746,10 @@ function SettingsView($$renderer, $$props) {
1715
1746
  if (petArt) {
1716
1747
  $$renderer2.push("<!--[0-->");
1717
1748
  $$renderer2.push(`<div class="sub pets svelte-1n6ht58"><!--[-->`);
1718
- const each_array_6 = $26.ensure_array_like(avatars);
1749
+ const each_array_6 = $27.ensure_array_like(avatars);
1719
1750
  for (let $$index_6 = 0, $$length = each_array_6.length;$$index_6 < $$length; $$index_6++) {
1720
1751
  let art = each_array_6[$$index_6];
1721
- $$renderer2.push(`<form method="POST" action="?/petChoose" class="svelte-1n6ht58"><input type="hidden" name="name"${$26.attr("value", art.name)}/> <button type="submit"${$26.attr_class("pet svelte-1n6ht58", undefined, { selected: art.name === petArt.name })}${$26.attr("disabled", savingPet, true)}${$26.attr("title", art.name)}${$26.attr("aria-label", art.name)}${$26.attr("aria-pressed", art.name === petArt.name)}>`);
1752
+ $$renderer2.push(`<form method="POST" action="?/petChoose" class="svelte-1n6ht58"><input type="hidden" name="name"${$27.attr("value", art.name)}/> <button type="submit"${$27.attr_class("pet svelte-1n6ht58", undefined, { selected: art.name === petArt.name })}${$27.attr("disabled", savingPet, true)}${$27.attr("title", art.name)}${$27.attr("aria-label", art.name)}${$27.attr("aria-pressed", art.name === petArt.name)}>`);
1722
1753
  Avatar($$renderer2, { art, name: art.name, scale: 4 });
1723
1754
  $$renderer2.push(`<!----></button></form>`);
1724
1755
  }
@@ -1731,30 +1762,30 @@ function SettingsView($$renderer, $$props) {
1731
1762
  $$renderer2.push(`<!----> <span class="name svelte-1n6ht58">Advanced</span> <span class="hint svelte-1n6ht58">escape hatches \u2014 defaults are right for almost everyone</span></summary> <form class="row divided svelte-1n6ht58" method="POST" action="?/serialInjectionsToggle"><div class="label svelte-1n6ht58">`);
1732
1763
  List_ordered($$renderer2, { size: 20 });
1733
1764
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Serial boot injections</div> <div class="desc svelte-1n6ht58">Run boot injections one at a time instead of in parallel stages. Slower boot; useful
1734
- when diagnosing injection interference.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", serialInjections, true)}${$26.attr("disabled", savingSerial, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1765
+ when diagnosing injection interference.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", serialInjections, true)}${$27.attr("disabled", savingSerial, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1735
1766
  if (serialError) {
1736
1767
  $$renderer2.push("<!--[0-->");
1737
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(serialError)}</div></div>`);
1768
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(serialError)}</div></div>`);
1738
1769
  } else {
1739
1770
  $$renderer2.push("<!--[-1-->");
1740
1771
  }
1741
1772
  $$renderer2.push(`<!--]--> <form class="row divided svelte-1n6ht58" method="POST" action="?/noBuildkitToggle"><div class="label svelte-1n6ht58">`);
1742
1773
  Boxes($$renderer2, { size: 20 });
1743
1774
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Don't force BuildKit</div> <div class="desc svelte-1n6ht58">Skip setting <code class="svelte-1n6ht58">DOCKER_BUILDKIT=1</code> for container builds and let the daemon's
1744
- default builder decide. For daemons where forcing BuildKit breaks builds.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", noBuildkit, true)}${$26.attr("disabled", savingBuildkit, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1775
+ default builder decide. For daemons where forcing BuildKit breaks builds.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", noBuildkit, true)}${$27.attr("disabled", savingBuildkit, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1745
1776
  if (buildkitError) {
1746
1777
  $$renderer2.push("<!--[0-->");
1747
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(buildkitError)}</div></div>`);
1778
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(buildkitError)}</div></div>`);
1748
1779
  } else {
1749
1780
  $$renderer2.push("<!--[-1-->");
1750
1781
  }
1751
1782
  $$renderer2.push(`<!--]--> <form class="row divided svelte-1n6ht58" method="POST" action="?/blockingExtInstallToggle"><div class="label svelte-1n6ht58">`);
1752
1783
  Puzzle($$renderer2, { size: 20 });
1753
1784
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Blocking IDE extension install</div> <div class="desc svelte-1n6ht58">Install the Claude Code IDE extension before code-server starts, so the first window
1754
- always has it active. Slower first boot.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$26.attr("checked", blockingExtInstall, true)}${$26.attr("disabled", savingBlocking, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1785
+ always has it active. Slower first boot.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$27.attr("checked", blockingExtInstall, true)}${$27.attr("disabled", savingBlocking, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1755
1786
  if (blockingError) {
1756
1787
  $$renderer2.push("<!--[0-->");
1757
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(blockingError)}</div></div>`);
1788
+ $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$27.escape(blockingError)}</div></div>`);
1758
1789
  } else {
1759
1790
  $$renderer2.push("<!--[-1-->");
1760
1791
  }
@@ -1764,10 +1795,10 @@ function SettingsView($$renderer, $$props) {
1764
1795
  again.</div> `);
1765
1796
  if (verError) {
1766
1797
  $$renderer2.push("<!--[0-->");
1767
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(verError)}</div>`);
1798
+ $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$27.escape(verError)}</div>`);
1768
1799
  } else if (verMsg) {
1769
1800
  $$renderer2.push("<!--[1-->");
1770
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(verMsg)}</div>`);
1801
+ $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$27.escape(verMsg)}</div>`);
1771
1802
  } else {
1772
1803
  $$renderer2.push("<!--[-1-->");
1773
1804
  }
@@ -1777,7 +1808,7 @@ function SettingsView($$renderer, $$props) {
1777
1808
  icon: Trash_2,
1778
1809
  disabled: clearingVer,
1779
1810
  children: ($$renderer3) => {
1780
- $$renderer3.push(`<!---->${$26.escape(clearingVer ? "Clearing\u2026" : "Clear cache")}`);
1811
+ $$renderer3.push(`<!---->${$27.escape(clearingVer ? "Clearing\u2026" : "Clear cache")}`);
1781
1812
  },
1782
1813
  $$slots: { default: true }
1783
1814
  });
@@ -1801,7 +1832,7 @@ function SettingsView($$renderer, $$props) {
1801
1832
  }
1802
1833
  $$renderer2.push(`<!--]--></form></section> `);
1803
1834
  CoinButton($$renderer2, {});
1804
- $$renderer2.push(`<!----> <div class="version svelte-1n6ht58">Codebay v${$26.escape(version)}</div></main></div> `);
1835
+ $$renderer2.push(`<!----> <div class="version svelte-1n6ht58">Codebay v${$27.escape(version)}</div></main></div> `);
1805
1836
  Toaster($$renderer2, { toastOptions: TOAST_OPTIONS });
1806
1837
  $$renderer2.push(`<!---->`);
1807
1838
  });
@@ -1853,7 +1884,7 @@ function Settings($$renderer, $$props) {
1853
1884
  } = $$props;
1854
1885
  if (true) {
1855
1886
  let failed = function($$renderer3, error) {
1856
- $$renderer3.push(`<mochi-island-failure data-component="SettingsView"${$27.attr("data-message", error.message)}></mochi-island-failure>`);
1887
+ $$renderer3.push(`<mochi-island-failure data-component="SettingsView"${$28.attr("data-message", error.message)}></mochi-island-failure>`);
1857
1888
  };
1858
1889
  $$renderer2.push("<!--[0-->");
1859
1890
  $$renderer2.boundary({ failed }, ($$renderer3) => {
@@ -1861,7 +1892,7 @@ function Settings($$renderer, $$props) {
1861
1892
  {
1862
1893
  HydratableBoundary($$renderer3, {
1863
1894
  children: ($$renderer4) => {
1864
- $$renderer4.push(`<mochi-hydratable-island component-name="SettingsView_8hmarwmf8onq" component-url="__MOCHI_COMPONENT_URL__SettingsView_8hmarwmf8onq__"${$27.attr("props-ref", emitIslandProps({
1895
+ $$renderer4.push(`<mochi-hydratable-island component-name="SettingsView_8hmarwmf8onq" component-url="__MOCHI_COMPONENT_URL__SettingsView_8hmarwmf8onq__"${$28.attr("props-ref", emitIslandProps({
1865
1896
  pet,
1866
1897
  defaultMode,
1867
1898
  claudePermissionMode,