@passioncode-ai/passioncode 0.2.61 → 0.2.62
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 +10 -0
- package/README.md +2 -2
- package/lib/setup.js +9 -3
- package/package.json +1 -1
- package/payload/.claude-plugin/marketplace.json +1 -1
- package/payload/manifest.json +4 -4
- package/payload/plugins/passioncode/.claude-plugin/plugin.json +1 -1
- package/payload/plugins/passioncode/skills/setting-up-passioncode/SKILL.md +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.62 - 2026-11-03
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- `setup` and `doctor --fix` no longer print a bare "Nothing to do." or "Everything ... is in place"
|
|
8
|
+
above a failing check: both add "The checks below still stand." (PC-104). A plan that would leave an
|
|
9
|
+
app out names it ("Nothing would change: Fabric would not be installed (see the plan below).") and a
|
|
10
|
+
plan whose only change is a release train is shown as a plan. The line under the plan says "answer
|
|
11
|
+
its questions", which covers the repairs question. The README, the setting-up skill and the reference name the cases more exactly.
|
|
12
|
+
|
|
3
13
|
## 0.2.61 - 2026-11-03
|
|
4
14
|
|
|
5
15
|
### Fixed
|
package/README.md
CHANGED
|
@@ -44,7 +44,7 @@ secret into a product's own hidden prompt, starting Docker for Fabric, and resta
|
|
|
44
44
|
|
|
45
45
|
1. **Install** (Node 18 or newer; the Claude Code CLI on `PATH` for the plugins):
|
|
46
46
|
`npx @passioncode-ai/passioncode@latest setup`, then restart your agents. In a terminal it asks
|
|
47
|
-
one question per app and one for the repairs (a `--json` run never asks); `--yes` accepts the plan, `--with`/`--without <ids>` choose apps
|
|
47
|
+
one question per absent app (on macOS) and one for the repairs, if any (a `--json` run never asks); `--yes` accepts the plan, `--with`/`--without <ids>` choose apps
|
|
48
48
|
(`switchboard`, `dashboards`, `observatory`, `inbox`, `fabric`), `--no-apps` sets up the skills
|
|
49
49
|
and MCP only, `--dry-run` shows the plan. Apps are installed on macOS; on other systems setup
|
|
50
50
|
names each download page, and on Windows `doctor` reads which version of each app is installed. Skills only: `npx @passioncode-ai/passioncode@latest update`.
|
|
@@ -118,7 +118,7 @@ the versions in [`trains/organization-r1.json`](trains/organization-r1.json), re
|
|
|
118
118
|
and `doctor` then compares every app with its pin (offline too) in an `app.<id>` line per app and
|
|
119
119
|
one `train` line. An app newer than its pin is reported and left alone (a damaged one, or one whose version cannot be read, is reinstalled from the latest
|
|
120
120
|
release): the train never takes an app back, because its data may not open in an older release. `setup --train none` returns to the
|
|
121
|
-
latest releases. Either change is saved with `--yes` or in a terminal (after its answers, or at once when there is nothing to ask; a `--json` run never asks)
|
|
121
|
+
latest releases. Either change is saved with `--yes` or in a terminal (after its answers, or at once when there is nothing to ask; a `--json` run never asks), never with `--dry-run`; without either it is only shown as a plan. A named
|
|
122
122
|
train is not saved when every offer in the terminal (at least one of them defaulting to yes) is
|
|
123
123
|
answered no, while `--train none` is saved on any answer. The skills are pinned by the launcher release itself (`family.json`). Which
|
|
124
124
|
version each app pins is the train's record in fabric-workspace
|
package/lib/setup.js
CHANGED
|
@@ -308,6 +308,9 @@ const declined = (r) => (r.notTaken
|
|
|
308
308
|
: 'You declined every offer; nothing was changed. The checks below still stand.');
|
|
309
309
|
const notTaken = (names) => `Nothing was changed: ${were(names)} offered and not installed. The checks below still stand.`;
|
|
310
310
|
const skipped = (names) => `Nothing was changed: ${were(names)} not installed (see your steps below). The checks below still stand.`;
|
|
311
|
+
const wouldSkip = (names, a) => `Nothing would change: ${names.join(' and ')} would not be installed (see the plan below).${stand(a)}`;
|
|
312
|
+
// PC-104: a headline that says nothing is left must not stand alone above failing checks.
|
|
313
|
+
const stand = (a) => (a.fail ? ' The checks below still stand.' : '');
|
|
311
314
|
|
|
312
315
|
function render(result, { repairOnly = false } = {}) {
|
|
313
316
|
const lines = [];
|
|
@@ -316,13 +319,16 @@ function render(result, { repairOnly = false } = {}) {
|
|
|
316
319
|
lines.push(`${repairOnly ? 'doctor --fix' : 'setup'} · ${result.mode === 'new' ? 'a new setup' : 'an existing setup'} · ${result.platform}`);
|
|
317
320
|
const todo = result.plan.filter((i) => i.selected);
|
|
318
321
|
if (result.planOnly) {
|
|
319
|
-
|
|
322
|
+
// PC-104: a plan whose only change is a train is still a plan; an empty one names the apps it would leave.
|
|
323
|
+
const leftApps = result.plan.filter((i) => i.kind === 'install' && !i.selected).map((i) => catalog.byId(i.product).name);
|
|
324
|
+
lines.push('', todo.length || (result.trainNotSaved && !result.declined) ? 'Plan (nothing was changed):'
|
|
325
|
+
: result.declined ? declined(result) : leftApps.length ? wouldSkip(leftApps, a) : `Nothing to do.${stand(a)}`);
|
|
320
326
|
for (const i of result.plan) lines.push(` ${i.selected ? '•' : '–'} ${i.detail}${i.note ? ` (${i.note})` : ''}`);
|
|
321
327
|
if (result.trainNotSaved) lines.push('', `The release train (${result.trainNotSaved}) was not saved${result.declined ? '.' : ': run it with --yes, or answer in a terminal.'}`);
|
|
322
|
-
if (todo.length) lines.push('', 'Run it with --yes to apply, or in a terminal to answer
|
|
328
|
+
if (todo.length) lines.push('', 'Run it with --yes to apply, or in a terminal to answer its questions.');
|
|
323
329
|
} else if (!result.actions.length) {
|
|
324
330
|
lines.push('', result.declined ? declined(result) : result.notTaken ? notTaken(result.notTaken)
|
|
325
|
-
: result.skipped ? skipped(result.skipped) :
|
|
331
|
+
: result.skipped ? skipped(result.skipped) : `Everything this command can set up is in place; nothing was changed.${stand(a)}`);
|
|
326
332
|
} else {
|
|
327
333
|
lines.push('', 'Done:');
|
|
328
334
|
for (const x of result.actions) lines.push(` ${x.outcome === 'failed' ? 'FAILED' : 'done '} ${x.detail}${x.error ? `\n ${x.error}` : ''}`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@passioncode-ai/passioncode",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.62",
|
|
4
4
|
"description": "Set up PassionCode.ai on a computer with one command: the apps from their verified releases, their MCP servers for every coding agent and the PassionCode.ai skills. Check and repair it with the same command or `doctor`.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"passioncode": "bin/passioncode.js"
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"name": "passioncode",
|
|
36
36
|
"displayName": "PassionCode.ai",
|
|
37
37
|
"source": "./plugins/passioncode",
|
|
38
|
-
"version": "0.2.
|
|
38
|
+
"version": "0.2.62",
|
|
39
39
|
"description": "Set up and check PassionCode.ai on a computer with one command (setting-up-passioncode), the organisation's working rules for every contributor's agent (working-in-passioncode), and a once-a-day check that keeps the PassionCode.ai set current.",
|
|
40
40
|
"author": {
|
|
41
41
|
"name": "PassionCode.ai",
|
package/payload/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"family": "passioncode",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.62",
|
|
4
4
|
"release": true,
|
|
5
5
|
"members": [
|
|
6
6
|
{
|
|
@@ -62,9 +62,9 @@
|
|
|
62
62
|
"name": "passioncode",
|
|
63
63
|
"displayName": "PassionCode.ai",
|
|
64
64
|
"repo": "passioncode-ai/passioncode",
|
|
65
|
-
"ref": "v0.2.
|
|
65
|
+
"ref": "v0.2.62",
|
|
66
66
|
"commit": null,
|
|
67
|
-
"version": "0.2.
|
|
67
|
+
"version": "0.2.62",
|
|
68
68
|
"via": "this repository",
|
|
69
69
|
"skills": [
|
|
70
70
|
"setting-up-passioncode",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
],
|
|
73
73
|
"legacyPluginIds": [],
|
|
74
74
|
"legacyMarketplaces": [],
|
|
75
|
-
"contentHash": "sha256:
|
|
75
|
+
"contentHash": "sha256:5675d12790395c5cf3777d55de9412ab40a8f929088dd3bba59936a0bcc5c3ff",
|
|
76
76
|
"description": "Set up and check PassionCode.ai on a computer with one command (setting-up-passioncode), the organisation's working rules for every contributor's agent (working-in-passioncode), and a once-a-day check that keeps the PassionCode.ai set current.",
|
|
77
77
|
"author": {
|
|
78
78
|
"name": "PassionCode.ai",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "passioncode",
|
|
4
4
|
"displayName": "PassionCode.ai",
|
|
5
|
-
"version": "0.2.
|
|
5
|
+
"version": "0.2.62",
|
|
6
6
|
"description": "Set up and check PassionCode.ai on a computer with one command (setting-up-passioncode), the organisation's working rules for every contributor's agent (working-in-passioncode), and a once-a-day check at session start that keeps the PassionCode.ai skill set current.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "PassionCode.ai",
|
|
@@ -34,7 +34,8 @@ npx --yes @passioncode-ai/passioncode@latest setup --yes --json
|
|
|
34
34
|
- A healthy machine: an empty `actions` list, no `skipped`, exit 0. Running it again is always safe.
|
|
35
35
|
- Exit 0: no step and no check failed; 1: a step or a check failed; 2: bad arguments. A plan
|
|
36
36
|
(`planOnly: true`: `--dry-run`, or a run without `--yes` that would change something, since a
|
|
37
|
-
`--json` run never asks) changes nothing and exits 0 even
|
|
37
|
+
`--json` run never asks; a declined terminal run, `planOnly` with `declined: true`, exits by its checks) changes nothing and exits 0 even
|
|
38
|
+
when a check fails: read
|
|
38
39
|
`after.summary` and `plan`, not the exit code alone. Exit 1 with no JSON on stdout is a runtime
|
|
39
40
|
error: report its stderr line and the exit code.
|
|
40
41
|
- Use `--with <ids>` / `--without <ids>` for a subset (`switchboard`, `dashboards`,
|
|
@@ -92,8 +93,8 @@ Then run `doctor --json` again and report the change.
|
|
|
92
93
|
|
|
93
94
|
Reply in the person's language, briefly:
|
|
94
95
|
|
|
95
|
-
1. What was set up or repaired (from `actions`), what was skipped (from `skipped`, or
|
|
96
|
-
with `
|
|
96
|
+
1. What was set up or repaired (from `actions`), what was skipped (from `skipped`, or, when there is no `skipped` (a plan,
|
|
97
|
+
or a run with any `actions`), the `plan` install items with `selected: false`), and the before → after counts.
|
|
97
98
|
2. What still fails, each with its `fix`.
|
|
98
99
|
3. **Your steps**: the numbered `humanSteps` you could not finish yourself: sign-ins, consents,
|
|
99
100
|
secrets in hidden prompts, starting Docker, the restart.
|