@shardflux/cli 0.20.0 → 0.22.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 (110) hide show
  1. package/CHANGELOG.md +214 -1
  2. package/README.md +215 -75
  3. package/dist/account-args.js +7 -2
  4. package/dist/account-commands.js +56 -106
  5. package/dist/account-pool.d.ts +19 -15
  6. package/dist/account-pool.js +47 -96
  7. package/dist/account-scope.d.ts +65 -0
  8. package/dist/account-scope.js +246 -0
  9. package/dist/acp-login.d.ts +4 -3
  10. package/dist/acp-login.js +7 -5
  11. package/dist/acp-models.js +20 -15
  12. package/dist/acp.js +66 -13
  13. package/dist/agent-commands.d.ts +4 -1
  14. package/dist/agent-commands.js +86 -32
  15. package/dist/agent-config-return.d.ts +46 -2
  16. package/dist/agent-config-return.js +110 -4
  17. package/dist/agent-credentials.js +7 -3
  18. package/dist/agent-repository.d.ts +16 -3
  19. package/dist/agent-repository.js +149 -74
  20. package/dist/agent-setup.d.ts +14 -3
  21. package/dist/agent-setup.js +78 -36
  22. package/dist/agent-target-commands.js +24 -13
  23. package/dist/args.d.ts +1 -1
  24. package/dist/args.js +94 -54
  25. package/dist/bin.js +5 -1
  26. package/dist/browser.d.ts +13 -2
  27. package/dist/browser.js +30 -14
  28. package/dist/claude-cloud-login.d.ts +24 -2
  29. package/dist/claude-cloud-login.js +151 -11
  30. package/dist/cli-proxy-forward.d.ts +2 -0
  31. package/dist/cli-proxy-forward.js +9 -2
  32. package/dist/cli-proxy-hub.d.ts +69 -25
  33. package/dist/cli-proxy-hub.js +231 -54
  34. package/dist/cli-proxy.d.ts +70 -1
  35. package/dist/cli-proxy.js +298 -32
  36. package/dist/client-settings.d.ts +39 -0
  37. package/dist/client-settings.js +91 -0
  38. package/dist/codex-cloud.d.ts +5 -0
  39. package/dist/codex-cloud.js +88 -17
  40. package/dist/command-center-actions.js +5 -1
  41. package/dist/commands.js +171 -22
  42. package/dist/conversation-commands.d.ts +5 -0
  43. package/dist/conversation-commands.js +8 -5
  44. package/dist/conversation-terminal.d.ts +10 -2
  45. package/dist/conversation-terminal.js +77 -13
  46. package/dist/conversations.d.ts +73 -1
  47. package/dist/conversations.js +257 -23
  48. package/dist/device-bridge.d.ts +1 -1
  49. package/dist/device-bridge.js +6 -4
  50. package/dist/device-helper.js +43 -22
  51. package/dist/errors.d.ts +27 -1
  52. package/dist/errors.js +45 -5
  53. package/dist/filesystem-commands.d.ts +16 -9
  54. package/dist/filesystem-commands.js +108 -54
  55. package/dist/format.d.ts +2 -1
  56. package/dist/format.js +10 -1
  57. package/dist/handlers.js +3 -1
  58. package/dist/initial-prompt.d.ts +8 -0
  59. package/dist/initial-prompt.js +43 -1
  60. package/dist/large-media.d.ts +14 -0
  61. package/dist/large-media.js +100 -0
  62. package/dist/linux-terminal.d.ts +5 -3
  63. package/dist/linux-terminal.js +6 -20
  64. package/dist/local-sessions.d.ts +26 -2
  65. package/dist/local-sessions.js +113 -24
  66. package/dist/machine-setup.d.ts +11 -1
  67. package/dist/machine-setup.js +69 -22
  68. package/dist/machine-status.d.ts +67 -0
  69. package/dist/machine-status.js +140 -0
  70. package/dist/main.js +11 -13
  71. package/dist/move-worktrees-restore.py +144 -0
  72. package/dist/move-worktrees.d.ts +63 -0
  73. package/dist/move-worktrees.js +201 -0
  74. package/dist/move.d.ts +10 -1
  75. package/dist/move.js +116 -16
  76. package/dist/onboarding.d.ts +11 -7
  77. package/dist/onboarding.js +59 -27
  78. package/dist/prepared-repository.d.ts +202 -0
  79. package/dist/prepared-repository.js +860 -0
  80. package/dist/prepared-repository.py +1306 -0
  81. package/dist/project-preparation.d.ts +48 -0
  82. package/dist/project-preparation.js +304 -0
  83. package/dist/project-sync-manifest.d.ts +4 -0
  84. package/dist/project-sync-manifest.js +5 -1
  85. package/dist/project-sync-transfer.js +1 -1
  86. package/dist/project-sync.d.ts +19 -4
  87. package/dist/project-sync.js +31 -8
  88. package/dist/project-template-setup.d.ts +33 -1
  89. package/dist/project-template-setup.js +59 -2
  90. package/dist/secret-ask.d.ts +72 -0
  91. package/dist/secret-ask.js +351 -0
  92. package/dist/seed-phases.d.ts +8 -1
  93. package/dist/seed-phases.js +17 -2
  94. package/dist/setup-cache.d.ts +7 -0
  95. package/dist/setup-cache.js +32 -0
  96. package/dist/t3-launch.js +1 -4
  97. package/dist/t3-mode.d.ts +8 -2
  98. package/dist/t3-mode.js +19 -4
  99. package/dist/t3-phone.d.ts +4 -2
  100. package/dist/t3-phone.js +12 -4
  101. package/dist/terminal-apps.d.ts +157 -0
  102. package/dist/terminal-apps.js +561 -0
  103. package/dist/terminal-onboarding.js +6 -1
  104. package/dist/this-computer.d.ts +11 -0
  105. package/dist/this-computer.js +36 -0
  106. package/dist/thread-on-computer.js +4 -1
  107. package/dist/update.js +11 -3
  108. package/dist/worktree-twin.d.ts +10 -2
  109. package/dist/worktree-twin.js +27 -9
  110. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,6 +1,219 @@
