codebay 0.14.0 → 0.16.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 (108) hide show
  1. package/.mochi/manifest.json +778 -646
  2. package/.mochi/svelte-client/HydratableIsland-6y9p903x.js +1 -0
  3. package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-nv6yzk0x.js +2 -0
  4. package/.mochi/svelte-client/_hydrate-AvatarsView_257s9yq1wwr4f-ry83ck8a.js +14 -0
  5. package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-vjt4jscf.js +3 -0
  6. package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-1jdrk8x6.js +48 -0
  7. package/.mochi/svelte-client/{chunk-spk1b2r4.js → chunk-0vqvn81s.js} +1 -1
  8. package/.mochi/svelte-client/chunk-2dc6352a.js +1 -0
  9. package/.mochi/svelte-client/chunk-3cxaw5hr.js +2 -0
  10. package/.mochi/svelte-client/chunk-3jqc40sp.js +2 -0
  11. package/.mochi/svelte-client/chunk-3pgw6t5j.js +4 -0
  12. package/.mochi/svelte-client/chunk-7g3xt6ez.js +2 -0
  13. package/.mochi/svelte-client/chunk-b5s3mpg0.js +1 -0
  14. package/.mochi/svelte-client/chunk-bhseezf3.js +2 -0
  15. package/.mochi/svelte-client/chunk-bhwkq8er.js +1 -0
  16. package/.mochi/svelte-client/chunk-jm3ge348.js +1 -0
  17. package/.mochi/svelte-client/{chunk-0mc09cyb.js → chunk-sxcr9gzp.js} +1 -1
  18. package/.mochi/svelte-client/{chunk-ccfh8hxz.js → chunk-tss2473w.js} +1 -1
  19. package/.mochi/svelte-compile/{App-94xsdn0w.server.js → App-8mpgrxza.server.js} +470 -271
  20. package/.mochi/svelte-compile/{Avatars-fnccw47h.server.js → Avatars-y5nf6q25.server.js} +111 -110
  21. package/.mochi/svelte-compile/{DefaultError-je52k17d.server.js → DefaultError-rrjye0s2.server.js} +1 -2
  22. package/.mochi/svelte-compile/Instance-3sbzyp0g.server.js +695 -0
  23. package/.mochi/svelte-compile/{Settings-a7b11v90.server.js → Settings-ysvh5vhh.server.js} +838 -607
  24. package/.mochi/svelte-compile/chunk-7zaw9t5a.js +25 -0
  25. package/.mochi/svelte-compile/chunk-878xcmp4.js +65 -0
  26. package/.mochi/svelte-compile/chunk-d2z3qxxe.js +28 -0
  27. package/.mochi/svelte-compile/{chunk-60mpagr9.js → chunk-gnf5cnct.js} +661 -22
  28. package/.mochi/svelte-compile/{chunk-w0hca7va.js → chunk-jq7jj8jd.js} +18 -2
  29. package/.mochi/svelte-compile/chunk-vr0e32mv.js +24 -0
  30. package/.mochi/svelte-compile/{chunk-apdte4nh.js → chunk-xmygdsj4.js} +35 -612
  31. package/.mochi/svelte-compile/{chunk-pqb403fh.js → chunk-zk4a9zms.js} +28 -31
  32. package/.mochi/svelte-css/AgentLogBox-38adby5iygny7.css +1 -0
  33. package/.mochi/svelte-css/DropZone-1zeitd761uwyd.css +1 -0
  34. package/.mochi/svelte-css/IdeBar-d3un7kuigxc5.css +1 -0
  35. package/.mochi/svelte-css/{InstanceCard-25z7nas7y98zk.css → InstanceCard-3vxozrp9uoads.css} +1 -1
  36. package/.mochi/svelte-css/InstanceView-3ucotech5097w.css +1 -0
  37. package/.mochi/svelte-css/{SettingsView-bccw34agd2bj.css → SettingsView-2400myxb9ot56.css} +1 -1
  38. package/README.md +43 -3
  39. package/migrations/0009_agent_runs.sql +24 -0
  40. package/migrations/0010_agent_run_model.sql +2 -0
  41. package/migrations/0011_agent_run_rejected_structured_output.sql +2 -0
  42. package/package.json +13 -9
  43. package/src/__fixtures__/IdeBarStrip.svelte +41 -0
  44. package/src/avatars/dog.ts +1 -1
  45. package/src/avatars/lightning.ts +8 -9
  46. package/src/avatars/rocket.ts +4 -5
  47. package/src/components/AgentLogBox.svelte +458 -0
  48. package/src/components/AppShell.svelte +112 -1
  49. package/src/components/DropZone.svelte +77 -0
  50. package/src/components/FolderBrowser.svelte +13 -5
  51. package/src/components/HealthBox.svelte +6 -5
  52. package/src/components/IdeBar.svelte +222 -76
  53. package/src/components/InstanceCard.svelte +38 -0
  54. package/src/components/InstanceView.svelte +83 -2
  55. package/src/components/SettingsView.svelte +273 -0
  56. package/src/components/TerminalPane.svelte +54 -0
  57. package/src/components/UiShowcase.svelte +23 -3
  58. package/src/container-injections/claude-code-install.ts +1 -1
  59. package/src/container-injections/claude-history.ts +52 -0
  60. package/src/container-injections/claude-statusline.ts +4 -1
  61. package/src/container-injections/github-credentials.ts +12 -1
  62. package/src/container-injections/tmux.ts +6 -2
  63. package/src/index.ts +35 -7
  64. package/src/lib/agent-run-stream.ts +286 -0
  65. package/src/lib/agent-runs.server.ts +735 -0
  66. package/src/lib/auth.server.ts +11 -2
  67. package/src/lib/build-freshness.server.ts +71 -0
  68. package/src/lib/config.server.ts +36 -7
  69. package/src/lib/container-files.server.ts +1 -1
  70. package/src/lib/data-dir-lock.server.ts +78 -0
  71. package/src/lib/db.server.ts +124 -1
  72. package/src/lib/devcontainer.server.ts +93 -16
  73. package/src/lib/docker-client.server.ts +11 -5
  74. package/src/lib/drives.ts +11 -0
  75. package/src/lib/exec.server.ts +66 -5
  76. package/src/lib/injections.server.ts +5 -1
  77. package/src/lib/instances.server.ts +66 -7
  78. package/src/lib/log-capture.server.ts +63 -23
  79. package/src/lib/mcp-auth.server.ts +52 -0
  80. package/src/lib/osc52.ts +18 -0
  81. package/src/lib/picker.server.ts +23 -2
  82. package/src/lib/sandbox-ops.server.ts +263 -0
  83. package/src/lib/upload.ts +32 -0
  84. package/src/lib/uploads.server.ts +164 -0
  85. package/src/mcp/routes.server.ts +25 -0
  86. package/src/mcp/server.server.ts +55 -0
  87. package/src/mcp/tools.server.ts +660 -0
  88. package/src/pages/Instance.svelte +6 -2
  89. package/src/pages/Settings.svelte +15 -0
  90. package/src/routes.ts +79 -3
  91. package/src/types.ts +17 -0
  92. package/.mochi/svelte-client/HydratableIsland-zrdsrsmg.js +0 -1
  93. package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-v7y7dh53.js +0 -2
  94. package/.mochi/svelte-client/_hydrate-AvatarsView_257s9yq1wwr4f-tmwd6fpb.js +0 -14
  95. package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-m7t64dbh.js +0 -1
  96. package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-4a7ann1f.js +0 -40
  97. package/.mochi/svelte-client/chunk-5jwfs4p9.js +0 -2
  98. package/.mochi/svelte-client/chunk-6qg4q98a.js +0 -2
  99. package/.mochi/svelte-client/chunk-phf7v5jj.js +0 -4
  100. package/.mochi/svelte-client/chunk-tmeh70wg.js +0 -2
  101. package/.mochi/svelte-client/chunk-vs1yjbqt.js +0 -2
  102. package/.mochi/svelte-client/chunk-x0m3k0rn.js +0 -1
  103. package/.mochi/svelte-client/chunk-y7f4jbdm.js +0 -2
  104. package/.mochi/svelte-compile/Instance-knnkcn2p.server.js +0 -377
  105. package/.mochi/svelte-compile/chunk-ed46m58e.js +0 -22
  106. package/.mochi/svelte-compile/chunk-jx6h1xzp.js +0 -20
  107. package/.mochi/svelte-css/IdeBar-1mtgemqfuvqzi.css +0 -1
  108. package/.mochi/svelte-css/InstanceView-32j12hyg8v9u0.css +0 -1
@@ -2,155 +2,182 @@
2
2
  import {
3
3
  Layout_template,
4
4
  Plus,
5
- Terminal,
6
5
  playChime,
7
6
  setSoundEnabled,
8
7
  setTabShortcutsEnabled,
9
8
  soundEnabled,
10
9
  tabShortcutsEnabled,
11
10
  unlockAudio
12
- } from "./chunk-pqb403fh.js";
11
+ } from "./chunk-zk4a9zms.js";
12
+ import {
13
+ Message_square
14
+ } from "./chunk-7zaw9t5a.js";
13
15
  import {
14
16
  CLAUDE_EFFORT_LEVELS,
15
17
  CLAUDE_OUTPUT_STYLES,
16
18
  CLAUDE_PERMISSION_MODES,
19
+ Terminal,
17
20
  apiPost,
18
21
  applyTheme,
19
22
  getTheme,
20
23
  setTheme
21
- } from "./chunk-w0hca7va.js";
24
+ } from "./chunk-jq7jj8jd.js";
22
25
  import {
23
26
  Rotate_ccw
24
- } from "./chunk-jx6h1xzp.js";
27
+ } from "./chunk-vr0e32mv.js";
25
28
  import {
26
29
  AppBar,
27
30
  Avatar,
28
31
  Button,
29
- TOAST_OPTIONS,
30
- Toaster,
31
32
  avatars,
32
33
  findAvatar
33
- } from "./chunk-apdte4nh.js";
34
+ } from "./chunk-xmygdsj4.js";
34
35
  import {
35
36
  HydratableBoundary,
36
37
  Icon,
38
+ TOAST_OPTIONS,
39
+ Toaster,
37
40
  X,
38
41
  emitIslandProps
39
- } from "./chunk-60mpagr9.js";
42
+ } from "./chunk-gnf5cnct.js";
40
43
  import"./chunk-xpt1a7jm.js";
41
44
 
42
45
  // src/pages/Settings.svelte
43
46
  import"svelte/internal/flags/async";
44
- import * as $30 from "svelte/internal/server";
47
+ import * as $32 from "svelte/internal/server";
45
48
 
46
49
  // src/components/SettingsView.svelte
47
50
  import"svelte/internal/flags/async";
48
- import * as $29 from "svelte/internal/server";
51
+ import * as $31 from "svelte/internal/server";
49
52
 
50
53
  // node_modules/@lucide/svelte/dist/icons/container.svelte
51
54
  import"svelte/internal/flags/async";
52
55
  import * as $ from "svelte/internal/server";
53
56
  function Container($$renderer, $$props) {
54
57
  let { $$slots, $$events, ...props } = $$props;
55
- const iconNode = [
56
- [
57
- "path",
58
- {
59
- d: "M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z"
60
- }
61
- ],
62
- ["path", { d: "M10 21.9V14L2.1 9.1" }],
63
- ["path", { d: "m10 14 11.9-6.9" }],
64
- ["path", { d: "M14 19.8v-8.1" }],
65
- ["path", { d: "M18 17.5V9.4" }]
66
- ];
67
- Icon($$renderer, $.spread_props([{ name: "container" }, props, { iconNode }]));
58
+ const iconData = {
59
+ name: "container",
60
+ size: 24,
61
+ node: [
62
+ [
63
+ "path",
64
+ {
65
+ d: "M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z"
66
+ }
67
+ ],
68
+ ["path", { d: "M10 21.9V14L2.1 9.1" }],
69
+ ["path", { d: "m10 14 11.9-6.9" }],
70
+ ["path", { d: "M14 19.8v-8.1" }],
71
+ ["path", { d: "M18 17.5V9.4" }]
72
+ ]
73
+ };
74
+ Icon($$renderer, $.spread_props([props, { icon: iconData }]));
68
75
  }
69
76
  // node_modules/@lucide/svelte/dist/icons/power.svelte
70
77
  import"svelte/internal/flags/async";
71
78
  import * as $2 from "svelte/internal/server";
72
79
  function Power($$renderer, $$props) {
73
80
  let { $$slots, $$events, ...props } = $$props;
74
- const iconNode = [
75
- ["path", { d: "M12 2v10" }],
76
- ["path", { d: "M18.4 6.6a9 9 0 1 1-12.77.04" }]
77
- ];
78
- Icon($$renderer, $2.spread_props([{ name: "power" }, props, { iconNode }]));
81
+ const iconData = {
82
+ name: "power",
83
+ size: 24,
84
+ node: [
85
+ ["path", { d: "M12 2v10" }],
86
+ ["path", { d: "M18.4 6.6a9 9 0 1 1-12.77.04" }]
87
+ ]
88
+ };
89
+ Icon($$renderer, $2.spread_props([props, { icon: iconData }]));
79
90
  }
80
91
  // node_modules/@lucide/svelte/dist/icons/volume-2.svelte
81
92
  import"svelte/internal/flags/async";
82
93
  import * as $3 from "svelte/internal/server";
83
94
  function Volume_2($$renderer, $$props) {
84
95
  let { $$slots, $$events, ...props } = $$props;
85
- const iconNode = [
86
- [
87
- "path",
88
- {
89
- d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"
90
- }
91
- ],
92
- ["path", { d: "M16 9a5 5 0 0 1 0 6" }],
93
- ["path", { d: "M19.364 18.364a9 9 0 0 0 0-12.728" }]
94
- ];
95
- Icon($$renderer, $3.spread_props([{ name: "volume-2" }, props, { iconNode }]));
96
+ const iconData = {
97
+ name: "volume-2",
98
+ size: 24,
99
+ node: [
100
+ [
101
+ "path",
102
+ {
103
+ d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"
104
+ }
105
+ ],
106
+ ["path", { d: "M16 9a5 5 0 0 1 0 6" }],
107
+ ["path", { d: "M19.364 18.364a9 9 0 0 0 0-12.728" }]
108
+ ]
109
+ };
110
+ Icon($$renderer, $3.spread_props([props, { icon: iconData }]));
96
111
  }
97
112
  // node_modules/@lucide/svelte/dist/icons/keyboard.svelte
98
113
  import"svelte/internal/flags/async";
99
114
  import * as $4 from "svelte/internal/server";
