codebay 0.16.0 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.mochi/manifest.json
CHANGED
|
@@ -23,14 +23,14 @@
|
|
|
23
23
|
"src/components/DropZone.svelte": "/_mochi/css/DropZone-1zeitd761uwyd.css",
|
|
24
24
|
"node_modules/svelte-french-toast/dist/components/CheckmarkIcon.svelte": "/_mochi/css/CheckmarkIcon-3qlazj2oc50jc.css",
|
|
25
25
|
"node_modules/svelte-french-toast/dist/components/Toaster.svelte": "/_mochi/css/Toaster-kk60j193854n.css",
|
|
26
|
-
"node_modules/svelte-french-toast/dist/components/ToastIcon.svelte": "/_mochi/css/ToastIcon-2z5wrkc95khg0.css",
|
|
27
26
|
"node_modules/svelte-french-toast/dist/components/LoaderIcon.svelte": "/_mochi/css/LoaderIcon-soq5wt3p05ye.css",
|
|
27
|
+
"node_modules/svelte-french-toast/dist/components/ToastIcon.svelte": "/_mochi/css/ToastIcon-2z5wrkc95khg0.css",
|
|
28
28
|
"node_modules/svelte-french-toast/dist/components/ErrorIcon.svelte": "/_mochi/css/ErrorIcon-2x0tzsqxskw28.css",
|
|
29
29
|
"node_modules/svelte-french-toast/dist/components/ToastBar.svelte": "/_mochi/css/ToastBar-3havgkmtofntq.css",
|
|
30
30
|
"src/components/Skeleton.svelte": "/_mochi/css/Skeleton-8k69usiju43h.css",
|
|
31
|
+
"src/components/HealthBox.svelte": "/_mochi/css/HealthBox-r0giuhjn2wj4.css",
|
|
31
32
|
"src/components/AgentLogBox.svelte": "/_mochi/css/AgentLogBox-38adby5iygny7.css",
|
|
32
33
|
"src/components/StatusBadge.svelte": "/_mochi/css/StatusBadge-2eisdtnrsnfdc.css",
|
|
33
|
-
"src/components/HealthBox.svelte": "/_mochi/css/HealthBox-r0giuhjn2wj4.css",
|
|
34
34
|
"src/components/AvatarEditor.svelte": "/_mochi/css/AvatarEditor-1mjvec6bwdkv8.css",
|
|
35
35
|
"src/components/AppBar.svelte": "/_mochi/css/AppBar-1gtu2me3fni8e.css",
|
|
36
36
|
"src/components/Avatar.svelte": "/_mochi/css/Avatar-3pi30db6ozvf0.css",
|
|
@@ -40,14 +40,14 @@
|
|
|
40
40
|
"src/components/TerminalPane.svelte": "/_mochi/css/TerminalPane-2ywc86rhtmr9l.css",
|
|
41
41
|
"src/components/TopBar.svelte": "/_mochi/css/TopBar-2y76zxwehrfos.css",
|
|
42
42
|
"src/components/InstanceCard.svelte": "/_mochi/css/InstanceCard-3vxozrp9uoads.css",
|
|
43
|
-
"node_modules/svelte-french-toast/dist/components/ToastMessage.svelte": "/_mochi/css/ToastMessage-2jfwb2og2lfa8.css",
|
|
44
43
|
"src/components/FolderBrowser.svelte": "/_mochi/css/FolderBrowser-i0uj58dph27f.css",
|
|
45
44
|
"node_modules/svelte-french-toast/dist/components/ToastWrapper.svelte": "/_mochi/css/ToastWrapper-1fbnym10rm2nv.css",
|
|
46
|
-
"
|
|
47
|
-
"src/components/InstanceFilter.svelte": "/_mochi/css/InstanceFilter-2vglmyy0yrbbc.css",
|
|
48
|
-
"src/components/SettingsCog.svelte": "/_mochi/css/SettingsCog-1jdeprd3ilczz.css",
|
|
45
|
+
"node_modules/svelte-french-toast/dist/components/ToastMessage.svelte": "/_mochi/css/ToastMessage-2jfwb2og2lfa8.css",
|
|
49
46
|
"src/components/CredMenu.svelte": "/_mochi/css/CredMenu-7qowd1oxujet.css",
|
|
47
|
+
"src/components/SettingsCog.svelte": "/_mochi/css/SettingsCog-1jdeprd3ilczz.css",
|
|
48
|
+
"src/components/InstanceFilter.svelte": "/_mochi/css/InstanceFilter-2vglmyy0yrbbc.css",
|
|
50
49
|
"src/components/PortsBox.svelte": "/_mochi/css/PortsBox-1t25b5yg7jva3.css",
|
|
50
|
+
"src/components/Brand.svelte": "/_mochi/css/Brand-1bh2b800g5vrn.css",
|
|
51
51
|
"src/components/BranchBox.svelte": "/_mochi/css/BranchBox-1yqu1q2mgnjwz.css"
|
|
52
52
|
},
|
|
53
53
|
"clientFiles": {
|
|
@@ -65,14 +65,14 @@
|
|
|
65
65
|
"/_mochi/css/DropZone-1zeitd761uwyd.css": "svelte-css/DropZone-1zeitd761uwyd.css",
|
|
66
66
|
"/_mochi/css/CheckmarkIcon-3qlazj2oc50jc.css": "svelte-css/CheckmarkIcon-3qlazj2oc50jc.css",
|
|
67
67
|
"/_mochi/css/Toaster-kk60j193854n.css": "svelte-css/Toaster-kk60j193854n.css",
|
|
68
|
-
"/_mochi/css/ToastIcon-2z5wrkc95khg0.css": "svelte-css/ToastIcon-2z5wrkc95khg0.css",
|
|
69
68
|
"/_mochi/css/LoaderIcon-soq5wt3p05ye.css": "svelte-css/LoaderIcon-soq5wt3p05ye.css",
|
|
69
|
+
"/_mochi/css/ToastIcon-2z5wrkc95khg0.css": "svelte-css/ToastIcon-2z5wrkc95khg0.css",
|
|
70
70
|
"/_mochi/css/ErrorIcon-2x0tzsqxskw28.css": "svelte-css/ErrorIcon-2x0tzsqxskw28.css",
|
|
71
71
|
"/_mochi/css/ToastBar-3havgkmtofntq.css": "svelte-css/ToastBar-3havgkmtofntq.css",
|
|
72
72
|
"/_mochi/css/Skeleton-8k69usiju43h.css": "svelte-css/Skeleton-8k69usiju43h.css",
|
|
73
|
+
"/_mochi/css/HealthBox-r0giuhjn2wj4.css": "svelte-css/HealthBox-r0giuhjn2wj4.css",
|
|
73
74
|
"/_mochi/css/AgentLogBox-38adby5iygny7.css": "svelte-css/AgentLogBox-38adby5iygny7.css",
|
|
74
75
|
"/_mochi/css/StatusBadge-2eisdtnrsnfdc.css": "svelte-css/StatusBadge-2eisdtnrsnfdc.css",
|
|
75
|
-
"/_mochi/css/HealthBox-r0giuhjn2wj4.css": "svelte-css/HealthBox-r0giuhjn2wj4.css",
|
|
76
76
|
"/_mochi/css/AvatarEditor-1mjvec6bwdkv8.css": "svelte-css/AvatarEditor-1mjvec6bwdkv8.css",
|
|
77
77
|
"/_mochi/css/AppBar-1gtu2me3fni8e.css": "svelte-css/AppBar-1gtu2me3fni8e.css",
|
|
78
78
|
"/_mochi/css/Avatar-3pi30db6ozvf0.css": "svelte-css/Avatar-3pi30db6ozvf0.css",
|
|
@@ -82,14 +82,14 @@
|
|
|
82
82
|
"/_mochi/css/TerminalPane-2ywc86rhtmr9l.css": "svelte-css/TerminalPane-2ywc86rhtmr9l.css",
|
|
83
83
|
"/_mochi/css/TopBar-2y76zxwehrfos.css": "svelte-css/TopBar-2y76zxwehrfos.css",
|
|
84
84
|
"/_mochi/css/InstanceCard-3vxozrp9uoads.css": "svelte-css/InstanceCard-3vxozrp9uoads.css",
|
|
85
|
-
"/_mochi/css/ToastMessage-2jfwb2og2lfa8.css": "svelte-css/ToastMessage-2jfwb2og2lfa8.css",
|
|
86
85
|
"/_mochi/css/FolderBrowser-i0uj58dph27f.css": "svelte-css/FolderBrowser-i0uj58dph27f.css",
|
|
87
86
|
"/_mochi/css/ToastWrapper-1fbnym10rm2nv.css": "svelte-css/ToastWrapper-1fbnym10rm2nv.css",
|
|
88
|
-
"/_mochi/css/
|
|
89
|
-
"/_mochi/css/InstanceFilter-2vglmyy0yrbbc.css": "svelte-css/InstanceFilter-2vglmyy0yrbbc.css",
|
|
90
|
-
"/_mochi/css/SettingsCog-1jdeprd3ilczz.css": "svelte-css/SettingsCog-1jdeprd3ilczz.css",
|
|
87
|
+
"/_mochi/css/ToastMessage-2jfwb2og2lfa8.css": "svelte-css/ToastMessage-2jfwb2og2lfa8.css",
|
|
91
88
|
"/_mochi/css/CredMenu-7qowd1oxujet.css": "svelte-css/CredMenu-7qowd1oxujet.css",
|
|
89
|
+
"/_mochi/css/SettingsCog-1jdeprd3ilczz.css": "svelte-css/SettingsCog-1jdeprd3ilczz.css",
|
|
90
|
+
"/_mochi/css/InstanceFilter-2vglmyy0yrbbc.css": "svelte-css/InstanceFilter-2vglmyy0yrbbc.css",
|
|
92
91
|
"/_mochi/css/PortsBox-1t25b5yg7jva3.css": "svelte-css/PortsBox-1t25b5yg7jva3.css",
|
|
92
|
+
"/_mochi/css/Brand-1bh2b800g5vrn.css": "svelte-css/Brand-1bh2b800g5vrn.css",
|
|
93
93
|
"/_mochi/css/BranchBox-1yqu1q2mgnjwz.css": "svelte-css/BranchBox-1yqu1q2mgnjwz.css",
|
|
94
94
|
"/_mochi/import-css/index-0nwv3654.css": "import-css/index-0nwv3654.css",
|
|
95
95
|
"/_mochi/import-css/index-xndx4980.css": "import-css/index-xndx4980.css",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codebay",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.1",
|
|
4
4
|
"description": "Web UI for spinning up isolated devcontainer instances from any local folder, each with a browser-based VS Code (code-server) — built for parallel Claude Code workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/src/lib/config.server.ts
CHANGED
|
@@ -150,6 +150,15 @@ export function binShim(binDir: string, name: string): string | null {
|
|
|
150
150
|
return null;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
/**
|
|
154
|
+
* The CLI's `node` shebang resolves to Bun under Bun, and Bun loads `bunfig.toml` from cwd — so a
|
|
155
|
+
* workspace cwd would run the repo's `preload` on the host; not tmpdir, since that's world-writable.
|
|
156
|
+
*/
|
|
157
|
+
export function devcontainerCwd(): string {
|
|
158
|
+
mkdirSync(DATA_DIR, { recursive: true });
|
|
159
|
+
return DATA_DIR;
|
|
160
|
+
}
|
|
161
|
+
|
|
153
162
|
/**
|
|
154
163
|
* An argv rather than a path, because the `devcontainer.js` fallback leads with a
|
|
155
164
|
* `#!/usr/bin/env node` shebang that Windows doesn't honour — there it only runs when handed to
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
PUBLISH_HOST,
|
|
16
16
|
TTYD_PORT,
|
|
17
17
|
devcontainerBin,
|
|
18
|
+
devcontainerCwd,
|
|
18
19
|
dockerEnv
|
|
19
20
|
} from './config.server.ts';
|
|
20
21
|
import { spawnCapture } from './spawn.server.ts';
|
|
@@ -381,7 +382,8 @@ let cliProbeWarned = false;
|
|
|
381
382
|
|
|
382
383
|
export async function devcontainerCliAvailable(): Promise<boolean> {
|
|
383
384
|
const argv = devcontainerBin();
|
|
384
|
-
const available =
|
|
385
|
+
const available =
|
|
386
|
+
(await spawnCapture([...argv, '--version'], { cwd: devcontainerCwd() })) !== null;
|
|
385
387
|
if (!available && !cliProbeWarned) {
|
|
386
388
|
console.warn(`⚠ devcontainer CLI probe failed — could not run: ${argv.join(' ')}`);
|
|
387
389
|
}
|
|
@@ -1032,7 +1034,7 @@ export async function devcontainerUp(
|
|
|
1032
1034
|
opts: UpOptions = {}
|
|
1033
1035
|
): Promise<UpResult> {
|
|
1034
1036
|
const proc = Bun.spawn(devcontainerUpArgs(workspaceDir, opts), {
|
|
1035
|
-
cwd:
|
|
1037
|
+
cwd: devcontainerCwd(),
|
|
1036
1038
|
stdout: 'pipe',
|
|
1037
1039
|
stderr: 'pipe',
|
|
1038
1040
|
env: devcontainerUpEnv()
|
package/src/lib/spawn.server.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/** Null on anything short of a clean run with output, so callers need no error branch. */
|
|
2
2
|
export async function spawnCapture(
|
|
3
3
|
cmd: string[],
|
|
4
|
-
opts?: { env?: Record<string, string | undefined
|
|
4
|
+
opts?: { env?: Record<string, string | undefined>; cwd?: string }
|
|
5
5
|
): Promise<string | null> {
|
|
6
6
|
try {
|
|
7
|
-
const proc = Bun.spawn(cmd, {
|
|
7
|
+
const proc = Bun.spawn(cmd, {
|
|
8
|
+
stdout: 'pipe',
|
|
9
|
+
stderr: 'ignore',
|
|
10
|
+
env: opts?.env,
|
|
11
|
+
cwd: opts?.cwd
|
|
12
|
+
});
|
|
8
13
|
const [out, code] = await Promise.all([new Response(proc.stdout).text(), proc.exited]);
|
|
9
14
|
const value = out.trim();
|
|
10
15
|
return code === 0 && value ? value : null;
|