1
1
  # Changelog
2
2
 
3
- ## 0.20.0 (not yet published)
3
+ ## 0.22.0 (2026-10-13)
4
+
5
+ - **Starts send only what changed.** A new conversation's project travels as Git packs into a project cache its VMs
6
+ share: a start sends only what the cache lacks (a second chat on the same state sends nothing; a one-file edit sends
7
+ its delta), in 8 MiB binary parts, four at a time, resumable after an interruption. Dirty and untracked files go
8
+ once, not as a copy and again in the snapshot.
9
+ - **Large media follow the first prompt.** Untracked images, audio and video of 256 KiB and more stay out of the twin
10
+ snapshot and land in the conversation's worktree as files its Git ignores, as yours does; above 32 MiB they keep
11
+ arriving after the agent has your prompt. The device helper finishes them while the VM is awake. A file the agent
12
+ writes first is kept.
13
+ - **History from origin.** A project whose cache holds none of its history takes it from origin inside the cloud: the
14
+ fetch the VM makes of the branch while it boots (coding 53+), or one of its own; only commits origin lacks go from
15
+ this computer.
16
+ - **Selected projects, prepared ahead.** `shard projects sync add <path>` keeps a project ready for new chats: the
17
+ device helper puts its current state in the project cache, and when its dependency files change, installs them and
18
+ saves the project template, each time in a short-lived VM it deletes after. `pause`, `remove` and `list` manage the
19
+ selection. Only selected projects are prepared.
20
+ - A Codex Cloud start that outlives the launcher's deadline is not lost: the conversation stays accepted, and opening it
21
+ (or the device helper) continues the same start, with the state it captured, and sends the prompt once.
22
+ - Uses SDK 0.26.0 (`projectTemplates.prepare`).
23
+ - New conversations set the project up: in a repository whose project has no template for its current dependency
24
+ files, the conversation's VM prepares its worktree in the background (toolchains, dependencies, build and tests)
25
+ once the agent has its first prompt, and saves the project template the next conversation starts from, dependencies
26
+ installed. This covers `shard ./` in a terminal, with `--json` and opened in Claude Desktop or claude.ai, `shard agents
27
+ new` and the launcher.
28
+ - Conversation previews and `shard ws tunnel` reach the guest on either loopback (SDK 0.26.0): a preview of a dev
29
+ server bound to `localhost` opens wherever the guest resolves localhost to `::1` first, and guest clients of
30
+ `localhost` reach a tunnel on the first try.
31
+ - `shard agents accounts` suggests `use` only for accounts you can make active (the API's `can_activate`); a member is
32
+ told an owner or admin chooses the active account.
33
+ - `shard agents accounts use <account>` makes an account the active one of its provider (`--json` prints the updated
34
+ list and the account). New conversations start with its login and running conversation VMs get it; running Claude
35
+ conversations bring Remote Control back by themselves, and Codex Cloud moves to the active ChatGPT account. The list
36
+ marks the active account `active`.
37
+ - Removed: `shard agents accounts move`, `shard agents accounts pool`, `add --api-key-stdin` and `add --scope`. The
38
+ account you mark active stays active until you choose another; usage windows and status are shown for each account.
39
+ - `shard agents open` and T3 Code no longer special-case pooled conversations.
40
+ - The forwarder on this computer keeps your hosted CLIProxyAPI at one login per provider without waking it: at its
41
+ start, at the first request after the hosted copy slept, every minute while it sleeps and every 15 minutes while it
42
+ runs. A login chosen with `--use` on import arrives disabled and is enabled after the others are disabled.
43
+ - `shard cli-proxy use <email|file>` makes a login its provider's active one in your hosted CLIProxyAPI (`--json` lists
44
+ the active and disabled logins). One login per provider serves requests, the others stay in the hub disabled, and
45
+ `shard cli-proxy` marks the active one. `--use <email>` on import picks it when this computer has several.
46
+
47
+ - `shard machine save --wait` and `shard template save --wait`: a version larger than the plan's workspace disk says
48
+ so in plain words (its size and the plan's disk), with `retryable: false` and a hint that names both ways forward:
49
+ delete what the VM does not need (`shard machine open`), then save again, or move to a plan with a larger disk
50
+ (`shard billing plans`). It no longer suggests running the same save again or sending a bug report. The JSON error's
51
+ `details` add the build's `error_code` and its `limit`, `value` and `actual` (bytes). Any other save failure the same
52
+ VM cannot pass is `retryable: false` too. `shard machine setup --status` and the apps' machine row read it as too
53
+ large: "Cloud machine not saved: over the plan’s 2 GiB disk". Uses SDK 0.26.0.
54
+ - Codex conversations open in your terminal app on macOS too, as Claude's do and as they already did on Linux:
55
+ `shard agents targets --open-in codex=terminal` (a bare `--open-in terminal` now covers both apps). The menu bar and
56
+ the Linux app offer it in each agent's **Open in**.
57
+ - `shard agents targets --json` adds `open_in_targets`: every place each app's conversations can open on this computer,
58
+ so clients offer exactly what `--open-in` takes.
59
+ - New conversations reach their first prompt sooner. The sign-in check and the conversation API check run beside the
60
+ project's local snapshot; this computer's changes are read while the VM starts; the repository's Git config, exclude
61
+ rules, branch and start-state snapshot take 4-6 fewer requests; credential fill is configured beside the first
62
+ prompt. With a VM whose platform has `sf-agent conversation first-prompt`, the VM types the first prompt itself, in
63
+ one request (it waits for the input box, pastes, waits for the paste to show, then presses Enter); `--json` still
64
+ reports `initial_prompt.submitted` the same way, and a prompt the VM could not type goes to the conversation's
65
+ inbox at once (`initial_prompt.queued`). When the VM has already fetched the repository's history from its remote
66
+ (platforms that start that fetch at boot), the seed adopts it and fetches only what is newer; the history apply and
67
+ the repository's config are one request, and the checkout writes files in parallel.
68
+ - T3 Code: a new conversation's agent config from this computer is copied once its first prompt is on its way, as for
69
+ terminal conversations, and its agent starts with fewer serial steps (a prompt that opened the connection does not
70
+ reconcile the project files twice).
71
+ - T3 Code: prompts in a repository with symbolic links are no longer refused with "mode changed during sync"; a link
72
+ is identified by its target on both sides.
73
+ - T3 Code: a file edited on this computer before a conversation's first prompt reaches its VM as this computer's edit,
74
+ not a conflict: no `.shard-conflict-acp-…` copy lands in the checkout.
75
+ - Each command starts ~0.1 s sooner: V8's compiled code for the CLI's modules is kept in the OS temp directory and
76
+ reused (Node's module compile cache).
77
+ - `SHARDFLUX_TRACE_SEED=1` marks each start phase with its wall clock (`@<epoch ms>`) and runs to the first prompt's
78
+ Enter.
79
+ - `shard conversations list`, `get`, `resume`, `wait` and `land` show **New conversation** for a conversation still
80
+ named by its generated id (it has not had a prompt yet), not the id a second time. A name you chose stays; `--json`
81
+ keeps the API's title.
82
+ - `shard agents accounts` names every Codex window by its length, as the apps do: **Weekly**, **5-hour**, and **2-day**
83
+ or **90-minute** for other lengths (it read "Primary"/"Secondary" for anything but 5 hours and a week).
84
+ - `shard ./` starts from a shallow clone (`git clone --depth N`): the conversation's repository gets the same shallow
85
+ history.
86
+ - T3 Code ACP threads synchronize project files before each prompt and before reporting its completion. Remote edits, new files and deletions appear in T3’s Changes and checkpoints; local edits reach the next remote turn. Reopening retains the conversation’s sync baseline, including after a VM restore. Conflicting edits retain both copies using the existing project-sync rules. No idle file watcher is added.
87
+ - `shard move` no longer asks for `--this-worktree-only` in a repository the live twin has snapshotted: Shardflux's own `refs/shard/*` refs are not counted as local refs the move would leave behind.
88
+ - A conversation whose account setup cache cannot be mounted starts without a message in the terminal: setup caches in
89
+ the conversation's own workspace, as before, and the reason (API code, reason and request id) is a JSON line in
90
+ `setup-cache.log` of the config directory. `shard template` still reports `cache_scope`.
91
+ - The editor sign-in also starts as `shard --login`, the form ACP registry clients run (they replace `acp` with the sign-in method's arguments); T3 Code's `shard acp --login` is unchanged.
92
+ - Includes the desktop launch-card release: menu bar 0.8.3 and Linux desktop 0.1.8. Submitted prompts release the
93
+ launcher immediately and track startup independently in an overlapping card deck. Linux payload pins move to 0.1.8.
94
+ - `shard operations progress <id>` reports actual suspension phase/deadline and safe next action. `shard operations cancel <id>` requests pre-capture cancellation; `--wait --timeout 5m` waits for confirmed original-workspace recovery. Acceptance remains distinct from recovery; a capture that has started is refused. Uses SDK 0.26.0 in this same batch.
95
+
96
+ - **Breaking consent default:** `shard feedback` previews without sending; `--yes` submits only after review and explicit user authorization. Agent help and error nudges require user-directed reporting and preserve request/error IDs. Manual approved submissions, session fallback, validation, duplicate and rate-limit behavior remain supported.
97
+ - Machine and template saves show source size and an estimated duration, then queued/build state and phase updates immediately. With `--json`, progress events go to stderr and the final stdout document includes `preflight` and `phases`. Failures flush the latest counters even within the update throttle and retain `details.last_progress` plus build/recovery pointers. Older APIs emit a structured `save_started` event when build progress cannot be read. Missing final host reports preserve the last observed progress.
98
+ - Inspect separates `connections_ready` (legacy `ready`) from `machine_ready`. Failed saves, no saved version,
99
+ queue progress, older APIs and failed status checks stay visible. Unknown versions remain `null`; readiness
100
+ requires a positive saved version. Terminal onboarding names agent connections instead of claiming the whole
101
+ environment is ready. Conversations remain available while a machine is being set up.
102
+
103
+ - **Your cloud machine as your account has it, everywhere:** `shard machine setup --status` reads the machine from your
104
+ account, so it always agrees with `shard machine`, and `shard setup --inspect` carries the same row
105
+ (`onboarding.machine`) next to your agents. It is ready (the version in use), saving (your agent setting it up, or
106
+ the save with its place in the queue), not saved with the reason in one line ("Cloud machine not saved: it’s too
107
+ large · version 2 stays in use") and what to run (`Save again`: `shard machine save --wait`, or `Retry`: `shard
108
+ machine setup --from-this-computer`), or not set up yet. The menu bar, the Linux app and the terminal's first run
109
+ show it. `--json` adds `machine: {state, version, line, reason, error, progress, action}`; `state` keeps its four
110
+ values (saving reads as `running`) and `machine_version` is the version in use.
111
+ - `shard machine save` saves the machine VM that is there: a deleted one is skipped.
112
+ - **On Linux, Linux words:** the first run's steps name the launcher shortcut you set in the Shardflux app (Alt+Shift+Space
113
+ unless you changed it), and every line and help text says "this computer" and "your computer".
114
+ - **`shard move` follows where a session worked:** a session that began in another folder (such as Claude Desktop's
115
+ scratch folder) and went on in your repository is listed under the repository in `shard move --list` (and under the
116
+ folder it began in), `--last` picks it there, and `--path <repository>` moves it, with its working directories in
117
+ the repository moved to the VM's folder. A session's `cwd` is where most of its latest records are; `--json` adds
118
+ `cwds`, every folder it worked in.
119
+ - A move confirms its repository from structured transcript metadata, including records between the discovery head
120
+ and tail. Nested tool inputs and outputs cannot confirm another folder; path rewriting preserves them and signed
121
+ history. Session listing accepts whitespace in JSON records.
122
+ - The device helper also keeps its latest agent-config line ("Claude saved the skill deploy-checks in the cloud: it's on
123
+ this computer now") in `agent-config-notice.json` in the config folder, so the Linux app's top-bar panel shows it as
124
+ the Mac menu does (desktop-linux 0.1.8).
125
+ - Pins `@shardflux/desktop-linux-x64` and `@shardflux/desktop-linux-arm64` 0.1.8.
126
+ - **T3 Connect works in an account with more than one organization.** Every T3 sign-in (`shard setup --inspect
127
+ --t3-connect`, the onboarding and Settings, `shard agents open|new --in t3`) is scoped to an organization: `--project`
128
+ (id or slug), else a project of `--org`, else the API key's project, else the saved default project; the phone link
129
+ signs in for the workspace's own project. Before, a person in two organizations got 422 "project_id is required when
130
+ you belong to more than one organization" whatever they set.
131
+ Onboarding status uses the same person and project as sign-in, even when another organization is already
132
+ connected or no API key is saved. Its Connect command retains `--org`/`--project`; an explicit selection leaves
133
+ the default target's remembered status unchanged. A saved session or `SHARDFLUX_SESSION_TOKEN` starts sign-in.
134
+ - **A default from an organization you left is said plainly.** `shard whoami` warns when the API key or the saved
135
+ default organization belongs to an organization you are no longer in, with the fix (`shard orgs use <org>`, `shard
136
+ setup --org <org> --new-key`); `--json` adds `warnings` (`code`, `message`, `fix`). Account commands name the gone
137
+ default and list your organizations instead of only "pick one with --org", and `shard setup` says the saved key's
138
+ organization is gone.
139
+ - `whoami` also warns after switching defaults while a key belongs to another organization you still belong to.
140
+ Switch warnings distinguish a departed key from an accessible key elsewhere, retaining credentials until you
141
+ accept replacement. Environment keys take precedence; recovery names `unset SHARDFLUX_API_KEY`, and
142
+ `setup --json` includes an `api_key_environment_override` warning when the saved key is still overridden.
143
+ - `shard orgs use` and `shard projects use` say when the API key acts in another organization (workspace, agent and
144
+ usage commands use the key) and name the command that makes a key for the new default; in a terminal they offer to
145
+ make it (`[y/N]`). `--json` adds `api_key` and `warnings`.
146
+ - `shard usage --org <another organization>` reads it with your signed-in session (a project key answers 404 for any
147
+ other organization; `--org` also takes a slug when you are signed in). Without a session it says which organization
148
+ the key belongs to, with `shard auth login` and `shard setup --org <org> --new-key`.
149
+ - Organization usage keeps a real 404 from the key's own organization, and a key in `SHARDFLUX_API_KEY` names the
150
+ `unset SHARDFLUX_API_KEY` step after saving a replacement. Summary, estimate and series use the same membership
151
+ checks; workspace usage keeps its project-key scope.
152
+ - `shard setup` in more than one organization says how the choice is kept: the organization you pick becomes this
153
+ computer's default, with an API key for it, and `shard setup --org <org> --new-key` switches.
154
+ - T3 Connect inspections keep permanent workspace link errors and their remediation visible, without restarting links or replacing an approved sign-in. After freeing a T3 environment slot, explicitly open the project in T3 again to retry.
155
+ - Clarify machine save source selection and recovery: save from the machine VM, or explicitly select an existing
156
+ machine source with the SDK/MCP. A conversation or unmarked fork returns `filesystem_source_mismatch`; copy
157
+ intended changes into the machine VM before saving. Native VM access stays bound to its own workspace.
158
+ - `shard move --plan` reports registered worktree paths, transcript reference hits, file counts and bytes before
159
+ upload. `--preserve-all-worktrees` copies all local refs and registered worktrees, including ignored files, with
160
+ exact indices, staged/unstaged status and hash checks; Git location pointers and transcript path fields map to
161
+ the VM. The selected tree uses the conversation branch; original branches/HEADs stay in a durable, immutable
162
+ migration-time recovery archive. Recovery refuses nonempty folders. `--this-worktree-only` explicitly leaves
163
+ other trees local. Source files, indices, refs and unrelated sibling folders stay untouched.
164
+ - `shard update` keeps its npm prefix in the displayed install command. A permission failure offers an explicit user-directory install and executable path, leaving npm config, PATH and other packages unchanged; it no longer recommends sudo.
165
+ - Machine setup requires a completed successful VM command and a structured setup report before saving. A refused
166
+ agent-config copy stops setup instead of publishing a machine without that configuration. An explicit Claude
167
+ Code tool permission refusal stops without trying another agent; ordinary connectivity or agent failures can
168
+ still fall back.
169
+ - The setup agent receives the machine's actual disk grant and its limiting source before installing tools. It checks
170
+ available space and package sizes, uses small batches without recommended packages, and reports tools that do not
171
+ fit as skipped. It never changes your plan or disk caps.
172
+ - Agent-led setup stops an action refused by a permission system or auto-mode classifier and gives the user an
173
+ exact command plus a non-secret confirmation to resume. It never bypasses the refusal through permission
174
+ changes, scripts or alternate tools. `setup --guide --json` checks saved account state without printing a key;
175
+ an exit code or a saved key alone is not evidence that onboarding worked.
176
+
177
+ - **Start a project over from your machine** with `shard template delete`: the project template of this folder's
178
+ repository and its saved versions go, it is no longer rebuilt when your machine or the platform changes, and new
179
+ conversations start from your machine until setup after `shard ./` (or `shard template save`) saves a new one. VMs
180
+ running on it keep their files; builds still running for it are stopped. In a terminal it asks first (`[y/N]`, No
181
+ keeps it); elsewhere it needs `--yes`. It prints `template: deleted (3 saved versions); new conversations start from
182
+ your machine until setup saves a new one`, and `--json` the API's body (`template.versions`, `canceled_builds`).
183
+ Nothing saved for the repository is exit 3, `not_found` (`details.reason` `filesystem_not_found`).
184
+ - `shard template` says when a template no conversation, VM or save used for 30 days follows your machine on its next
185
+ use (`platform …@4, follows your machine on next use`): it is rebuilt when a conversation starts on it, and that
186
+ conversation's VM moves onto the rebuilt version at its next safe point.
187
+ - The agent-config loop follows activity: every 2 s while one of your conversations works or ended a turn in the last
188
+ 5 minutes, backing off to every 60 s otherwise, with one small request every 10 s that snaps it back when a
189
+ conversation starts working anywhere (staging: 1.1 s p50, 2.3 s max over 6 turns; idle, 9.7 requests a minute
190
+ instead of 54 with 0.20.0).
191
+ - **Your coding agent runs the setup; you only decide.** `shard setup --guide` (and `shard` in a coding agent's shell)
192
+ now tells the agent to do every step itself, ask one multiple-choice question at a time with the recommended answer
193
+ first, and keep each message to a sentence or two. It sets your cloud machine up from this computer by default (`shard
194
+ machine setup --from-this-computer`), asks where conversations open, and ends by opening your first conversation;
195
+ `--json` carries `rules` and each step's `choices`.
196
+ - **Secrets without your agent seeing them:** `shard secrets create NAME --ask` (and `rotate`) opens a one-time page on
197
+ this computer where you type the value; it goes straight to your project's secrets and the agent only sees that it
198
+ was saved. In a coding agent's shell this is the default when nothing is piped; on a terminal you get a hidden
199
+ prompt. `shard files write <key> <path> --ask` does the same for a secret file such as `~/.npmrc` on your machine.
200
+ `--json` prints `{"event":"open","url":…}` first; the page closes after one use or 10 minutes.
201
+ - **Claude sign-in from your coding agent:** `shard agents credentials login claude` runs in a coding agent's shell
202
+ (or with `--json`): it opens the claude.ai sign-in and a page for its code in your browser, then finishes by itself.
203
+ - **Conversations open in your app:** `shard agents targets --terminal <ghostty|iterm|terminal|wezterm|kitty|alacritty|warp>`
204
+ (`:tab` or `:window`) saves where terminal conversations open, and `agents targets --json` lists the terminals on
205
+ this computer (`terminals`, the one shard runs in as `current_terminal`). `shard agents open <ref> --in terminal`
206
+ opens a new tab in that app (Ghostty 1.3+, iTerm2, WezTerm, kitty, Warp; a window in Terminal and Alacritty) in the
207
+ project folder, and `shard ./` from a coding agent's shell opens the new conversation there. When the app can't be
208
+ driven it opens the next one and says why in one line.
209
+ - When a browser can't be opened, commands print the link to open instead (the opener's failure is detected).
210
+ - Installs desktop-linux 0.1.8 on Linux.
211
+ - **Mark your cloud conversations your way:** `shard settings --title-prefix <text|none|default>` sets the marker your
212
+ Claude conversations' titles start with in claude.ai and the Claude app (default `☁`: "☁ Fix login bug ·
213
+ todo-app"; `none` for no marker). `shard settings` shows it with where conversations open; `--json` too. New
214
+ conversations and threads you start on an existing computer carry it.
215
+
216
+ ## 0.20.0 (2026-10-12)
4
217
 
5
218
  - **A save waits in line instead of failing** when your plan's build slots are in use: `shard machine save` and `shard
6
219
  template save` print where the build is (`machine: saving version 5; queued behind 3 builds · about 40 s; …`), with