100
115
  function Keyboard($$renderer, $$props) {
101
116
  let { $$slots, $$events, ...props } = $$props;
102
- const iconNode = [
103
- ["path", { d: "M10 8h.01" }],
104
- ["path", { d: "M12 12h.01" }],
105
- ["path", { d: "M14 8h.01" }],
106
- ["path", { d: "M16 12h.01" }],
107
- ["path", { d: "M18 8h.01" }],
108
- ["path", { d: "M6 8h.01" }],
109
- ["path", { d: "M7 16h10" }],
110
- ["path", { d: "M8 12h.01" }],
111
- [
112
- "rect",
113
- { width: "20", height: "16", x: "2", y: "4", rx: "2" }
117
+ const iconData = {
118
+ name: "keyboard",
119
+ size: 24,
120
+ node: [
121
+ ["path", { d: "M10 8h.01" }],
122
+ ["path", { d: "M12 12h.01" }],
123
+ ["path", { d: "M14 8h.01" }],
124
+ ["path", { d: "M16 12h.01" }],
125
+ ["path", { d: "M18 8h.01" }],
126
+ ["path", { d: "M6 8h.01" }],
127
+ ["path", { d: "M7 16h10" }],
128
+ ["path", { d: "M8 12h.01" }],
129
+ [
130
+ "rect",
131
+ { width: "20", height: "16", x: "2", y: "4", rx: "2" }
132
+ ]
114
133
  ]
115
- ];
116
- Icon($$renderer, $4.spread_props([{ name: "keyboard" }, props, { iconNode }]));
134
+ };
135
+ Icon($$renderer, $4.spread_props([props, { icon: iconData }]));
117
136
  }
118
137
  // node_modules/@lucide/svelte/dist/icons/paw-print.svelte
119
138
  import"svelte/internal/flags/async";
120
139
  import * as $5 from "svelte/internal/server";
121
140
  function Paw_print($$renderer, $$props) {
122
141
  let { $$slots, $$events, ...props } = $$props;
123
- const iconNode = [
124
- ["circle", { cx: "11", cy: "4", r: "2" }],
125
- ["circle", { cx: "18", cy: "8", r: "2" }],
126
- ["circle", { cx: "20", cy: "16", r: "2" }],
127
- [
128
- "path",
129
- {
130
- d: "M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z"
131
- }
142
+ const iconData = {
143
+ name: "paw-print",
144
+ size: 24,
145
+ node: [
146
+ ["circle", { cx: "11", cy: "4", r: "2" }],
147
+ ["circle", { cx: "18", cy: "8", r: "2" }],
148
+ ["circle", { cx: "20", cy: "16", r: "2" }],
149
+ [
150
+ "path",
151
+ {
152
+ d: "M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z"
153
+ }
154
+ ]
132
155
  ]
133
- ];
134
- Icon($$renderer, $5.spread_props([{ name: "paw-print" }, props, { iconNode }]));
156
+ };
157
+ Icon($$renderer, $5.spread_props([props, { icon: iconData }]));
135
158
  }
136
159
  // node_modules/@lucide/svelte/dist/icons/sun-moon.svelte
137
160
  import"svelte/internal/flags/async";
138
161
  import * as $6 from "svelte/internal/server";
139
162
  function Sun_moon($$renderer, $$props) {
140
163
  let { $$slots, $$events, ...props } = $$props;
141
- const iconNode = [
142
- ["path", { d: "M12 2v2" }],
143
- [
144
- "path",
145
- {
146
- d: "M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715"
147
- }
148
- ],
149
- ["path", { d: "M16 12a4 4 0 0 0-4-4" }],
150
- ["path", { d: "m19 5-1.256 1.256" }],
151
- ["path", { d: "M20 12h2" }]
152
- ];
153
- Icon($$renderer, $6.spread_props([{ name: "sun-moon" }, props, { iconNode }]));
164
+ const iconData = {
165
+ name: "sun-moon",
166
+ size: 24,
167
+ node: [
168
+ ["path", { d: "M12 2v2" }],
169
+ [
170
+ "path",
171
+ {
172
+ d: "M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715"
173
+ }
174
+ ],
175
+ ["path", { d: "M16 12a4 4 0 0 0-4-4" }],
176
+ ["path", { d: "m19 5-1.256 1.256" }],
177
+ ["path", { d: "M20 12h2" }]
178
+ ]
179
+ };
180
+ Icon($$renderer, $6.spread_props([props, { icon: iconData }]));
154
181
  }
155
182
  // src/components/ThemePicker.svelte
156
183
  import"svelte/internal/flags/async";
@@ -161,48 +188,60 @@ import"svelte/internal/flags/async";
161
188
  import * as $7 from "svelte/internal/server";
162
189
  function Sun($$renderer, $$props) {
163
190
  let { $$slots, $$events, ...props } = $$props;
164
- const iconNode = [
165
- ["circle", { cx: "12", cy: "12", r: "4" }],
166
- ["path", { d: "M12 2v2" }],
167
- ["path", { d: "M12 20v2" }],
168
- ["path", { d: "m4.93 4.93 1.41 1.41" }],
169
- ["path", { d: "m17.66 17.66 1.41 1.41" }],
170
- ["path", { d: "M2 12h2" }],
171
- ["path", { d: "M20 12h2" }],
172
- ["path", { d: "m6.34 17.66-1.41 1.41" }],
173
- ["path", { d: "m19.07 4.93-1.41 1.41" }]
174
- ];
175
- Icon($$renderer, $7.spread_props([{ name: "sun" }, props, { iconNode }]));
191
+ const iconData = {
192
+ name: "sun",
193
+ size: 24,
194
+ node: [
195
+ ["circle", { cx: "12", cy: "12", r: "4" }],
196
+ ["path", { d: "M12 2v2" }],
197
+ ["path", { d: "M12 20v2" }],
198
+ ["path", { d: "m4.93 4.93 1.41 1.41" }],
199
+ ["path", { d: "m17.66 17.66 1.41 1.41" }],
200
+ ["path", { d: "M2 12h2" }],
201
+ ["path", { d: "M20 12h2" }],
202
+ ["path", { d: "m6.34 17.66-1.41 1.41" }],
203
+ ["path", { d: "m19.07 4.93-1.41 1.41" }]
204
+ ]
205
+ };
206
+ Icon($$renderer, $7.spread_props([props, { icon: iconData }]));
176
207
  }
177
208
  // node_modules/@lucide/svelte/dist/icons/moon.svelte
178
209
  import"svelte/internal/flags/async";
179
210
  import * as $8 from "svelte/internal/server";
180
211
  function Moon($$renderer, $$props) {
181
212
  let { $$slots, $$events, ...props } = $$props;
182
- const iconNode = [
183
- [
184
- "path",
185
- {
186
- d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"
187
- }
213
+ const iconData = {
214
+ name: "moon",
215
+ size: 24,
216
+ node: [
217
+ [
218
+ "path",
219
+ {
220
+ d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"
221
+ }
222
+ ]
188
223
  ]
189
- ];
190
- Icon($$renderer, $8.spread_props([{ name: "moon" }, props, { iconNode }]));
224
+ };
225
+ Icon($$renderer, $8.spread_props([props, { icon: iconData }]));
191
226
  }
192
227
  // node_modules/@lucide/svelte/dist/icons/monitor.svelte
193
228
  import"svelte/internal/flags/async";
194
229
  import * as $9 from "svelte/internal/server";
195
230
  function Monitor($$renderer, $$props) {
196
231
  let { $$slots, $$events, ...props } = $$props;
197
- const iconNode = [
198
- [
199
- "rect",
200
- { width: "20", height: "14", x: "2", y: "3", rx: "2" }
201
- ],
202
- ["line", { x1: "8", x2: "16", y1: "21", y2: "21" }],
203
- ["line", { x1: "12", x2: "12", y1: "17", y2: "21" }]
204
- ];
205
- Icon($$renderer, $9.spread_props([{ name: "monitor" }, props, { iconNode }]));
232
+ const iconData = {
233
+ name: "monitor",
234
+ size: 24,
235
+ node: [
236
+ [
237
+ "rect",
238
+ { width: "20", height: "14", x: "2", y: "3", rx: "2" }
239
+ ],
240
+ ["line", { x1: "8", x2: "16", y1: "21", y2: "21" }],
241
+ ["line", { x1: "12", x2: "12", y1: "17", y2: "21" }]
242
+ ]
243
+ };
244
+ Icon($$renderer, $9.spread_props([props, { icon: iconData }]));
206
245
  }
207
246
  // src/components/ThemePicker.svelte
208
247
  function ThemePicker($$renderer, $$props) {
@@ -252,8 +291,7 @@ function ThemePicker($$renderer, $$props) {
252
291
  }
253
292
  $$renderer2.push(`<!--]--></div> `);
254
293
  if (phase) {
255
- $$renderer2.push("<!--[0-->");
256
- $$renderer2.push(`<div${$10.attr_class("crt svelte-3gcwuj", undefined, {
294
+ $$renderer2.push(`<!--[0--><div${$10.attr_class("crt svelte-3gcwuj", undefined, {
257
295
  collapse: phase === "collapse",
258
296
  restore: phase === "restore"
259
297
  })}><span class="bar top svelte-3gcwuj"></span> <span class="bar bottom svelte-3gcwuj"></span> <span class="line svelte-3gcwuj"></span></div>`);
@@ -269,294 +307,391 @@ import"svelte/internal/flags/async";
269
307
  import * as $11 from "svelte/internal/server";
270
308
  function Layers($$renderer, $$props) {
271
309
  let { $$slots, $$events, ...props } = $$props;
272
- const iconNode = [
273
- [
274
- "path",
275
- {
276
- d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"
277
- }
278
- ],
279
- [
280
- "path",
281
- {
282
- d: "M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"
283
- }
310
+ const iconData = {
311
+ name: "layers",
312
+ size: 24,
313
+ node: [
314
+ [
315
+ "path",
316
+ {
317
+ d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"
318
+ }
319
+ ],
320
+ [
321
+ "path",
322
+ {
323
+ d: "M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"
324
+ }
325
+ ],
326
+ [
327
+ "path",
328
+ {
329
+ d: "M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"
330
+ }
331
+ ]
284
332
  ],
285
- [
286
- "path",
287
- {
288
- d: "M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"
289
- }
333
+ aliases: ["layers-3"]
334
+ };
335
+ Icon($$renderer, $11.spread_props([props, { icon: iconData }]));
336
+ }
337
+ // node_modules/@lucide/svelte/dist/icons/upload.svelte
338
+ import"svelte/internal/flags/async";
339
+ import * as $12 from "svelte/internal/server";
340
+ function Upload($$renderer, $$props) {
341
+ let { $$slots, $$events, ...props } = $$props;
342
+ const iconData = {
343
+ name: "upload",
344
+ size: 24,
345
+ node: [
346
+ ["path", { d: "M12 3v12" }],
347
+ ["path", { d: "m17 8-5-5-5 5" }],
348
+ ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }]
290
349
  ]
291
- ];
292
- Icon($$renderer, $11.spread_props([{ name: "layers" }, props, { iconNode }]));
350
+ };
351
+ Icon($$renderer, $12.spread_props([props, { icon: iconData }]));
293
352
  }
294
353
  // node_modules/@lucide/svelte/dist/icons/folder-minus.svelte
295
354
  import"svelte/internal/flags/async";
296
- import * as $12 from "svelte/internal/server";
355
+ import * as $13 from "svelte/internal/server";
297
356
  function Folder_minus($$renderer, $$props) {
298
357
  let { $$slots, $$events, ...props } = $$props;
299
- const iconNode = [
300
- ["path", { d: "M9 13h6" }],
301
- [
302
- "path",
303
- {
304
- d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"
305
- }
358
+ const iconData = {
359
+ name: "folder-minus",
360
+ size: 24,
361
+ node: [
362
+ ["path", { d: "M9 13h6" }],
363
+ [
364
+ "path",
365
+ {
366
+ d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"
367
+ }
368
+ ]
306
369
  ]
307
- ];
308
- Icon($$renderer, $12.spread_props([{ name: "folder-minus" }, props, { iconNode }]));
370
+ };
371
+ Icon($$renderer, $13.spread_props([props, { icon: iconData }]));
309
372
  }
310
373
  // node_modules/@lucide/svelte/dist/icons/folder-cog.svelte
311
374
  import"svelte/internal/flags/async";
312
- import * as $13 from "svelte/internal/server";
375
+ import * as $14 from "svelte/internal/server";
313
376
  function Folder_cog($$renderer, $$props) {
314
377
  let { $$slots, $$events, ...props } = $$props;
315
- const iconNode = [
316
- [
317
- "path",
318
- {
319
- d: "M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.98a2 2 0 0 1 1.69.9l.66 1.2A2 2 0 0 0 12 6h8a2 2 0 0 1 2 2v3.3"
320
- }
378
+ const iconData = {
379
+ name: "folder-cog",
380
+ size: 24,
381
+ node: [
382
+ [
383
+ "path",
384
+ {
385
+ d: "M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.98a2 2 0 0 1 1.69.9l.66 1.2A2 2 0 0 0 12 6h8a2 2 0 0 1 2 2v3.3"
386
+ }
387
+ ],
388
+ ["path", { d: "m14.305 19.53.923-.382" }],
389
+ ["path", { d: "m15.228 16.852-.923-.383" }],
390
+ ["path", { d: "m16.852 15.228-.383-.923" }],
391
+ ["path", { d: "m16.852 20.772-.383.924" }],
392
+ ["path", { d: "m19.148 15.228.383-.923" }],
393
+ ["path", { d: "m19.53 21.696-.382-.924" }],
394
+ ["path", { d: "m20.772 16.852.924-.383" }],
395
+ ["path", { d: "m20.772 19.148.924.383" }],
396
+ ["circle", { cx: "18", cy: "18", r: "3" }]
321
397
  ],
322
- ["path", { d: "m14.305 19.53.923-.382" }],
323
- ["path", { d: "m15.228 16.852-.923-.383" }],
324
- ["path", { d: "m16.852 15.228-.383-.923" }],
325
- ["path", { d: "m16.852 20.772-.383.924" }],
326
- ["path", { d: "m19.148 15.228.383-.923" }],
327
- ["path", { d: "m19.53 21.696-.382-.924" }],
328
- ["path", { d: "m20.772 16.852.924-.383" }],
329
- ["path", { d: "m20.772 19.148.924.383" }],
330
- ["circle", { cx: "18", cy: "18", r: "3" }]
331
- ];
332
- Icon($$renderer, $13.spread_props([{ name: "folder-cog" }, props, { iconNode }]));
398
+ aliases: ["folder-cog-2"]
399
+ };
400
+ Icon($$renderer, $14.spread_props([props, { icon: iconData }]));
333
401
  }
334
- // node_modules/@lucide/svelte/dist/icons/trash-2.svelte
402
+ // node_modules/@lucide/svelte/dist/icons/trash.svelte
335
403
  import"svelte/internal/flags/async";
336
- import * as $14 from "svelte/internal/server";
337
- function Trash_2($$renderer, $$props) {
404
+ import * as $15 from "svelte/internal/server";
405
+ function Trash($$renderer, $$props) {
338
406
  let { $$slots, $$events, ...props } = $$props;
339
- const iconNode = [
340
- ["path", { d: "M10 11v6" }],
341
- ["path", { d: "M14 11v6" }],
342
- ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" }],
343
- ["path", { d: "M3 6h18" }],
344
- ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }]
345
- ];
346
- Icon($$renderer, $14.spread_props([{ name: "trash-2" }, props, { iconNode }]));
407
+ const iconData = {
408
+ name: "trash",
409
+ size: 24,
410
+ node: [
411
+ ["path", { d: "M10 11v6" }],
412
+ ["path", { d: "M14 11v6" }],
413
+ ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" }],
414
+ ["path", { d: "M3 6h18" }],
415
+ ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }]
416
+ ],
417
+ aliases: ["trash-2"]
418
+ };
419
+ Icon($$renderer, $15.spread_props([props, { icon: iconData }]));
347
420
  }
348
421
  // node_modules/@lucide/svelte/dist/icons/hammer.svelte
349
422
  import"svelte/internal/flags/async";
350
- import * as $15 from "svelte/internal/server";
423
+ import * as $16 from "svelte/internal/server";
351
424
  function Hammer($$renderer, $$props) {
352
425
  let { $$slots, $$events, ...props } = $$props;
353
- const iconNode = [
354
- ["path", { d: "m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9" }],
355
- ["path", { d: "m18 15 4-4" }],
356
- [
357
- "path",
358
- {
359
- d: "m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5"
360
- }
426
+ const iconData = {
427
+ name: "hammer",
428
+ size: 24,
429
+ node: [
430
+ ["path", { d: "m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9" }],
431
+ ["path", { d: "m18 15 4-4" }],
432
+ [
433
+ "path",
434
+ {
435
+ d: "m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5"
436
+ }
437
+ ]
361
438
  ]
362
- ];
363
- Icon($$renderer, $15.spread_props([{ name: "hammer" }, props, { iconNode }]));
439
+ };
440
+ Icon($$renderer, $16.spread_props([props, { icon: iconData }]));
364
441
  }
365
442
  // node_modules/@lucide/svelte/dist/icons/key-round.svelte
366
443
  import"svelte/internal/flags/async";
367
- import * as $16 from "svelte/internal/server";
444
+ import * as $17 from "svelte/internal/server";
368
445
  function Key_round($$renderer, $$props) {
369
446
  let { $$slots, $$events, ...props } = $$props;
370
- const iconNode = [
371
- [
372
- "path",
373
- {
374
- d: "M2.586 17.414A2 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-.814a6.5 6.5 0 1 0-4-4z"
375
- }
376
- ],
377
- [
378
- "circle",
379
- { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor" }
447
+ const iconData = {
448
+ name: "key-round",
449
+ size: 24,
450
+ node: [
451
+ [
452
+ "path",
453
+ {
454
+ d: "M2.586 17.414A2 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-.814a6.5 6.5 0 1 0-4-4z"
455
+ }
456
+ ],
457
+ [
458
+ "circle",
459
+ { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor" }
460
+ ]
380
461
  ]
381
- ];
382
- Icon($$renderer, $16.spread_props([{ name: "key-round" }, props, { iconNode }]));
462
+ };
463
+ Icon($$renderer, $17.spread_props([props, { icon: iconData }]));
383
464
  }
384
465
  // node_modules/@lucide/svelte/dist/icons/user-cog.svelte
385
466
  import"svelte/internal/flags/async";
386
- import * as $17 from "svelte/internal/server";
467
+ import * as $18 from "svelte/internal/server";
387
468
  function User_cog($$renderer, $$props) {
388
469
  let { $$slots, $$events, ...props } = $$props;
389
- const iconNode = [
390
- ["path", { d: "M10 15H6a4 4 0 0 0-4 4v2" }],
391
- ["path", { d: "m14.305 16.53.923-.382" }],
392
- ["path", { d: "m15.228 13.852-.923-.383" }],
393
- ["path", { d: "m16.852 12.228-.383-.923" }],
394
- ["path", { d: "m16.852 17.772-.383.924" }],
395
- ["path", { d: "m19.148 12.228.383-.923" }],
396
- ["path", { d: "m19.53 18.696-.382-.924" }],
397
- ["path", { d: "m20.772 13.852.924-.383" }],
398
- ["path", { d: "m20.772 16.148.924.383" }],
399
- ["circle", { cx: "18", cy: "15", r: "3" }],
400
- ["circle", { cx: "9", cy: "7", r: "4" }]
401
- ];
402
- Icon($$renderer, $17.spread_props([{ name: "user-cog" }, props, { iconNode }]));
470
+ const iconData = {
471
+ name: "user-cog",
472
+ size: 24,
473
+ node: [
474
+ ["path", { d: "M10 15H6a4 4 0 0 0-4 4v2" }],
475
+ ["path", { d: "m14.305 16.53.923-.382" }],
476
+ ["path", { d: "m15.228 13.852-.923-.383" }],
477
+ ["path", { d: "m16.852 12.228-.383-.923" }],
478
+ ["path", { d: "m16.852 17.772-.383.924" }],
479
+ ["path", { d: "m19.148 12.228.383-.923" }],
480
+ ["path", { d: "m19.53 18.696-.382-.924" }],
481
+ ["path", { d: "m20.772 13.852.924-.383" }],
482
+ ["path", { d: "m20.772 16.148.924.383" }],
483
+ ["circle", { cx: "18", cy: "15", r: "3" }],
484
+ ["circle", { cx: "9", cy: "7", r: "4" }]
485
+ ]
486
+ };
487
+ Icon($$renderer, $18.spread_props([props, { icon: iconData }]));
403
488
  }
404
489
  // node_modules/@lucide/svelte/dist/icons/cpu.svelte
405
490
  import"svelte/internal/flags/async";
406
- import * as $18 from "svelte/internal/server";
491
+ import * as $19 from "svelte/internal/server";
407
492
  function Cpu($$renderer, $$props) {
408
493
  let { $$slots, $$events, ...props } = $$props;
409
- const iconNode = [
410
- ["path", { d: "M12 20v2" }],
411
- ["path", { d: "M12 2v2" }],
412
- ["path", { d: "M17 20v2" }],
413
- ["path", { d: "M17 2v2" }],
414
- ["path", { d: "M2 12h2" }],
415
- ["path", { d: "M2 17h2" }],
416
- ["path", { d: "M2 7h2" }],
417
- ["path", { d: "M20 12h2" }],
418
- ["path", { d: "M20 17h2" }],
419
- ["path", { d: "M20 7h2" }],
420
- ["path", { d: "M7 20v2" }],
421
- ["path", { d: "M7 2v2" }],
422
- [
423
- "rect",
424
- { x: "4", y: "4", width: "16", height: "16", rx: "2" }
425
- ],
426
- ["rect", { x: "8", y: "8", width: "8", height: "8", rx: "1" }]
427
- ];
428
- Icon($$renderer, $18.spread_props([{ name: "cpu" }, props, { iconNode }]));
494
+ const iconData = {
495
+ name: "cpu",
496
+ size: 24,
497
+ node: [
498
+ ["path", { d: "M12 20v2" }],
499
+ ["path", { d: "M12 2v2" }],
500
+ ["path", { d: "M17 20v2" }],
501
+ ["path", { d: "M17 2v2" }],
502
+ ["path", { d: "M2 12h2" }],
503
+ ["path", { d: "M2 17h2" }],
504
+ ["path", { d: "M2 7h2" }],
505
+ ["path", { d: "M20 12h2" }],
506
+ ["path", { d: "M20 17h2" }],
507
+ ["path", { d: "M20 7h2" }],
508
+ ["path", { d: "M7 20v2" }],
509
+ ["path", { d: "M7 2v2" }],
510
+ [
511
+ "rect",
512
+ { x: "4", y: "4", width: "16", height: "16", rx: "2" }
513
+ ],
514
+ ["rect", { x: "8", y: "8", width: "8", height: "8", rx: "1" }]
515
+ ]
516
+ };
517
+ Icon($$renderer, $19.spread_props([props, { icon: iconData }]));
429
518
  }
430
519
  // node_modules/@lucide/svelte/dist/icons/variable.svelte
431
520
  import"svelte/internal/flags/async";
432
- import * as $19 from "svelte/internal/server";
521
+ import * as $20 from "svelte/internal/server";
433
522
  function Variable($$renderer, $$props) {
434
523
  let { $$slots, $$events, ...props } = $$props;
435
- const iconNode = [
436
- ["path", { d: "M8 21s-4-3-4-9 4-9 4-9" }],
437
- ["path", { d: "M16 3s4 3 4 9-4 9-4 9" }],
438
- ["line", { x1: "15", x2: "9", y1: "9", y2: "15" }],
439
- ["line", { x1: "9", x2: "15", y1: "9", y2: "15" }]
440
- ];
441
- Icon($$renderer, $19.spread_props([{ name: "variable" }, props, { iconNode }]));
524
+ const iconData = {
525
+ name: "variable",
526
+ size: 24,
527
+ node: [
528
+ ["path", { d: "M8 21s-4-3-4-9 4-9 4-9" }],
529
+ ["path", { d: "M16 3s4 3 4 9-4 9-4 9" }],
530
+ ["line", { x1: "15", x2: "9", y1: "9", y2: "15" }],
531
+ ["line", { x1: "9", x2: "15", y1: "9", y2: "15" }]
532
+ ]
533
+ };
534
+ Icon($$renderer, $20.spread_props([props, { icon: iconData }]));
442
535
  }
443
536
  // node_modules/@lucide/svelte/dist/icons/key-square.svelte
444
537
  import"svelte/internal/flags/async";
445
- import * as $20 from "svelte/internal/server";
538
+ import * as $21 from "svelte/internal/server";
446
539
  function Key_square($$renderer, $$props) {
447
540
  let { $$slots, $$events, ...props } = $$props;
448
- const iconNode = [
449
- [
450
- "path",
451
- {
452
- 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"
453
- }
454
- ],
455
- ["path", { d: "m14 7 3 3" }],
456
- [
457
- "path",
458
- {
459
- 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"
460
- }
541
+ const iconData = {
542
+ name: "key-square",
543
+ size: 24,
544
+ node: [
545
+ [
546
+ "path",
547
+ {
548
+ 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"
549
+ }
550
+ ],
551
+ ["path", { d: "m14 7 3 3" }],
552
+ [
553
+ "path",
554
+ {
555
+ 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"
556
+ }
557
+ ]
461
558
  ]
462
- ];
463
- Icon($$renderer, $20.spread_props([{ name: "key-square" }, props, { iconNode }]));
559
+ };
560
+ Icon($$renderer, $21.spread_props([props, { icon: iconData }]));
464
561
  }
465
562
  // node_modules/@lucide/svelte/dist/icons/sliders-horizontal.svelte
466
563
  import"svelte/internal/flags/async";
467
- import * as $21 from "svelte/internal/server";
564
+ import * as $22 from "svelte/internal/server";
468
565
  function Sliders_horizontal($$renderer, $$props) {
469
566
  let { $$slots, $$events, ...props } = $$props;
470
- const iconNode = [
471
- ["path", { d: "M10 5H3" }],
472
- ["path", { d: "M12 19H3" }],
473
- ["path", { d: "M14 3v4" }],
474
- ["path", { d: "M16 17v4" }],
475
- ["path", { d: "M21 12h-9" }],
476
- ["path", { d: "M21 19h-5" }],
477
- ["path", { d: "M21 5h-7" }],
478
- ["path", { d: "M8 10v4" }],
479
- ["path", { d: "M8 12H3" }]
480
- ];
481
- Icon($$renderer, $21.spread_props([{ name: "sliders-horizontal" }, props, { iconNode }]));
567
+ const iconData = {
568
+ name: "sliders-horizontal",
569
+ size: 24,
570
+ node: [
571
+ ["path", { d: "M10 5H3" }],
572
+ ["path", { d: "M12 19H3" }],
573
+ ["path", { d: "M14 3v4" }],
574
+ ["path", { d: "M16 17v4" }],
575
+ ["path", { d: "M21 12h-9" }],
576
+ ["path", { d: "M21 19h-5" }],
577
+ ["path", { d: "M21 5h-7" }],
578
+ ["path", { d: "M8 10v4" }],
579
+ ["path", { d: "M8 12H3" }]
580
+ ]
581
+ };
582
+ Icon($$renderer, $22.spread_props([props, { icon: iconData }]));
482
583
  }
483
584
  // node_modules/@lucide/svelte/dist/icons/list-ordered.svelte
484
585
  import"svelte/internal/flags/async";
485
- import * as $22 from "svelte/internal/server";
586
+ import * as $23 from "svelte/internal/server";
486
587
  function List_ordered($$renderer, $$props) {
487
588
  let { $$slots, $$events, ...props } = $$props;
488
- const iconNode = [
489
- ["path", { d: "M11 5h10" }],
490
- ["path", { d: "M11 12h10" }],
491
- ["path", { d: "M11 19h10" }],
492
- ["path", { d: "M4 4h1v5" }],
493
- ["path", { d: "M4 9h2" }],
494
- [
495
- "path",
496
- {
497
- d: "M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02"
498
- }
589
+ const iconData = {
590
+ name: "list-ordered",
591
+ size: 24,
592
+ node: [
593
+ ["path", { d: "M11 5h10" }],
594
+ ["path", { d: "M11 12h10" }],
595
+ ["path", { d: "M11 19h10" }],
596
+ ["path", { d: "M4 4h1v5" }],
597
+ ["path", { d: "M4 9h2" }],
598
+ [
599
+ "path",
600
+ {
601
+ d: "M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02"
602
+ }
603
+ ]
499
604
  ]
500
- ];
501
- Icon($$renderer, $22.spread_props([{ name: "list-ordered" }, props, { iconNode }]));
605
+ };
606
+ Icon($$renderer, $23.spread_props([props, { icon: iconData }]));
502
607
  }
503
608
  // node_modules/@lucide/svelte/dist/icons/boxes.svelte
504
609
  import"svelte/internal/flags/async";
505
- import * as $23 from "svelte/internal/server";
610
+ import * as $24 from "svelte/internal/server";
506
611
  function Boxes($$renderer, $$props) {
507
612
  let { $$slots, $$events, ...props } = $$props;
508
- const iconNode = [
509
- [
510
- "path",
511
- {
512
- 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"
513
- }
514
- ],
515
- ["path", { d: "m7 16.5-4.74-2.85" }],
516
- ["path", { d: "m7 16.5 5-3" }],
517
- ["path", { d: "M7 16.5v5.17" }],
518
- [
519
- "path",
520
- {
521
- 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"
522
- }
523
- ],
524
- ["path", { d: "m17 16.5-5-3" }],
525
- ["path", { d: "m17 16.5 4.74-2.85" }],
526
- ["path", { d: "M17 16.5v5.17" }],
527
- [
528
- "path",
529
- {
530
- 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"
531
- }
532
- ],
533
- ["path", { d: "M12 8 7.26 5.15" }],
534
- ["path", { d: "m12 8 4.74-2.85" }],
535
- ["path", { d: "M12 13.5V8" }]
536
- ];
537
- Icon($$renderer, $23.spread_props([{ name: "boxes" }, props, { iconNode }]));
613
+ const iconData = {
614
+ name: "boxes",
615
+ size: 24,
616
+ node: [
617
+ [
618
+ "path",
619
+ {
620
+ 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"
621
+ }
622
+ ],
623
+ ["path", { d: "m7 16.5-4.74-2.85" }],
624
+ ["path", { d: "m7 16.5 5-3" }],
625
+ ["path", { d: "M7 16.5v5.17" }],
626
+ [
627
+ "path",
628
+ {
629
+ 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"
630
+ }
631
+ ],
632
+ ["path", { d: "m17 16.5-5-3" }],
633
+ ["path", { d: "m17 16.5 4.74-2.85" }],
634
+ ["path", { d: "M17 16.5v5.17" }],
635
+ [
636
+ "path",
637
+ {
638
+ 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"
639
+ }
640
+ ],
641
+ ["path", { d: "M12 8 7.26 5.15" }],
642
+ ["path", { d: "m12 8 4.74-2.85" }],
643
+ ["path", { d: "M12 13.5V8" }]
644
+ ]
645
+ };
646
+ Icon($$renderer, $24.spread_props([props, { icon: iconData }]));
538
647
  }
539
648
  // node_modules/@lucide/svelte/dist/icons/puzzle.svelte
540
649
  import"svelte/internal/flags/async";
541
- import * as $24 from "svelte/internal/server";
650
+ import * as $25 from "svelte/internal/server";
542
651
  function Puzzle($$renderer, $$props) {
543
652
  let { $$slots, $$events, ...props } = $$props;
544
- const iconNode = [
545
- [
546
- "path",
547
- {
548
- 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"
549
- }
653
+ const iconData = {
654
+ name: "puzzle",
655
+ size: 24,
656
+ node: [
657
+ [
658
+ "path",
659
+ {
660
+ 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"
661
+ }
662
+ ]
663
+ ]
664
+ };
665
+ Icon($$renderer, $25.spread_props([props, { icon: iconData }]));
666
+ }
667
+ // node_modules/@lucide/svelte/dist/icons/plug.svelte
668
+ import"svelte/internal/flags/async";
669
+ import * as $26 from "svelte/internal/server";
670
+ function Plug($$renderer, $$props) {
671
+ let { $$slots, $$events, ...props } = $$props;
672
+ const iconData = {
673
+ name: "plug",
674
+ size: 24,
675
+ node: [
676
+ ["path", { d: "M12 22v-5" }],
677
+ ["path", { d: "M15 8V2" }],
678
+ [
679
+ "path",
680
+ {
681
+ d: "M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z"
682
+ }
683
+ ],
684
+ ["path", { d: "M9 8V2" }]
550
685
  ]
551
- ];
552
- Icon($$renderer, $24.spread_props([{ name: "puzzle" }, props, { iconNode }]));
686
+ };
687
+ Icon($$renderer, $26.spread_props([props, { icon: iconData }]));
553
688
  }
554
689
  // src/components/SettingsView.svelte
555
690
  import { flushSync } from "svelte";
556
691
 
557
692
  // src/components/CoinButton.svelte
558
693
  import"svelte/internal/flags/async";
559
- import * as $25 from "svelte/internal/server";
694
+ import * as $27 from "svelte/internal/server";
560
695
  function CoinButton($$renderer, $$props) {
561
696
  let { href = "/avatars" } = $$props;
562
697
  const coinArt = {
@@ -572,52 +707,70 @@ function CoinButton($$renderer, $$props) {
572
707
  "..####.."
573
708
  ]
574
709
  };
575
- $$renderer.push(`<div class="coin-row svelte-1ioj7vz"><span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span> <a class="coin-btn svelte-1ioj7vz"${$25.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">`);
710
+ $$renderer.push(`<div class="coin-row svelte-1ioj7vz"><span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span> <a class="coin-btn svelte-1ioj7vz"${$27.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">`);
576
711
  Avatar($$renderer, { art: coinArt, name: "coin", scale: 3 });
577
712
  $$renderer.push(`<!----></span></a> <span class="pixel-line svelte-1ioj7vz" aria-hidden="true"></span></div>`);
578
713
  }
579
714
 
580
715
  // node_modules/@lucide/svelte/dist/icons/shield-check.svelte
581
716
  import"svelte/internal/flags/async";
582
- import * as $26 from "svelte/internal/server";
717
+ import * as $28 from "svelte/internal/server";
583
718
  function Shield_check($$renderer, $$props) {
584
719
  let { $$slots, $$events, ...props } = $$props;
585
- const iconNode = [
586
- [
587
- "path",
588
- {
589
- 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"
590
- }
591
- ],
592
- ["path", { d: "m9 12 2 2 4-4" }]
593
- ];
594
- Icon($$renderer, $26.spread_props([{ name: "shield-check" }, props, { iconNode }]));
720
+ const iconData = {
721
+ name: "shield-check",
722
+ size: 24,
723
+ node: [
724
+ [
725
+ "path",
726
+ {
727
+ 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"
728
+ }
729
+ ],
730
+ ["path", { d: "m9 12 2 2 4-4" }]
731
+ ]
732
+ };
733
+ Icon($$renderer, $28.spread_props([props, { icon: iconData }]));
595
734
  }
596
735
  // node_modules/@lucide/svelte/dist/icons/gauge.svelte
597
736
  import"svelte/internal/flags/async";
598
- import * as $27 from "svelte/internal/server";
737
+ import * as $29 from "svelte/internal/server";
599
738
  function Gauge($$renderer, $$props) {
600
739
  let { $$slots, $$events, ...props } = $$props;
601
- const iconNode = [
602
- ["path", { d: "m12 14 4-4" }],
603
- ["path", { d: "M3.34 19a10 10 0 1 1 17.32 0" }]
604
- ];
605
- Icon($$renderer, $27.spread_props([{ name: "gauge" }, props, { iconNode }]));
740
+ const iconData = {
741
+ name: "gauge",
742
+ size: 24,
743
+ node: [
744
+ ["path", { d: "m12 14 4-4" }],
745
+ ["path", { d: "M3.34 19a10 10 0 1 1 17.32 0" }]
746
+ ]
747
+ };
748
+ Icon($$renderer, $29.spread_props([props, { icon: iconData }]));
606
749
  }
607
- // node_modules/@lucide/svelte/dist/icons/message-square.svelte
750
+ // node_modules/@lucide/svelte/dist/icons/clipboard-x.svelte
608
751
  import"svelte/internal/flags/async";
609
- import * as $28 from "svelte/internal/server";
610
- function Message_square($$renderer, $$props) {
752
+ import * as $30 from "svelte/internal/server";
753
+ function Clipboard_x($$renderer, $$props) {
611
754
  let { $$slots, $$events, ...props } = $$props;
612
- const iconNode = [
613
- [
614
- "path",
615
- {
616
- d: "M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"
617
- }
755
+ const iconData = {
756
+ name: "clipboard-x",
757
+ size: 24,
758
+ node: [
759
+ [
760
+ "rect",
761
+ { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1" }
762
+ ],
763
+ [
764
+ "path",
765
+ {
766
+ d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"
767
+ }
768
+ ],
769
+ ["path", { d: "m14.5 11.5-5 5" }],
770
+ ["path", { d: "m9.5 11.5 5 5" }]
618
771
  ]
619
- ];
620
- Icon($$renderer, $28.spread_props([{ name: "message-square" }, props, { iconNode }]));
772
+ };
773
+ Icon($$renderer, $30.spread_props([props, { icon: iconData }]));
621
774
  }
622
775
  // src/components/SettingsView.svelte
623
776
  function SettingsView($$renderer, $$props) {
@@ -631,9 +784,14 @@ function SettingsView($$renderer, $$props) {
631
784
  defaultImage,
632
785
  builtinImage,
633
786
  disableBuildCache,
787
+ workspaceUploadEnabled,
634
788
  copyIgnorePatterns,
635
789
  builtinCopyIgnore,
636
790
  claudeConfigDir,
791
+ mcpEnabled,
792
+ mcpToken,
793
+ mcpUrl,
794
+ mcpPrAttribution,
637
795
  gitIdentityEnabled,
638
796
  gitIdentityName,
639
797
  gitIdentityEmail,
@@ -671,6 +829,7 @@ function SettingsView($$renderer, $$props) {
671
829
  let savingPet = false;
672
830
  let petError = null;
673
831
  let shuttingDown = false;
832
+ let insecure = null;
674
833
  function saveOpts(handlers) {
675
834
  return {
676
835
  onPending: handlers.setSaving,
@@ -854,6 +1013,43 @@ function SettingsView($$renderer, $$props) {
854
1013
  flushSync(() => claudeDir = "");
855
1014
  claudeDirFormEl?.requestSubmit();
856
1015
  }
1016
+ let mcp = mcpEnabled;
1017
+ let mcpTokenValue = mcpToken;
1018
+ let savingMcpToggle = false;
1019
+ let mcpToggleError = null;
1020
+ let savingMcpToken = false;
1021
+ let mcpTokenError = null;
1022
+ let mcpCopied = null;
1023
+ const mcpToggleOpts = toggleOpts({
1024
+ set: (v) => mcp = v,
1025
+ setSaving: (v) => savingMcpToggle = v,
1026
+ setError: (v) => mcpToggleError = v,
1027
+ onSuccess: (data) => mcpTokenValue = data?.token ?? ""
1028
+ });
1029
+ const mcpTokenOpts = saveOpts({
1030
+ setSaving: (v) => savingMcpToken = v,
1031
+ setError: (v) => mcpTokenError = v,
1032
+ onSuccess: (data) => mcpTokenValue = data?.token ?? "",
1033
+ confirmMessage: "Regenerate the MCP token? Any agent already configured with the current token will stop working."
1034
+ });
1035
+ let mcpAttribution = mcpPrAttribution;
1036
+ let savingMcpAttribution = false;
1037
+ let mcpAttributionError = null;
1038
+ const mcpAttributionOpts = toggleOpts({
1039
+ set: (v) => mcpAttribution = v,
1040
+ setSaving: (v) => savingMcpAttribution = v,
1041
+ setError: (v) => mcpAttributionError = v
1042
+ });
1043
+ const mcpCommand = $31.derived(() => `claude mcp add --transport http codebay ${mcpUrl} --header "Authorization: Bearer ${mcpTokenValue}"`);
1044
+ async function copyMcp(label, text) {
1045
+ try {
1046
+ await navigator.clipboard.writeText(text);
1047
+ mcpCopied = label;
1048
+ setTimeout(() => mcpCopied = null, 1500);
1049
+ } catch {
1050
+ mcpTokenError = "Could not copy \u2014 select the text and copy it manually.";
1051
+ }
1052
+ }
857
1053
  let gitIdentity = gitIdentityEnabled;
858
1054
  let savingGitToggle = false;
859
1055
  let gitToggleError = null;
@@ -885,6 +1081,14 @@ function SettingsView($$renderer, $$props) {
885
1081
  setSaving: (v) => savingCache = v,
886
1082
  setError: (v) => cacheError = v
887
1083
  });
1084
+ let workspaceUpload = workspaceUploadEnabled;
1085
+ let savingUpload = false;
1086
+ let uploadError = null;
1087
+ const uploadToggleOpts = toggleOpts({
1088
+ set: (v) => workspaceUpload = v,
1089
+ setSaving: (v) => savingUpload = v,
1090
+ setError: (v) => uploadError = v
1091
+ });
888
1092
  let clearing = false;
889
1093
  let clearMsg = null;
890
1094
  let clearError = null;
@@ -1072,7 +1276,7 @@ function SettingsView($$renderer, $$props) {
1072
1276
  manualModelsMsg = "Saved.";
1073
1277
  }
1074
1278
  });
1075
- let litellmBlocker = $29.derived(() => manualTokens ? "Set tokens manually" : manualModelOverride ? "Override models manually" : null);
1279
+ let litellmBlocker = $31.derived(() => manualTokens ? "Set tokens manually" : manualModelOverride ? "Override models manually" : null);
1076
1280
  let hostEnvVars = hostEnvVarsEnabled;
1077
1281
  let savingHostEnvToggle = false;
1078
1282
  let hostEnvToggleError = null;
@@ -1245,33 +1449,41 @@ function SettingsView($$renderer, $$props) {
1245
1449
  },
1246
1450
  $$slots: { default: true }
1247
1451
  });
1248
- $$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">`);
1452
+ $$renderer2.push(`<!----> <main class="content svelte-1n6ht58">`);
1453
+ if (insecure) {
1454
+ $$renderer2.push(`<!--[0--><section class="card svelte-1n6ht58"><div class="row svelte-1n6ht58"><div class="label svelte-1n6ht58">`);
1455
+ Clipboard_x($$renderer2, { size: 20 });
1456
+ $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Copying out of a terminal may not work on this address</div> <div class="desc svelte-1n6ht58">Browsers hand out clipboard access only on a secure origin, and <code class="svelte-1n6ht58">${$31.escape(insecure.origin)}</code> isn't one \u2014 so a copy out of an instance's VS Code
1457
+ terminal reaches nothing (codebay's own terminal falls back to a legacy copy that
1458
+ usually still works). Either open codebay through <code class="svelte-1n6ht58">localhost</code> (<code class="svelte-1n6ht58">${$31.escape(insecure.tunnel)}</code>), or allow this exact origin under <code class="svelte-1n6ht58">chrome://flags/#unsafely-treat-insecure-origin-as-secure</code>.</div></div></div></div></section>`);
1459
+ } else {
1460
+ $$renderer2.push("<!--[-1-->");
1461
+ }
1462
+ $$renderer2.push(`<!--]--> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/defaultMode"><div class="label svelte-1n6ht58">`);
1249
1463
  Terminal($$renderer2, { size: 20 });
1250
1464
  $$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
1251
- can override this per instance when creating one.</div></div></div> <input type="hidden" name="mode"${$29.attr("value", modeChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Default editor mode"><button type="button"${$29.attr_class("mode-btn svelte-1n6ht58", undefined, { active: modeChoice === "ide" })}${$29.attr("aria-pressed", modeChoice === "ide")}${$29.attr("disabled", savingMode, true)}>`);
1465
+ can override this per instance when creating one.</div></div></div> <input type="hidden" name="mode"${$31.attr("value", modeChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Default editor mode"><button type="button"${$31.attr_class("mode-btn svelte-1n6ht58", undefined, { active: modeChoice === "ide" })}${$31.attr("aria-pressed", modeChoice === "ide")}${$31.attr("disabled", savingMode, true)}>`);
1252
1466
  Layout_template($$renderer2, { size: 15 });
1253
- $$renderer2.push(`<!----> Full IDE</button> <button type="button"${$29.attr_class("mode-btn svelte-1n6ht58", undefined, { active: modeChoice === "terminal" })}${$29.attr("aria-pressed", modeChoice === "terminal")}${$29.attr("disabled", savingMode, true)}>`);
1467
+ $$renderer2.push(`<!----> Full IDE</button> <button type="button"${$31.attr_class("mode-btn svelte-1n6ht58", undefined, { active: modeChoice === "terminal" })}${$31.attr("aria-pressed", modeChoice === "terminal")}${$31.attr("disabled", savingMode, true)}>`);
1254
1468
  Terminal($$renderer2, { size: 15 });
1255
1469
  $$renderer2.push(`<!----> Terminal</button></div></form> `);
1256
1470
  if (modeError) {
1257
- $$renderer2.push("<!--[0-->");
1258
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(modeError)}</div></div>`);
1471
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(modeError)}</div></div>`);
1259
1472
  } else {
1260
1473
  $$renderer2.push("<!--[-1-->");
1261
1474
  }
1262
1475
  $$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/claudePermissionMode"><div class="label svelte-1n6ht58">`);
1263
1476
  Shield_check($$renderer2, { size: 20 });
1264
1477
  $$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
1265
- create and rebuild, not to already-running instances.</div></div></div> <input type="hidden" name="mode"${$29.attr("value", permissionChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude permission mode"><!--[-->`);
1266
- const each_array = $29.ensure_array_like(CLAUDE_PERMISSION_MODES);
1478
+ create and rebuild, not to already-running instances.</div></div></div> <input type="hidden" name="mode"${$31.attr("value", permissionChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude permission mode"><!--[-->`);
1479
+ const each_array = $31.ensure_array_like(CLAUDE_PERMISSION_MODES);
1267
1480
  for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
1268
1481
  let option = each_array[$$index];
1269
- $$renderer2.push(`<button type="button"${$29.attr_class("mode-btn svelte-1n6ht58", undefined, { active: permissionChoice === option })}${$29.attr("aria-pressed", permissionChoice === option)}${$29.attr("disabled", savingPermission, true)}>${$29.escape(PERMISSION_LABELS[option])}</button>`);
1482
+ $$renderer2.push(`<button type="button"${$31.attr_class("mode-btn svelte-1n6ht58", undefined, { active: permissionChoice === option })}${$31.attr("aria-pressed", permissionChoice === option)}${$31.attr("disabled", savingPermission, true)}>${$31.escape(PERMISSION_LABELS[option])}</button>`);
1270
1483
  }
1271
1484
  $$renderer2.push(`<!--]--></div></form> `);
1272
1485
  if (permissionError) {
1273
- $$renderer2.push("<!--[0-->");
1274
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(permissionError)}</div></div>`);
1486
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(permissionError)}</div></div>`);
1275
1487
  } else {
1276
1488
  $$renderer2.push("<!--[-1-->");
1277
1489
  }
@@ -1279,31 +1491,29 @@ function SettingsView($$renderer, $$props) {
1279
1491
  Gauge($$renderer2, { size: 20 });
1280
1492
  $$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,
1281
1493
  written to <code class="svelte-1n6ht58">~/.claude/settings.json</code>. Applies on create and rebuild, not to
1282
- already-running instances.</div></div></div> <input type="hidden" name="level"${$29.attr("value", effortChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude effort level"><!--[-->`);
1283
- const each_array_1 = $29.ensure_array_like(CLAUDE_EFFORT_LEVELS);
1494
+ already-running instances.</div></div></div> <input type="hidden" name="level"${$31.attr("value", effortChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude effort level"><!--[-->`);
1495
+ const each_array_1 = $31.ensure_array_like(CLAUDE_EFFORT_LEVELS);
1284
1496
  for (let $$index_1 = 0, $$length = each_array_1.length;$$index_1 < $$length; $$index_1++) {
1285
1497
  let option = each_array_1[$$index_1];
1286
- $$renderer2.push(`<button type="button"${$29.attr_class("mode-btn svelte-1n6ht58", undefined, { active: effortChoice === option })}${$29.attr("aria-pressed", effortChoice === option)}${$29.attr("disabled", savingEffort, true)}>${$29.escape(EFFORT_LABELS[option])}</button>`);
1498
+ $$renderer2.push(`<button type="button"${$31.attr_class("mode-btn svelte-1n6ht58", undefined, { active: effortChoice === option })}${$31.attr("aria-pressed", effortChoice === option)}${$31.attr("disabled", savingEffort, true)}>${$31.escape(EFFORT_LABELS[option])}</button>`);
1287
1499
  }
1288
1500
  $$renderer2.push(`<!--]--></div></form> `);
1289
1501
  if (effortError) {
1290
- $$renderer2.push("<!--[0-->");
1291
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(effortError)}</div></div>`);
1502
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(effortError)}</div></div>`);
1292
1503
  } else {
1293
1504
  $$renderer2.push("<!--[-1-->");
1294
1505
  }
1295
1506
  $$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/claudeOutputStyle"><div class="label svelte-1n6ht58">`);
1296
1507
  Message_square($$renderer2, { size: 20 });
1297
- $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Claude output style</div> <div class="desc svelte-1n6ht58">The output style Claude Code starts new sessions in, written to <code class="svelte-1n6ht58">~/.claude/settings.json</code>. <strong>Default</strong> inherits your host <code class="svelte-1n6ht58">~/.claude/settings.json</code> (including any custom styles); <strong>None</strong> forces it off. Applies on create and rebuild, not to already-running instances.</div></div></div> <input type="hidden" name="style"${$29.attr("value", outputStyleChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude output style"><!--[-->`);
1298
- const each_array_2 = $29.ensure_array_like(CLAUDE_OUTPUT_STYLES);
1508
+ $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Claude output style</div> <div class="desc svelte-1n6ht58">The output style Claude Code starts new sessions in, written to <code class="svelte-1n6ht58">~/.claude/settings.json</code>. <strong>Default</strong> inherits your host <code class="svelte-1n6ht58">~/.claude/settings.json</code> (including any custom styles); <strong>None</strong> forces it off. Applies on create and rebuild, not to already-running instances.</div></div></div> <input type="hidden" name="style"${$31.attr("value", outputStyleChoice)}/> <div class="mode-toggle svelte-1n6ht58" role="group" aria-label="Claude output style"><!--[-->`);
1509
+ const each_array_2 = $31.ensure_array_like(CLAUDE_OUTPUT_STYLES);
1299
1510
  for (let $$index_2 = 0, $$length = each_array_2.length;$$index_2 < $$length; $$index_2++) {
1300
1511
  let option = each_array_2[$$index_2];
1301
- $$renderer2.push(`<button type="button"${$29.attr_class("mode-btn svelte-1n6ht58", undefined, { active: outputStyleChoice === option })}${$29.attr("aria-pressed", outputStyleChoice === option)}${$29.attr("disabled", savingOutputStyle, true)}>${$29.escape(OUTPUT_STYLE_LABELS[option])}</button>`);
1512
+ $$renderer2.push(`<button type="button"${$31.attr_class("mode-btn svelte-1n6ht58", undefined, { active: outputStyleChoice === option })}${$31.attr("aria-pressed", outputStyleChoice === option)}${$31.attr("disabled", savingOutputStyle, true)}>${$31.escape(OUTPUT_STYLE_LABELS[option])}</button>`);
1302
1513
  }
1303
1514
  $$renderer2.push(`<!--]--></div></form> `);
1304
1515
  if (outputStyleError) {
1305
- $$renderer2.push("<!--[0-->");
1306
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(outputStyleError)}</div></div>`);
1516
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(outputStyleError)}</div></div>`);
1307
1517
  } else {
1308
1518
  $$renderer2.push("<!--[-1-->");
1309
1519
  }
@@ -1311,13 +1521,12 @@ function SettingsView($$renderer, $$props) {
1311
1521
  Container($$renderer2, { size: 20 });
1312
1522
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Default container image `);
1313
1523
  if (dockerArch) {
1314
- $$renderer2.push("<!--[0-->");
1315
- $$renderer2.push(`<span class="arch svelte-1n6ht58" title="Docker daemon architecture">${$29.escape(dockerArch)}</span>`);
1524
+ $$renderer2.push(`<!--[0--><span class="arch svelte-1n6ht58" title="Docker daemon architecture">${$31.escape(dockerArch)}</span>`);
1316
1525
  } else {
1317
1526
  $$renderer2.push("<!--[-1-->");
1318
1527
  }
1319
1528
  $$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">Used only when a project folder ships no devcontainer.json. Takes effect for instances
1320
- created from now on.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="image" class="image-input svelte-1n6ht58"${$29.attr("value", image)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="mcr.microsoft.com/devcontainers/base:ubuntu"/> `);
1529
+ created from now on.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="image" class="image-input svelte-1n6ht58"${$31.attr("value", image)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="mcr.microsoft.com/devcontainers/base:ubuntu"/> `);
1321
1530
  Button($$renderer2, {
1322
1531
  type: "submit",
1323
1532
  disabled: savingImage,
@@ -1332,26 +1541,22 @@ function SettingsView($$renderer, $$props) {
1332
1541
  icon: Rotate_ccw,
1333
1542
  disabled: savingImage,
1334
1543
  onclick: resetImage,
1335
- title: `Reset to default (${$29.stringify(builtinImage)})`,
1544
+ title: `Reset to default (${$31.stringify(builtinImage)})`,
1336
1545
  "aria-label": "Reset to default image"
1337
1546
  });
1338
1547
  $$renderer2.push(`<!----></div> <div class="desc tip svelte-1n6ht58">`);
1339
1548
  if (dockerArch) {
1340
- $$renderer2.push("<!--[0-->");
1341
- $$renderer2.push(`Your Docker daemon runs on <strong>${$29.escape(dockerArch)}</strong> \u2014 pick an image that publishes
1342
- an <strong>${$29.escape(dockerArch)}</strong> manifest, or the pull will fail.`);
1549
+ $$renderer2.push(`<!--[0-->Your Docker daemon runs on <strong>${$31.escape(dockerArch)}</strong> \u2014 pick an image that publishes
1550
+ an <strong>${$31.escape(dockerArch)}</strong> manifest, or the pull will fail.`);
1343
1551
  } else {
1344
- $$renderer2.push("<!--[-1-->");
1345
- $$renderer2.push(`Pick an image whose manifest covers your Docker daemon's architecture, or the pull will
1552
+ $$renderer2.push(`<!--[-1-->Pick an image whose manifest covers your Docker daemon's architecture, or the pull will
1346
1553
  fail.`);
1347
1554
  }
1348
1555
  $$renderer2.push(`<!--]--></div> `);
1349
1556
  if (imageError) {
1350
- $$renderer2.push("<!--[0-->");
1351
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(imageError)}</div>`);
1557
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(imageError)}</div>`);
1352
1558
  } else if (imageSaved) {
1353
- $$renderer2.push("<!--[1-->");
1354
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
1559
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">Saved.</div>`);
1355
1560
  } else {
1356
1561
  $$renderer2.push("<!--[-1-->");
1357
1562
  }
@@ -1359,7 +1564,7 @@ function SettingsView($$renderer, $$props) {
1359
1564
  Folder_minus($$renderer2, { size: 20 });
1360
1565
  $$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
1361
1566
  new instance's workspace. Leave blank to copy everything. Only applies to local
1362
- 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"${$29.attr("value", copyIgnore)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="node_modules, .venv, dist"/> `);
1567
+ 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"${$31.attr("value", copyIgnore)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="node_modules, .venv, dist"/> `);
1363
1568
  Button($$renderer2, {
1364
1569
  type: "submit",
1365
1570
  disabled: savingCopyIgnore,
@@ -1374,23 +1579,31 @@ function SettingsView($$renderer, $$props) {
1374
1579
  icon: Rotate_ccw,
1375
1580
  disabled: savingCopyIgnore,
1376
1581
  onclick: resetCopyIgnore,
1377
- title: `Reset to default (${$29.stringify(builtinCopyIgnore)})`,
1582
+ title: `Reset to default (${$31.stringify(builtinCopyIgnore)})`,
1378
1583
  "aria-label": "Reset to default copy-ignore patterns"
1379
1584
  });
1380
1585
  $$renderer2.push(`<!----></div> `);
1381
1586
  if (copyIgnoreError) {
1382
- $$renderer2.push("<!--[0-->");
1383
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(copyIgnoreError)}</div>`);
1587
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(copyIgnoreError)}</div>`);
1384
1588
  } else if (copyIgnoreSaved) {
1385
- $$renderer2.push("<!--[1-->");
1386
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
1589
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">Saved.</div>`);
1590
+ } else {
1591
+ $$renderer2.push("<!--[-1-->");
1592
+ }
1593
+ $$renderer2.push(`<!--]--></form></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/workspaceUploadToggle"><div class="label svelte-1n6ht58">`);
1594
+ Upload($$renderer2, { size: 20 });
1595
+ $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Drop files into the workspace</div> <div class="desc svelte-1n6ht58">Drag-and-drop or paste files and images onto an instance to save them under <code class="svelte-1n6ht58">codebay-inbox/</code> in its workspace (git-excluded). The in-container path is shown
1596
+ so Claude can Read it. Turn off to drop straight into VS Code's explorer instead. Off by
1597
+ default.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", workspaceUpload, true)}${$31.attr("disabled", savingUpload, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1598
+ if (uploadError) {
1599
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(uploadError)}</div></div>`);
1387
1600
  } else {
1388
1601
  $$renderer2.push("<!--[-1-->");
1389
1602
  }
1390
- $$renderer2.push(`<!--]--></form></section> <section class="card svelte-1n6ht58"><form class="row image-row svelte-1n6ht58" method="POST" action="?/claudeConfigDir"><div class="label svelte-1n6ht58">`);
1603
+ $$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row image-row svelte-1n6ht58" method="POST" action="?/claudeConfigDir"><div class="label svelte-1n6ht58">`);
1391
1604
  Folder_cog($$renderer2, { size: 20 });
1392
1605
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Claude config directory</div> <div class="desc svelte-1n6ht58">Host directory the Claude Code injections read from \u2014 credentials, statusLine, output
1393
- styles, and global skills / <code class="svelte-1n6ht58">CLAUDE.md</code>. Leave blank to use <code class="svelte-1n6ht58">~/.claude</code>. Takes effect for instances created from now on.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="dir" class="image-input svelte-1n6ht58"${$29.attr("value", claudeDir)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="~/.claude"/> `);
1606
+ styles, and global skills / <code class="svelte-1n6ht58">CLAUDE.md</code>. Leave blank to use <code class="svelte-1n6ht58">~/.claude</code>. Takes effect for instances created from now on.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="text" name="dir" class="image-input svelte-1n6ht58"${$31.attr("value", claudeDir)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="~/.claude"/> `);
1394
1607
  Button($$renderer2, {
1395
1608
  type: "submit",
1396
1609
  disabled: savingClaudeDir,
@@ -1410,30 +1623,83 @@ function SettingsView($$renderer, $$props) {
1410
1623
  });
1411
1624
  $$renderer2.push(`<!----></div> `);
1412
1625
  if (claudeDirError) {
1413
- $$renderer2.push("<!--[0-->");
1414
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(claudeDirError)}</div>`);
1626
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(claudeDirError)}</div>`);
1415
1627
  } else if (claudeDirSaved) {
1416
- $$renderer2.push("<!--[1-->");
1417
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
1628
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">Saved.</div>`);
1629
+ } else {
1630
+ $$renderer2.push("<!--[-1-->");
1631
+ }
1632
+ $$renderer2.push(`<!--]--></form></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/mcpToggle"><div class="label svelte-1n6ht58">`);
1633
+ Plug($$renderer2, { size: 20 });
1634
+ $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">MCP server</div> <div class="desc svelte-1n6ht58">Expose Codebay to other AI agents over MCP, so they can create sandboxes, run Claude
1635
+ Code in them non-interactively and read back the result. Off by default; the endpoint
1636
+ 404s until you turn it on, then authenticates with the bearer token below.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", mcp, true)}${$31.attr("disabled", savingMcpToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1637
+ if (mcpToggleError) {
1638
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(mcpToggleError)}</div></div>`);
1639
+ } else {
1640
+ $$renderer2.push("<!--[-1-->");
1641
+ }
1642
+ $$renderer2.push(`<!--]--> `);
1643
+ if (mcp) {
1644
+ $$renderer2.push(`<!--[0--><div class="row divided svelte-1n6ht58"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Token</div> <div class="desc svelte-1n6ht58">Anything holding this token can create containers and run agents with your GitHub
1645
+ and Claude credentials. Treat it like a password.</div></div></div> <div class="model-fields svelte-1n6ht58"><label class="model-row svelte-1n6ht58"><span class="model-label svelte-1n6ht58">Bearer</span> <input type="text" class="image-input svelte-1n6ht58"${$31.attr("value", mcpTokenValue)} readonly="" spellcheck="false"/></label> <div class="mcp-actions svelte-1n6ht58">`);
1646
+ Button($$renderer2, {
1647
+ type: "button",
1648
+ onclick: () => copyMcp("token", mcpTokenValue),
1649
+ children: ($$renderer3) => {
1650
+ $$renderer3.push(`<!---->${$31.escape(mcpCopied === "token" ? "Copied" : "Copy token")}`);
1651
+ },
1652
+ $$slots: { default: true }
1653
+ });
1654
+ $$renderer2.push(`<!----> `);
1655
+ Button($$renderer2, {
1656
+ type: "button",
1657
+ onclick: () => copyMcp("command", mcpCommand()),
1658
+ children: ($$renderer3) => {
1659
+ $$renderer3.push(`<!---->${$31.escape(mcpCopied === "command" ? "Copied" : "Copy claude mcp add")}`);
1660
+ },
1661
+ $$slots: { default: true }
1662
+ });
1663
+ $$renderer2.push(`<!----> <form method="POST" action="?/mcpRegenerateToken">`);
1664
+ Button($$renderer2, {
1665
+ type: "submit",
1666
+ disabled: savingMcpToken,
1667
+ children: ($$renderer3) => {
1668
+ $$renderer3.push(`<!---->${$31.escape(savingMcpToken ? "Regenerating\u2026" : "Regenerate")}`);
1669
+ },
1670
+ $$slots: { default: true }
1671
+ });
1672
+ $$renderer2.push(`<!----></form></div> <code class="mcp-command svelte-1n6ht58">${$31.escape(mcpCommand())}</code> `);
1673
+ if (mcpTokenError) {
1674
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(mcpTokenError)}</div>`);
1675
+ } else {
1676
+ $$renderer2.push("<!--[-1-->");
1677
+ }
1678
+ $$renderer2.push(`<!--]--></div></div> <form class="row divided svelte-1n6ht58" method="POST" action="?/mcpPrAttributionToggle"><div class="label svelte-1n6ht58"><div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Credit Codebay on pull requests</div> <div class="desc svelte-1n6ht58">Append a one-line footer to the body of every pull request an agent opens through <code class="svelte-1n6ht58">create_pr</code>. Off by default \u2014 an attribution line on your PRs is yours to
1679
+ opt into.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", mcpAttribution, true)}${$31.attr("disabled", savingMcpAttribution, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1680
+ if (mcpAttributionError) {
1681
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(mcpAttributionError)}</div></div>`);
1682
+ } else {
1683
+ $$renderer2.push("<!--[-1-->");
1684
+ }
1685
+ $$renderer2.push(`<!--]-->`);
1418
1686
  } else {
1419
1687
  $$renderer2.push("<!--[-1-->");
1420
1688
  }
1421
- $$renderer2.push(`<!--]--></form></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/gitIdentityToggle"><div class="label svelte-1n6ht58">`);
1689
+ $$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/gitIdentityToggle"><div class="label svelte-1n6ht58">`);
1422
1690
  User_cog($$renderer2, { size: 20 });
1423
1691
  $$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
1424
1692
  new container, taking precedence over the host's own git config. When off, each container
1425
- falls back to the host's identity.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$29.attr("checked", gitIdentity, true)}${$29.attr("disabled", savingGitToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1693
+ falls back to the host's identity.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", gitIdentity, true)}${$31.attr("disabled", savingGitToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1426
1694
  if (gitToggleError) {
1427
- $$renderer2.push("<!--[0-->");
1428
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(gitToggleError)}</div></div>`);
1695
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(gitToggleError)}</div></div>`);
1429
1696
  } else {
1430
1697
  $$renderer2.push("<!--[-1-->");
1431
1698
  }
1432
1699
  $$renderer2.push(`<!--]--> `);
1433
1700
  if (gitIdentity) {
1434
- $$renderer2.push("<!--[0-->");
1435
- $$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
1436
- 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"${$29.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"${$29.attr("value", gitEmail)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="jane@example.com"/></label> <div class="model-save-row svelte-1n6ht58">`);
1701
+ $$renderer2.push(`<!--[0--><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
1702
+ 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"${$31.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"${$31.attr("value", gitEmail)} spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="jane@example.com"/></label> <div class="model-save-row svelte-1n6ht58">`);
1437
1703
  Button($$renderer2, {
1438
1704
  type: "submit",
1439
1705
  disabled: savingGitIdentity,
@@ -1444,11 +1710,9 @@ function SettingsView($$renderer, $$props) {
1444
1710
  });
1445
1711
  $$renderer2.push(`<!----></div></div> `);
1446
1712
  if (gitIdentityError) {
1447
- $$renderer2.push("<!--[0-->");
1448
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(gitIdentityError)}</div>`);
1713
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(gitIdentityError)}</div>`);
1449
1714
  } else if (gitIdentitySaved) {
1450
- $$renderer2.push("<!--[1-->");
1451
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">Saved.</div>`);
1715
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">Saved.</div>`);
1452
1716
  } else {
1453
1717
  $$renderer2.push("<!--[-1-->");
1454
1718
  }
@@ -1459,33 +1723,30 @@ function SettingsView($$renderer, $$props) {
1459
1723
  $$renderer2.push(`<!--]--></section> <section class="card svelte-1n6ht58"><form class="row svelte-1n6ht58" method="POST" action="?/disableBuildCache"><div class="label svelte-1n6ht58">`);
1460
1724
  Layers($$renderer2, { size: 20 });
1461
1725
  $$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
1462
- 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"${$29.attr("checked", noCache, true)}${$29.attr("disabled", savingCache, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1726
+ 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"${$31.attr("checked", noCache, true)}${$31.attr("disabled", savingCache, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1463
1727
  if (cacheError) {
1464
- $$renderer2.push("<!--[0-->");
1465
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(cacheError)}</div></div>`);
1728
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(cacheError)}</div></div>`);
1466
1729
  } else {
1467
1730
  $$renderer2.push("<!--[-1-->");
1468
1731
  }
1469
1732
  $$renderer2.push(`<!--]--> <form class="row divided svelte-1n6ht58" method="POST" action="?/clearBuildCache"><div class="label svelte-1n6ht58">`);
1470
- Trash_2($$renderer2, { size: 20 });
1733
+ Trash($$renderer2, { size: 20 });
1471
1734
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Clear build cache</div> <div class="desc svelte-1n6ht58">Purge Docker's BuildKit layer cache now, so the next build runs uncached. Doesn't
1472
1735
  remove pulled images.</div> `);
1473
1736
  if (clearError) {
1474
- $$renderer2.push("<!--[0-->");
1475
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(clearError)}</div>`);
1737
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(clearError)}</div>`);
1476
1738
  } else if (clearMsg) {
1477
- $$renderer2.push("<!--[1-->");
1478
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(clearMsg)}</div>`);
1739
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(clearMsg)}</div>`);
1479
1740
  } else {
1480
1741
  $$renderer2.push("<!--[-1-->");
1481
1742
  }
1482
1743
  $$renderer2.push(`<!--]--></div></div> `);
1483
1744
  Button($$renderer2, {
1484
1745
  type: "submit",
1485
- icon: Trash_2,
1746
+ icon: Trash,
1486
1747
  disabled: clearing,
1487
1748
  children: ($$renderer3) => {
1488
- $$renderer3.push(`<!---->${$29.escape(clearing ? "Clearing\u2026" : "Clear cache")}`);
1749
+ $$renderer3.push(`<!---->${$31.escape(clearing ? "Clearing\u2026" : "Clear cache")}`);
1489
1750
  },
1490
1751
  $$slots: { default: true }
1491
1752
  });
@@ -1494,11 +1755,9 @@ function SettingsView($$renderer, $$props) {
1494
1755
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Rebuild running containers (no cache)</div> <div class="desc svelte-1n6ht58">Rebuild every currently-running instance from scratch, without using any cached image
1495
1756
  layers. In-container edits are kept; stopped instances are left alone.</div> `);
