@passioncode-ai/passioncode 0.2.54 → 0.2.56
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
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.56 - 2026-11-03
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- `setup` in a terminal that asked, changed nothing and left install offers untaken, such as Fabric
|
|
8
|
+
offered without Docker (an offer that defaults to no), says "Nothing was changed: Fabric was
|
|
9
|
+
offered and not installed. The checks below still stand." instead of "Everything this command can
|
|
10
|
+
set up is in place" (PC-92). It does not say "declined": pressing Enter on an offer that defaults
|
|
11
|
+
to no is not declining (PC-89, as its test `a run nobody agreed to saves no train` holds). A run that answered no to every offer, at least one of them
|
|
12
|
+
defaulting to yes, still says "You declined every offer" (PC-91).
|
|
13
|
+
|
|
14
|
+
## 0.2.55 - 2026-11-03
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- `help` lists every flag each command accepts and the command aliases (PC-98): `--offline` for
|
|
19
|
+
`setup` and `doctor`, `-y` for `setup`, `--quiet` for `update`, `--json` for `restore`,
|
|
20
|
+
`uninstall` and `config`, and that `onboard` is another name for `setup` and `install` for
|
|
21
|
+
`update`. It also says what `--offline` and `--quiet` do. A test fails when a flag in the parser's
|
|
22
|
+
lists is missing from its command's line.
|
|
23
|
+
|
|
3
24
|
## 0.2.54 - 2026-11-02
|
|
4
25
|
|
|
5
26
|
### Changed
|
package/bin/passioncode.js
CHANGED
|
@@ -19,19 +19,20 @@ function cachedNpmStatus({ latest, checkedAt, installed }) {
|
|
|
19
19
|
|
|
20
20
|
const HELP = `passioncode sets up and checks PassionCode.ai on this machine: the apps, their MCP servers, the skills
|
|
21
21
|
|
|
22
|
-
npx @passioncode-ai/passioncode@latest setup [--yes] [--with ids] [--without ids] [--train name|none] [--no-apps] [--no-open] [--dry-run] [--json]
|
|
22
|
+
npx @passioncode-ai/passioncode@latest setup [--yes|-y] [--with ids] [--without ids] [--train name|none] [--no-apps] [--no-open] [--dry-run] [--offline] [--json]
|
|
23
23
|
a new machine: install and configure everything; an existing one: check, repair, check again
|
|
24
|
-
npx @passioncode-ai/passioncode@latest doctor [--fix] [--json]
|
|
25
|
-
npx @passioncode-ai/passioncode@latest update [--dry-run] [--json]
|
|
26
|
-
npx @passioncode-ai/passioncode@latest status [--json]
|
|
27
|
-
npx @passioncode-ai/passioncode@latest restore
|
|
28
|
-
npx @passioncode-ai/passioncode@latest config set update.auto on|off
|
|
29
|
-
npx @passioncode-ai/passioncode@latest uninstall
|
|
24
|
+
npx @passioncode-ai/passioncode@latest doctor [--fix] [--offline] [--json] check everything (read-only); --fix repairs as setup does
|
|
25
|
+
npx @passioncode-ai/passioncode@latest update [--dry-run] [--quiet] [--json] install or update the skill set and the apps' MCP registrations
|
|
26
|
+
npx @passioncode-ai/passioncode@latest status [--json] what is installed where
|
|
27
|
+
npx @passioncode-ai/passioncode@latest restore [--json] put back what the last update moved aside
|
|
28
|
+
npx @passioncode-ai/passioncode@latest config set update.auto on|off [--json] background updates at session start
|
|
29
|
+
npx @passioncode-ai/passioncode@latest uninstall [--json] remove the set (quarantined items stay restorable)
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
onboard is another name for setup, install for update. --offline skips the check for newer app
|
|
32
|
+
releases; --quiet prints nothing when an update succeeds. App ids: switchboard, dashboards,
|
|
33
|
+
observatory, inbox, fabric. Exit codes: 0 nothing failed, 1 a check or a step failed, 2 bad
|
|
34
|
+
arguments. Claude Code gets plugins from the local "passioncode" marketplace; other agents get
|
|
35
|
+
the same skills through ~/.agents/skills. Restart your agent after a change.`;
|
|
35
36
|
|
|
36
37
|
const IDS = ['switchboard', 'dashboards', 'observatory', 'inbox', 'fabric'];
|
|
37
38
|
|
package/lib/setup.js
CHANGED
|
@@ -174,6 +174,15 @@ async function setup({
|
|
|
174
174
|
// Said so in the report: an empty run after "no" to every offer is not a machine with nothing to set
|
|
175
175
|
// up. Forgetting a train (`--train none`) is still a change, so that run is not "declined".
|
|
176
176
|
if (declinedAll && !result.actions.length) result.declined = true;
|
|
177
|
+
// PC-92: a run that asked, changed nothing and was not "declined" left install offers untaken
|
|
178
|
+
// (each defaulting to no, like Fabric without Docker): it names them rather than calling the
|
|
179
|
+
// machine set up. Pressing Enter on a default-no offer is not declining (PC-89, the test beginning
|
|
180
|
+
// `PC-89: a run nobody agreed to`), so it says
|
|
181
|
+
// "not installed", not "declined".
|
|
182
|
+
if (asked && !result.declined && !result.actions.length && !items.some((i) => i.selected)) {
|
|
183
|
+
const untaken = items.filter((i) => i.kind === 'install' && !i.selected).map((i) => catalog.byId(i.product).name);
|
|
184
|
+
if (untaken.length) result.notTaken = untaken;
|
|
185
|
+
}
|
|
177
186
|
|
|
178
187
|
const act = (kind, detail, product = null) => {
|
|
179
188
|
const a = { kind, detail, product, outcome: 'done' };
|
|
@@ -275,6 +284,7 @@ function finish(result, home, checks) {
|
|
|
275
284
|
}
|
|
276
285
|
|
|
277
286
|
const DECLINED = 'You declined every offer; nothing was changed. The checks below still stand.';
|
|
287
|
+
const notTaken = (names) => `Nothing was changed: ${names.join(' and ')} ${names.length > 1 ? 'were' : 'was'} offered and not installed. The checks below still stand.`;
|
|
278
288
|
|
|
279
289
|
function render(result, { repairOnly = false } = {}) {
|
|
280
290
|
const lines = [];
|
|
@@ -288,7 +298,7 @@ function render(result, { repairOnly = false } = {}) {
|
|
|
288
298
|
if (result.trainNotSaved) lines.push('', `The release train (${result.trainNotSaved}) was not saved${result.declined ? '.' : ': run it with --yes, or answer in a terminal.'}`);
|
|
289
299
|
if (todo.length) lines.push('', 'Run it with --yes to apply, or in a terminal to answer one question per app.');
|
|
290
300
|
} else if (!result.actions.length) {
|
|
291
|
-
lines.push('', result.declined ? DECLINED : 'Everything this command can set up is in place; nothing was changed.');
|
|
301
|
+
lines.push('', result.declined ? DECLINED : result.notTaken ? notTaken(result.notTaken) : 'Everything this command can set up is in place; nothing was changed.');
|
|
292
302
|
} else {
|
|
293
303
|
lines.push('', 'Done:');
|
|
294
304
|
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.56",
|
|
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.56",
|
|
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.56",
|
|
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.56",
|
|
66
66
|
"commit": null,
|
|
67
|
-
"version": "0.2.
|
|
67
|
+
"version": "0.2.56",
|
|
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:74cc82e781ba9b34e48e223ad2cb87c0e2d512d486cf1a204fbf08a2a95571cc",
|
|
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.56",
|
|
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",
|