@shardflux/cli 0.20.0 → 0.23.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 +312 -1
- package/README.md +242 -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-journal.js +58 -6
- package/dist/acp-login.d.ts +13 -5
- package/dist/acp-login.js +37 -8
- package/dist/acp-models.d.ts +6 -1
- package/dist/acp-models.js +29 -19
- package/dist/acp.js +120 -14
- package/dist/agent-commands.d.ts +4 -1
- package/dist/agent-commands.js +110 -42
- 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.d.ts +20 -1
- package/dist/agent-target-commands.js +73 -31
- package/dist/agent-targets.js +6 -1
- package/dist/args.d.ts +1 -1
- package/dist/args.js +95 -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-hub.d.ts +61 -25
- package/dist/cli-proxy-hub.js +202 -54
- package/dist/cli-proxy.d.ts +44 -1
- package/dist/cli-proxy.js +177 -28
- package/dist/client-settings.d.ts +39 -0
- package/dist/client-settings.js +91 -0
- package/dist/codex-cloud.d.ts +14 -4
- package/dist/codex-cloud.js +135 -31
- package/dist/codex-linux.d.ts +14 -0
- package/dist/codex-linux.js +69 -0
- package/dist/command-center-actions.js +18 -5
- package/dist/command-center-model.d.ts +2 -0
- package/dist/command-center-model.js +6 -1
- package/dist/command-center.js +3 -3
- package/dist/commands.js +173 -24
- 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 +78 -13
- package/dist/conversations.d.ts +86 -1
- package/dist/conversations.js +306 -23
- package/dist/desktop-linux.js +16 -3
- 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 +29 -2
- package/dist/errors.js +50 -7
- package/dist/filesystem-commands.d.ts +16 -9
- package/dist/filesystem-commands.js +133 -57
- 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/menubar.d.ts +6 -5
- package/dist/menubar.js +38 -28
- package/dist/move-worktrees-restore.py +144 -0
- package/dist/move-worktrees.d.ts +69 -0
- package/dist/move-worktrees.js +252 -0
- package/dist/move.d.ts +10 -1
- package/dist/move.js +111 -16
- package/dist/onboarding.d.ts +11 -7
- package/dist/onboarding.js +63 -29
- package/dist/prepared-repository.d.ts +204 -0
- package/dist/prepared-repository.js +860 -0
- package/dist/prepared-repository.py +1307 -0
- package/dist/project-preparation.d.ts +62 -0
- package/dist/project-preparation.js +316 -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 +22 -4
- package/dist/project-sync.js +34 -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.d.ts +2 -1
- package/dist/t3-launch.js +12 -6
- 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/t3-proxy.d.ts +81 -0
- package/dist/t3-proxy.js +325 -0
- package/dist/terminal-apps.d.ts +168 -0
- package/dist/terminal-apps.js +574 -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.d.ts +2 -0
- package/dist/update.js +43 -9
- 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,317 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.23.0 (2026-10-14)
|
|
4
|
+
|
|
5
|
+
- Codex Cloud enable and setup report when a ChatGPT sign-in is required, with `codex login` and `shard setup` as the next steps. Setup offers the sign-in action.
|
|
6
|
+
|
|
7
|
+
- On macOS, the installed CLI records a matching stable Node.js path for the menu bar, so Homebrew upgrades and
|
|
8
|
+
cleanup keep its actions available.
|
|
9
|
+
- On Linux, the desktop records the installed Node.js and CLI paths for its actions and existing autostart entry,
|
|
10
|
+
keeping them available after the launching shell's fnm multishell links expire.
|
|
11
|
+
- Opening a moved Claude or Codex conversation by its full key resolves the conversation from any folder, including
|
|
12
|
+
`--in auto` in the desktop menus and explicit app/web targets. A computer key opens its bound conversation's session.
|
|
13
|
+
- Move to cloud moves the session's checkout, uncommitted edits included, in any repository: also one with other
|
|
14
|
+
local branches, other worktrees or a worktree whose folder is gone. Those stay on this computer, so `shard move`,
|
|
15
|
+
the menu bar's and the Linux app's **Move to cloud** and the MCP tool go straight ahead without a scope choice
|
|
16
|
+
(`--this-worktree-only` is now the default). When the session also worked in another worktree, the move names it
|
|
17
|
+
in one line and `--json` lists it as `other_worktrees`. `--preserve-all-worktrees` skips registrations whose folder
|
|
18
|
+
is gone (`stale_registrations` in `--plan`); their branches move with the other local refs.
|
|
19
|
+
- Open Codex Cloud chats in the browser on every platform. `agents open --original` opens the original history; `--history <thread-id>` opens any earlier linked chat. JSON includes all previous history links.
|
|
20
|
+
|
|
21
|
+
- Opening a conversation from a coding agent's shell (Codex, Claude Code, Cursor) opens exactly one terminal, and the
|
|
22
|
+
conversation attaches there. The terminal no longer inherits the agent shell's variables, and a terminal Shardflux
|
|
23
|
+
opened never opens another, so it no longer reopens terminals in a loop that steals focus. A Codex Cloud conversation
|
|
24
|
+
opens in Codex before any terminal is considered, also when given its computer's key.
|
|
25
|
+
- Inherits completed forward-helper verification reuse from SDK 0.27.0 on a reused workspace client; each ownership epoch and helper version is verified again.
|
|
26
|
+
- Historical template file-list GETs wait for checksum-verified cache reconstruction, honoring Retry-After within the SDK admission deadline. File history and contents remain stored; POSTs never replay for file_list_indexing.
|
|
27
|
+
|
|
28
|
+
- Plan-derived API budgets (0.23.0+, SDK 0.27.0): `--json` error output includes `rate_limit` and `retry_after_seconds`; the text hint names the shared scope and delay. API request pacing follows the SDK admission timeout and preserves the request body. Reuse workspace credentials and reduce status polling when the returned budget asks for a delay.
|
|
29
|
+
|
|
30
|
+
- T3 Code conversations on Shardflux follow your T3 Code proxy setup (CLIProxyAPI, or any Claude- or
|
|
31
|
+
OpenAI-compatible proxy). What your T3 Code Claude provider runs with (its environment variables, and Claude Code's
|
|
32
|
+
settings.json `env`: `ANTHROPIC_BASE_URL`, its token, models and headers) reaches the conversation's Claude Code, and
|
|
33
|
+
your Codex `model_provider` (its `base_url`, `wire_api` and the key `env_key` names) reaches its Codex. CLIProxyAPI
|
|
34
|
+
on this computer (`127.0.0.1:8317`, or the port it had before `shard cli-proxy import`) is reached through your
|
|
35
|
+
hosted CLIProxyAPI, as on this computer; a proxy at another address is used as written. A Claude Code conversation
|
|
36
|
+
that goes through your proxy with its own token starts without a Shardflux Claude sign-in. T3 Code's default
|
|
37
|
+
provider is the one followed while it is enabled.
|
|
38
|
+
- `shard agents new --in t3` and `shard agents open t3` give the VM's own T3 Code (SSH and the T3 app) the same Claude
|
|
39
|
+
Code and Codex provider settings, with tokens in its secret store.
|
|
40
|
+
- Sign in on the Shardflux provider in T3 Code (`shard acp --login`) offers to move the CLIProxyAPI your T3 Code setup
|
|
41
|
+
uses into your account, so cloud conversations use it too. Claude Code that goes through it is connected then.
|
|
42
|
+
- Your hosted CLIProxyAPI routes requests across your logins exactly as its config says (round-robin, fill-first,
|
|
43
|
+
session affinity): `shard cli-proxy import` brings every login as it is on your computer, enabled or disabled, and
|
|
44
|
+
nothing changes them afterwards. `shard cli-proxy use <login>` serves a provider with that one login; `shard
|
|
45
|
+
cli-proxy use --all` uses every login again. `--use` on import is the same choice for a login you move.
|
|
46
|
+
- `ws exec-cancel` displays pending/unverified kernel drain and the follow command; `exec-read` keeps the real foreground state and reason.
|
|
47
|
+
- `shard template save` and `shard template` on your computer use the newest conversation this checkout started whose
|
|
48
|
+
VM is still there (a restored one too), else the project's workspace from before conversations. They no longer
|
|
49
|
+
refuse with "Run shard ./ for this project" after `shard ./`.
|
|
50
|
+
- `shard agents logs <conversation>` of a Codex Cloud conversation says its output is in its Codex thread and names
|
|
51
|
+
the commands that show it: `shard agents open <id>` opens the thread, `shard c wait <id>` waits for its reply and
|
|
52
|
+
`shard c get <id>` shows it.
|
|
53
|
+
- `shard agents new --in terminal --prompt <text>` (or `--prompt-file`, `--image`) starts a new conversation with that
|
|
54
|
+
first message, as without `--in`; a new Codex conversation says it opens in Codex Cloud. Before, it was refused
|
|
55
|
+
with a message that recommended the same command. A first message with `--name`, `--like`, an agent argument or
|
|
56
|
+
another `--in` target names the option it cannot be combined with.
|
|
57
|
+
- `shard projects sync add <path> --wait` reports a project setup that stopped as `project_setup_failed` (it was
|
|
58
|
+
`internal_error`): the message names the step and what it needs, such as a lockfile to commit,
|
|
59
|
+
`details.step` and `details.error_code` identify it, and the hint gives the way forward.
|
|
60
|
+
- `shard agents open` (and Open in the menus) of a Codex Cloud chat that switching the active Codex account or turning
|
|
61
|
+
Codex Cloud off and on stopped continues it in a new Codex chat of the same conversation, on its computer and branch,
|
|
62
|
+
instead of reporting that its executor was removed.
|
|
63
|
+
- ACP journal followers retry temporary lifecycle interruptions with bounded backoff and their saved sequence, without resubmitting a turn; permanent loss stops promptly.
|
|
64
|
+
- SSH inherits the SDK cold helper race repair.
|
|
65
|
+
- Inherits SDK 0.27.0 safe replay of truncated JSON lifecycle and exec answers.
|
|
66
|
+
- Uses SDK 0.27.0: workspace exec retries a lost start response with the same session ID.
|
|
67
|
+
|
|
68
|
+
- A T3 Code (`shard acp`) conversation starts the way a terminal one does: from its prepared revision, sending only
|
|
69
|
+
what the project cache lacks (nothing for a returning project), so its session is ready ~2.5–3 s sooner. Large files
|
|
70
|
+
still on their way stay out of the first file reconcile and land by themselves.
|
|
71
|
+
- A T3 Code (`shard acp`) conversation's first prompt reaches the agent ~1 s sooner: the agent's session starts while
|
|
72
|
+
the project files are reconciled, instead of after. `SHARDFLUX_TRACE_SEED=1` also marks each step of that
|
|
73
|
+
connection (`acp_*`). Each message to the agent up to 192 KiB (every one but a long prompt) now takes one request
|
|
74
|
+
to your VM instead of four.
|
|
75
|
+
- `shard agents open t3` and `shard agents new --in t3` with T3 Code 0.0.45 bring T3 up only once the workspace's T3
|
|
76
|
+
Connect link is linked: T3 lists the project only then. A link in progress is waited for (at most 30 s, within
|
|
77
|
+
`--wake-timeout`). A refused link is the `t3_link_failed` error with the API's remedy (for T3 Connect's environment
|
|
78
|
+
limit, Settings → Connections, with `details.recovery`); a link still in progress is `t3_link_pending`. Both carry
|
|
79
|
+
`workspace_key`, `conversation_id` and any started `t3_thread_id`, so the menu bar and the Linux app offer Open for
|
|
80
|
+
what exists rather than a new start. Before, `--json` answered `opened: true` with `t3_link.status: linking`.
|
|
81
|
+
- `shard agents open t3 <conversation>` for a Codex Cloud conversation opens its existing Codex chat, as
|
|
82
|
+
`shard agents open` does, instead of setting its VM up in T3 Code, which cannot show that chat. It neither wakes the
|
|
83
|
+
VM nor needs T3 Code.
|
|
84
|
+
- The Codex app on Linux: OpenAI's ChatGPT app for Linux (`chatgpt.desktop`) or a community build, found as the desktop
|
|
85
|
+
entry that handles codex://. `shard agents open <conversation>` and `shard agents open codex-app <conversation>` open
|
|
86
|
+
a Codex Cloud conversation's existing thread in it, through that entry, and `agents open codex-app` of a Cloud
|
|
87
|
+
conversation opens its thread on macOS too (it set up an SSH environment before). Its SSH environments stay a macOS
|
|
88
|
+
target.
|
|
89
|
+
- On a computer without the Codex app, opening or starting a Codex Cloud conversation says where its chat is,
|
|
90
|
+
whether it is waiting for your answer, and how to answer and follow it from here (`shard conversations send <id>
|
|
91
|
+
"<answer>"`, `shard conversations get <id>`), instead of failing to open its codex:// link. `--json` adds
|
|
92
|
+
`codex_app` and `reply_command`.
|
|
93
|
+
- The command center (`shard` with no arguments) lists a Codex Cloud chat as **needs you** or **working** from Codex
|
|
94
|
+
even while its computer is parked, and Enter opens it in Codex without waking that computer. Includes the Linux
|
|
95
|
+
desktop 0.1.10 payloads: Codex Cloud chats in the top-bar panel.
|
|
96
|
+
- `shard menubar start`, `stop` and `status` act on the Shardflux app for this config directory wherever it runs from
|
|
97
|
+
(menu bar 0.8.4+, one app per config directory), and an update stops that app before the new one starts, so no
|
|
98
|
+
older app stays behind. A start that races another one for the same directory hands over without opening the
|
|
99
|
+
launcher.
|
|
100
|
+
|
|
101
|
+
## 0.22.0 (2026-10-13)
|
|
102
|
+
|
|
103
|
+
- **Starts send only what changed.** A new conversation's project travels as Git packs into a project cache its VMs
|
|
104
|
+
share: a start sends only what the cache lacks (a second chat on the same state sends nothing; a one-file edit sends
|
|
105
|
+
its delta), in 8 MiB binary parts, four at a time, resumable after an interruption. Dirty and untracked files go
|
|
106
|
+
once, not as a copy and again in the snapshot.
|
|
107
|
+
- **Large media follow the first prompt.** Untracked images, audio and video of 256 KiB and more stay out of the twin
|
|
108
|
+
snapshot and land in the conversation's worktree as files its Git ignores, as yours does; above 32 MiB they keep
|
|
109
|
+
arriving after the agent has your prompt. The device helper finishes them while the VM is awake. A file the agent
|
|
110
|
+
writes first is kept.
|
|
111
|
+
- **History from origin.** A project whose cache holds none of its history takes it from origin inside the cloud: the
|
|
112
|
+
fetch the VM makes of the branch while it boots (coding 53+), or one of its own; only commits origin lacks go from
|
|
113
|
+
this computer.
|
|
114
|
+
- **Selected projects, prepared ahead.** `shard projects sync add <path>` keeps a project ready for new chats: the
|
|
115
|
+
device helper puts its current state in the project cache, and when its dependency files change, installs them and
|
|
116
|
+
saves the project template, each time in a short-lived VM it deletes after. `pause`, `remove` and `list` manage the
|
|
117
|
+
selection. Only selected projects are prepared.
|
|
118
|
+
- A Codex Cloud start that outlives the launcher's deadline is not lost: the conversation stays accepted, and opening it
|
|
119
|
+
(or the device helper) continues the same start, with the state it captured, and sends the prompt once.
|
|
120
|
+
- Uses SDK 0.26.0 (`projectTemplates.prepare`).
|
|
121
|
+
- New conversations set the project up: in a repository whose project has no template for its current dependency
|
|
122
|
+
files, the conversation's VM prepares its worktree in the background (toolchains, dependencies, build and tests)
|
|
123
|
+
once the agent has its first prompt, and saves the project template the next conversation starts from, dependencies
|
|
124
|
+
installed. This covers `shard ./` in a terminal, with `--json` and opened in Claude Desktop or claude.ai, `shard agents
|
|
125
|
+
new` and the launcher.
|
|
126
|
+
- Conversation previews and `shard ws tunnel` reach the guest on either loopback (SDK 0.26.0): a preview of a dev
|
|
127
|
+
server bound to `localhost` opens wherever the guest resolves localhost to `::1` first, and guest clients of
|
|
128
|
+
`localhost` reach a tunnel on the first try.
|
|
129
|
+
- `shard agents accounts` suggests `use` only for accounts you can make active (the API's `can_activate`); a member is
|
|
130
|
+
told an owner or admin chooses the active account.
|
|
131
|
+
- `shard agents accounts use <account>` makes an account the active one of its provider (`--json` prints the updated
|
|
132
|
+
list and the account). New conversations start with its login and running conversation VMs get it; running Claude
|
|
133
|
+
conversations bring Remote Control back by themselves, and Codex Cloud moves to the active ChatGPT account. The list
|
|
134
|
+
marks the active account `active`.
|
|
135
|
+
- Removed: `shard agents accounts move`, `shard agents accounts pool`, `add --api-key-stdin` and `add --scope`. The
|
|
136
|
+
account you mark active stays active until you choose another; usage windows and status are shown for each account.
|
|
137
|
+
- `shard agents open` and T3 Code no longer special-case pooled conversations.
|
|
138
|
+
- The forwarder on this computer keeps your hosted CLIProxyAPI at one login per provider without waking it: at its
|
|
139
|
+
start, at the first request after the hosted copy slept, every minute while it sleeps and every 15 minutes while it
|
|
140
|
+
runs. A login chosen with `--use` on import arrives disabled and is enabled after the others are disabled.
|
|
141
|
+
- `shard cli-proxy use <email|file>` makes a login its provider's active one in your hosted CLIProxyAPI (`--json` lists
|
|
142
|
+
the active and disabled logins). One login per provider serves requests, the others stay in the hub disabled, and
|
|
143
|
+
`shard cli-proxy` marks the active one. `--use <email>` on import picks it when this computer has several.
|
|
144
|
+
|
|
145
|
+
- `shard machine save --wait` and `shard template save --wait`: a version larger than the plan's workspace disk says
|
|
146
|
+
so in plain words (its size and the plan's disk), with `retryable: false` and a hint that names both ways forward:
|
|
147
|
+
delete what the VM does not need (`shard machine open`), then save again, or move to a plan with a larger disk
|
|
148
|
+
(`shard billing plans`). It no longer suggests running the same save again or sending a bug report. The JSON error's
|
|
149
|
+
`details` add the build's `error_code` and its `limit`, `value` and `actual` (bytes). Any other save failure the same
|
|
150
|
+
VM cannot pass is `retryable: false` too. `shard machine setup --status` and the apps' machine row read it as too
|
|
151
|
+
large: "Cloud machine not saved: over the plan’s 2 GiB disk". Uses SDK 0.26.0.
|
|
152
|
+
- Codex conversations open in your terminal app on macOS too, as Claude's do and as they already did on Linux:
|
|
153
|
+
`shard agents targets --open-in codex=terminal` (a bare `--open-in terminal` now covers both apps). The menu bar and
|
|
154
|
+
the Linux app offer it in each agent's **Open in**.
|
|
155
|
+
- `shard agents targets --json` adds `open_in_targets`: every place each app's conversations can open on this computer,
|
|
156
|
+
so clients offer exactly what `--open-in` takes.
|
|
157
|
+
- New conversations reach their first prompt sooner. The sign-in check and the conversation API check run beside the
|
|
158
|
+
project's local snapshot; this computer's changes are read while the VM starts; the repository's Git config, exclude
|
|
159
|
+
rules, branch and start-state snapshot take 4-6 fewer requests; credential fill is configured beside the first
|
|
160
|
+
prompt. With a VM whose platform has `sf-agent conversation first-prompt`, the VM types the first prompt itself, in
|
|
161
|
+
one request (it waits for the input box, pastes, waits for the paste to show, then presses Enter); `--json` still
|
|
162
|
+
reports `initial_prompt.submitted` the same way, and a prompt the VM could not type goes to the conversation's
|
|
163
|
+
inbox at once (`initial_prompt.queued`). When the VM has already fetched the repository's history from its remote
|
|
164
|
+
(platforms that start that fetch at boot), the seed adopts it and fetches only what is newer; the history apply and
|
|
165
|
+
the repository's config are one request, and the checkout writes files in parallel.
|
|
166
|
+
- T3 Code: a new conversation's agent config from this computer is copied once its first prompt is on its way, as for
|
|
167
|
+
terminal conversations, and its agent starts with fewer serial steps (a prompt that opened the connection does not
|
|
168
|
+
reconcile the project files twice).
|
|
169
|
+
- T3 Code: prompts in a repository with symbolic links are no longer refused with "mode changed during sync"; a link
|
|
170
|
+
is identified by its target on both sides.
|
|
171
|
+
- T3 Code: a file edited on this computer before a conversation's first prompt reaches its VM as this computer's edit,
|
|
172
|
+
not a conflict: no `.shard-conflict-acp-…` copy lands in the checkout.
|
|
173
|
+
- Each command starts ~0.1 s sooner: V8's compiled code for the CLI's modules is kept in the OS temp directory and
|
|
174
|
+
reused (Node's module compile cache).
|
|
175
|
+
- `SHARDFLUX_TRACE_SEED=1` marks each start phase with its wall clock (`@<epoch ms>`) and runs to the first prompt's
|
|
176
|
+
Enter.
|
|
177
|
+
- `shard conversations list`, `get`, `resume`, `wait` and `land` show **New conversation** for a conversation still
|
|
178
|
+
named by its generated id (it has not had a prompt yet), not the id a second time. A name you chose stays; `--json`
|
|
179
|
+
keeps the API's title.
|
|
180
|
+
- `shard agents accounts` names every Codex window by its length, as the apps do: **Weekly**, **5-hour**, and **2-day**
|
|
181
|
+
or **90-minute** for other lengths (it read "Primary"/"Secondary" for anything but 5 hours and a week).
|
|
182
|
+
- `shard ./` starts from a shallow clone (`git clone --depth N`): the conversation's repository gets the same shallow
|
|
183
|
+
history.
|
|
184
|
+
- 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.
|
|
185
|
+
- `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.
|
|
186
|
+
- A conversation whose account setup cache cannot be mounted starts without a message in the terminal: setup caches in
|
|
187
|
+
the conversation's own workspace, as before, and the reason (API code, reason and request id) is a JSON line in
|
|
188
|
+
`setup-cache.log` of the config directory. `shard template` still reports `cache_scope`.
|
|
189
|
+
- 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.
|
|
190
|
+
- Includes the desktop launch-card release: menu bar 0.8.3 and Linux desktop 0.1.8. Submitted prompts release the
|
|
191
|
+
launcher immediately and track startup independently in an overlapping card deck. Linux payload pins move to 0.1.8.
|
|
192
|
+
- `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.
|
|
193
|
+
|
|
194
|
+
- **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.
|
|
195
|
+
- 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.
|
|
196
|
+
- Inspect separates `connections_ready` (legacy `ready`) from `machine_ready`. Failed saves, no saved version,
|
|
197
|
+
queue progress, older APIs and failed status checks stay visible. Unknown versions remain `null`; readiness
|
|
198
|
+
requires a positive saved version. Terminal onboarding names agent connections instead of claiming the whole
|
|
199
|
+
environment is ready. Conversations remain available while a machine is being set up.
|
|
200
|
+
|
|
201
|
+
- **Your cloud machine as your account has it, everywhere:** `shard machine setup --status` reads the machine from your
|
|
202
|
+
account, so it always agrees with `shard machine`, and `shard setup --inspect` carries the same row
|
|
203
|
+
(`onboarding.machine`) next to your agents. It is ready (the version in use), saving (your agent setting it up, or
|
|
204
|
+
the save with its place in the queue), not saved with the reason in one line ("Cloud machine not saved: it’s too
|
|
205
|
+
large · version 2 stays in use") and what to run (`Save again`: `shard machine save --wait`, or `Retry`: `shard
|
|
206
|
+
machine setup --from-this-computer`), or not set up yet. The menu bar, the Linux app and the terminal's first run
|
|
207
|
+
show it. `--json` adds `machine: {state, version, line, reason, error, progress, action}`; `state` keeps its four
|
|
208
|
+
values (saving reads as `running`) and `machine_version` is the version in use.
|
|
209
|
+
- `shard machine save` saves the machine VM that is there: a deleted one is skipped.
|
|
210
|
+
- **On Linux, Linux words:** the first run's steps name the launcher shortcut you set in the Shardflux app (Alt+Shift+Space
|
|
211
|
+
unless you changed it), and every line and help text says "this computer" and "your computer".
|
|
212
|
+
- **`shard move` follows where a session worked:** a session that began in another folder (such as Claude Desktop's
|
|
213
|
+
scratch folder) and went on in your repository is listed under the repository in `shard move --list` (and under the
|
|
214
|
+
folder it began in), `--last` picks it there, and `--path <repository>` moves it, with its working directories in
|
|
215
|
+
the repository moved to the VM's folder. A session's `cwd` is where most of its latest records are; `--json` adds
|
|
216
|
+
`cwds`, every folder it worked in.
|
|
217
|
+
- A move confirms its repository from structured transcript metadata, including records between the discovery head
|
|
218
|
+
and tail. Nested tool inputs and outputs cannot confirm another folder; path rewriting preserves them and signed
|
|
219
|
+
history. Session listing accepts whitespace in JSON records.
|
|
220
|
+
- The device helper also keeps its latest agent-config line ("Claude saved the skill deploy-checks in the cloud: it's on
|
|
221
|
+
this computer now") in `agent-config-notice.json` in the config folder, so the Linux app's top-bar panel shows it as
|
|
222
|
+
the Mac menu does (desktop-linux 0.1.8).
|
|
223
|
+
- Pins `@shardflux/desktop-linux-x64` and `@shardflux/desktop-linux-arm64` 0.1.8.
|
|
224
|
+
- **T3 Connect works in an account with more than one organization.** Every T3 sign-in (`shard setup --inspect
|
|
225
|
+
--t3-connect`, the onboarding and Settings, `shard agents open|new --in t3`) is scoped to an organization: `--project`
|
|
226
|
+
(id or slug), else a project of `--org`, else the API key's project, else the saved default project; the phone link
|
|
227
|
+
signs in for the workspace's own project. Before, a person in two organizations got 422 "project_id is required when
|
|
228
|
+
you belong to more than one organization" whatever they set.
|
|
229
|
+
Onboarding status uses the same person and project as sign-in, even when another organization is already
|
|
230
|
+
connected or no API key is saved. Its Connect command retains `--org`/`--project`; an explicit selection leaves
|
|
231
|
+
the default target's remembered status unchanged. A saved session or `SHARDFLUX_SESSION_TOKEN` starts sign-in.
|
|
232
|
+
- **A default from an organization you left is said plainly.** `shard whoami` warns when the API key or the saved
|
|
233
|
+
default organization belongs to an organization you are no longer in, with the fix (`shard orgs use <org>`, `shard
|
|
234
|
+
setup --org <org> --new-key`); `--json` adds `warnings` (`code`, `message`, `fix`). Account commands name the gone
|
|
235
|
+
default and list your organizations instead of only "pick one with --org", and `shard setup` says the saved key's
|
|
236
|
+
organization is gone.
|
|
237
|
+
- `whoami` also warns after switching defaults while a key belongs to another organization you still belong to.
|
|
238
|
+
Switch warnings distinguish a departed key from an accessible key elsewhere, retaining credentials until you
|
|
239
|
+
accept replacement. Environment keys take precedence; recovery names `unset SHARDFLUX_API_KEY`, and
|
|
240
|
+
`setup --json` includes an `api_key_environment_override` warning when the saved key is still overridden.
|
|
241
|
+
- `shard orgs use` and `shard projects use` say when the API key acts in another organization (workspace, agent and
|
|
242
|
+
usage commands use the key) and name the command that makes a key for the new default; in a terminal they offer to
|
|
243
|
+
make it (`[y/N]`). `--json` adds `api_key` and `warnings`.
|
|
244
|
+
- `shard usage --org <another organization>` reads it with your signed-in session (a project key answers 404 for any
|
|
245
|
+
other organization; `--org` also takes a slug when you are signed in). Without a session it says which organization
|
|
246
|
+
the key belongs to, with `shard auth login` and `shard setup --org <org> --new-key`.
|
|
247
|
+
- Organization usage keeps a real 404 from the key's own organization, and a key in `SHARDFLUX_API_KEY` names the
|
|
248
|
+
`unset SHARDFLUX_API_KEY` step after saving a replacement. Summary, estimate and series use the same membership
|
|
249
|
+
checks; workspace usage keeps its project-key scope.
|
|
250
|
+
- `shard setup` in more than one organization says how the choice is kept: the organization you pick becomes this
|
|
251
|
+
computer's default, with an API key for it, and `shard setup --org <org> --new-key` switches.
|
|
252
|
+
- 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.
|
|
253
|
+
- Clarify machine save source selection and recovery: save from the machine VM, or explicitly select an existing
|
|
254
|
+
machine source with the SDK/MCP. A conversation or unmarked fork returns `filesystem_source_mismatch`; copy
|
|
255
|
+
intended changes into the machine VM before saving. Native VM access stays bound to its own workspace.
|
|
256
|
+
- `shard move --plan` reports registered worktree paths, transcript reference hits, file counts and bytes before
|
|
257
|
+
upload. `--preserve-all-worktrees` copies all local refs and registered worktrees, including ignored files, with
|
|
258
|
+
exact indices, staged/unstaged status and hash checks; Git location pointers and transcript path fields map to
|
|
259
|
+
the VM. The selected tree uses the conversation branch; original branches/HEADs stay in a durable, immutable
|
|
260
|
+
migration-time recovery archive. Recovery refuses nonempty folders. `--this-worktree-only` explicitly leaves
|
|
261
|
+
other trees local. Source files, indices, refs and unrelated sibling folders stay untouched.
|
|
262
|
+
- `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.
|
|
263
|
+
- Machine setup requires a completed successful VM command and a structured setup report before saving. A refused
|
|
264
|
+
agent-config copy stops setup instead of publishing a machine without that configuration. An explicit Claude
|
|
265
|
+
Code tool permission refusal stops without trying another agent; ordinary connectivity or agent failures can
|
|
266
|
+
still fall back.
|
|
267
|
+
- The setup agent receives the machine's actual disk grant and its limiting source before installing tools. It checks
|
|
268
|
+
available space and package sizes, uses small batches without recommended packages, and reports tools that do not
|
|
269
|
+
fit as skipped. It never changes your plan or disk caps.
|
|
270
|
+
- Agent-led setup stops an action refused by a permission system or auto-mode classifier and gives the user an
|
|
271
|
+
exact command plus a non-secret confirmation to resume. It never bypasses the refusal through permission
|
|
272
|
+
changes, scripts or alternate tools. `setup --guide --json` checks saved account state without printing a key;
|
|
273
|
+
an exit code or a saved key alone is not evidence that onboarding worked.
|
|
274
|
+
|
|
275
|
+
- **Start a project over from your machine** with `shard template delete`: the project template of this folder's
|
|
276
|
+
repository and its saved versions go, it is no longer rebuilt when your machine or the platform changes, and new
|
|
277
|
+
conversations start from your machine until setup after `shard ./` (or `shard template save`) saves a new one. VMs
|
|
278
|
+
running on it keep their files; builds still running for it are stopped. In a terminal it asks first (`[y/N]`, No
|
|
279
|
+
keeps it); elsewhere it needs `--yes`. It prints `template: deleted (3 saved versions); new conversations start from
|
|
280
|
+
your machine until setup saves a new one`, and `--json` the API's body (`template.versions`, `canceled_builds`).
|
|
281
|
+
Nothing saved for the repository is exit 3, `not_found` (`details.reason` `filesystem_not_found`).
|
|
282
|
+
- `shard template` says when a template no conversation, VM or save used for 30 days follows your machine on its next
|
|
283
|
+
use (`platform …@4, follows your machine on next use`): it is rebuilt when a conversation starts on it, and that
|
|
284
|
+
conversation's VM moves onto the rebuilt version at its next safe point.
|
|
285
|
+
- The agent-config loop follows activity: every 2 s while one of your conversations works or ended a turn in the last
|
|
286
|
+
5 minutes, backing off to every 60 s otherwise, with one small request every 10 s that snaps it back when a
|
|
287
|
+
conversation starts working anywhere (staging: 1.1 s p50, 2.3 s max over 6 turns; idle, 9.7 requests a minute
|
|
288
|
+
instead of 54 with 0.20.0).
|
|
289
|
+
- **Your coding agent runs the setup; you only decide.** `shard setup --guide` (and `shard` in a coding agent's shell)
|
|
290
|
+
now tells the agent to do every step itself, ask one multiple-choice question at a time with the recommended answer
|
|
291
|
+
first, and keep each message to a sentence or two. It sets your cloud machine up from this computer by default (`shard
|
|
292
|
+
machine setup --from-this-computer`), asks where conversations open, and ends by opening your first conversation;
|
|
293
|
+
`--json` carries `rules` and each step's `choices`.
|
|
294
|
+
- **Secrets without your agent seeing them:** `shard secrets create NAME --ask` (and `rotate`) opens a one-time page on
|
|
295
|
+
this computer where you type the value; it goes straight to your project's secrets and the agent only sees that it
|
|
296
|
+
was saved. In a coding agent's shell this is the default when nothing is piped; on a terminal you get a hidden
|
|
297
|
+
prompt. `shard files write <key> <path> --ask` does the same for a secret file such as `~/.npmrc` on your machine.
|
|
298
|
+
`--json` prints `{"event":"open","url":…}` first; the page closes after one use or 10 minutes.
|
|
299
|
+
- **Claude sign-in from your coding agent:** `shard agents credentials login claude` runs in a coding agent's shell
|
|
300
|
+
(or with `--json`): it opens the claude.ai sign-in and a page for its code in your browser, then finishes by itself.
|
|
301
|
+
- **Conversations open in your app:** `shard agents targets --terminal <ghostty|iterm|terminal|wezterm|kitty|alacritty|warp>`
|
|
302
|
+
(`:tab` or `:window`) saves where terminal conversations open, and `agents targets --json` lists the terminals on
|
|
303
|
+
this computer (`terminals`, the one shard runs in as `current_terminal`). `shard agents open <ref> --in terminal`
|
|
304
|
+
opens a new tab in that app (Ghostty 1.3+, iTerm2, WezTerm, kitty, Warp; a window in Terminal and Alacritty) in the
|
|
305
|
+
project folder, and `shard ./` from a coding agent's shell opens the new conversation there. When the app can't be
|
|
306
|
+
driven it opens the next one and says why in one line.
|
|
307
|
+
- When a browser can't be opened, commands print the link to open instead (the opener's failure is detected).
|
|
308
|
+
- Installs desktop-linux 0.1.8 on Linux.
|
|
309
|
+
- **Mark your cloud conversations your way:** `shard settings --title-prefix <text|none|default>` sets the marker your
|
|
310
|
+
Claude conversations' titles start with in claude.ai and the Claude app (default `☁`: "☁ Fix login bug ·
|
|
311
|
+
todo-app"; `none` for no marker). `shard settings` shows it with where conversations open; `--json` too. New
|
|
312
|
+
conversations and threads you start on an existing computer carry it.
|
|
313
|
+
|
|
314
|
+
## 0.20.0 (2026-10-12)
|
|
4
315
|
|
|
5
316
|
- **A save waits in line instead of failing** when your plan's build slots are in use: `shard machine save` and `shard
|
|
6
317
|
template save` print where the build is (`machine: saving version 5; queued behind 3 builds · about 40 s; …`), with
|