1496
1757
  if (rebuildError) {
1497
- $$renderer2.push("<!--[0-->");
1498
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(rebuildError)}</div>`);
1758
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(rebuildError)}</div>`);
1499
1759
  } else if (rebuildMsg) {
1500
- $$renderer2.push("<!--[1-->");
1501
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(rebuildMsg)}</div>`);
1760
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(rebuildMsg)}</div>`);
1502
1761
  } else {
1503
1762
  $$renderer2.push("<!--[-1-->");
1504
1763
  }
@@ -1508,43 +1767,38 @@ function SettingsView($$renderer, $$props) {
1508
1767
  icon: Hammer,
1509
1768
  disabled: rebuilding,
1510
1769
  children: ($$renderer3) => {
1511
- $$renderer3.push(`<!---->${$29.escape(rebuilding ? "Starting\u2026" : "Rebuild all")}`);
1770
+ $$renderer3.push(`<!---->${$31.escape(rebuilding ? "Starting\u2026" : "Rebuild all")}`);
1512
1771
  },
1513
1772
  $$slots: { default: true }
1514
1773
  });
1515
- $$renderer2.push(`<!----></form></section> <section${$29.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": customEndpoint })}><form class="row svelte-1n6ht58" method="POST" action="?/manualTokensToggle"><div class="label svelte-1n6ht58">`);
1774
+ $$renderer2.push(`<!----></form></section> <section${$31.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": customEndpoint })}><form class="row svelte-1n6ht58" method="POST" action="?/manualTokensToggle"><div class="label svelte-1n6ht58">`);
1516
1775
  Key_round($$renderer2, { size: 20 });
