codebay 0.9.1 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mochi/manifest.json +214 -147
- package/.mochi/svelte-client/HydratableIsland-aebn1fa1.js +1 -0
- package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-rx6arrv5.js +2 -0
- package/.mochi/svelte-client/{_hydrate-AvatarsView_257s9yq1wwr4f-92hepzby.js → _hydrate-AvatarsView_257s9yq1wwr4f-jpjdmgpe.js} +1 -1
- package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-c9y47dat.js +1 -0
- package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-d61feq89.js +38 -0
- package/.mochi/svelte-client/{chunk-2j95sv83.js → chunk-0fjx3z3r.js} +1 -1
- package/.mochi/svelte-client/chunk-8xvr02wh.js +2 -0
- package/.mochi/svelte-client/{chunk-m497q88s.js → chunk-9143wy3j.js} +2 -2
- package/.mochi/svelte-client/{chunk-v65n8th6.js → chunk-bn731rda.js} +1 -1
- package/.mochi/svelte-client/{chunk-a2psjmrm.js → chunk-j72r8pkk.js} +2 -2
- package/.mochi/svelte-client/chunk-k37wj1jm.js +2 -0
- package/.mochi/svelte-client/{chunk-mpv3qx28.js → chunk-p20tkpde.js} +1 -1
- package/.mochi/svelte-client/chunk-pc0fm37c.js +2 -0
- package/.mochi/svelte-client/{chunk-6rbs0mhx.js → chunk-t0ap7q89.js} +1 -1
- package/.mochi/svelte-client/{chunk-rs41by6w.js → chunk-wvtkwfsh.js} +1 -1
- package/.mochi/svelte-compile/{App-7vjcp38v.server.js → App-59cdj86f.server.js} +167 -103
- package/.mochi/svelte-compile/{Avatars-e2cfc95t.server.js → Avatars-fmagfyj2.server.js} +1 -1
- package/.mochi/svelte-compile/{Instance-h78n2dsv.server.js → Instance-s1gqwzmx.server.js} +16 -10
- package/.mochi/svelte-compile/{Settings-tav2asn7.server.js → Settings-k447mt0x.server.js} +540 -88
- package/.mochi/svelte-compile/{chunk-brjv9pyd.js → chunk-3t7v4hk0.js} +1 -7
- package/.mochi/svelte-compile/chunk-gkjgybb2.js +15 -0
- package/.mochi/svelte-compile/{chunk-m8ygpyhr.js → chunk-th2dbqvc.js} +20 -32
- package/.mochi/svelte-css/Button-oharop2xz6am.css +1 -0
- package/.mochi/svelte-css/IdeBar-3bgr3m5z0lpeg.css +1 -0
- package/.mochi/svelte-css/{InstanceView-3vzow3ttxzlh3.css → InstanceView-1pd7j16bd2b16.css} +1 -1
- package/.mochi/svelte-css/SettingsView-n3oy75uonzp2.css +1 -0
- package/.mochi/svelte-css/{TopBar-2q87li6yt8ids.css → TopBar-2y76zxwehrfos.css} +1 -1
- package/migrations/0007_instance_avatar.sql +1 -0
- package/package.json +2 -2
- package/src/avatars/diamond.ts +5 -6
- package/src/avatars/index.ts +1 -16
- package/src/avatars/pick.server.ts +25 -0
- package/src/avatars/whale.ts +7 -8
- package/src/components/AppShell.svelte +29 -4
- package/src/components/Avatar.svelte +8 -8
- package/src/components/Button.svelte +22 -1
- package/src/components/DashboardView.svelte +14 -2
- package/src/components/FolderBrowser.svelte +6 -2
- package/src/components/IdeBar.svelte +56 -13
- package/src/components/IdeLoader.svelte +15 -3
- package/src/components/InstanceCard.svelte +6 -1
- package/src/components/InstanceView.svelte +33 -15
- package/src/components/SettingsView.svelte +548 -1
- package/src/components/TopBar.svelte +37 -10
- package/src/components/UiShowcase.svelte +5 -10
- package/src/container-injections/claude-aliases.ts +1 -1
- package/src/container-injections/claude-code-custom.ts +2 -1
- package/src/container-injections/claude-code-ide-extension.ts +5 -0
- package/src/container-injections/claude-code-models.ts +2 -1
- package/src/container-injections/claude-code-update.ts +62 -1
- package/src/container-injections/claude-effort-level.ts +32 -0
- package/src/container-injections/claude-permission-mode.ts +40 -0
- package/src/container-injections/custom-env-vars.ts +82 -0
- package/src/container-injections/host-env-vars.ts +2 -1
- package/src/lib/config.server.ts +3 -0
- package/src/lib/db.server.ts +8 -3
- package/src/lib/devcontainer.server.ts +155 -43
- package/src/lib/health.server.ts +55 -11
- package/src/lib/injections.server.ts +45 -38
- package/src/lib/instances.server.ts +246 -26
- package/src/lib/log-capture.server.ts +262 -0
- package/src/lib/ports.server.ts +31 -0
- package/src/lib/proxy.server.ts +2 -2
- package/src/pages/Settings.svelte +22 -1
- package/src/routes.ts +98 -2
- package/src/types.ts +36 -0
- package/.mochi/svelte-client/HydratableIsland-k6q8esj4.js +0 -1
- package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-sg96rp17.js +0 -2
- package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-p3f649gk.js +0 -1
- package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-dzmgmv78.js +0 -29
- package/.mochi/svelte-client/chunk-7wkvn2vx.js +0 -2
- package/.mochi/svelte-client/chunk-m4fzsd5b.js +0 -2
- package/.mochi/svelte-css/Button-2vtbrzb5kgu25.css +0 -1
- package/.mochi/svelte-css/IdeBar-10xodudcx57qr.css +0 -1
- package/.mochi/svelte-css/SettingsView-2qfauz68axro1.css +0 -1
- package/src/container-injections/claude-skip-permissions.ts +0 -28
|
@@ -8,6 +8,10 @@ import {
|
|
|
8
8
|
soundEnabled,
|
|
9
9
|
unlockAudio
|
|
10
10
|
} from "./chunk-bpqwf1nw.js";
|
|
11
|
+
import {
|
|
12
|
+
CLAUDE_EFFORT_LEVELS,
|
|
13
|
+
CLAUDE_PERMISSION_MODES
|
|
14
|
+
} from "./chunk-gkjgybb2.js";
|
|
11
15
|
import {
|
|
12
16
|
Rotate_ccw
|
|
13
17
|
} from "./chunk-jx6h1xzp.js";
|
|
@@ -18,7 +22,7 @@ import {
|
|
|
18
22
|
Toaster,
|
|
19
23
|
avatars,
|
|
20
24
|
findAvatar
|
|
21
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-th2dbqvc.js";
|
|
22
26
|
import {
|
|
23
27
|
HydratableBoundary,
|
|
24
28
|
Icon,
|
|
@@ -30,11 +34,11 @@ import"./chunk-xpt1a7jm.js";
|
|
|
30
34
|
|
|
31
35
|
// src/pages/Settings.svelte
|
|
32
36
|
import"svelte/internal/flags/async";
|
|
33
|
-
import * as $
|
|
37
|
+
import * as $27 from "svelte/internal/server";
|
|
34
38
|
|
|
35
39
|
// src/components/SettingsView.svelte
|
|
36
40
|
import"svelte/internal/flags/async";
|
|
37
|
-
import * as $
|
|
41
|
+
import * as $26 from "svelte/internal/server";
|
|
38
42
|
|
|
39
43
|
// node_modules/@lucide/svelte/dist/icons/container.svelte
|
|
40
44
|
import"svelte/internal/flags/async";
|
|
@@ -373,12 +377,123 @@ function Variable($$renderer, $$props) {
|
|
|
373
377
|
];
|
|
374
378
|
Icon($$renderer, $17.spread_props([{ name: "variable" }, props, { iconNode }]));
|
|
375
379
|
}
|
|
380
|
+
// node_modules/@lucide/svelte/dist/icons/key-square.svelte
|
|
381
|
+
import"svelte/internal/flags/async";
|
|
382
|
+
import * as $18 from "svelte/internal/server";
|
|
383
|
+
function Key_square($$renderer, $$props) {
|
|
384
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
385
|
+
const iconNode = [
|
|
386
|
+
[
|
|
387
|
+
"path",
|
|
388
|
+
{
|
|
389
|
+
d: "M12.4 2.7a2.5 2.5 0 0 1 3.4 0l5.5 5.5a2.5 2.5 0 0 1 0 3.4l-3.7 3.7a2.5 2.5 0 0 1-3.4 0L8.7 9.8a2.5 2.5 0 0 1 0-3.4z"
|
|
390
|
+
}
|
|
391
|
+
],
|
|
392
|
+
["path", { d: "m14 7 3 3" }],
|
|
393
|
+
[
|
|
394
|
+
"path",
|
|
395
|
+
{
|
|
396
|
+
d: "m9.4 10.6-6.814 6.814A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814"
|
|
397
|
+
}
|
|
398
|
+
]
|
|
399
|
+
];
|
|
400
|
+
Icon($$renderer, $18.spread_props([{ name: "key-square" }, props, { iconNode }]));
|
|
401
|
+
}
|
|
402
|
+
// node_modules/@lucide/svelte/dist/icons/sliders-horizontal.svelte
|
|
403
|
+
import"svelte/internal/flags/async";
|
|
404
|
+
import * as $19 from "svelte/internal/server";
|
|
405
|
+
function Sliders_horizontal($$renderer, $$props) {
|
|
406
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
407
|
+
const iconNode = [
|
|
408
|
+
["path", { d: "M10 5H3" }],
|
|
409
|
+
["path", { d: "M12 19H3" }],
|
|
410
|
+
["path", { d: "M14 3v4" }],
|
|
411
|
+
["path", { d: "M16 17v4" }],
|
|
412
|
+
["path", { d: "M21 12h-9" }],
|
|
413
|
+
["path", { d: "M21 19h-5" }],
|
|
414
|
+
["path", { d: "M21 5h-7" }],
|
|
415
|
+
["path", { d: "M8 10v4" }],
|
|
416
|
+
["path", { d: "M8 12H3" }]
|
|
417
|
+
];
|
|
418
|
+
Icon($$renderer, $19.spread_props([{ name: "sliders-horizontal" }, props, { iconNode }]));
|
|
419
|
+
}
|
|
420
|
+
// node_modules/@lucide/svelte/dist/icons/list-ordered.svelte
|
|
421
|
+
import"svelte/internal/flags/async";
|
|
422
|
+
import * as $20 from "svelte/internal/server";
|
|
423
|
+
function List_ordered($$renderer, $$props) {
|
|
424
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
425
|
+
const iconNode = [
|
|
426
|
+
["path", { d: "M11 5h10" }],
|
|
427
|
+
["path", { d: "M11 12h10" }],
|
|
428
|
+
["path", { d: "M11 19h10" }],
|
|
429
|
+
["path", { d: "M4 4h1v5" }],
|
|
430
|
+
["path", { d: "M4 9h2" }],
|
|
431
|
+
[
|
|
432
|
+
"path",
|
|
433
|
+
{
|
|
434
|
+
d: "M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02"
|
|
435
|
+
}
|
|
436
|
+
]
|
|
437
|
+
];
|
|
438
|
+
Icon($$renderer, $20.spread_props([{ name: "list-ordered" }, props, { iconNode }]));
|
|
439
|
+
}
|
|
440
|
+
// node_modules/@lucide/svelte/dist/icons/boxes.svelte
|
|
441
|
+
import"svelte/internal/flags/async";
|
|
442
|
+
import * as $21 from "svelte/internal/server";
|
|
443
|
+
function Boxes($$renderer, $$props) {
|
|
444
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
445
|
+
const iconNode = [
|
|
446
|
+
[
|
|
447
|
+
"path",
|
|
448
|
+
{
|
|
449
|
+
d: "M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z"
|
|
450
|
+
}
|
|
451
|
+
],
|
|
452
|
+
["path", { d: "m7 16.5-4.74-2.85" }],
|
|
453
|
+
["path", { d: "m7 16.5 5-3" }],
|
|
454
|
+
["path", { d: "M7 16.5v5.17" }],
|
|
455
|
+
[
|
|
456
|
+
"path",
|
|
457
|
+
{
|
|
458
|
+
d: "M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z"
|
|
459
|
+
}
|
|
460
|
+
],
|
|
461
|
+
["path", { d: "m17 16.5-5-3" }],
|
|
462
|
+
["path", { d: "m17 16.5 4.74-2.85" }],
|
|
463
|
+
["path", { d: "M17 16.5v5.17" }],
|
|
464
|
+
[
|
|
465
|
+
"path",
|
|
466
|
+
{
|
|
467
|
+
d: "M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z"
|
|
468
|
+
}
|
|
469
|
+
],
|
|
470
|
+
["path", { d: "M12 8 7.26 5.15" }],
|
|
471
|
+
["path", { d: "m12 8 4.74-2.85" }],
|
|
472
|
+
["path", { d: "M12 13.5V8" }]
|
|
473
|
+
];
|
|
474
|
+
Icon($$renderer, $21.spread_props([{ name: "boxes" }, props, { iconNode }]));
|
|
475
|
+
}
|
|
476
|
+
// node_modules/@lucide/svelte/dist/icons/puzzle.svelte
|
|
477
|
+
import"svelte/internal/flags/async";
|
|
478
|
+
import * as $22 from "svelte/internal/server";
|
|
479
|
+
function Puzzle($$renderer, $$props) {
|
|
480
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
481
|
+
const iconNode = [
|
|
482
|
+
[
|
|
483
|
+
"path",
|
|
484
|
+
{
|
|
485
|
+
d: "M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z"
|
|
486
|
+
}
|
|
487
|
+
]
|
|
488
|
+
];
|
|
489
|
+
Icon($$renderer, $22.spread_props([{ name: "puzzle" }, props, { iconNode }]));
|
|
490
|
+
}
|
|
376
491
|
// src/components/SettingsView.svelte
|
|
377
492
|
import { flushSync } from "svelte";
|
|
378
493
|
|
|
379
494
|
// src/components/CoinButton.svelte
|
|
380
495
|
import"svelte/internal/flags/async";
|
|
381
|
-
import * as $
|
|
496
|
+
import * as $23 from "svelte/internal/server";
|
|
382
497
|
function CoinButton($$renderer, $$props) {
|
|
383
498
|
let { href = "/avatars" } = $$props;
|
|
384
499
|
const coinArt = {
|
|
@@ -394,17 +509,46 @@ function CoinButton($$renderer, $$props) {
|
|
|
394
509
|
"..####.."
|
|
395
510
|
]
|
|
396
511
|
};
|
|
397
|
-
$$renderer.push(`<div class="coin-row svelte-1ioj7vz"><span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span> <a class="coin-btn svelte-1ioj7vz"${$
|
|
512
|
+
$$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">`);
|
|
398
513
|
Avatar($$renderer, { art: coinArt, name: "coin", scale: 3 });
|
|
399
514
|
$$renderer.push(`<!----></span></a> <span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span></div>`);
|
|
400
515
|
}
|
|
401
516
|
|
|
517
|
+
// node_modules/@lucide/svelte/dist/icons/shield-check.svelte
|
|
518
|
+
import"svelte/internal/flags/async";
|
|
519
|
+
import * as $24 from "svelte/internal/server";
|
|
520
|
+
function Shield_check($$renderer, $$props) {
|
|
521
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
522
|
+
const iconNode = [
|
|
523
|
+
[
|
|
524
|
+
"path",
|
|
525
|
+
{
|
|
526
|
+
d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"
|
|
527
|
+
}
|
|
528
|
+
],
|
|
529
|
+
["path", { d: "m9 12 2 2 4-4" }]
|
|
530
|
+
];
|
|
531
|
+
Icon($$renderer, $24.spread_props([{ name: "shield-check" }, props, { iconNode }]));
|
|
532
|
+
}
|
|
533
|
+
// node_modules/@lucide/svelte/dist/icons/gauge.svelte
|
|
534
|
+
import"svelte/internal/flags/async";
|
|
535
|
+
import * as $25 from "svelte/internal/server";
|
|
536
|
+
function Gauge($$renderer, $$props) {
|
|
537
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
538
|
+
const iconNode = [
|
|
539
|
+
["path", { d: "m12 14 4-4" }],
|
|
540
|
+
["path", { d: "M3.34 19a10 10 0 1 1 17.32 0" }]
|
|
541
|
+
];
|
|
542
|
+
Icon($$renderer, $25.spread_props([{ name: "gauge" }, props, { iconNode }]));
|
|
543
|
+
}
|
|
402
544
|
// src/components/SettingsView.svelte
|
|
403
545
|
function SettingsView($$renderer, $$props) {
|
|
404
546
|
$$renderer.component(($$renderer2) => {
|
|
405
547
|
let {
|
|
406
548
|
pet,
|
|
407
549
|
defaultMode,
|
|
550
|
+
claudePermissionMode,
|
|
551
|
+
claudeEffortLevel,
|
|
408
552
|
defaultImage,
|
|
409
553
|
builtinImage,
|
|
410
554
|
disableBuildCache,
|
|
@@ -434,6 +578,11 @@ function SettingsView($$renderer, $$props) {
|
|
|
434
578
|
hostEnvVarsEnabled,
|
|
435
579
|
hostEnvVarNames,
|
|
436
580
|
hostEnvVarPresence,
|
|
581
|
+
customEnvVarsEnabled,
|
|
582
|
+
customEnvVarNames,
|
|
583
|
+
advancedSerialInjections,
|
|
584
|
+
advancedNoBuildkit,
|
|
585
|
+
advancedBlockingExtInstall,
|
|
437
586
|
version
|
|
438
587
|
} = $$props;
|
|
439
588
|
let sound = soundEnabled();
|
|
@@ -499,6 +648,57 @@ function SettingsView($$renderer, $$props) {
|
|
|
499
648
|
flushSync(() => modeChoice = next);
|
|
500
649
|
modeFormEl?.requestSubmit();
|
|
501
650
|
}
|
|
651
|
+
let permissionChoice = claudePermissionMode;
|
|
652
|
+
let savingPermission = false;
|
|
653
|
+
let permissionError = null;
|
|
654
|
+
let permissionFormEl;
|
|
655
|
+
const permissionModeOpts = saveOpts({
|
|
656
|
+
setSaving: (v) => savingPermission = v,
|
|
657
|
+
setError: (v) => permissionError = v,
|
|
658
|
+
setMsg: () => {},
|
|
659
|
+
onSuccess: (data) => {
|
|
660
|
+
if (data?.mode)
|
|
661
|
+
permissionChoice = data.mode;
|
|
662
|
+
}
|
|
663
|
+
});
|
|
664
|
+
const PERMISSION_LABELS = {
|
|
665
|
+
default: "Default",
|
|
666
|
+
manual: "Manual",
|
|
667
|
+
auto: "Auto",
|
|
668
|
+
plan: "Plan"
|
|
669
|
+
};
|
|
670
|
+
function choosePermissionMode(next) {
|
|
671
|
+
if (next === permissionChoice)
|
|
672
|
+
return;
|
|
673
|
+
flushSync(() => permissionChoice = next);
|
|
674
|
+
permissionFormEl?.requestSubmit();
|
|
675
|
+
}
|
|
676
|
+
let effortChoice = claudeEffortLevel;
|
|
677
|
+
let savingEffort = false;
|
|
678
|
+
let effortError = null;
|
|
679
|
+
let effortFormEl;
|
|
680
|
+
const effortLevelOpts = saveOpts({
|
|
681
|
+
setSaving: (v) => savingEffort = v,
|
|
682
|
+
setError: (v) => effortError = v,
|
|
683
|
+
setMsg: () => {},
|
|
684
|
+
onSuccess: (data) => {
|
|
685
|
+
if (data?.level)
|
|
686
|
+
effortChoice = data.level;
|
|
687
|
+
}
|
|
688
|
+
});
|
|
689
|
+
const EFFORT_LABELS = {
|
|
690
|
+
low: "Low",
|
|
691
|
+
medium: "Medium",
|
|
692
|
+
high: "High",
|
|
693
|
+
xhigh: "X-High",
|
|
694
|
+
max: "Max"
|
|
695
|
+
};
|
|
696
|
+
function chooseEffort(next) {
|
|
697
|
+
if (next === effortChoice)
|
|
698
|
+
return;
|
|
699
|
+
flushSync(() => effortChoice = next);
|
|
700
|
+
effortFormEl?.requestSubmit();
|
|
701
|
+
}
|
|
502
702
|
let image = defaultImage;
|
|
503
703
|
let savingImage = false;
|
|
504
704
|
let imageError = null;
|
|
@@ -597,6 +797,41 @@ function SettingsView($$renderer, $$props) {
|
|
|
597
797
|
rebuildMsg = n === 0 ? "No running containers to rebuild." : `Rebuilding ${n} container(s)\u2026`;
|
|
598
798
|
}
|
|
599
799
|
});
|
|
800
|
+
let serialInjections = advancedSerialInjections;
|
|
801
|
+
let savingSerial = false;
|
|
802
|
+
let serialError = null;
|
|
803
|
+
const serialOpts = toggleOpts({
|
|
804
|
+
set: (v) => serialInjections = v,
|
|
805
|
+
setSaving: (v) => savingSerial = v,
|
|
806
|
+
setError: (v) => serialError = v
|
|
807
|
+
});
|
|
808
|
+
let noBuildkit = advancedNoBuildkit;
|
|
809
|
+
let savingBuildkit = false;
|
|
810
|
+
let buildkitError = null;
|
|
811
|
+
const buildkitOpts = toggleOpts({
|
|
812
|
+
set: (v) => noBuildkit = v,
|
|
813
|
+
setSaving: (v) => savingBuildkit = v,
|
|
814
|
+
setError: (v) => buildkitError = v
|
|
815
|
+
});
|
|
816
|
+
let blockingExtInstall = advancedBlockingExtInstall;
|
|
817
|
+
let savingBlocking = false;
|
|
818
|
+
let blockingError = null;
|
|
819
|
+
const blockingOpts = toggleOpts({
|
|
820
|
+
set: (v) => blockingExtInstall = v,
|
|
821
|
+
setSaving: (v) => savingBlocking = v,
|
|
822
|
+
setError: (v) => blockingError = v
|
|
823
|
+
});
|
|
824
|
+
let clearingVer = false;
|
|
825
|
+
let verMsg = null;
|
|
826
|
+
let verError = null;
|
|
827
|
+
const clearVersionOpts = saveOpts({
|
|
828
|
+
setSaving: (v) => clearingVer = v,
|
|
829
|
+
setError: (v) => verError = v,
|
|
830
|
+
setMsg: (v) => verMsg = v,
|
|
831
|
+
onSuccess: () => {
|
|
832
|
+
verMsg = "Cleared \u2014 the next instance boot re-checks the registry.";
|
|
833
|
+
}
|
|
834
|
+
});
|
|
600
835
|
let manualTokens = manualTokensEnabled;
|
|
601
836
|
let savingManualToggle = false;
|
|
602
837
|
let manualToggleError = null;
|
|
@@ -718,7 +953,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
718
953
|
manualModelsMsg = "Saved.";
|
|
719
954
|
}
|
|
720
955
|
});
|
|
721
|
-
let litellmBlocker = $
|
|
956
|
+
let litellmBlocker = $26.derived(() => manualTokens ? "Set tokens manually" : manualModelOverride ? "Override models manually" : null);
|
|
722
957
|
let hostEnvVars = hostEnvVarsEnabled;
|
|
723
958
|
let savingHostEnvToggle = false;
|
|
724
959
|
let hostEnvToggleError = null;
|
|
@@ -786,6 +1021,62 @@ function SettingsView($$renderer, $$props) {
|
|
|
786
1021
|
}
|
|
787
1022
|
});
|
|
788
1023
|
}
|
|
1024
|
+
let customEnvEnabled = customEnvVarsEnabled;
|
|
1025
|
+
let savingCustomEnvToggle = false;
|
|
1026
|
+
let customEnvToggleError = null;
|
|
1027
|
+
const customEnvVarsToggleOpts = toggleOpts({
|
|
1028
|
+
set: (v) => customEnvEnabled = v,
|
|
1029
|
+
setSaving: (v) => savingCustomEnvToggle = v,
|
|
1030
|
+
setError: (v) => customEnvToggleError = v
|
|
1031
|
+
});
|
|
1032
|
+
let customEnvNames = [...customEnvVarNames];
|
|
1033
|
+
let newCustomEnvName = "";
|
|
1034
|
+
let newCustomEnvValue = "";
|
|
1035
|
+
let savingCustomEnv = false;
|
|
1036
|
+
let customEnvMsg = null;
|
|
1037
|
+
let customEnvError = null;
|
|
1038
|
+
const addCustomEnvOpts = {
|
|
1039
|
+
onPending: (v) => savingCustomEnv = v,
|
|
1040
|
+
submit: ({ formData, cancel }) => {
|
|
1041
|
+
customEnvError = null;
|
|
1042
|
+
customEnvMsg = null;
|
|
1043
|
+
const name = String(formData.get("name") ?? "").trim();
|
|
1044
|
+
const value = String(formData.get("value") ?? "");
|
|
1045
|
+
if (!name || !value) {
|
|
1046
|
+
customEnvError = !name ? "Name is required." : "Value is required.";
|
|
1047
|
+
cancel();
|
|
1048
|
+
return;
|
|
1049
|
+
}
|
|
1050
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) {
|
|
1051
|
+
customEnvError = `Invalid variable name: ${name}`;
|
|
1052
|
+
cancel();
|
|
1053
|
+
return;
|
|
1054
|
+
}
|
|
1055
|
+
formData.set("name", name);
|
|
1056
|
+
return ({ result }) => {
|
|
1057
|
+
if (result.type === "success") {
|
|
1058
|
+
customEnvNames = result.data?.names ?? customEnvNames;
|
|
1059
|
+
newCustomEnvName = "";
|
|
1060
|
+
newCustomEnvValue = "";
|
|
1061
|
+
customEnvMsg = "Saved.";
|
|
1062
|
+
} else if (result.type === "failure") {
|
|
1063
|
+
customEnvError = result.data?.error ?? "Request failed";
|
|
1064
|
+
} else if (result.type === "error") {
|
|
1065
|
+
customEnvError = "Network error. Try again.";
|
|
1066
|
+
}
|
|
1067
|
+
};
|
|
1068
|
+
}
|
|
1069
|
+
};
|
|
1070
|
+
function removeCustomEnvOpts(name) {
|
|
1071
|
+
return saveOpts({
|
|
1072
|
+
setSaving: (v) => savingCustomEnv = v,
|
|
1073
|
+
setError: (v) => customEnvError = v,
|
|
1074
|
+
setMsg: (v) => customEnvMsg = v,
|
|
1075
|
+
onSuccess: (data) => {
|
|
1076
|
+
customEnvNames = data?.names ?? customEnvNames.filter((n) => n !== name);
|
|
1077
|
+
}
|
|
1078
|
+
});
|
|
1079
|
+
}
|
|
789
1080
|
function toggleSound(on) {
|
|
790
1081
|
sound = on;
|
|
791
1082
|
setSoundEnabled(on);
|
|
@@ -834,14 +1125,47 @@ function SettingsView($$renderer, $$props) {
|
|
|
834
1125
|
$$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">`);
|
|
835
1126
|
Terminal($$renderer2, { size: 20 });
|
|
836
1127
|
$$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
|
|
837
|
-
can override this per instance when creating one.</div></div></div> <input type="hidden" name="mode"${$
|
|
1128
|
+
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)}>`);
|
|
838
1129
|
Layout_template($$renderer2, { size: 15 });
|
|
839
|
-
$$renderer2.push(`<!----> Full IDE</button> <button type="button"${$
|
|
1130
|
+
$$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)}>`);
|
|
840
1131
|
Terminal($$renderer2, { size: 15 });
|
|
841
1132
|
$$renderer2.push(`<!----> Terminal</button></div></form> `);
|
|
842
1133
|
if (modeError) {
|
|
843
1134
|
$$renderer2.push("<!--[0-->");
|
|
844
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1135
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(modeError)}</div></div>`);
|
|
1136
|
+
} else {
|
|
1137
|
+
$$renderer2.push("<!--[-1-->");
|
|
1138
|
+
}
|
|
1139
|
+
$$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/claudePermissionMode"><div class="label svelte-1n6ht58">`);
|
|
1140
|
+
Shield_check($$renderer2, { size: 20 });
|
|
1141
|
+
$$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
|
|
1142
|
+
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"><!--[-->`);
|
|
1143
|
+
const each_array = $26.ensure_array_like(CLAUDE_PERMISSION_MODES);
|
|
1144
|
+
for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
|
|
1145
|
+
let option = each_array[$$index];
|
|
1146
|
+
$$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>`);
|
|
1147
|
+
}
|
|
1148
|
+
$$renderer2.push(`<!--]--></div></form> `);
|
|
1149
|
+
if (permissionError) {
|
|
1150
|
+
$$renderer2.push("<!--[0-->");
|
|
1151
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(permissionError)}</div></div>`);
|
|
1152
|
+
} else {
|
|
1153
|
+
$$renderer2.push("<!--[-1-->");
|
|
1154
|
+
}
|
|
1155
|
+
$$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/claudeEffortLevel"><div class="label svelte-1n6ht58">`);
|
|
1156
|
+
Gauge($$renderer2, { size: 20 });
|
|
1157
|
+
$$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,
|
|
1158
|
+
written to <code class="svelte-1n6ht58">~/.claude/settings.json</code>. Applies on create and rebuild, not to
|
|
1159
|
+
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"><!--[-->`);
|
|
1160
|
+
const each_array_1 = $26.ensure_array_like(CLAUDE_EFFORT_LEVELS);
|
|
1161
|
+
for (let $$index_1 = 0, $$length = each_array_1.length;$$index_1 < $$length; $$index_1++) {
|
|
1162
|
+
let option = each_array_1[$$index_1];
|
|
1163
|
+
$$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>`);
|
|
1164
|
+
}
|
|
1165
|
+
$$renderer2.push(`<!--]--></div></form> `);
|
|
1166
|
+
if (effortError) {
|
|
1167
|
+
$$renderer2.push("<!--[0-->");
|
|
1168
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(effortError)}</div></div>`);
|
|
845
1169
|
} else {
|
|
846
1170
|
$$renderer2.push("<!--[-1-->");
|
|
847
1171
|
}
|
|
@@ -850,12 +1174,12 @@ function SettingsView($$renderer, $$props) {
|
|
|
850
1174
|
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Default container image `);
|
|
851
1175
|
if (dockerArch) {
|
|
852
1176
|
$$renderer2.push("<!--[0-->");
|
|
853
|
-
$$renderer2.push(`<span class="arch svelte-1n6ht58" title="Docker daemon architecture">${$
|
|
1177
|
+
$$renderer2.push(`<span class="arch svelte-1n6ht58" title="Docker daemon architecture">${$26.escape(dockerArch)}</span>`);
|
|
854
1178
|
} else {
|
|
855
1179
|
$$renderer2.push("<!--[-1-->");
|
|
856
1180
|
}
|
|
857
1181
|
$$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">Used only when a project folder ships no devcontainer.json. Takes effect for instances
|
|
858
|
-
created from now on.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="image" class="image-input svelte-1n6ht58"${$
|
|
1182
|
+
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"/> `);
|
|
859
1183
|
Button($$renderer2, {
|
|
860
1184
|
type: "submit",
|
|
861
1185
|
disabled: savingImage,
|
|
@@ -870,14 +1194,14 @@ function SettingsView($$renderer, $$props) {
|
|
|
870
1194
|
icon: Rotate_ccw,
|
|
871
1195
|
disabled: savingImage,
|
|
872
1196
|
onclick: resetImage,
|
|
873
|
-
title: `Reset to default (${$
|
|
1197
|
+
title: `Reset to default (${$26.stringify(builtinImage)})`,
|
|
874
1198
|
"aria-label": "Reset to default image"
|
|
875
1199
|
});
|
|
876
1200
|
$$renderer2.push(`<!----></div> <div class="desc tip svelte-1n6ht58">`);
|
|
877
1201
|
if (dockerArch) {
|
|
878
1202
|
$$renderer2.push("<!--[0-->");
|
|
879
|
-
$$renderer2.push(`Your Docker daemon runs on <strong>${$
|
|
880
|
-
an <strong>${$
|
|
1203
|
+
$$renderer2.push(`Your Docker daemon runs on <strong>${$26.escape(dockerArch)}</strong> \u2014 pick an image that publishes
|
|
1204
|
+
an <strong>${$26.escape(dockerArch)}</strong> manifest, or the pull will fail.`);
|
|
881
1205
|
} else {
|
|
882
1206
|
$$renderer2.push("<!--[-1-->");
|
|
883
1207
|
$$renderer2.push(`Pick an image whose manifest covers your Docker daemon's architecture, or the pull will
|
|
@@ -886,7 +1210,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
886
1210
|
$$renderer2.push(`<!--]--></div> `);
|
|
887
1211
|
if (imageError) {
|
|
888
1212
|
$$renderer2.push("<!--[0-->");
|
|
889
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1213
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(imageError)}</div>`);
|
|
890
1214
|
} else if (imageSaved) {
|
|
891
1215
|
$$renderer2.push("<!--[1-->");
|
|
892
1216
|
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
|
|
@@ -897,7 +1221,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
897
1221
|
Folder_minus($$renderer2, { size: 20 });
|
|
898
1222
|
$$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
|
|
899
1223
|
new instance's workspace. Leave blank to copy everything. Only applies to local
|
|
900
|
-
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"${$
|
|
1224
|
+
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"/> `);
|
|
901
1225
|
Button($$renderer2, {
|
|
902
1226
|
type: "submit",
|
|
903
1227
|
disabled: savingCopyIgnore,
|
|
@@ -912,13 +1236,13 @@ function SettingsView($$renderer, $$props) {
|
|
|
912
1236
|
icon: Rotate_ccw,
|
|
913
1237
|
disabled: savingCopyIgnore,
|
|
914
1238
|
onclick: resetCopyIgnore,
|
|
915
|
-
title: `Reset to default (${$
|
|
1239
|
+
title: `Reset to default (${$26.stringify(builtinCopyIgnore)})`,
|
|
916
1240
|
"aria-label": "Reset to default copy-ignore patterns"
|
|
917
1241
|
});
|
|
918
1242
|
$$renderer2.push(`<!----></div> `);
|
|
919
1243
|
if (copyIgnoreError) {
|
|
920
1244
|
$$renderer2.push("<!--[0-->");
|
|
921
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1245
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(copyIgnoreError)}</div>`);
|
|
922
1246
|
} else if (copyIgnoreSaved) {
|
|
923
1247
|
$$renderer2.push("<!--[1-->");
|
|
924
1248
|
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
|
|
@@ -929,10 +1253,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
929
1253
|
User_cog($$renderer2, { size: 20 });
|
|
930
1254
|
$$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
|
|
931
1255
|
new container, taking precedence over the host's own git config. When off, each container
|
|
932
|
-
falls back to the host's identity.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$
|
|
1256
|
+
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> `);
|
|
933
1257
|
if (gitToggleError) {
|
|
934
1258
|
$$renderer2.push("<!--[0-->");
|
|
935
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1259
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(gitToggleError)}</div></div>`);
|
|
936
1260
|
} else {
|
|
937
1261
|
$$renderer2.push("<!--[-1-->");
|
|
938
1262
|
}
|
|
@@ -940,7 +1264,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
940
1264
|
if (gitIdentity) {
|
|
941
1265
|
$$renderer2.push("<!--[0-->");
|
|
942
1266
|
$$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
|
|
943
|
-
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"${$
|
|
1267
|
+
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">`);
|
|
944
1268
|
Button($$renderer2, {
|
|
945
1269
|
type: "submit",
|
|
946
1270
|
disabled: savingGitIdentity,
|
|
@@ -952,7 +1276,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
952
1276
|
$$renderer2.push(`<!----></div></div> `);
|
|
953
1277
|
if (gitIdentityError) {
|
|
954
1278
|
$$renderer2.push("<!--[0-->");
|
|
955
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1279
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(gitIdentityError)}</div>`);
|
|
956
1280
|
} else if (gitIdentitySaved) {
|
|
957
1281
|
$$renderer2.push("<!--[1-->");
|
|
958
1282
|
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
|
|
@@ -966,10 +1290,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
966
1290
|
$$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/disableBuildCache"><div class="label svelte-1n6ht58">`);
|
|
967
1291
|
Layers($$renderer2, { size: 20 });
|
|
968
1292
|
$$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
|
|
969
|
-
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"${$
|
|
1293
|
+
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> `);
|
|
970
1294
|
if (cacheError) {
|
|
971
1295
|
$$renderer2.push("<!--[0-->");
|
|
972
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1296
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(cacheError)}</div></div>`);
|
|
973
1297
|
} else {
|
|
974
1298
|
$$renderer2.push("<!--[-1-->");
|
|
975
1299
|
}
|
|
@@ -979,10 +1303,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
979
1303
|
remove pulled images.</div> `);
|
|
980
1304
|
if (clearError) {
|
|
981
1305
|
$$renderer2.push("<!--[0-->");
|
|
982
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1306
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(clearError)}</div>`);
|
|
983
1307
|
} else if (clearMsg) {
|
|
984
1308
|
$$renderer2.push("<!--[1-->");
|
|
985
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1309
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(clearMsg)}</div>`);
|
|
986
1310
|
} else {
|
|
987
1311
|
$$renderer2.push("<!--[-1-->");
|
|
988
1312
|
}
|
|
@@ -992,7 +1316,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
992
1316
|
icon: Trash_2,
|
|
993
1317
|
disabled: clearing,
|
|
994
1318
|
children: ($$renderer3) => {
|
|
995
|
-
$$renderer3.push(`<!---->${$
|
|
1319
|
+
$$renderer3.push(`<!---->${$26.escape(clearing ? "Clearing\u2026" : "Clear cache")}`);
|
|
996
1320
|
},
|
|
997
1321
|
$$slots: { default: true }
|
|
998
1322
|
});
|
|
@@ -1002,10 +1326,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
1002
1326
|
layers. In-container edits are kept; stopped instances are left alone.</div> `);
|
|
1003
1327
|
if (rebuildError) {
|
|
1004
1328
|
$$renderer2.push("<!--[0-->");
|
|
1005
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1329
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(rebuildError)}</div>`);
|
|
1006
1330
|
} else if (rebuildMsg) {
|
|
1007
1331
|
$$renderer2.push("<!--[1-->");
|
|
1008
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1332
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(rebuildMsg)}</div>`);
|
|
1009
1333
|
} else {
|
|
1010
1334
|
$$renderer2.push("<!--[-1-->");
|
|
1011
1335
|
}
|
|
@@ -1015,11 +1339,11 @@ function SettingsView($$renderer, $$props) {
|
|
|
1015
1339
|
icon: Hammer,
|
|
1016
1340
|
disabled: rebuilding,
|
|
1017
1341
|
children: ($$renderer3) => {
|
|
1018
|
-
$$renderer3.push(`<!---->${$
|
|
1342
|
+
$$renderer3.push(`<!---->${$26.escape(rebuilding ? "Starting\u2026" : "Rebuild all")}`);
|
|
1019
1343
|
},
|
|
1020
1344
|
$$slots: { default: true }
|
|
1021
1345
|
});
|
|
1022
|
-
$$renderer2.push(`<!----></form></section> <section${$
|
|
1346
|
+
$$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">`);
|
|
1023
1347
|
Key_round($$renderer2, { size: 20 });
|
|
1024
1348
|
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Set tokens manually `);
|
|
1025
1349
|
if (customEndpoint) {
|
|
@@ -1040,10 +1364,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
1040
1364
|
token set here is injected into every new container and overrides host credential
|
|
1041
1365
|
discovery.`);
|
|
1042
1366
|
}
|
|
1043
|
-
$$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$
|
|
1367
|
+
$$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> `);
|
|
1044
1368
|
if (manualToggleError) {
|
|
1045
1369
|
$$renderer2.push("<!--[0-->");
|
|
1046
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1370
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(manualToggleError)}</div></div>`);
|
|
1047
1371
|
} else {
|
|
1048
1372
|
$$renderer2.push("<!--[-1-->");
|
|
1049
1373
|
}
|
|
@@ -1051,7 +1375,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
1051
1375
|
if (manualTokens && !customEndpoint) {
|
|
1052
1376
|
$$renderer2.push("<!--[0-->");
|
|
1053
1377
|
$$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
|
|
1054
|
-
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"${$
|
|
1378
|
+
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")}/> `);
|
|
1055
1379
|
Button($$renderer2, {
|
|
1056
1380
|
type: "submit",
|
|
1057
1381
|
disabled: savingGithub,
|
|
@@ -1063,17 +1387,17 @@ function SettingsView($$renderer, $$props) {
|
|
|
1063
1387
|
$$renderer2.push(`<!----></div> `);
|
|
1064
1388
|
if (githubError) {
|
|
1065
1389
|
$$renderer2.push("<!--[0-->");
|
|
1066
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1390
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(githubError)}</div>`);
|
|
1067
1391
|
} else if (githubMsg) {
|
|
1068
1392
|
$$renderer2.push("<!--[1-->");
|
|
1069
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1393
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(githubMsg)}</div>`);
|
|
1070
1394
|
} else {
|
|
1071
1395
|
$$renderer2.push("<!--[-1-->");
|
|
1072
1396
|
}
|
|
1073
1397
|
$$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
|
|
1074
1398
|
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
|
|
1075
1399
|
the first <code class="svelte-1n6ht58">claude</code> to refresh it signs the other one out. Leave blank and Save
|
|
1076
|
-
to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="claudeToken" class="image-input svelte-1n6ht58"${$
|
|
1400
|
+
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")}/> `);
|
|
1077
1401
|
Button($$renderer2, {
|
|
1078
1402
|
type: "submit",
|
|
1079
1403
|
disabled: savingClaude,
|
|
@@ -1085,10 +1409,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
1085
1409
|
$$renderer2.push(`<!----></div> `);
|
|
1086
1410
|
if (claudeError) {
|
|
1087
1411
|
$$renderer2.push("<!--[0-->");
|
|
1088
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1412
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(claudeError)}</div>`);
|
|
1089
1413
|
} else if (claudeMsg) {
|
|
1090
1414
|
$$renderer2.push("<!--[1-->");
|
|
1091
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1415
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(claudeMsg)}</div>`);
|
|
1092
1416
|
} else {
|
|
1093
1417
|
$$renderer2.push("<!--[-1-->");
|
|
1094
1418
|
}
|
|
@@ -1096,19 +1420,19 @@ function SettingsView($$renderer, $$props) {
|
|
|
1096
1420
|
} else {
|
|
1097
1421
|
$$renderer2.push("<!--[-1-->");
|
|
1098
1422
|
}
|
|
1099
|
-
$$renderer2.push(`<!--]--></section> <section${$
|
|
1423
|
+
$$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">`);
|
|
1100
1424
|
Key_round($$renderer2, { size: 20 });
|
|
1101
1425
|
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">LiteLLM + Bedrock `);
|
|
1102
1426
|
if (litellmBlocker()) {
|
|
1103
1427
|
$$renderer2.push("<!--[0-->");
|
|
1104
|
-
$$renderer2.push(`<span class="arch svelte-1n6ht58"${$
|
|
1428
|
+
$$renderer2.push(`<span class="arch svelte-1n6ht58"${$26.attr("title", `Disabled while ${$26.stringify(litellmBlocker())} is on`)}>disabled</span>`);
|
|
1105
1429
|
} else {
|
|
1106
1430
|
$$renderer2.push("<!--[-1-->");
|
|
1107
1431
|
}
|
|
1108
1432
|
$$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">`);
|
|
1109
1433
|
if (litellmBlocker()) {
|
|
1110
1434
|
$$renderer2.push("<!--[0-->");
|
|
1111
|
-
$$renderer2.push(`Not available while "${$
|
|
1435
|
+
$$renderer2.push(`Not available while "${$26.escape(litellmBlocker())}" is enabled \u2014 these modes are mutually
|
|
1112
1436
|
incompatible.`);
|
|
1113
1437
|
} else {
|
|
1114
1438
|
$$renderer2.push("<!--[-1-->");
|
|
@@ -1116,17 +1440,17 @@ function SettingsView($$renderer, $$props) {
|
|
|
1116
1440
|
default API. When enabled, the Bedrock endpoint variables are injected into every new
|
|
1117
1441
|
container, host OAuth credentials are not used, and "Set tokens manually" is disabled.`);
|
|
1118
1442
|
}
|
|
1119
|
-
$$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$
|
|
1443
|
+
$$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> `);
|
|
1120
1444
|
if (customToggleError) {
|
|
1121
1445
|
$$renderer2.push("<!--[0-->");
|
|
1122
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1446
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(customToggleError)}</div></div>`);
|
|
1123
1447
|
} else {
|
|
1124
1448
|
$$renderer2.push("<!--[-1-->");
|
|
1125
1449
|
}
|
|
1126
1450
|
$$renderer2.push(`<!--]--> `);
|
|
1127
1451
|
if (customEndpoint) {
|
|
1128
1452
|
$$renderer2.push("<!--[0-->");
|
|
1129
|
-
$$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"${$
|
|
1453
|
+
$$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"/> `);
|
|
1130
1454
|
Button($$renderer2, {
|
|
1131
1455
|
type: "submit",
|
|
1132
1456
|
disabled: savingCustomBaseUrl,
|
|
@@ -1138,15 +1462,15 @@ function SettingsView($$renderer, $$props) {
|
|
|
1138
1462
|
$$renderer2.push(`<!----></div> `);
|
|
1139
1463
|
if (customBaseUrlError) {
|
|
1140
1464
|
$$renderer2.push("<!--[0-->");
|
|
1141
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1465
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(customBaseUrlError)}</div>`);
|
|
1142
1466
|
} else if (customBaseUrlMsg) {
|
|
1143
1467
|
$$renderer2.push("<!--[1-->");
|
|
1144
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1468
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(customBaseUrlMsg)}</div>`);
|
|
1145
1469
|
} else {
|
|
1146
1470
|
$$renderer2.push("<!--[-1-->");
|
|
1147
1471
|
}
|
|
1148
1472
|
$$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
|
|
1149
|
-
Save to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="token" class="image-input svelte-1n6ht58"${$
|
|
1473
|
+
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")}/> `);
|
|
1150
1474
|
Button($$renderer2, {
|
|
1151
1475
|
type: "submit",
|
|
1152
1476
|
disabled: savingCustomToken,
|
|
@@ -1158,15 +1482,15 @@ function SettingsView($$renderer, $$props) {
|
|
|
1158
1482
|
$$renderer2.push(`<!----></div> `);
|
|
1159
1483
|
if (customTokenError) {
|
|
1160
1484
|
$$renderer2.push("<!--[0-->");
|
|
1161
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1485
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(customTokenError)}</div>`);
|
|
1162
1486
|
} else if (customTokenMsg) {
|
|
1163
1487
|
$$renderer2.push("<!--[1-->");
|
|
1164
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1488
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(customTokenMsg)}</div>`);
|
|
1165
1489
|
} else {
|
|
1166
1490
|
$$renderer2.push("<!--[-1-->");
|
|
1167
1491
|
}
|
|
1168
1492
|
$$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
|
|
1169
|
-
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"${$
|
|
1493
|
+
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">`);
|
|
1170
1494
|
Button($$renderer2, {
|
|
1171
1495
|
type: "submit",
|
|
1172
1496
|
disabled: savingCustomModels,
|
|
@@ -1178,10 +1502,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
1178
1502
|
$$renderer2.push(`<!----></div></div> `);
|
|
1179
1503
|
if (customModelsError) {
|
|
1180
1504
|
$$renderer2.push("<!--[0-->");
|
|
1181
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1505
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(customModelsError)}</div>`);
|
|
1182
1506
|
} else if (customModelsMsg) {
|
|
1183
1507
|
$$renderer2.push("<!--[1-->");
|
|
1184
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1508
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(customModelsMsg)}</div>`);
|
|
1185
1509
|
} else {
|
|
1186
1510
|
$$renderer2.push("<!--[-1-->");
|
|
1187
1511
|
}
|
|
@@ -1189,7 +1513,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
1189
1513
|
} else {
|
|
1190
1514
|
$$renderer2.push("<!--[-1-->");
|
|
1191
1515
|
}
|
|
1192
|
-
$$renderer2.push(`<!--]--></section> <section${$
|
|
1516
|
+
$$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">`);
|
|
1193
1517
|
Cpu($$renderer2, { size: 18 });
|
|
1194
1518
|
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Override models manually `);
|
|
1195
1519
|
if (customEndpoint) {
|
|
@@ -1208,17 +1532,17 @@ function SettingsView($$renderer, $$props) {
|
|
|
1208
1532
|
$$renderer2.push(`Pin which model <code class="svelte-1n6ht58">claude</code> uses on the standard (subscription) path. Only
|
|
1209
1533
|
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.`);
|
|
1210
1534
|
}
|
|
1211
|
-
$$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$
|
|
1535
|
+
$$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> `);
|
|
1212
1536
|
if (manualModelToggleError) {
|
|
1213
1537
|
$$renderer2.push("<!--[0-->");
|
|
1214
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1538
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(manualModelToggleError)}</div></div>`);
|
|
1215
1539
|
} else {
|
|
1216
1540
|
$$renderer2.push("<!--[-1-->");
|
|
1217
1541
|
}
|
|
1218
1542
|
$$renderer2.push(`<!--]--> `);
|
|
1219
1543
|
if (manualModelOverride) {
|
|
1220
1544
|
$$renderer2.push("<!--[0-->");
|
|
1221
|
-
$$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"${$
|
|
1545
|
+
$$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">`);
|
|
1222
1546
|
Button($$renderer2, {
|
|
1223
1547
|
type: "submit",
|
|
1224
1548
|
disabled: savingManualModels,
|
|
@@ -1230,10 +1554,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
1230
1554
|
$$renderer2.push(`<!----></div></div> `);
|
|
1231
1555
|
if (manualModelsError) {
|
|
1232
1556
|
$$renderer2.push("<!--[0-->");
|
|
1233
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1557
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(manualModelsError)}</div>`);
|
|
1234
1558
|
} else if (manualModelsMsg) {
|
|
1235
1559
|
$$renderer2.push("<!--[1-->");
|
|
1236
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1560
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(manualModelsMsg)}</div>`);
|
|
1237
1561
|
} else {
|
|
1238
1562
|
$$renderer2.push("<!--[-1-->");
|
|
1239
1563
|
}
|
|
@@ -1245,10 +1569,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
1245
1569
|
Variable($$renderer2, { size: 20 });
|
|
1246
1570
|
$$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
|
|
1247
1571
|
interactive shells. Values are read from this process's own environment at container
|
|
1248
|
-
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"${$
|
|
1572
|
+
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> `);
|
|
1249
1573
|
if (hostEnvToggleError) {
|
|
1250
1574
|
$$renderer2.push("<!--[0-->");
|
|
1251
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1575
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(hostEnvToggleError)}</div></div>`);
|
|
1252
1576
|
} else {
|
|
1253
1577
|
$$renderer2.push("<!--[-1-->");
|
|
1254
1578
|
}
|
|
@@ -1256,18 +1580,18 @@ function SettingsView($$renderer, $$props) {
|
|
|
1256
1580
|
if (hostEnvVars) {
|
|
1257
1581
|
$$renderer2.push("<!--[0-->");
|
|
1258
1582
|
$$renderer2.push(`<div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58">`);
|
|
1259
|
-
const
|
|
1260
|
-
if (
|
|
1583
|
+
const each_array_2 = $26.ensure_array_like(hostEnvNames);
|
|
1584
|
+
if (each_array_2.length !== 0) {
|
|
1261
1585
|
$$renderer2.push("<!--[-->");
|
|
1262
|
-
for (let $$
|
|
1263
|
-
let name =
|
|
1586
|
+
for (let $$index_3 = 0, $$length = each_array_2.length;$$index_3 < $$length; $$index_3++) {
|
|
1587
|
+
let name = each_array_2[$$index_3];
|
|
1264
1588
|
$$renderer2.push(`<form class="var-item svelte-1n6ht58" method="POST" action="?/hostEnvVarNames"><!--[-->`);
|
|
1265
|
-
const
|
|
1266
|
-
for (let $$
|
|
1267
|
-
let other =
|
|
1268
|
-
$$renderer2.push(`<input type="hidden" name="names"${$
|
|
1589
|
+
const each_array_3 = $26.ensure_array_like(hostEnvNames.filter((n) => n !== name));
|
|
1590
|
+
for (let $$index_2 = 0, $$length2 = each_array_3.length;$$index_2 < $$length2; $$index_2++) {
|
|
1591
|
+
let other = each_array_3[$$index_2];
|
|
1592
|
+
$$renderer2.push(`<input type="hidden" name="names"${$26.attr("value", other)}/>`);
|
|
1269
1593
|
}
|
|
1270
|
-
$$renderer2.push(`<!--]--> <span class="var-name svelte-1n6ht58">${$
|
|
1594
|
+
$$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}`)}>`);
|
|
1271
1595
|
X($$renderer2, { size: 13 });
|
|
1272
1596
|
$$renderer2.push(`<!----></button></form>`);
|
|
1273
1597
|
}
|
|
@@ -1276,12 +1600,12 @@ function SettingsView($$renderer, $$props) {
|
|
|
1276
1600
|
$$renderer2.push(`<div class="var-empty svelte-1n6ht58">No variables added yet.</div>`);
|
|
1277
1601
|
}
|
|
1278
1602
|
$$renderer2.push(`<!--]--></div> <form class="var-add svelte-1n6ht58" method="POST" action="?/hostEnvVarNames"><!--[-->`);
|
|
1279
|
-
const
|
|
1280
|
-
for (let $$
|
|
1281
|
-
let name =
|
|
1282
|
-
$$renderer2.push(`<input type="hidden" name="names"${$
|
|
1603
|
+
const each_array_4 = $26.ensure_array_like(hostEnvNames);
|
|
1604
|
+
for (let $$index_4 = 0, $$length = each_array_4.length;$$index_4 < $$length; $$index_4++) {
|
|
1605
|
+
let name = each_array_4[$$index_4];
|
|
1606
|
+
$$renderer2.push(`<input type="hidden" name="names"${$26.attr("value", name)}/>`);
|
|
1283
1607
|
}
|
|
1284
|
-
$$renderer2.push(`<!--]--> <input type="text" name="names" class="image-input svelte-1n6ht58"${$
|
|
1608
|
+
$$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"/> `);
|
|
1285
1609
|
Button($$renderer2, {
|
|
1286
1610
|
type: "submit",
|
|
1287
1611
|
icon: Plus,
|
|
@@ -1294,10 +1618,62 @@ function SettingsView($$renderer, $$props) {
|
|
|
1294
1618
|
$$renderer2.push(`<!----></form> `);
|
|
1295
1619
|
if (hostEnvNamesError) {
|
|
1296
1620
|
$$renderer2.push("<!--[0-->");
|
|
1297
|
-
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$
|
|
1621
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(hostEnvNamesError)}</div>`);
|
|
1298
1622
|
} else if (hostEnvNamesMsg) {
|
|
1299
1623
|
$$renderer2.push("<!--[1-->");
|
|
1300
|
-
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$
|
|
1624
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(hostEnvNamesMsg)}</div>`);
|
|
1625
|
+
} else {
|
|
1626
|
+
$$renderer2.push("<!--[-1-->");
|
|
1627
|
+
}
|
|
1628
|
+
$$renderer2.push(`<!--]--></div>`);
|
|
1629
|
+
} else {
|
|
1630
|
+
$$renderer2.push("<!--[-1-->");
|
|
1631
|
+
}
|
|
1632
|
+
$$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/customEnvVarsToggle"><div class="label svelte-1n6ht58">`);
|
|
1633
|
+
Key_square($$renderer2, { size: 20 });
|
|
1634
|
+
$$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
|
|
1635
|
+
locally, masked in the build log, and never shown here after saving. Re-add a name to
|
|
1636
|
+
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> `);
|
|
1637
|
+
if (customEnvToggleError) {
|
|
1638
|
+
$$renderer2.push("<!--[0-->");
|
|
1639
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(customEnvToggleError)}</div></div>`);
|
|
1640
|
+
} else {
|
|
1641
|
+
$$renderer2.push("<!--[-1-->");
|
|
1642
|
+
}
|
|
1643
|
+
$$renderer2.push(`<!--]--> `);
|
|
1644
|
+
if (customEnvEnabled) {
|
|
1645
|
+
$$renderer2.push("<!--[0-->");
|
|
1646
|
+
$$renderer2.push(`<div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58">`);
|
|
1647
|
+
const each_array_5 = $26.ensure_array_like(customEnvNames);
|
|
1648
|
+
if (each_array_5.length !== 0) {
|
|
1649
|
+
$$renderer2.push("<!--[-->");
|
|
1650
|
+
for (let $$index_5 = 0, $$length = each_array_5.length;$$index_5 < $$length; $$index_5++) {
|
|
1651
|
+
let name = each_array_5[$$index_5];
|
|
1652
|
+
$$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}`)}>`);
|
|
1653
|
+
X($$renderer2, { size: 13 });
|
|
1654
|
+
$$renderer2.push(`<!----></button></form>`);
|
|
1655
|
+
}
|
|
1656
|
+
} else {
|
|
1657
|
+
$$renderer2.push("<!--[!-->");
|
|
1658
|
+
$$renderer2.push(`<div class="var-empty svelte-1n6ht58">No variables added yet.</div>`);
|
|
1659
|
+
}
|
|
1660
|
+
$$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"/> `);
|
|
1661
|
+
Button($$renderer2, {
|
|
1662
|
+
type: "submit",
|
|
1663
|
+
icon: Plus,
|
|
1664
|
+
disabled: savingCustomEnv,
|
|
1665
|
+
children: ($$renderer3) => {
|
|
1666
|
+
$$renderer3.push(`<!---->Add`);
|
|
1667
|
+
},
|
|
1668
|
+
$$slots: { default: true }
|
|
1669
|
+
});
|
|
1670
|
+
$$renderer2.push(`<!----></form> `);
|
|
1671
|
+
if (customEnvError) {
|
|
1672
|
+
$$renderer2.push("<!--[0-->");
|
|
1673
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(customEnvError)}</div>`);
|
|
1674
|
+
} else if (customEnvMsg) {
|
|
1675
|
+
$$renderer2.push("<!--[1-->");
|
|
1676
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(customEnvMsg)}</div>`);
|
|
1301
1677
|
} else {
|
|
1302
1678
|
$$renderer2.push("<!--[-1-->");
|
|
1303
1679
|
}
|
|
@@ -1311,12 +1687,12 @@ function SettingsView($$renderer, $$props) {
|
|
|
1311
1687
|
ThemePicker($$renderer2, {});
|
|
1312
1688
|
$$renderer2.push(`<!----></div></section> <section class="card svelte-1n6ht58"><div class="row svelte-1n6ht58"><div class="label svelte-1n6ht58">`);
|
|
1313
1689
|
Volume_2($$renderer2, { size: 20 });
|
|
1314
|
-
$$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"${$
|
|
1690
|
+
$$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">`);
|
|
1315
1691
|
Paw_print($$renderer2, { size: 18 });
|
|
1316
|
-
$$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"${$
|
|
1692
|
+
$$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> `);
|
|
1317
1693
|
if (petError) {
|
|
1318
1694
|
$$renderer2.push("<!--[0-->");
|
|
1319
|
-
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$
|
|
1695
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(petError)}</div></div>`);
|
|
1320
1696
|
} else {
|
|
1321
1697
|
$$renderer2.push("<!--[-1-->");
|
|
1322
1698
|
}
|
|
@@ -1324,10 +1700,10 @@ function SettingsView($$renderer, $$props) {
|
|
|
1324
1700
|
if (petArt) {
|
|
1325
1701
|
$$renderer2.push("<!--[0-->");
|
|
1326
1702
|
$$renderer2.push(`<div class="sub pets svelte-1n6ht58"><!--[-->`);
|
|
1327
|
-
const
|
|
1328
|
-
for (let $$
|
|
1329
|
-
let art =
|
|
1330
|
-
$$renderer2.push(`<form method="POST" action="?/petChoose" class="svelte-1n6ht58"><input type="hidden" name="name"${$
|
|
1703
|
+
const each_array_6 = $26.ensure_array_like(avatars);
|
|
1704
|
+
for (let $$index_6 = 0, $$length = each_array_6.length;$$index_6 < $$length; $$index_6++) {
|
|
1705
|
+
let art = each_array_6[$$index_6];
|
|
1706
|
+
$$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)}>`);
|
|
1331
1707
|
Avatar($$renderer2, { art, name: art.name, scale: 4 });
|
|
1332
1708
|
$$renderer2.push(`<!----></button></form>`);
|
|
1333
1709
|
}
|
|
@@ -1335,7 +1711,62 @@ function SettingsView($$renderer, $$props) {
|
|
|
1335
1711
|
} else {
|
|
1336
1712
|
$$renderer2.push("<!--[-1-->");
|
|
1337
1713
|
}
|
|
1338
|
-
$$renderer2.push(`<!--]--></section> <section class="card
|
|
1714
|
+
$$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><details class="advanced svelte-1n6ht58"><summary class="svelte-1n6ht58">`);
|
|
1715
|
+
Sliders_horizontal($$renderer2, { size: 20 });
|
|
1716
|
+
$$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">`);
|
|
1717
|
+
List_ordered($$renderer2, { size: 20 });
|
|
1718
|
+
$$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
|
|
1719
|
+
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> `);
|
|
1720
|
+
if (serialError) {
|
|
1721
|
+
$$renderer2.push("<!--[0-->");
|
|
1722
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(serialError)}</div></div>`);
|
|
1723
|
+
} else {
|
|
1724
|
+
$$renderer2.push("<!--[-1-->");
|
|
1725
|
+
}
|
|
1726
|
+
$$renderer2.push(`<!--]--> <form class="row divided svelte-1n6ht58" method="POST" action="?/noBuildkitToggle"><div class="label svelte-1n6ht58">`);
|
|
1727
|
+
Boxes($$renderer2, { size: 20 });
|
|
1728
|
+
$$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
|
|
1729
|
+
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> `);
|
|
1730
|
+
if (buildkitError) {
|
|
1731
|
+
$$renderer2.push("<!--[0-->");
|
|
1732
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(buildkitError)}</div></div>`);
|
|
1733
|
+
} else {
|
|
1734
|
+
$$renderer2.push("<!--[-1-->");
|
|
1735
|
+
}
|
|
1736
|
+
$$renderer2.push(`<!--]--> <form class="row divided svelte-1n6ht58" method="POST" action="?/blockingExtInstallToggle"><div class="label svelte-1n6ht58">`);
|
|
1737
|
+
Puzzle($$renderer2, { size: 20 });
|
|
1738
|
+
$$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
|
|
1739
|
+
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> `);
|
|
1740
|
+
if (blockingError) {
|
|
1741
|
+
$$renderer2.push("<!--[0-->");
|
|
1742
|
+
$$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$26.escape(blockingError)}</div></div>`);
|
|
1743
|
+
} else {
|
|
1744
|
+
$$renderer2.push("<!--[-1-->");
|
|
1745
|
+
}
|
|
1746
|
+
$$renderer2.push(`<!--]--> <form class="row divided svelte-1n6ht58" method="POST" action="?/clearVersionCache"><div class="label svelte-1n6ht58">`);
|
|
1747
|
+
Trash_2($$renderer2, { size: 20 });
|
|
1748
|
+
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Clear claude-code version cache</div> <div class="desc svelte-1n6ht58">Forget the cached latest-version check; the next instance boot asks the npm registry
|
|
1749
|
+
again.</div> `);
|
|
1750
|
+
if (verError) {
|
|
1751
|
+
$$renderer2.push("<!--[0-->");
|
|
1752
|
+
$$renderer2.push(`<div class="msg error svelte-1n6ht58">${$26.escape(verError)}</div>`);
|
|
1753
|
+
} else if (verMsg) {
|
|
1754
|
+
$$renderer2.push("<!--[1-->");
|
|
1755
|
+
$$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$26.escape(verMsg)}</div>`);
|
|
1756
|
+
} else {
|
|
1757
|
+
$$renderer2.push("<!--[-1-->");
|
|
1758
|
+
}
|
|
1759
|
+
$$renderer2.push(`<!--]--></div></div> `);
|
|
1760
|
+
Button($$renderer2, {
|
|
1761
|
+
type: "submit",
|
|
1762
|
+
icon: Trash_2,
|
|
1763
|
+
disabled: clearingVer,
|
|
1764
|
+
children: ($$renderer3) => {
|
|
1765
|
+
$$renderer3.push(`<!---->${$26.escape(clearingVer ? "Clearing\u2026" : "Clear cache")}`);
|
|
1766
|
+
},
|
|
1767
|
+
$$slots: { default: true }
|
|
1768
|
+
});
|
|
1769
|
+
$$renderer2.push(`<!----></form></details></section> <section class="card danger-card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/shutdown"><div class="label svelte-1n6ht58">`);
|
|
1339
1770
|
Power($$renderer2, { size: 20 });
|
|
1340
1771
|
$$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Delete database, containers, and shut down</div> <div class="desc svelte-1n6ht58">Stop and remove every instance and its container, delete all copied workspaces and the
|
|
1341
1772
|
database, then shut down the server. This cannot be undone.</div></div></div> `);
|
|
@@ -1355,7 +1786,7 @@ function SettingsView($$renderer, $$props) {
|
|
|
1355
1786
|
}
|
|
1356
1787
|
$$renderer2.push(`<!--]--></form></section> `);
|
|
1357
1788
|
CoinButton($$renderer2, {});
|
|
1358
|
-
$$renderer2.push(`<!----> <div class="version svelte-1n6ht58">Codebay v${$
|
|
1789
|
+
$$renderer2.push(`<!----> <div class="version svelte-1n6ht58">Codebay v${$26.escape(version)}</div></main></div> `);
|
|
1359
1790
|
Toaster($$renderer2, {
|
|
1360
1791
|
toastOptions: {
|
|
1361
1792
|
style: "border:1px solid var(--ink); background:var(--bg-card); color:var(--ink); box-shadow:4px 4px 0 var(--ink); font-family:var(--font-mono); font-size:13px;"
|
|
@@ -1371,6 +1802,8 @@ function Settings($$renderer, $$props) {
|
|
|
1371
1802
|
let {
|
|
1372
1803
|
pet,
|
|
1373
1804
|
defaultMode,
|
|
1805
|
+
claudePermissionMode,
|
|
1806
|
+
claudeEffortLevel,
|
|
1374
1807
|
defaultImage,
|
|
1375
1808
|
builtinImage,
|
|
1376
1809
|
disableBuildCache,
|
|
@@ -1400,11 +1833,16 @@ function Settings($$renderer, $$props) {
|
|
|
1400
1833
|
hostEnvVarsEnabled,
|
|
1401
1834
|
hostEnvVarNames,
|
|
1402
1835
|
hostEnvVarPresence,
|
|
1836
|
+
customEnvVarsEnabled,
|
|
1837
|
+
customEnvVarNames,
|
|
1838
|
+
advancedSerialInjections,
|
|
1839
|
+
advancedNoBuildkit,
|
|
1840
|
+
advancedBlockingExtInstall,
|
|
1403
1841
|
version
|
|
1404
1842
|
} = $$props;
|
|
1405
1843
|
if (true) {
|
|
1406
1844
|
let failed = function($$renderer3, error) {
|
|
1407
|
-
$$renderer3.push(`<mochi-island-failure data-component="SettingsView"${$
|
|
1845
|
+
$$renderer3.push(`<mochi-island-failure data-component="SettingsView"${$27.attr("data-message", error.message)}></mochi-island-failure>`);
|
|
1408
1846
|
};
|
|
1409
1847
|
$$renderer2.push("<!--[0-->");
|
|
1410
1848
|
$$renderer2.boundary({ failed }, ($$renderer3) => {
|
|
@@ -1412,9 +1850,11 @@ function Settings($$renderer, $$props) {
|
|
|
1412
1850
|
{
|
|
1413
1851
|
HydratableBoundary($$renderer3, {
|
|
1414
1852
|
children: ($$renderer4) => {
|
|
1415
|
-
$$renderer4.push(`<mochi-hydratable-island component-name="SettingsView_8hmarwmf8onq" component-url="__MOCHI_COMPONENT_URL__SettingsView_8hmarwmf8onq__"${$
|
|
1853
|
+
$$renderer4.push(`<mochi-hydratable-island component-name="SettingsView_8hmarwmf8onq" component-url="__MOCHI_COMPONENT_URL__SettingsView_8hmarwmf8onq__"${$27.attr("props-ref", emitIslandProps({
|
|
1416
1854
|
pet,
|
|
1417
1855
|
defaultMode,
|
|
1856
|
+
claudePermissionMode,
|
|
1857
|
+
claudeEffortLevel,
|
|
1418
1858
|
defaultImage,
|
|
1419
1859
|
builtinImage,
|
|
1420
1860
|
disableBuildCache,
|
|
@@ -1444,6 +1884,11 @@ function Settings($$renderer, $$props) {
|
|
|
1444
1884
|
hostEnvVarsEnabled,
|
|
1445
1885
|
hostEnvVarNames,
|
|
1446
1886
|
hostEnvVarPresence,
|
|
1887
|
+
customEnvVarsEnabled,
|
|
1888
|
+
customEnvVarNames,
|
|
1889
|
+
advancedSerialInjections,
|
|
1890
|
+
advancedNoBuildkit,
|
|
1891
|
+
advancedBlockingExtInstall,
|
|
1447
1892
|
version
|
|
1448
1893
|
}))}>`);
|
|
1449
1894
|
$$renderer4.push(`<!--[-->`);
|
|
@@ -1451,6 +1896,8 @@ function Settings($$renderer, $$props) {
|
|
|
1451
1896
|
SettingsView($$renderer4, {
|
|
1452
1897
|
pet,
|
|
1453
1898
|
defaultMode,
|
|
1899
|
+
claudePermissionMode,
|
|
1900
|
+
claudeEffortLevel,
|
|
1454
1901
|
defaultImage,
|
|
1455
1902
|
builtinImage,
|
|
1456
1903
|
disableBuildCache,
|
|
@@ -1480,6 +1927,11 @@ function Settings($$renderer, $$props) {
|
|
|
1480
1927
|
hostEnvVarsEnabled,
|
|
1481
1928
|
hostEnvVarNames,
|
|
1482
1929
|
hostEnvVarPresence,
|
|
1930
|
+
customEnvVarsEnabled,
|
|
1931
|
+
customEnvVarNames,
|
|
1932
|
+
advancedSerialInjections,
|
|
1933
|
+
advancedNoBuildkit,
|
|
1934
|
+
advancedBlockingExtInstall,
|
|
1483
1935
|
version
|
|
1484
1936
|
});
|
|
1485
1937
|
}
|