@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.
- package/CHANGELOG.md +214 -1
- package/README.md +215 -75
- package/dist/account-args.js +7 -2
- package/dist/account-commands.js +56 -106
- package/dist/account-pool.d.ts +19 -15
- package/dist/account-pool.js +47 -96
- package/dist/account-scope.d.ts +65 -0
- package/dist/account-scope.js +246 -0
- package/dist/acp-login.d.ts +4 -3
- package/dist/acp-login.js +7 -5
- package/dist/acp-models.js +20 -15
- package/dist/acp.js +66 -13
- package/dist/agent-commands.d.ts +4 -1
- package/dist/agent-commands.js +86 -32
- package/dist/agent-config-return.d.ts +46 -2
- package/dist/agent-config-return.js +110 -4
- package/dist/agent-credentials.js +7 -3
- package/dist/agent-repository.d.ts +16 -3
- package/dist/agent-repository.js +149 -74
- package/dist/agent-setup.d.ts +14 -3
- package/dist/agent-setup.js +78 -36
- package/dist/agent-target-commands.js +24 -13
- package/dist/args.d.ts +1 -1
- package/dist/args.js +94 -54
- package/dist/bin.js +5 -1
- package/dist/browser.d.ts +13 -2
- package/dist/browser.js +30 -14
- package/dist/claude-cloud-login.d.ts +24 -2
- package/dist/claude-cloud-login.js +151 -11
- package/dist/cli-proxy-forward.d.ts +2 -0
- package/dist/cli-proxy-forward.js +9 -2
- package/dist/cli-proxy-hub.d.ts +69 -25
- package/dist/cli-proxy-hub.js +231 -54
- package/dist/cli-proxy.d.ts +70 -1
- package/dist/cli-proxy.js +298 -32
- package/dist/client-settings.d.ts +39 -0
- package/dist/client-settings.js +91 -0
- package/dist/codex-cloud.d.ts +5 -0
- package/dist/codex-cloud.js +88 -17
- package/dist/command-center-actions.js +5 -1
- package/dist/commands.js +171 -22
- package/dist/conversation-commands.d.ts +5 -0
- package/dist/conversation-commands.js +8 -5
- package/dist/conversation-terminal.d.ts +10 -2
- package/dist/conversation-terminal.js +77 -13
- package/dist/conversations.d.ts +73 -1
- package/dist/conversations.js +257 -23
- package/dist/device-bridge.d.ts +1 -1
- package/dist/device-bridge.js +6 -4
- package/dist/device-helper.js +43 -22
- package/dist/errors.d.ts +27 -1
- package/dist/errors.js +45 -5
- package/dist/filesystem-commands.d.ts +16 -9
- package/dist/filesystem-commands.js +108 -54
- package/dist/format.d.ts +2 -1
- package/dist/format.js +10 -1
- package/dist/handlers.js +3 -1
- package/dist/initial-prompt.d.ts +8 -0
- package/dist/initial-prompt.js +43 -1
- package/dist/large-media.d.ts +14 -0
- package/dist/large-media.js +100 -0
- package/dist/linux-terminal.d.ts +5 -3
- package/dist/linux-terminal.js +6 -20
- package/dist/local-sessions.d.ts +26 -2
- package/dist/local-sessions.js +113 -24
- package/dist/machine-setup.d.ts +11 -1
- package/dist/machine-setup.js +69 -22
- package/dist/machine-status.d.ts +67 -0
- package/dist/machine-status.js +140 -0
- package/dist/main.js +11 -13
- package/dist/move-worktrees-restore.py +144 -0
- package/dist/move-worktrees.d.ts +63 -0
- package/dist/move-worktrees.js +201 -0
- package/dist/move.d.ts +10 -1
- package/dist/move.js +116 -16
- package/dist/onboarding.d.ts +11 -7
- package/dist/onboarding.js +59 -27
- package/dist/prepared-repository.d.ts +202 -0
- package/dist/prepared-repository.js +860 -0
- package/dist/prepared-repository.py +1306 -0
- package/dist/project-preparation.d.ts +48 -0
- package/dist/project-preparation.js +304 -0
- package/dist/project-sync-manifest.d.ts +4 -0
- package/dist/project-sync-manifest.js +5 -1
- package/dist/project-sync-transfer.js +1 -1
- package/dist/project-sync.d.ts +19 -4
- package/dist/project-sync.js +31 -8
- package/dist/project-template-setup.d.ts +33 -1
- package/dist/project-template-setup.js +59 -2
- package/dist/secret-ask.d.ts +72 -0
- package/dist/secret-ask.js +351 -0
- package/dist/seed-phases.d.ts +8 -1
- package/dist/seed-phases.js +17 -2
- package/dist/setup-cache.d.ts +7 -0
- package/dist/setup-cache.js +32 -0
- package/dist/t3-launch.js +1 -4
- package/dist/t3-mode.d.ts +8 -2
- package/dist/t3-mode.js +19 -4
- package/dist/t3-phone.d.ts +4 -2
- package/dist/t3-phone.js +12 -4
- package/dist/terminal-apps.d.ts +157 -0
- package/dist/terminal-apps.js +561 -0
- package/dist/terminal-onboarding.js +6 -1
- package/dist/this-computer.d.ts +11 -0
- package/dist/this-computer.js +36 -0
- package/dist/thread-on-computer.js +4 -1
- package/dist/update.js +11 -3
- package/dist/worktree-twin.d.ts +10 -2
- package/dist/worktree-twin.js +27 -9
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,219 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
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
|