1517
1776
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Set tokens manually `);
1518
1777
  if (customEndpoint) {
1519
- $$renderer2.push("<!--[0-->");
1520
- $$renderer2.push(`<span class="arch svelte-1n6ht58" title="Disabled while LiteLLM + Bedrock mode is on">disabled</span>`);
1778
+ $$renderer2.push(`<!--[0--><span class="arch svelte-1n6ht58" title="Disabled while LiteLLM + Bedrock mode is on">disabled</span>`);
1521
1779
  } else {
1522
1780
  $$renderer2.push("<!--[-1-->");
1523
1781
  }
1524
1782
  $$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">`);
1525
1783
  if (customEndpoint) {
1526
- $$renderer2.push("<!--[0-->");
1527
- $$renderer2.push(`Not available while LiteLLM + Bedrock mode is enabled \u2014 Claude credentials are
1784
+ $$renderer2.push(`<!--[0-->Not available while LiteLLM + Bedrock mode is enabled \u2014 Claude credentials are
1528
1785
  provided by the LiteLLM endpoint instead.`);
1529
1786
  } else {
1530
- $$renderer2.push("<!--[-1-->");
1531
- $$renderer2.push(`Provide GitHub and Claude Code tokens yourself instead of discovering them from this
1787
+ $$renderer2.push(`<!--[-1-->Provide GitHub and Claude Code tokens yourself instead of discovering them from this
1532
1788
  machine. Useful on a headless server or when signed in as a different identity. A
1533
1789
  token set here is injected into every new container and overrides host credential
1534
1790
  discovery.`);
1535
1791
  }
1536
- $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$29.attr("checked", manualTokens, true)}${$29.attr("disabled", savingManualToggle || customEndpoint, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1792
+ $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", manualTokens, true)}${$31.attr("disabled", savingManualToggle || customEndpoint, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1537
1793
  if (manualToggleError) {
1538
- $$renderer2.push("<!--[0-->");
1539
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(manualToggleError)}</div></div>`);
1794
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(manualToggleError)}</div></div>`);
1540
1795
  } else {
1541
1796
  $$renderer2.push("<!--[-1-->");
1542
1797
  }
1543
1798
  $$renderer2.push(`<!--]--> `);
1544
1799
  if (manualTokens && !customEndpoint) {
1545
- $$renderer2.push("<!--[0-->");
1546
- $$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
1547
- 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"${$29.attr("value", githubToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$29.attr("placeholder", ghSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "ghp_\u2026 / gho_\u2026")}/> `);
1800
+ $$renderer2.push(`<!--[0--><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
1801
+ 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"${$31.attr("value", githubToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$31.attr("placeholder", ghSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "ghp_\u2026 / gho_\u2026")}/> `);
1548
1802
  Button($$renderer2, {
1549
1803
  type: "submit",
1550
1804
  disabled: savingGithub,
@@ -1555,18 +1809,16 @@ function SettingsView($$renderer, $$props) {
1555
1809
  });
1556
1810
  $$renderer2.push(`<!----></div> `);
1557
1811
  if (githubError) {
1558
- $$renderer2.push("<!--[0-->");
1559
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(githubError)}</div>`);
1812
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(githubError)}</div>`);
1560
1813
  } else if (githubMsg) {
1561
- $$renderer2.push("<!--[1-->");
1562
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(githubMsg)}</div>`);
1814
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(githubMsg)}</div>`);
1563
1815
  } else {
1564
1816
  $$renderer2.push("<!--[-1-->");
1565
1817
  }
