@boxes-dev/dvb-runtime 1.0.955 → 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 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]="8cb3e81f-1a45-5309-aca4-748b6f610d13")}catch(e){}}();
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.955";
101149
- const rawGitSha = "5b9f2151e6e9c56031edc9bfe255fe313bbc5773";
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.955";
133556
- const rawGitSha = "5b9f2151e6e9c56031edc9bfe255fe313bbc5773";
133557
- const rawSentryRelease = "boxes-dev-dvb@1.0.955+5b9f2151e6e9c56031edc9bfe255fe313bbc5773";
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.955";
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" : backend === "claude_code" ? "Claude Code CLI" : "Claude Code";
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: backend === "claude_code" ? "Claude is still running. Press Enter to reattach its terminal." : "Claude is still open in terminal. Press Enter to reattach.",
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" && (selected.actions.enter.backend === "claude" || selected.actions.enter.backend === "claude_code")) {
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" && action.backend !== "claude_code" || !this.actionDependencies.openClaude) {
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: claudeBackend === "claude_code" ? "Opening terminal\u2026" : confirmation !== null && confirmationWarning === "desktop_turn_active" ? "Interrupting Claude in the desktop app\u2026" : "Opening Claude in terminal\u2026",
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" && record3.backend !== "claude_code") {
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 action.backend === "claude_code" ? "Claude Code" : "Claude";
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=8cb3e81f-1a45-5309-aca4-748b6f610d13
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]="9693a639-b909-5aca-a5d7-5c8663346d95")}catch(e){}}();
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.955";
96332
- const rawGitSha = "5b9f2151e6e9c56031edc9bfe255fe313bbc5773";
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.955";
128628
- const rawGitSha = "5b9f2151e6e9c56031edc9bfe255fe313bbc5773";
128629
- const rawSentryRelease = "boxes-dev-dvb@1.0.955+5b9f2151e6e9c56031edc9bfe255fe313bbc5773";
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.955";
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=9693a639-b909-5aca-a5d7-5c8663346d95
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, while one awake hour on an 8 vCPU / 16 GiB
32
- machine uses 2 box-hours. This weighted usage applies to both included usage
33
- and prepaid overage credits. A team resource change applies to newly created
34
- Template boxes; it does not resize existing boxes.
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. Claude Code CLI preview is
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 become separate Claude Code CLI
269
- threads. The desktop app can observe their progress and use the usual
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 Settings, Configure agents, Sign Out, update
141
- actions, and Show Workbench. The File menu also includes Delete This Project.
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 devboxes**, and
167
- **Devbox lifecycle**, including the startup script, shared agent guidance,
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** and **Configure
172
- agents**. The account identity at the bottom of the left pane opens account,
173
- billing, team, Team Template, update, and log-out actions without mixing those
174
- controls into project settings.
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
- In desktop Settings, open Project Settings → Git to choose the project's
341
- Preferred Git action. Create a pull request keeps Create PR as the usual primary
342
- action. Push directly makes the applicable Push or Publish action primary
343
- instead. The preference applies to the project's Template box and its devboxes
344
- and changes ordering only: both workflows remain available whenever they are
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 Settings includes a Terminal Connection choice. Managed is the default
51
- attachment transport. Direct (Mosh) negotiates an encrypted UDP path for the
52
- lowest latency and repairs that path if connectivity changes. Both choices use
53
- the same persistent terminal sessions: tabs created in either mode are restored
54
- after reopening the app and can be attached through the other mode. Opening one
55
- session elsewhere replaces only that session's current attachment. Direct
56
- reports an error rather than falling back to Managed when its native component
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. Claude Code CLI preview is deferred, but Enter can still
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. This does not apply to Claude Code CLI
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 Code Controls
419
+ ## Claude Controls
422
420
 
423
- Claude Code threads expose model and reasoning controls when available. Claude
424
- Code also supports slash commands when the thread surface has command lookup
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 Code chat can continue in a separate chat on the same Template
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 Code chats whose connected runtime supports chat
437
- forking; Claude Code CLI threads do not expose them.
434
+ only for managed Claude chats whose connected runtime supports chat
435
+ forking.
438
436
 
439
- Model and reasoning selections belong to the Claude Code thread. A new
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 Code thread, the desktop and mobile composers
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 Code can switch a Fable thread to Opus when Fable's safeguards decline
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 legacy Claude CLI threads cannot be shared.
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 Code thread cannot start or continue because auth is
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 Code can be
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.955",
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-25T07:22:17Z"
80
+ "devboxReleasedAt": "2026-08-26T22:05:52Z"
81
81
  }