@usepowerplant/cli 0.4.3 → 0.4.5

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/README.md CHANGED
@@ -24,7 +24,11 @@ re-run at any time — finished steps are skipped with a note:
24
24
  ones in scope. If recent sessions name repositories under a macOS-protected
25
25
  location such as Documents, init lists the location and asks before reading
26
26
  Git metadata there; declining leaves those sessions local. The service
27
- starts on login and keeps itself running.
27
+ starts on login and keeps itself running. On macOS, init also installs
28
+ the Powerplant menu bar app from this package into `~/Applications` and
29
+ launches it; the app registers itself to start at login (turn that off
30
+ from its More menu), and the background service keeps it on the same
31
+ version as the CLI after every update.
28
32
  3. **Add MCP to your agents.** Init lists the agents it found — Claude Code,
29
33
  Codex, and Cursor — as checked boxes. They all start selected; use the arrow
30
34
  keys and Space to turn off any you want to skip, then press Enter (`--yes`,
@@ -36,7 +40,10 @@ re-run at any time — finished steps are skipped with a note:
36
40
  the team's sessions, review rooms, and search. If you skip or cancel
37
41
  a sign-in, nothing breaks: finish later with `powerplant connect`
38
42
  (add `--client claude|codex|cursor` for just those — repeatable). Each
39
- agent's own sign-in output prints as it runs.
43
+ agent's own sign-in output prints as it runs. Connect supports Claude Code
44
+ 2.1.186, Codex 0.134.0, and Cursor 3.4 or newer; an older installation is
45
+ reported with an update hint and, when the machine holds another copy of
46
+ the same agent, that copy is tried instead.
40
47
 
41
48
  The background service is macOS-only today. On other platforms, init still
42
49
  enrolls the machine and adds MCP to your agents, and points you at running
@@ -59,7 +66,8 @@ sync-everything option.
59
66
  When the CLI itself hits a bug — a crash or an unexpected error — it sends
60
67
  an error report to [Sentry](https://sentry.io) so we can fix the problem
61
68
  without asking you to dig through logs. This is on by default, and there
62
- is no setting to turn it off today. A report contains the error and its
69
+ is no setting to turn it off for free users. Paid users can arrange an opt-out
70
+ through [support](mailto:support@forestwalk.ai). A report contains the error and its
63
71
  stack trace, the CLI version and environment, which enrolled machine and
64
72
  org the background service belongs to, and diagnostic details such as ids
65
73
  and counts. It never contains session transcripts, code, or file contents,
@@ -76,7 +84,7 @@ something out.
76
84
  ```bash
77
85
  powerplant status # what the sync service is doing (add --json for tools)
78
86
  powerplant doctor # a diagnostics summary to paste into a support email
79
- powerplant pause # stop uploads without uninstalling
87
+ powerplant pause # stop background uploads without uninstalling
80
88
  powerplant resume # start again — a catch-up pass covers the pause
81
89
  powerplant restart # restart the background service
82
90
  powerplant connect # connect agents installed after setup, or re-sign-in
@@ -86,12 +94,17 @@ powerplant sync # run one upload pass now, in the foreground
86
94
 
87
95
  `status` tells you whether the machine is enrolled, whether the service is
88
96
  running, when it last uploaded, and what (if anything) is failing — with the
89
- command that fixes it. `pause` is safe for as long as you need: nothing
90
- uploads while paused, and `resume` goes back and covers everything the pause
97
+ command that fixes it. `pause` is safe for as long as you need: the background
98
+ service uploads nothing while paused, every later command reminds you, `init`
99
+ offers to resume, and `resume` goes back and covers everything the pause
91
100
  skipped. `sync` is the manual alternative to the background service — the
92
- day-to-day upload path on machines that can't run it. `disconnect` is the
101
+ day-to-day upload path on machines that can't run it; asked for explicitly, it
102
+ still runs while paused and says so. `disconnect` is the
93
103
  inverse of `connect`: it removes each agent's Powerplant MCP entry and the
94
104
  sign-in stored with it, and agents that were never connected just say so.
105
+ Use `powerplant disconnect --client claude` to remove only Claude's connection.
106
+ The `--client` option also accepts `codex` and `cursor`, and can be repeated.
107
+ Omitting it disconnects all detected agents.
95
108
 
96
109
  ## Updating
97
110
 
@@ -99,10 +112,28 @@ sign-in stored with it, and agents that were never connected just say so.
99
112
  powerplant update
100
113
  ```
101
114
 
102
- That runs `npm install -g @usepowerplant/cli` for you (running it yourself
103
- works too). Either way, the background service notices the new version on
104
- disk and restarts itself onto it within moments. `powerplant status` tells
105
- you when a newer version is available.
115
+ That reinstalls `@usepowerplant/cli` with whichever package manager put it
116
+ on this machine (npm, pnpm, bun, or yarn), so the copy that is running is the
117
+ copy that gets replaced, then restarts the background sync onto the new
118
+ version. Running the manager's own global install yourself works too: the
119
+ service notices the new version on disk and restarts itself within moments.
120
+ When the install can't be replaced this way (a folder only an administrator
121
+ can write, or a layout the CLI doesn't recognise), `update` says why and
122
+ prints the command to run instead. `powerplant status` tells you when a
123
+ newer version is available, and the menu bar app offers the update as one
124
+ click; it runs in the background and the menu shows its progress.
125
+
126
+ `powerplant init` asks once whether to keep the CLI up to date
127
+ automatically (yes is the default at the prompt, and a non-interactive
128
+ init says it took that default). With that on, the background sync checks
129
+ the registry hourly (and at boot) and installs a new release the same way,
130
+ then restarts itself onto it. The choice is per machine and only an
131
+ explicit yes counts: a machine set up before the question existed stays
132
+ off until someone turns it on. `powerplant status` and `powerplant doctor`
133
+ report the current choice, and `powerplant update --automatic on` or
134
+ `--automatic off`, or the menu bar's More menu, change it. A release that
135
+ fails to install is not retried by itself; the menu bar shows the failure
136
+ with a retry and the update log, and the next release clears it.
106
137
 
107
138
  Powerplant also publishes the oldest version it still supports. When yours
108
139
  is older, `powerplant status`, `powerplant doctor`, the menu bar app, and
@@ -110,6 +141,50 @@ the sync service log all say so and point you at `powerplant update`. Nothing
110
141
  stops working on that notice — an unsupported version keeps syncing, but
111
142
  it is no longer tested or fixed, so update when you see it.
112
143
 
144
+ ### How a release reaches production
145
+
146
+ Every release is published to npm's `next` dist-tag. Machines pinned to
147
+ the staging environment (and our own development and agent machines)
148
+ follow `next`, so a release runs on our own machines first. Production
149
+ machines never follow npm: they ask the production API which version is
150
+ promoted and install exactly that, pinned. When a release has held up on
151
+ staging, dispatch the Promote CLI workflow (leave the version blank to
152
+ promote what `next` points at) with a current one-time code for the
153
+ `forestwalklabs` npm account from 1Password: it moves npm's `latest` to
154
+ the same artifact staging tested, so a fresh `npm install -g` always gets
155
+ exactly what production runs, and points production machines at it;
156
+ machines with automatic updates install it within the hour, and everyone
157
+ else sees it in the menu bar and `powerplant status`. Until something is
158
+ promoted, production sees no update at all, only the supported-version
159
+ floor. Promoting an older version than the current one is a hold:
160
+ production stops advancing, `latest` moves back for new installs, and no
161
+ enrolled machine downgrades. A bad release is undone by a new release and
162
+ a new promotion.
163
+
164
+ ### Staging beside production on one Mac
165
+
166
+ A machine has one global `powerplant` by default, and the background sync
167
+ for each environment runs whatever copy `init` was run from. To try
168
+ releases on staging while production keeps the promoted version, give
169
+ staging its own copy under its own npm prefix and set it up from there:
170
+
171
+ ```bash
172
+ npm install -g --prefix ~/.powerplant-staging @usepowerplant/cli@next
173
+ ~/.powerplant-staging/bin/powerplant init --env staging
174
+ ```
175
+
176
+ The `@next` pin matters: a bare install resolves `latest`, the production
177
+ channel, so the new staging copy would start on the promoted release and
178
+ test nothing until its first update.
179
+
180
+ The staging daemon runs that copy and updates it in place (the updater
181
+ pins npm to the prefix the running copy lives under), so
182
+ `~/.powerplant-staging` follows the `next` channel while the production
183
+ install follows the promoted one. Run staging commands through that path,
184
+ `~/.powerplant-staging/bin/powerplant status --env staging`, or put the
185
+ directory on your PATH after the production one. `powerplant doctor` names
186
+ the install it is running from.
187
+
113
188
  ### Moving from @powerplant-sh/cli
114
189
 
115
190
  Releases up to 0.2.1 were published as `@powerplant-sh/cli`. That package