1566
1818
  $$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
1567
1819
  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
1568
1820
  the first <code class="svelte-1n6ht58">claude</code> to refresh it signs the other one out. Leave blank and Save
1569
- to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="claudeToken" class="image-input svelte-1n6ht58"${$29.attr("value", claudeToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$29.attr("placeholder", claudeSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "sk-ant-oat\u2026")}/> `);
1821
+ to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="claudeToken" class="image-input svelte-1n6ht58"${$31.attr("value", claudeToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$31.attr("placeholder", claudeSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "sk-ant-oat\u2026")}/> `);
1570
1822
  Button($$renderer2, {
1571
1823
  type: "submit",
1572
1824
  disabled: savingClaude,
@@ -1577,11 +1829,9 @@ function SettingsView($$renderer, $$props) {
1577
1829
  });
1578
1830
  $$renderer2.push(`<!----></div> `);
1579
1831
  if (claudeError) {
1580
- $$renderer2.push("<!--[0-->");
1581
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(claudeError)}</div>`);
1832
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(claudeError)}</div>`);
1582
1833
  } else if (claudeMsg) {
1583
- $$renderer2.push("<!--[1-->");
1584
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(claudeMsg)}</div>`);
1834
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(claudeMsg)}</div>`);
1585
1835
  } else {
1586
1836
  $$renderer2.push("<!--[-1-->");
1587
1837
  }
