@boxes-dev/dvb-runtime 1.0.956 → 1.0.957
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/dist/bin/dvb.mjs +15 -28
- package/dist/bin/dvbd.mjs +8 -8
- package/dist/product-docs/references/billing-and-limits.md +5 -4
- package/dist/product-docs/references/cli.md +3 -8
- package/dist/product-docs/references/desktop-workbench.md +11 -8
- package/dist/product-docs/references/files-git-and-review.md +6 -6
- package/dist/product-docs/references/fork-workflows.md +2 -1
- package/dist/product-docs/references/ports-terminal-and-runtime.md +8 -8
- package/dist/product-docs/references/threads-and-agents.md +15 -14
- package/dist/product-docs/references/troubleshooting.md +2 -2
- package/package.json +2 -2
package/dist/bin/dvb.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a55a831a-e9eb-5e0c-9e31-0c4bceb58a84")}catch(e){}}();
|
|
4
4
|
import { createRequire as __dvbCreateRequire } from "node:module";
|
|
5
5
|
import { dirname as __dvbDirname } from "node:path";
|
|
6
6
|
import { fileURLToPath as __dvbFileURLToPath } from "node:url";
|
|
@@ -101145,8 +101145,8 @@ var init_otel = __esm({
|
|
|
101145
101145
|
return trimmed && trimmed.length > 0 ? trimmed : void 0;
|
|
101146
101146
|
};
|
|
101147
101147
|
readBuildMetadata = () => {
|
|
101148
|
-
const rawPackageVersion = "1.0.
|
|
101149
|
-
const rawGitSha = "
|
|
101148
|
+
const rawPackageVersion = "1.0.957";
|
|
101149
|
+
const rawGitSha = "bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
|
|
101150
101150
|
const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
|
|
101151
101151
|
const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
|
|
101152
101152
|
return { packageVersion, gitSha };
|
|
@@ -133552,9 +133552,9 @@ var init_sentry = __esm({
|
|
|
133552
133552
|
uncaughtExceptionMonitorInstalled = false;
|
|
133553
133553
|
currentDevboxSentryUser = null;
|
|
133554
133554
|
readBuildMetadata2 = () => {
|
|
133555
|
-
const rawPackageVersion = "1.0.
|
|
133556
|
-
const rawGitSha = "
|
|
133557
|
-
const rawSentryRelease = "boxes-dev-dvb@1.0.
|
|
133555
|
+
const rawPackageVersion = "1.0.957";
|
|
133556
|
+
const rawGitSha = "bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
|
|
133557
|
+
const rawSentryRelease = "boxes-dev-dvb@1.0.957+bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
|
|
133558
133558
|
const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
|
|
133559
133559
|
const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
|
|
133560
133560
|
const sentryRelease = typeof rawSentryRelease === "string" ? rawSentryRelease : void 0;
|
|
@@ -138717,7 +138717,7 @@ var init_packageVersion = __esm({
|
|
|
138717
138717
|
return path17.join(process.cwd(), "dvb");
|
|
138718
138718
|
};
|
|
138719
138719
|
readEmbeddedPackageVersion = () => {
|
|
138720
|
-
const raw = "1.0.
|
|
138720
|
+
const raw = "1.0.957";
|
|
138721
138721
|
return trimVersion(raw);
|
|
138722
138722
|
};
|
|
138723
138723
|
readNearestPackageMetadata = (basePath) => {
|
|
@@ -204404,7 +204404,7 @@ var formatThreadBackendLabel, formatThreadBackendConnectingLabel, formatThreadBa
|
|
|
204404
204404
|
var init_threadBackendLabels = __esm({
|
|
204405
204405
|
"../../../../shared/threadRuntime/threadBackendLabels.ts"() {
|
|
204406
204406
|
"use strict";
|
|
204407
|
-
formatThreadBackendLabel = (backend) => backend === "codex" ? "Codex" :
|
|
204407
|
+
formatThreadBackendLabel = (backend) => backend === "codex" ? "Codex" : "Claude";
|
|
204408
204408
|
formatThreadBackendConnectingLabel = (backend) => `Connecting ${formatThreadBackendLabel(backend)}`;
|
|
204409
204409
|
formatThreadBackendDefaultTitle = (backend) => `${formatThreadBackendLabel(backend)} thread`;
|
|
204410
204410
|
}
|
|
@@ -231930,7 +231930,7 @@ var init_actionPresentation = __esm({
|
|
|
231930
231930
|
switch (outcome.kind) {
|
|
231931
231931
|
case "detached":
|
|
231932
231932
|
return {
|
|
231933
|
-
message:
|
|
231933
|
+
message: "Claude is still open in terminal. Press Enter to reattach.",
|
|
231934
231934
|
tone: "neutral"
|
|
231935
231935
|
};
|
|
231936
231936
|
case "terminal_exit":
|
|
@@ -286497,10 +286497,6 @@ var init_controller = __esm({
|
|
|
286497
286497
|
}
|
|
286498
286498
|
let target = null;
|
|
286499
286499
|
if (selected.kind === "thread") {
|
|
286500
|
-
if (selected.target.backend === "claude_code") {
|
|
286501
|
-
this.setPreviewUnavailableForClaudeCode();
|
|
286502
|
-
return;
|
|
286503
|
-
}
|
|
286504
286500
|
target = {
|
|
286505
286501
|
selectedKey: selected.key,
|
|
286506
286502
|
primaryInstanceId: selected.target.primaryInstanceId,
|
|
@@ -286519,10 +286515,6 @@ var init_controller = __esm({
|
|
|
286519
286515
|
);
|
|
286520
286516
|
return;
|
|
286521
286517
|
}
|
|
286522
|
-
if (anchor.backend === "claude_code") {
|
|
286523
|
-
this.setPreviewUnavailableForClaudeCode();
|
|
286524
|
-
return;
|
|
286525
|
-
}
|
|
286526
286518
|
target = {
|
|
286527
286519
|
selectedKey: selected.key,
|
|
286528
286520
|
primaryInstanceId: anchor.primaryInstanceId,
|
|
@@ -286610,11 +286602,6 @@ var init_controller = __esm({
|
|
|
286610
286602
|
confirmPreviewRendered(args) {
|
|
286611
286603
|
this.peekController.confirmRendered(args);
|
|
286612
286604
|
}
|
|
286613
|
-
setPreviewUnavailableForClaudeCode() {
|
|
286614
|
-
this.setPreviewControlStatus(
|
|
286615
|
-
"Preview isn\u2019t available for Claude Code threads. Press Enter to open this thread."
|
|
286616
|
-
);
|
|
286617
|
-
}
|
|
286618
286605
|
setPreviewControlStatus(message) {
|
|
286619
286606
|
this.selectedActionStatusContext = null;
|
|
286620
286607
|
this.snapshot = {
|
|
@@ -286899,7 +286886,7 @@ var init_controller = __esm({
|
|
|
286899
286886
|
selected,
|
|
286900
286887
|
suspendAction ?? (async (callback) => await callback())
|
|
286901
286888
|
);
|
|
286902
|
-
} else if (selected.kind === "thread" &&
|
|
286889
|
+
} else if (selected.kind === "thread" && selected.actions.enter.backend === "claude") {
|
|
286903
286890
|
await this.activateClaudeThread(
|
|
286904
286891
|
selected,
|
|
286905
286892
|
suspendAction ?? (async (callback) => await callback()),
|
|
@@ -287342,7 +287329,7 @@ var init_controller = __esm({
|
|
|
287342
287329
|
}
|
|
287343
287330
|
async activateClaudeThread(selected, suspendAction, confirmation) {
|
|
287344
287331
|
const action = selected.actions.enter;
|
|
287345
|
-
if (action.kind !== "native_thread" || action.backend !== "claude"
|
|
287332
|
+
if (action.kind !== "native_thread" || action.backend !== "claude" || !this.actionDependencies.openClaude) {
|
|
287346
287333
|
return;
|
|
287347
287334
|
}
|
|
287348
287335
|
const claudeBackend = action.backend;
|
|
@@ -287352,7 +287339,7 @@ var init_controller = __esm({
|
|
|
287352
287339
|
...this.snapshot,
|
|
287353
287340
|
claudeConfirmation: null,
|
|
287354
287341
|
selectedActionPending: true,
|
|
287355
|
-
selectedActionPendingLabel:
|
|
287342
|
+
selectedActionPendingLabel: confirmation !== null && confirmationWarning === "desktop_turn_active" ? "Interrupting Claude in the desktop app\u2026" : "Opening Claude in terminal\u2026",
|
|
287356
287343
|
selectedActionStatusMessage: null,
|
|
287357
287344
|
selectedActionStatusTone: "neutral"
|
|
287358
287345
|
};
|
|
@@ -292629,7 +292616,7 @@ var init_workspaceProtocol = __esm({
|
|
|
292629
292616
|
};
|
|
292630
292617
|
}
|
|
292631
292618
|
if (kind === "claude") {
|
|
292632
|
-
if (record3.backend !== "claude"
|
|
292619
|
+
if (record3.backend !== "claude") {
|
|
292633
292620
|
throw new Error("Invalid workspace Claude backend.");
|
|
292634
292621
|
}
|
|
292635
292622
|
return {
|
|
@@ -292802,7 +292789,7 @@ var init_workspaceActionClient = __esm({
|
|
|
292802
292789
|
case "codex_empty":
|
|
292803
292790
|
return "Codex";
|
|
292804
292791
|
case "claude":
|
|
292805
|
-
return
|
|
292792
|
+
return "Claude";
|
|
292806
292793
|
case "claude_empty":
|
|
292807
292794
|
return "Claude";
|
|
292808
292795
|
case "shell":
|
|
@@ -357364,4 +357351,4 @@ react/cjs/react-jsx-runtime.development.js:
|
|
|
357364
357351
|
*)
|
|
357365
357352
|
*/
|
|
357366
357353
|
|
|
357367
|
-
//# debugId=
|
|
357354
|
+
//# debugId=a55a831a-e9eb-5e0c-9e31-0c4bceb58a84
|
package/dist/bin/dvbd.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9fe1a110-cbff-5659-8dbf-ea5f546fb817")}catch(e){}}();
|
|
4
4
|
import { createRequire as __dvbCreateRequire } from "node:module";
|
|
5
5
|
import { dirname as __dvbDirname } from "node:path";
|
|
6
6
|
import { fileURLToPath as __dvbFileURLToPath } from "node:url";
|
|
@@ -96328,8 +96328,8 @@ var init_otel = __esm({
|
|
|
96328
96328
|
return trimmed && trimmed.length > 0 ? trimmed : void 0;
|
|
96329
96329
|
};
|
|
96330
96330
|
readBuildMetadata = () => {
|
|
96331
|
-
const rawPackageVersion = "1.0.
|
|
96332
|
-
const rawGitSha = "
|
|
96331
|
+
const rawPackageVersion = "1.0.957";
|
|
96332
|
+
const rawGitSha = "bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
|
|
96333
96333
|
const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
|
|
96334
96334
|
const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
|
|
96335
96335
|
return { packageVersion, gitSha };
|
|
@@ -128624,9 +128624,9 @@ var init_sentry = __esm({
|
|
|
128624
128624
|
uncaughtExceptionMonitorInstalled = false;
|
|
128625
128625
|
currentDevboxSentryUser = null;
|
|
128626
128626
|
readBuildMetadata2 = () => {
|
|
128627
|
-
const rawPackageVersion = "1.0.
|
|
128628
|
-
const rawGitSha = "
|
|
128629
|
-
const rawSentryRelease = "boxes-dev-dvb@1.0.
|
|
128627
|
+
const rawPackageVersion = "1.0.957";
|
|
128628
|
+
const rawGitSha = "bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
|
|
128629
|
+
const rawSentryRelease = "boxes-dev-dvb@1.0.957+bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
|
|
128630
128630
|
const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
|
|
128631
128631
|
const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
|
|
128632
128632
|
const sentryRelease = typeof rawSentryRelease === "string" ? rawSentryRelease : void 0;
|
|
@@ -130818,7 +130818,7 @@ var init_packageVersion = __esm({
|
|
|
130818
130818
|
return path8.join(process.cwd(), "dvb");
|
|
130819
130819
|
};
|
|
130820
130820
|
readEmbeddedPackageVersion = () => {
|
|
130821
|
-
const raw = "1.0.
|
|
130821
|
+
const raw = "1.0.957";
|
|
130822
130822
|
return trimVersion(raw);
|
|
130823
130823
|
};
|
|
130824
130824
|
readNearestPackageMetadata = (basePath) => {
|
|
@@ -144013,4 +144013,4 @@ long/umd/index.js:
|
|
|
144013
144013
|
*)
|
|
144014
144014
|
*/
|
|
144015
144015
|
|
|
144016
|
-
//# debugId=
|
|
144016
|
+
//# debugId=9fe1a110-cbff-5659-8dbf-ea5f546fb817
|
|
@@ -28,10 +28,11 @@ One box-hour means one default 4 vCPU / 8 GiB devbox awake for one hour.
|
|
|
28
28
|
|
|
29
29
|
If boxes.dev configures a larger machine size for a team, its awake time uses
|
|
30
30
|
box-hours in proportion to its resources. One awake hour on a 4 vCPU / 16 GiB
|
|
31
|
-
machine uses about 1.39 box-hours
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
machine uses about 1.39 box-hours. The 8 vCPU sizes use 2 box-hours with 16 GiB
|
|
32
|
+
of memory, about 2.39 box-hours with 24 GiB, and about 2.78 box-hours with 32
|
|
33
|
+
GiB. This weighted usage applies to both included usage and prepaid overage
|
|
34
|
+
credits. A team resource change applies to newly created Template boxes; it
|
|
35
|
+
does not resize existing boxes.
|
|
35
36
|
|
|
36
37
|
Awake Template boxes and awake devboxes consume box-hours. Sleeping runtimes do
|
|
37
38
|
not consume active box-hours while they are asleep. Idle devboxes can sleep
|
|
@@ -199,9 +199,6 @@ another thread:
|
|
|
199
199
|
a time. Moving it between the desktop app and the terminal asks first; the
|
|
200
200
|
desktop app can continue showing progress, interrupt the terminal turn, or
|
|
201
201
|
take control again.
|
|
202
|
-
- A Claude Code CLI thread reuses its existing persistent terminal. Moving it
|
|
203
|
-
to another surface disconnects the prior terminal view without restarting
|
|
204
|
-
Claude.
|
|
205
202
|
|
|
206
203
|
In Codex, press `Ctrl+D` with an empty composer to return to the switchboard
|
|
207
204
|
without interrupting a running turn. Press `Esc` to interrupt the current turn
|
|
@@ -229,9 +226,7 @@ complete key guide.
|
|
|
229
226
|
Press Space on a Codex or Claude row to preview recent saved messages without
|
|
230
227
|
waking its machine, attaching to its terminal, or moving input ownership. The
|
|
231
228
|
preview clears unread only after the exact ready content is rendered. Loading,
|
|
232
|
-
unavailable, and stale content do not clear it.
|
|
233
|
-
deferred; Space explains that it is unavailable and Enter still reattaches the
|
|
234
|
-
persistent terminal normally.
|
|
229
|
+
unavailable, and stale content do not clear it.
|
|
235
230
|
|
|
236
231
|
Use `p` to pin or unpin an eligible Template-box thread or devbox anchor, `r`
|
|
237
232
|
to rename a thread, and `x` to archive or restore it. On an archived
|
|
@@ -265,8 +260,8 @@ draft or keep a non-blank draft; while waiting for `Ctrl+O`, `Esc` cancels only
|
|
|
265
260
|
the automatic open and leaves the agent running.
|
|
266
261
|
|
|
267
262
|
CLI-created Claude threads use a persistent Claude terminal but remain ordinary
|
|
268
|
-
Claude threads in the desktop app. They do not
|
|
269
|
-
|
|
263
|
+
Claude threads in the desktop app. They do not use a separate conversation
|
|
264
|
+
type. The desktop app can observe their progress and use the usual
|
|
270
265
|
interrupt-and-transfer flow when control needs to move between surfaces. They
|
|
271
266
|
use the same autonomous permission mode as Claude threads started from the
|
|
272
267
|
desktop app.
|
|
@@ -137,8 +137,9 @@ machine you last used. Return to one of your own threads or the Template box
|
|
|
137
137
|
when you want runtime controls and Files, Git/Review, Terminal, Browser, or
|
|
138
138
|
Ports.
|
|
139
139
|
|
|
140
|
-
The app menu also includes
|
|
141
|
-
actions, and Show Workbench
|
|
140
|
+
The app menu also includes **Project settings**, **Desktop app settings...**,
|
|
141
|
+
**Configure agents...**, **Sign Out**, update actions, and **Show Workbench**.
|
|
142
|
+
The File menu also includes **Delete This Project**.
|
|
142
143
|
|
|
143
144
|
## Runtime Status
|
|
144
145
|
|
|
@@ -163,15 +164,17 @@ runtime has no live metrics.
|
|
|
163
164
|
|
|
164
165
|
Expand **Settings** beneath the Template box and open **Project settings** for
|
|
165
166
|
settings that belong to the project rather than to a particular machine. This
|
|
166
|
-
page contains **Project storage**, **Agent permissions for new
|
|
167
|
-
**Devbox lifecycle**, including the
|
|
167
|
+
page contains **Project storage**, **Git**, **Agent permissions for new
|
|
168
|
+
devboxes**, and **Devbox lifecycle**, including the project's preferred Git
|
|
169
|
+
action, commit thread-link behavior, startup script, shared agent guidance,
|
|
168
170
|
inactivity behavior, and other new-devbox defaults. Opening it does not select
|
|
169
171
|
or wake the Template box.
|
|
170
172
|
|
|
171
|
-
The same Settings section opens **Desktop app settings
|
|
172
|
-
agents
|
|
173
|
-
|
|
174
|
-
|
|
173
|
+
The same Settings section opens **Desktop app settings...** and **Configure
|
|
174
|
+
agents...** in separate windows. Desktop app settings contains only preferences
|
|
175
|
+
for the app and terminal on this computer. The account identity at the bottom
|
|
176
|
+
of the left pane opens account, billing, team, Team Template, update, and
|
|
177
|
+
log-out actions without mixing those controls into project settings.
|
|
175
178
|
|
|
176
179
|
## Template box
|
|
177
180
|
|
|
@@ -337,12 +337,12 @@ the CLI identity; do not run `gh auth login`, `gh auth logout`, or another
|
|
|
337
337
|
as ordinary code owned by the same machine user and can use the connected
|
|
338
338
|
identity while the grant is enabled.
|
|
339
339
|
|
|
340
|
-
|
|
341
|
-
Preferred Git action. Create a pull request keeps Create PR as the
|
|
342
|
-
action. Push directly makes the applicable Push or Publish action
|
|
343
|
-
instead. The preference applies to the project's Template box and its
|
|
344
|
-
and changes ordering only: both workflows remain available whenever
|
|
345
|
-
valid, while repository capabilities, working-tree actions, and
|
|
340
|
+
Open **Project settings** in the desktop app, then expand **Git** to choose the
|
|
341
|
+
project's Preferred Git action. Create a pull request keeps Create PR as the
|
|
342
|
+
usual primary action. Push directly makes the applicable Push or Publish action
|
|
343
|
+
primary instead. The preference applies to the project's Template box and its
|
|
344
|
+
devboxes and changes ordering only: both workflows remain available whenever
|
|
345
|
+
they are valid, while repository capabilities, working-tree actions, and
|
|
346
346
|
existing-pull-request actions can still take precedence.
|
|
347
347
|
|
|
348
348
|
The same settings page has **Add thread links to commits**, which is off by
|
|
@@ -37,7 +37,8 @@ new snapshot before starting the devbox.
|
|
|
37
37
|
To configure startup behavior, open **Project settings** in the desktop app and
|
|
38
38
|
edit **Startup Script** under **Devbox lifecycle** > **New devbox defaults**.
|
|
39
39
|
The field saves shell commands directly as a project setting; boxes.dev does
|
|
40
|
-
not create a script file for it.
|
|
40
|
+
not create a script file for it. The startup timeout defaults to 60 seconds and
|
|
41
|
+
can be set from 1 to 120 seconds.
|
|
41
42
|
|
|
42
43
|
When a project has a devbox startup script, boxes.dev may reserve a disposable
|
|
43
44
|
devbox and run that script after the user starts typing, before the first prompt
|
|
@@ -47,14 +47,14 @@ Common terminal actions:
|
|
|
47
47
|
- If a detached session is shown, choose Connect to attach to it again.
|
|
48
48
|
- If the selected runtime is sleeping, use Wake before terminal sessions load.
|
|
49
49
|
|
|
50
|
-
Desktop
|
|
51
|
-
attachment transport. Direct (Mosh) negotiates an
|
|
52
|
-
lowest latency and repairs that path if connectivity
|
|
53
|
-
the same persistent terminal sessions: tabs created
|
|
54
|
-
after reopening the app and can be attached through
|
|
55
|
-
session elsewhere replaces only that session's
|
|
56
|
-
reports an error rather than falling back to Managed
|
|
57
|
-
or the required remote support is unavailable.
|
|
50
|
+
**Desktop app settings > Connection** includes a Terminal Connection choice.
|
|
51
|
+
Managed is the default attachment transport. Direct (Mosh) negotiates an
|
|
52
|
+
encrypted UDP path for the lowest latency and repairs that path if connectivity
|
|
53
|
+
changes. Both choices use the same persistent terminal sessions: tabs created
|
|
54
|
+
in either mode are restored after reopening the app and can be attached through
|
|
55
|
+
the other mode. Opening one session elsewhere replaces only that session's
|
|
56
|
+
current attachment. Direct reports an error rather than falling back to Managed
|
|
57
|
+
when its native component or the required remote support is unavailable.
|
|
58
58
|
|
|
59
59
|
Terminal tabs can show unread-output or attention indicators, including bell
|
|
60
60
|
alerts when terminal notification settings allow them.
|
|
@@ -86,8 +86,7 @@ it cannot retry safely instead of risking a duplicate prompt.
|
|
|
86
86
|
Space shows a compact read-only preview of recent saved Codex or Claude
|
|
87
87
|
messages. Preview does not wake the machine, connect to the agent, or move
|
|
88
88
|
Claude input ownership. Unread clears only after the exact ready attention
|
|
89
|
-
event renders.
|
|
90
|
-
reattach its persistent terminal.
|
|
89
|
+
event renders.
|
|
91
90
|
|
|
92
91
|
The switchboard can pin or unpin eligible Template-box threads and devbox
|
|
93
92
|
anchors with `p`, rename with `r`, and archive or restore with `x`. Restoring a
|
|
@@ -271,8 +270,7 @@ For eligible new Codex and Claude Code devbox drafts, typing can begin preparing
|
|
|
271
270
|
the devbox and agent in the background. If the first prompt is sent before that
|
|
272
271
|
preparation finishes, the startup area shows `Preparing devbox` while the same
|
|
273
272
|
work completes. If the devbox and agent are already prepared, the prompt
|
|
274
|
-
proceeds directly without that wait.
|
|
275
|
-
threads.
|
|
273
|
+
proceeds directly without that wait.
|
|
276
274
|
|
|
277
275
|
On mobile, you can return to the thread list immediately after tapping Send.
|
|
278
276
|
boxes.dev keeps the first prompt and its attachments while devbox and agent
|
|
@@ -418,31 +416,31 @@ catalog install and lets the turn proceed; Not now declines it. Plugin requests
|
|
|
418
416
|
use the scope-aware actions described under **Plugins**. Pending requests
|
|
419
417
|
remain visible after returning to or reloading the thread until resolved.
|
|
420
418
|
|
|
421
|
-
## Claude
|
|
419
|
+
## Claude Controls
|
|
422
420
|
|
|
423
|
-
Claude
|
|
424
|
-
|
|
421
|
+
Claude threads expose model and reasoning controls when available. Claude also
|
|
422
|
+
supports slash commands when the thread surface has command lookup
|
|
425
423
|
enabled. On desktop, `/model` opens the model picker, and `/model <model>`
|
|
426
424
|
switches directly to a known model. Older supported model generations appear
|
|
427
425
|
under **More models** in the picker.
|
|
428
426
|
|
|
429
|
-
An idle Claude
|
|
427
|
+
An idle Claude chat can continue in a separate chat on the same Template
|
|
430
428
|
box or devbox. Use exact `/fork` to continue from the current tip, or use the
|
|
431
429
|
Split icon beneath a completed desktop response to keep history only through
|
|
432
430
|
that response. Its tooltip reads **Continue in new chat**. Mobile exposes only
|
|
433
431
|
exact `/fork`. The new chat shares the same files and working directory; this
|
|
434
432
|
does not create or rewind a devbox, worktree, or snapshot. The original chat is
|
|
435
433
|
unchanged, and both chats can continue independently. These controls appear
|
|
436
|
-
only for managed Claude
|
|
437
|
-
forking
|
|
434
|
+
only for managed Claude chats whose connected runtime supports chat
|
|
435
|
+
forking.
|
|
438
436
|
|
|
439
|
-
Model and reasoning selections belong to the Claude
|
|
437
|
+
Model and reasoning selections belong to the Claude thread. A new
|
|
440
438
|
selection remains associated with that thread while it is applied, and the
|
|
441
439
|
confirmed settings follow the thread when it is reopened or resumed on desktop
|
|
442
440
|
or mobile. Changing one thread does not change another existing thread; the
|
|
443
441
|
last-used selection can still become the starting default for a new thread.
|
|
444
442
|
|
|
445
|
-
On a connected managed Claude
|
|
443
|
+
On a connected managed Claude thread, the desktop and mobile composers
|
|
446
444
|
also offer these modes when the runtime supports switching them:
|
|
447
445
|
|
|
448
446
|
- **Full-access** is the standard boxes.dev mode and the default for every new
|
|
@@ -462,7 +460,7 @@ choice, so leaving Plan restores the prior mode. While a mode change is being
|
|
|
462
460
|
confirmed, the selector and Send action stay disabled so a prompt cannot run
|
|
463
461
|
under the previous mode.
|
|
464
462
|
|
|
465
|
-
Claude
|
|
463
|
+
Claude can switch a Fable thread to Opus when Fable's safeguards decline
|
|
466
464
|
part of the conversation and Claude retries it with a fallback model. The
|
|
467
465
|
transcript shows a **Switched to Opus 4.8** notice with a link to Anthropic's
|
|
468
466
|
explanation, and the model picker then shows Opus 4.8 as the thread's current
|
|
@@ -658,7 +656,7 @@ conversation, status, commands, tool output, diffs, attachments, and images, so
|
|
|
658
656
|
review the conversation for source, credentials, or other sensitive content
|
|
659
657
|
before sharing it. GUI and Terminal views share the same ordinary conversation,
|
|
660
658
|
so the selected view does not change sharing eligibility. Drafts, setup threads,
|
|
661
|
-
and
|
|
659
|
+
and conversations that have not started cannot be shared.
|
|
662
660
|
|
|
663
661
|
Under **All threads**, sharing a thread that is not private takes one click:
|
|
664
662
|
boxes.dev creates the link and copies it without asking for confirmation,
|
|
@@ -673,6 +671,9 @@ through that exact active share and adds the thread to the viewer's
|
|
|
673
671
|
`/thread/` link is different: it identifies the thread for Team work, Git
|
|
674
672
|
history, and the CLI, but does not grant access or save the thread by itself.
|
|
675
673
|
It always applies the current team policy, privacy setting, and share access.
|
|
674
|
+
On a shared-thread browser page, choose **Open in app** to open the same
|
|
675
|
+
read-only thread in the desktop app, or in the mobile app when viewed on a
|
|
676
|
+
phone or tablet.
|
|
676
677
|
|
|
677
678
|
To save an ordinary Team work thread, choose **Pin to my workbench**. A viewer
|
|
678
679
|
can later choose **Remove from Shared with me** without revoking access.
|
|
@@ -91,7 +91,7 @@ then retry setup.
|
|
|
91
91
|
|
|
92
92
|
## Agent Auth Problems
|
|
93
93
|
|
|
94
|
-
If a Codex or Claude
|
|
94
|
+
If a Codex or Claude thread cannot start or continue because auth is
|
|
95
95
|
missing or expired, open **Configure agents** from the desktop app and reconnect
|
|
96
96
|
the affected agent.
|
|
97
97
|
|
|
@@ -111,7 +111,7 @@ is shared through boxes.dev, so the same auth can be applied to all of your
|
|
|
111
111
|
Template boxes and devboxes. To repair Codex auth from a terminal, run
|
|
112
112
|
`dvb setup --agents` on your laptop.
|
|
113
113
|
|
|
114
|
-
Codex can be connected through ChatGPT login or an API key. Claude
|
|
114
|
+
Codex can be connected through ChatGPT login or an API key. Claude can be
|
|
115
115
|
connected through Claude login or an API key. After reconnecting, retry the
|
|
116
116
|
thread or start a new one.
|
|
117
117
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@boxes-dev/dvb-runtime",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.957",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"imports": {
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"e2b": "^2.18.0",
|
|
78
78
|
"ink-testing-library": "^4.0.0"
|
|
79
79
|
},
|
|
80
|
-
"devboxReleasedAt": "2026-08-
|
|
80
|
+
"devboxReleasedAt": "2026-08-26T22:05:52Z"
|
|
81
81
|
}
|