@@ -1589,37 +1839,32 @@ function SettingsView($$renderer, $$props) {
1589
1839
  } else {
1590
1840
  $$renderer2.push("<!--[-1-->");
1591
1841
  }
1592
- $$renderer2.push(`<!--]--></section> <section${$29.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": litellmBlocker() })}><form class="row svelte-1n6ht58" method="POST" action="?/customEndpointToggle"><div class="label svelte-1n6ht58">`);
1842
+ $$renderer2.push(`<!--]--></section> <section${$31.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": litellmBlocker() })}><form class="row svelte-1n6ht58" method="POST" action="?/customEndpointToggle"><div class="label svelte-1n6ht58">`);
1593
1843
  Key_round($$renderer2, { size: 20 });
1594
1844
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">LiteLLM + Bedrock `);
1595
1845
  if (litellmBlocker()) {
1596
- $$renderer2.push("<!--[0-->");
1597
- $$renderer2.push(`<span class="arch svelte-1n6ht58"${$29.attr("title", `Disabled while ${$29.stringify(litellmBlocker())} is on`)}>disabled</span>`);
1846
+ $$renderer2.push(`<!--[0--><span class="arch svelte-1n6ht58"${$31.attr("title", `Disabled while ${$31.stringify(litellmBlocker())} is on`)}>disabled</span>`);
1598
1847
  } else {
1599
1848
  $$renderer2.push("<!--[-1-->");
1600
1849
  }
1601
1850
  $$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">`);
1602
1851
  if (litellmBlocker()) {
1603
- $$renderer2.push("<!--[0-->");
1604
- $$renderer2.push(`Not available while "${$29.escape(litellmBlocker())}" is enabled \u2014 these modes are mutually
1852
+ $$renderer2.push(`<!--[0-->Not available while "${$31.escape(litellmBlocker())}" is enabled \u2014 these modes are mutually
1605
1853
  incompatible.`);
1606
1854
  } else {
1607
- $$renderer2.push("<!--[-1-->");
1608
- $$renderer2.push(`Route <code class="svelte-1n6ht58">claude</code> through a LiteLLM proxy fronting AWS Bedrock instead of Anthropic's
1855
+ $$renderer2.push(`<!--[-1-->Route <code class="svelte-1n6ht58">claude</code> through a LiteLLM proxy fronting AWS Bedrock instead of Anthropic's
1609
1856
  default API. When enabled, the Bedrock endpoint variables are injected into every new
1610
1857
  container, host OAuth credentials are not used, and "Set tokens manually" is disabled.`);
1611
1858
  }
1612
- $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$29.attr("checked", customEndpoint, true)}${$29.attr("disabled", savingCustomToggle || !!litellmBlocker(), true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1859
+ $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", customEndpoint, true)}${$31.attr("disabled", savingCustomToggle || !!litellmBlocker(), true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1613
1860
  if (customToggleError) {
1614
- $$renderer2.push("<!--[0-->");
1615
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(customToggleError)}</div></div>`);
1861
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(customToggleError)}</div></div>`);
1616
1862
  } else {
1617
1863
  $$renderer2.push("<!--[-1-->");
1618
1864
  }
1619
1865
  $$renderer2.push(`<!--]--> `);
1620
1866
  if (customEndpoint) {
1621
- $$renderer2.push("<!--[0-->");
1622
- $$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"${$29.attr("value", customBaseUrl)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="https://litellm.example.com/bedrock"/> `);
1867
+ $$renderer2.push(`<!--[0--><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"${$31.attr("value", customBaseUrl)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="https://litellm.example.com/bedrock"/> `);
1623
1868
  Button($$renderer2, {
1624
1869
  type: "submit",
1625
1870
  disabled: savingCustomBaseUrl,
@@ -1630,16 +1875,14 @@ function SettingsView($$renderer, $$props) {
1630
1875
  });
1631
1876
  $$renderer2.push(`<!----></div> `);
1632
1877
  if (customBaseUrlError) {
1633
- $$renderer2.push("<!--[0-->");
1634
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(customBaseUrlError)}</div>`);
1878
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(customBaseUrlError)}</div>`);
1635
1879
  } else if (customBaseUrlMsg) {
1636
- $$renderer2.push("<!--[1-->");
1637
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(customBaseUrlMsg)}</div>`);
1880
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(customBaseUrlMsg)}</div>`);
1638
1881
  } else {
1639
1882
  $$renderer2.push("<!--[-1-->");
1640
1883
  }
1641
1884
  $$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
1642
- Save to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="token" class="image-input svelte-1n6ht58"${$29.attr("value", customToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$29.attr("placeholder", customTokenSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "sk-\u2026")}/> `);
1885
+ Save to clear.</div></div></div> <div class="image-controls svelte-1n6ht58"><input type="password" name="token" class="image-input svelte-1n6ht58"${$31.attr("value", customToken)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"${$31.attr("placeholder", customTokenSaved ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 (saved)" : "sk-\u2026")}/> `);
1643
1886
  Button($$renderer2, {
1644
1887
  type: "submit",
1645
1888
  disabled: savingCustomToken,
@@ -1650,16 +1893,14 @@ function SettingsView($$renderer, $$props) {
1650
1893
  });
1651
1894
  $$renderer2.push(`<!----></div> `);
1652
1895
  if (customTokenError) {
1653
- $$renderer2.push("<!--[0-->");
1654
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(customTokenError)}</div>`);
1896
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(customTokenError)}</div>`);
1655
1897
  } else if (customTokenMsg) {
1656
- $$renderer2.push("<!--[1-->");
1657
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(customTokenMsg)}</div>`);
1898
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(customTokenMsg)}</div>`);
1658
1899
  } else {
1659
1900
  $$renderer2.push("<!--[-1-->");
1660
1901
  }
1661
1902
  $$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
1662
- 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"${$29.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"${$29.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"${$29.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"${$29.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"${$29.attr("value", customDefaultModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58">`);
1903
+ 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"${$31.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"${$31.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"${$31.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"${$31.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"${$31.attr("value", customDefaultModel)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58">`);
1663
1904
  Button($$renderer2, {
1664
1905
  type: "submit",
1665
1906
  disabled: savingCustomModels,
@@ -1670,11 +1911,9 @@ function SettingsView($$renderer, $$props) {
1670
1911
  });
1671
1912
  $$renderer2.push(`<!----></div></div> `);
1672
1913
  if (customModelsError) {
1673
- $$renderer2.push("<!--[0-->");
1674
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(customModelsError)}</div>`);
1914
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(customModelsError)}</div>`);
1675
1915
  } else if (customModelsMsg) {
1676
- $$renderer2.push("<!--[1-->");
1677
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(customModelsMsg)}</div>`);
1916
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(customModelsMsg)}</div>`);
1678
1917
  } else {
1679
1918
  $$renderer2.push("<!--[-1-->");
1680
1919
  }
@@ -1682,36 +1921,31 @@ function SettingsView($$renderer, $$props) {
1682
1921
  } else {
1683
1922
  $$renderer2.push("<!--[-1-->");
1684
1923
  }
1685
- $$renderer2.push(`<!--]--></section> <section${$29.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": customEndpoint })}><form class="row svelte-1n6ht58" method="POST" action="?/manualModelToggle"><div class="label svelte-1n6ht58">`);
1924
+ $$renderer2.push(`<!--]--></section> <section${$31.attr_class("card svelte-1n6ht58", undefined, { "disabled-card": customEndpoint })}><form class="row svelte-1n6ht58" method="POST" action="?/manualModelToggle"><div class="label svelte-1n6ht58">`);
1686
1925
  Cpu($$renderer2, { size: 18 });
1687
1926
  $$renderer2.push(`<!----> <div class="text svelte-1n6ht58"><div class="name svelte-1n6ht58">Override models manually `);
1688
1927
  if (customEndpoint) {
1689
- $$renderer2.push("<!--[0-->");
1690
- $$renderer2.push(`<span class="arch svelte-1n6ht58" title="Disabled while LiteLLM + Bedrock is on">disabled</span>`);
1928
+ $$renderer2.push(`<!--[0--><span class="arch svelte-1n6ht58" title="Disabled while LiteLLM + Bedrock is on">disabled</span>`);
1691
1929
  } else {
1692
1930
  $$renderer2.push("<!--[-1-->");
1693
1931
  }
1694
1932
  $$renderer2.push(`<!--]--></div> <div class="desc svelte-1n6ht58">`);
1695
1933
  if (customEndpoint) {
1696
- $$renderer2.push("<!--[0-->");
1697
- $$renderer2.push(`Not available while "LiteLLM + Bedrock" is enabled \u2014 these modes are mutually
1934
+ $$renderer2.push(`<!--[0-->Not available while "LiteLLM + Bedrock" is enabled \u2014 these modes are mutually
1698
1935
  incompatible.`);
1699
1936
  } else {
1700
- $$renderer2.push("<!--[-1-->");
1701
- $$renderer2.push(`Pin which model <code class="svelte-1n6ht58">claude</code> uses on the standard (subscription) path. Only
1937
+ $$renderer2.push(`<!--[-1-->Pin which model <code class="svelte-1n6ht58">claude</code> uses on the standard (subscription) path. Only
1702
1938
  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.`);
1703
1939
  }
1704
- $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$29.attr("checked", manualModelOverride, true)}${$29.attr("disabled", savingManualModelToggle || customEndpoint, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1940
+ $$renderer2.push(`<!--]--></div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", manualModelOverride, true)}${$31.attr("disabled", savingManualModelToggle || customEndpoint, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1705
1941
  if (manualModelToggleError) {
1706
- $$renderer2.push("<!--[0-->");
1707
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(manualModelToggleError)}</div></div>`);
1942
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(manualModelToggleError)}</div></div>`);
1708
1943
  } else {
1709
1944
  $$renderer2.push("<!--[-1-->");
1710
1945
  }
1711
1946
  $$renderer2.push(`<!--]--> `);
1712
1947
  if (manualModelOverride) {
1713
- $$renderer2.push("<!--[0-->");
1714
- $$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"${$29.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"${$29.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"${$29.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"${$29.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"${$29.attr("value", manualDefault)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58">`);
1948
+ $$renderer2.push(`<!--[0--><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"${$31.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"${$31.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"${$31.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"${$31.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"${$31.attr("value", manualDefault)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/></label> <div class="model-save-row svelte-1n6ht58">`);
1715
1949
  Button($$renderer2, {
1716
1950
  type: "submit",
1717
1951
  disabled: savingManualModels,
@@ -1722,11 +1956,9 @@ function SettingsView($$renderer, $$props) {
1722
1956
  });
1723
1957
  $$renderer2.push(`<!----></div></div> `);
1724
1958
  if (manualModelsError) {
1725
- $$renderer2.push("<!--[0-->");
1726
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(manualModelsError)}</div>`);
1959
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(manualModelsError)}</div>`);
1727
1960
  } else if (manualModelsMsg) {
1728
- $$renderer2.push("<!--[1-->");
1729
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(manualModelsMsg)}</div>`);
1961
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(manualModelsMsg)}</div>`);
1730
1962
  } else {
1731
1963
  $$renderer2.push("<!--[-1-->");
1732
1964
  }
@@ -1738,43 +1970,40 @@ function SettingsView($$renderer, $$props) {
1738
1970
  Variable($$renderer2, { size: 20 });
1739
1971
  $$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
1740
1972
  interactive shells. Values are read from this process's own environment at container
1741
- 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"${$29.attr("checked", hostEnvVars, true)}${$29.attr("disabled", savingHostEnvToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1973
+ 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"${$31.attr("checked", hostEnvVars, true)}${$31.attr("disabled", savingHostEnvToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1742
1974
  if (hostEnvToggleError) {
1743
- $$renderer2.push("<!--[0-->");
1744
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(hostEnvToggleError)}</div></div>`);
1975
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(hostEnvToggleError)}</div></div>`);
1745
1976
  } else {
1746
1977
  $$renderer2.push("<!--[-1-->");
1747
1978
  }
1748
1979
  $$renderer2.push(`<!--]--> `);
1749
1980
  if (hostEnvVars) {
1750
- $$renderer2.push("<!--[0-->");
1751
- $$renderer2.push(`<div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58">`);
1752
- const each_array_3 = $29.ensure_array_like(hostEnvNames);
1981
+ $$renderer2.push(`<!--[0--><div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58">`);
1982
+ const each_array_3 = $31.ensure_array_like(hostEnvNames);
1753
1983
  if (each_array_3.length !== 0) {
1754
1984
  $$renderer2.push("<!--[-->");
1755
1985
  for (let $$index_4 = 0, $$length = each_array_3.length;$$index_4 < $$length; $$index_4++) {
1756
1986
  let name = each_array_3[$$index_4];
1757
1987
  $$renderer2.push(`<form class="var-item svelte-1n6ht58" method="POST" action="?/hostEnvVarNames"><!--[-->`);
1758
- const each_array_4 = $29.ensure_array_like(hostEnvNames.filter((n) => n !== name));
1988
+ const each_array_4 = $31.ensure_array_like(hostEnvNames.filter((n) => n !== name));
1759
1989
  for (let $$index_3 = 0, $$length2 = each_array_4.length;$$index_3 < $$length2; $$index_3++) {
1760
1990
  let other = each_array_4[$$index_3];
1761
- $$renderer2.push(`<input type="hidden" name="names"${$29.attr("value", other)}/>`);
1991
+ $$renderer2.push(`<input type="hidden" name="names"${$31.attr("value", other)}/>`);
1762
1992
  }
1763
- $$renderer2.push(`<!--]--> <span class="var-name svelte-1n6ht58">${$29.escape(name)}</span> <span${$29.attr_class("var-status svelte-1n6ht58", undefined, { present: hostEnvPresence[name] })}${$29.attr("title", hostEnvPresence[name] ? "Set on this host \u2014 will be injected" : "Not set on this host \u2014 will be skipped")}>${$29.escape(hostEnvPresence[name] ? "set" : "missing")}</span> <button type="submit" class="var-remove svelte-1n6ht58"${$29.attr("disabled", savingHostEnvNames, true)}${$29.attr("aria-label", `Remove ${name}`)}>`);
1993
+ $$renderer2.push(`<!--]--> <span class="var-name svelte-1n6ht58">${$31.escape(name)}</span> <span${$31.attr_class("var-status svelte-1n6ht58", undefined, { present: hostEnvPresence[name] })}${$31.attr("title", hostEnvPresence[name] ? "Set on this host \u2014 will be injected" : "Not set on this host \u2014 will be skipped")}>${$31.escape(hostEnvPresence[name] ? "set" : "missing")}</span> <button type="submit" class="var-remove svelte-1n6ht58"${$31.attr("disabled", savingHostEnvNames, true)}${$31.attr("aria-label", `Remove ${name}`)}>`);
1764
1994
  X($$renderer2, { size: 13 });
1765
1995
  $$renderer2.push(`<!----></button></form>`);
1766
1996
  }
1767
1997
  } else {
1768
- $$renderer2.push("<!--[!-->");
1769
- $$renderer2.push(`<div class="var-empty svelte-1n6ht58">No variables added yet.</div>`);
1998
+ $$renderer2.push(`<!--[!--><div class="var-empty svelte-1n6ht58">No variables added yet.</div>`);
1770
1999
  }
1771
2000
  $$renderer2.push(`<!--]--></div> <form class="var-add svelte-1n6ht58" method="POST" action="?/hostEnvVarNames"><!--[-->`);
1772
- const each_array_5 = $29.ensure_array_like(hostEnvNames);
2001
+ const each_array_5 = $31.ensure_array_like(hostEnvNames);
1773
2002
  for (let $$index_5 = 0, $$length = each_array_5.length;$$index_5 < $$length; $$index_5++) {
1774
2003
  let name = each_array_5[$$index_5];
1775
- $$renderer2.push(`<input type="hidden" name="names"${$29.attr("value", name)}/>`);
2004
+ $$renderer2.push(`<input type="hidden" name="names"${$31.attr("value", name)}/>`);
1776
2005
  }
1777
- $$renderer2.push(`<!--]--> <input type="text" name="names" class="image-input svelte-1n6ht58"${$29.attr("value", newHostEnvName)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="AWS_ACCESS_KEY_ID"/> `);
2006
+ $$renderer2.push(`<!--]--> <input type="text" name="names" class="image-input svelte-1n6ht58"${$31.attr("value", newHostEnvName)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="AWS_ACCESS_KEY_ID"/> `);
1778
2007
  Button($$renderer2, {
1779
2008
  type: "submit",
1780
2009
  icon: Plus,
@@ -1786,11 +2015,9 @@ function SettingsView($$renderer, $$props) {
1786
2015
  });
1787
2016
  $$renderer2.push(`<!----></form> `);
1788
2017
  if (hostEnvNamesError) {
1789
- $$renderer2.push("<!--[0-->");
1790
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(hostEnvNamesError)}</div>`);
2018
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(hostEnvNamesError)}</div>`);
1791
2019
  } else if (hostEnvNamesMsg) {
1792
- $$renderer2.push("<!--[1-->");
1793
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(hostEnvNamesMsg)}</div>`);
2020
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(hostEnvNamesMsg)}</div>`);
1794
2021
  } else {
1795
2022
  $$renderer2.push("<!--[-1-->");
1796
2023
  }
@@ -1802,31 +2029,28 @@ function SettingsView($$renderer, $$props) {
1802
2029
  Key_square($$renderer2, { size: 20 });
1803
2030
  $$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
1804
2031
  locally, masked in the build log, and never shown here after saving. Re-add a name to
1805
- update its value.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$29.attr("checked", customEnvEnabled, true)}${$29.attr("disabled", savingCustomEnvToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
2032
+ update its value.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", customEnvEnabled, true)}${$31.attr("disabled", savingCustomEnvToggle, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1806
2033
  if (customEnvToggleError) {
1807
- $$renderer2.push("<!--[0-->");
1808
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(customEnvToggleError)}</div></div>`);
2034
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(customEnvToggleError)}</div></div>`);
1809
2035
  } else {
1810
2036
  $$renderer2.push("<!--[-1-->");
1811
2037
  }
1812
2038
  $$renderer2.push(`<!--]--> `);
1813
2039
  if (customEnvEnabled) {
1814
- $$renderer2.push("<!--[0-->");
1815
- $$renderer2.push(`<div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58">`);
1816
- const each_array_6 = $29.ensure_array_like(customEnvNames);
2040
+ $$renderer2.push(`<!--[0--><div class="row divided var-row svelte-1n6ht58"><div class="var-list svelte-1n6ht58">`);
2041
+ const each_array_6 = $31.ensure_array_like(customEnvNames);
1817
2042
  if (each_array_6.length !== 0) {
1818
2043
  $$renderer2.push("<!--[-->");
1819
2044
  for (let $$index_6 = 0, $$length = each_array_6.length;$$index_6 < $$length; $$index_6++) {
1820
2045
  let name = each_array_6[$$index_6];
1821
- $$renderer2.push(`<form class="var-item svelte-1n6ht58" method="POST" action="?/removeCustomEnvVar"><input type="hidden" name="name"${$29.attr("value", name)}/> <span class="var-name svelte-1n6ht58">${$29.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"${$29.attr("disabled", savingCustomEnv, true)}${$29.attr("aria-label", `Remove ${name}`)}>`);
2046
+ $$renderer2.push(`<form class="var-item svelte-1n6ht58" method="POST" action="?/removeCustomEnvVar"><input type="hidden" name="name"${$31.attr("value", name)}/> <span class="var-name svelte-1n6ht58">${$31.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"${$31.attr("disabled", savingCustomEnv, true)}${$31.attr("aria-label", `Remove ${name}`)}>`);
1822
2047
  X($$renderer2, { size: 13 });
1823
2048
  $$renderer2.push(`<!----></button></form>`);
1824
2049
  }
1825
2050
  } else {
1826
- $$renderer2.push("<!--[!-->");
1827
- $$renderer2.push(`<div class="var-empty svelte-1n6ht58">No variables added yet.</div>`);
2051
+ $$renderer2.push(`<!--[!--><div class="var-empty svelte-1n6ht58">No variables added yet.</div>`);
1828
2052
  }
1829
- $$renderer2.push(`<!--]--></div> <form class="var-add svelte-1n6ht58" method="POST" action="?/setCustomEnvVar"><input type="text" name="name" class="image-input svelte-1n6ht58"${$29.attr("value", newCustomEnvName)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="MY_SECRET"/> <input type="password" name="value" class="image-input svelte-1n6ht58"${$29.attr("value", newCustomEnvValue)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="value"/> `);
2053
+ $$renderer2.push(`<!--]--></div> <form class="var-add svelte-1n6ht58" method="POST" action="?/setCustomEnvVar"><input type="text" name="name" class="image-input svelte-1n6ht58"${$31.attr("value", newCustomEnvName)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="MY_SECRET"/> <input type="password" name="value" class="image-input svelte-1n6ht58"${$31.attr("value", newCustomEnvValue)} spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" placeholder="value"/> `);
1830
2054
  Button($$renderer2, {
1831
2055
  type: "submit",
1832
2056
  icon: Plus,
@@ -1838,11 +2062,9 @@ function SettingsView($$renderer, $$props) {
1838
2062
  });
1839
2063
  $$renderer2.push(`<!----></form> `);
1840
2064
  if (customEnvError) {
1841
- $$renderer2.push("<!--[0-->");
1842
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(customEnvError)}</div>`);
2065
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(customEnvError)}</div>`);
1843
2066
  } else if (customEnvMsg) {
1844
- $$renderer2.push("<!--[1-->");
1845
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(customEnvMsg)}</div>`);
2067
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(customEnvMsg)}</div>`);
1846
2068
  } else {
1847
2069
  $$renderer2.push("<!--[-1-->");
1848
2070
  }
@@ -1856,26 +2078,24 @@ function SettingsView($$renderer, $$props) {
1856
2078
  ThemePicker($$renderer2, {});
1857
2079
  $$renderer2.push(`<!----></div></section> <section class="card svelte-1n6ht58"><div class="row svelte-1n6ht58"><div class="label svelte-1n6ht58">`);
1858
2080
  Volume_2($$renderer2, { size: 20 });
1859
- $$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"${$29.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">`);
2081
+ $$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"${$31.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">`);
1860
2082
  Keyboard($$renderer2, { size: 20 });
1861
2083
  $$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
1862
- always the last tab). Turn off to leave those keystrokes to the editor.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox"${$29.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">`);
2084
+ always the last tab). Turn off to leave those keystrokes to the editor.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox"${$31.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">`);
1863
2085
  Paw_print($$renderer2, { size: 18 });
1864
- $$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"${$29.attr("checked", !!petArt, true)}${$29.attr("disabled", savingPet, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
2086
+ $$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"${$31.attr("checked", !!petArt, true)}${$31.attr("disabled", savingPet, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1865
2087
  if (petError) {
1866
- $$renderer2.push("<!--[0-->");
1867
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(petError)}</div></div>`);
2088
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(petError)}</div></div>`);
1868
2089
  } else {
1869
2090
  $$renderer2.push("<!--[-1-->");
1870
2091
  }
1871
2092
  $$renderer2.push(`<!--]--> `);
1872
2093
  if (petArt) {
1873
- $$renderer2.push("<!--[0-->");
1874
- $$renderer2.push(`<div class="sub pets svelte-1n6ht58"><!--[-->`);
1875
- const each_array_7 = $29.ensure_array_like(avatars);
2094
+ $$renderer2.push(`<!--[0--><div class="sub pets svelte-1n6ht58"><!--[-->`);
2095
+ const each_array_7 = $31.ensure_array_like(avatars);
1876
2096
  for (let $$index_7 = 0, $$length = each_array_7.length;$$index_7 < $$length; $$index_7++) {
1877
2097
  let art = each_array_7[$$index_7];
1878
- $$renderer2.push(`<form method="POST" action="?/petChoose" class="svelte-1n6ht58"><input type="hidden" name="name"${$29.attr("value", art.name)}/> <button type="submit"${$29.attr_class("pet svelte-1n6ht58", undefined, { selected: art.name === petArt.name })}${$29.attr("disabled", savingPet, true)}${$29.attr("title", art.name)}${$29.attr("aria-label", art.name)}${$29.attr("aria-pressed", art.name === petArt.name)}>`);
2098
+ $$renderer2.push(`<form method="POST" action="?/petChoose" class="svelte-1n6ht58"><input type="hidden" name="name"${$31.attr("value", art.name)}/> <button type="submit"${$31.attr_class("pet svelte-1n6ht58", undefined, { selected: art.name === petArt.name })}${$31.attr("disabled", savingPet, true)}${$31.attr("title", art.name)}${$31.attr("aria-label", art.name)}${$31.attr("aria-pressed", art.name === petArt.name)}>`);
1879
2099
  Avatar($$renderer2, { art, name: art.name, scale: 4 });
1880
2100
  $$renderer2.push(`<!----></button></form>`);
1881
2101
  }
@@ -1888,53 +2108,48 @@ function SettingsView($$renderer, $$props) {
1888
2108
  $$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">`);
1889
2109
  List_ordered($$renderer2, { size: 20 });
1890
2110
  $$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
1891
- when diagnosing injection interference.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$29.attr("checked", serialInjections, true)}${$29.attr("disabled", savingSerial, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
2111
+ when diagnosing injection interference.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", serialInjections, true)}${$31.attr("disabled", savingSerial, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1892
2112
  if (serialError) {
1893
- $$renderer2.push("<!--[0-->");
1894
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(serialError)}</div></div>`);
2113
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(serialError)}</div></div>`);
1895
2114
  } else {
1896
2115
  $$renderer2.push("<!--[-1-->");
1897
2116
  }
1898
2117
  $$renderer2.push(`<!--]--> <form class="row divided svelte-1n6ht58" method="POST" action="?/noBuildkitToggle"><div class="label svelte-1n6ht58">`);
1899
2118
  Boxes($$renderer2, { size: 20 });
1900
2119
  $$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
1901
- default builder decide. For daemons where forcing BuildKit breaks builds.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$29.attr("checked", noBuildkit, true)}${$29.attr("disabled", savingBuildkit, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
2120
+ default builder decide. For daemons where forcing BuildKit breaks builds.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", noBuildkit, true)}${$31.attr("disabled", savingBuildkit, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1902
2121
  if (buildkitError) {
1903
- $$renderer2.push("<!--[0-->");
1904
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(buildkitError)}</div></div>`);
2122
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(buildkitError)}</div></div>`);
1905
2123
  } else {
1906
2124
  $$renderer2.push("<!--[-1-->");
1907
2125
  }
1908
2126
  $$renderer2.push(`<!--]--> <form class="row divided svelte-1n6ht58" method="POST" action="?/blockingExtInstallToggle"><div class="label svelte-1n6ht58">`);
1909
2127
  Puzzle($$renderer2, { size: 20 });
1910
2128
  $$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
1911
- always has it active. Slower first boot.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$29.attr("checked", blockingExtInstall, true)}${$29.attr("disabled", savingBlocking, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
2129
+ always has it active. Slower first boot.</div></div></div> <label class="switch svelte-1n6ht58"><input type="checkbox" name="enabled"${$31.attr("checked", blockingExtInstall, true)}${$31.attr("disabled", savingBlocking, true)} class="svelte-1n6ht58"/> <span class="track svelte-1n6ht58"><span class="thumb svelte-1n6ht58"></span></span></label></form> `);
1912
2130
  if (blockingError) {
1913
- $$renderer2.push("<!--[0-->");
1914
- $$renderer2.push(`<div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$29.escape(blockingError)}</div></div>`);
2131
+ $$renderer2.push(`<!--[0--><div class="sub svelte-1n6ht58"><div class="msg error svelte-1n6ht58">${$31.escape(blockingError)}</div></div>`);
1915
2132
  } else {
1916
2133
  $$renderer2.push("<!--[-1-->");
1917
2134
  }
1918
2135
  $$renderer2.push(`<!--]--> <form class="row divided svelte-1n6ht58" method="POST" action="?/clearVersionCache"><div class="label svelte-1n6ht58">`);
1919
- Trash_2($$renderer2, { size: 20 });
2136
+ Trash($$renderer2, { size: 20 });
1920
2137
  $$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
1921
2138
  again.</div> `);
1922
2139
  if (verError) {
1923
- $$renderer2.push("<!--[0-->");
1924
- $$renderer2.push(`<div class="msg error svelte-1n6ht58">${$29.escape(verError)}</div>`);
2140
+ $$renderer2.push(`<!--[0--><div class="msg error svelte-1n6ht58">${$31.escape(verError)}</div>`);
1925
2141
  } else if (verMsg) {
1926
- $$renderer2.push("<!--[1-->");
1927
- $$renderer2.push(`<div class="msg ok svelte-1n6ht58">${$29.escape(verMsg)}</div>`);
2142
+ $$renderer2.push(`<!--[1--><div class="msg ok svelte-1n6ht58">${$31.escape(verMsg)}</div>`);
1928
2143
  } else {
1929
2144
  $$renderer2.push("<!--[-1-->");
1930
2145
  }
1931
2146
  $$renderer2.push(`<!--]--></div></div> `);
1932
2147
  Button($$renderer2, {
1933
2148
  type: "submit",
1934
- icon: Trash_2,
2149
+ icon: Trash,
1935
2150
  disabled: clearingVer,
1936
2151
  children: ($$renderer3) => {
1937
- $$renderer3.push(`<!---->${$29.escape(clearingVer ? "Clearing\u2026" : "Clear cache")}`);
2152
+ $$renderer3.push(`<!---->${$31.escape(clearingVer ? "Clearing\u2026" : "Clear cache")}`);
1938
2153
  },
1939
2154
  $$slots: { default: true }
1940
2155
  });
@@ -1943,8 +2158,7 @@ function SettingsView($$renderer, $$props) {
1943
2158
  $$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
1944
2159
  database, then shut down the server. This cannot be undone.</div></div></div> `);
1945
2160
  if (shuttingDown) {
1946
- $$renderer2.push("<!--[0-->");
1947
- $$renderer2.push(`<span class="shutting svelte-1n6ht58">Server is shutting down \u2014 you can close this tab.</span>`);
2161
+ $$renderer2.push(`<!--[0--><span class="shutting svelte-1n6ht58">Server is shutting down \u2014 you can close this tab.</span>`);
1948
2162
  } else {
1949
2163
  $$renderer2.push("<!--[-1-->");
1950
2164
  Button($$renderer2, {
@@ -1958,7 +2172,7 @@ function SettingsView($$renderer, $$props) {
1958
2172
  }
1959
2173
  $$renderer2.push(`<!--]--></form></section> `);
1960
2174
  CoinButton($$renderer2, {});
1961
- $$renderer2.push(`<!----> <div class="version svelte-1n6ht58">Codebay v${$29.escape(version)}</div></main></div> `);
2175
+ $$renderer2.push(`<!----> <div class="version svelte-1n6ht58">Codebay v${$31.escape(version)}</div></main></div> `);
1962
2176
  Toaster($$renderer2, { toastOptions: TOAST_OPTIONS });
1963
2177
  $$renderer2.push(`<!---->`);
1964
2178
  });
@@ -1976,9 +2190,14 @@ function Settings($$renderer, $$props) {
1976
2190
  defaultImage,
1977
2191
  builtinImage,
1978
2192
  disableBuildCache,
2193
+ workspaceUploadEnabled,
1979
2194
  copyIgnorePatterns,
1980
2195
  builtinCopyIgnore,
1981
2196
  claudeConfigDir,
2197
+ mcpEnabled,
2198
+ mcpToken,
2199
+ mcpUrl,
2200
+ mcpPrAttribution,
1982
2201
  gitIdentityEnabled,
1983
2202
  gitIdentityName,
1984
2203
  gitIdentityEmail,
@@ -2011,61 +2230,17 @@ function Settings($$renderer, $$props) {
2011
2230
  version
2012
2231
  } = $$props;
2013
2232
  if (true) {
2014
- let failed = function($$renderer3, error) {
2015
- $$renderer3.push(`<mochi-island-failure data-component="SettingsView"${$30.attr("data-message", error.message)}></mochi-island-failure>`);
2016
- };
2017
2233
  $$renderer2.push("<!--[0-->");
2018
- $$renderer2.boundary({ failed }, ($$renderer3) => {
2019
- $$renderer3.push(`<!--[-->`);
2020
- {
2021
- HydratableBoundary($$renderer3, {
2022
- children: ($$renderer4) => {
2023
- $$renderer4.push(`<mochi-hydratable-island component-name="SettingsView_8hmarwmf8onq" component-url="__MOCHI_COMPONENT_URL__SettingsView_8hmarwmf8onq__"${$30.attr("props-ref", emitIslandProps({
2024
- pet,
2025
- defaultMode,
2026
- claudePermissionMode,
2027
- claudeEffortLevel,
2028
- claudeOutputStyle,
2029
- defaultImage,
2030
- builtinImage,
2031
- disableBuildCache,
2032
- copyIgnorePatterns,
2033
- builtinCopyIgnore,
2034
- claudeConfigDir,
2035
- gitIdentityEnabled,
2036
- gitIdentityName,
2037
- gitIdentityEmail,
2038
- dockerArch,
2039
- manualTokensEnabled,
2040
- githubTokenSet,
2041
- claudeTokenSet,
2042
- customEndpointEnabled,
2043
- customEndpointBaseUrl,
2044
- customEndpointTokenSet,
2045
- customEndpointOpusModel,
2046
- customEndpointSonnetModel,
2047
- customEndpointHaikuModel,
2048
- customEndpointSmallFastModel,
2049
- customEndpointModel,
2050
- manualModelOverrideEnabled,
2051
- manualOpusModel,
2052
- manualSonnetModel,
2053
- manualHaikuModel,
2054
- manualSmallFastModel,
2055
- manualModel,
2056
- hostEnvVarsEnabled,
2057
- hostEnvVarNames,
2058
- hostEnvVarPresence,
2059
- customEnvVarsEnabled,
2060
- customEnvVarNames,
2061
- advancedSerialInjections,
2062
- advancedNoBuildkit,
2063
- advancedBlockingExtInstall,
2064
- version
2065
- }))}>`);
2066
- $$renderer4.push(`<!--[-->`);
2067
- {
2068
- SettingsView($$renderer4, {
2234
+ {
2235
+ let failed = function($$renderer3, error) {
2236
+ $$renderer3.push(`<mochi-island-failure data-component="SettingsView"${$32.attr("data-message", error.message)}></mochi-island-failure>`);
2237
+ };
2238
+ $$renderer2.boundary({ failed }, ($$renderer3) => {
2239
+ $$renderer3.push(`<!--[-->`);
2240
+ {
2241
+ HydratableBoundary($$renderer3, {
2242
+ children: ($$renderer4) => {
2243
+ $$renderer4.push(`<mochi-hydratable-island component-name="SettingsView_8hmarwmf8onq" component-url="__MOCHI_COMPONENT_URL__SettingsView_8hmarwmf8onq__"${$32.attr("props-ref", emitIslandProps({
2069
2244
  pet,
2070
2245
  defaultMode,
2071
2246
  claudePermissionMode,
@@ -2074,9 +2249,14 @@ function Settings($$renderer, $$props) {
2074
2249
  defaultImage,
2075
2250
  builtinImage,
2076
2251
  disableBuildCache,
2252
+ workspaceUploadEnabled,
2077
2253
  copyIgnorePatterns,
2078
2254
  builtinCopyIgnore,
2079
2255
  claudeConfigDir,
2256
+ mcpEnabled,
2257
+ mcpToken,
2258
+ mcpUrl,
2259
+ mcpPrAttribution,
2080
2260
  gitIdentityEnabled,
2081
2261
  gitIdentityName,
2082
2262
  gitIdentityEmail,
@@ -2107,16 +2287,67 @@ function Settings($$renderer, $$props) {
2107
2287
  advancedNoBuildkit,
2108
2288
  advancedBlockingExtInstall,
2109
2289
  version
2110
- });
2111
- }
2112
- $$renderer4.push(`<!--]-->`);
2113
- $$renderer4.push(`</mochi-hydratable-island>`);
2114
- },
2115
- $$slots: { default: true }
2116
- });
2117
- }
2118
- $$renderer3.push(`<!--]-->`);
2119
- });
2290
+ }))}>`);
2291
+ $$renderer4.push(`<!--[-->`);
2292
+ {
2293
+ SettingsView($$renderer4, {
2294
+ pet,
2295
+ defaultMode,
2296
+ claudePermissionMode,
2297
+ claudeEffortLevel,
2298
+ claudeOutputStyle,
2299
+ defaultImage,
2300
+ builtinImage,
2301
+ disableBuildCache,
2302
+ workspaceUploadEnabled,
2303
+ copyIgnorePatterns,
2304
+ builtinCopyIgnore,
2305
+ claudeConfigDir,
2306
+ mcpEnabled,
2307
+ mcpToken,
2308
+ mcpUrl,
2309
+ mcpPrAttribution,
2310
+ gitIdentityEnabled,
2311
+ gitIdentityName,
2312
+ gitIdentityEmail,
2313
+ dockerArch,
2314
+ manualTokensEnabled,
2315
+ githubTokenSet,
2316
+ claudeTokenSet,
2317
+ customEndpointEnabled,
2318
+ customEndpointBaseUrl,
2319
+ customEndpointTokenSet,
2320
+ customEndpointOpusModel,
2321
+ customEndpointSonnetModel,
2322
+ customEndpointHaikuModel,
2323
+ customEndpointSmallFastModel,
2324
+ customEndpointModel,
2325
+ manualModelOverrideEnabled,
2326
+ manualOpusModel,
2327
+ manualSonnetModel,
2328
+ manualHaikuModel,
2329
+ manualSmallFastModel,
2330
+ manualModel,
2331
+ hostEnvVarsEnabled,
2332
+ hostEnvVarNames,
2333
+ hostEnvVarPresence,
2334
+ customEnvVarsEnabled,
2335
+ customEnvVarNames,
2336
+ advancedSerialInjections,
2337
+ advancedNoBuildkit,
2338
+ advancedBlockingExtInstall,
2339
+ version
2340
+ });
2341
+ }
2342
+ $$renderer4.push(`<!--]-->`);
2343
+ $$renderer4.push(`</mochi-hydratable-island>`);
2344
+ },
2345
+ $$slots: { default: true }
2346
+ });
2347
+ }
2348
+ $$renderer3.push(`<!--]-->`);
2349
+ });
2350
+ }
2120
2351
  }
2121
2352
  $$renderer2.push(`<!--]-->`);
2122
2353
  });