@passioncode-ai/passioncode 0.2.55 → 0.2.57
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.57 - 2026-11-03
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- A terminal `setup` that declined every offer (PC-91) exits by its checks, 1 when a check still
|
|
8
|
+
fails, whether or not it named a release train (PC-93). Before, naming a train other than the
|
|
9
|
+
saved one made it exit 0 as a plan does, and otherwise it exited by its checks, though in both
|
|
10
|
+
the person changed nothing. A run that only returns a plan (`--dry-run`, or no terminal and no
|
|
11
|
+
`--yes` when it would change something) still exits 0.
|
|
12
|
+
|
|
13
|
+
## 0.2.56 - 2026-11-03
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- `setup` in a terminal that asked, changed nothing and left install offers untaken, such as Fabric
|
|
18
|
+
offered without Docker (an offer that defaults to no), says "Nothing was changed: Fabric was
|
|
19
|
+
offered and not installed. The checks below still stand." instead of "Everything this command can
|
|
20
|
+
set up is in place" (PC-92). It does not say "declined": pressing Enter on an offer that defaults
|
|
21
|
+
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
|
|
22
|
+
defaulting to yes, still says "You declined every offer" (PC-91).
|
|
23
|
+
|
|
3
24
|
## 0.2.55 - 2026-11-03
|
|
4
25
|
|
|
5
26
|
### Fixed
|
package/bin/passioncode.js
CHANGED
|
@@ -93,7 +93,7 @@ async function setupOrDoctor(cmd, rest) {
|
|
|
93
93
|
noOpen: o.flags.has('--no-open'), dryRun: o.flags.has('--dry-run'), repairOnly, online, ask: json ? null : asker(), log, train: o.train,
|
|
94
94
|
});
|
|
95
95
|
process.stdout.write(json ? JSON.stringify(r, null, 2) + '\n' : S.render(r, { repairOnly }) + '\n');
|
|
96
|
-
return
|
|
96
|
+
return S.exitCode(r);
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
async function main(argv) {
|
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' };
|
|
@@ -274,7 +283,13 @@ function finish(result, home, checks) {
|
|
|
274
283
|
return result;
|
|
275
284
|
}
|
|
276
285
|
|
|
286
|
+
// The exit code of a setup or doctor --fix run. A plan exits 0 (nothing was agreed, nothing ran);
|
|
287
|
+
// a declined run (PC-91) is not a plan but the person's answer, so it exits by its checks like any
|
|
288
|
+
// run that changed nothing (PC-93): 1 when a check still fails, with or without a named train.
|
|
289
|
+
const exitCode = (r) => (r.planOnly && !r.declined ? 0 : r.ok ? 0 : 1);
|
|
290
|
+
|
|
277
291
|
const DECLINED = 'You declined every offer; nothing was changed. The checks below still stand.';
|
|
292
|
+
const notTaken = (names) => `Nothing was changed: ${names.join(' and ')} ${names.length > 1 ? 'were' : 'was'} offered and not installed. The checks below still stand.`;
|
|
278
293
|
|
|
279
294
|
function render(result, { repairOnly = false } = {}) {
|
|
280
295
|
const lines = [];
|
|
@@ -288,7 +303,7 @@ function render(result, { repairOnly = false } = {}) {
|
|
|
288
303
|
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
304
|
if (todo.length) lines.push('', 'Run it with --yes to apply, or in a terminal to answer one question per app.');
|
|
290
305
|
} else if (!result.actions.length) {
|
|
291
|
-
lines.push('', result.declined ? DECLINED : 'Everything this command can set up is in place; nothing was changed.');
|
|
306
|
+
lines.push('', result.declined ? DECLINED : result.notTaken ? notTaken(result.notTaken) : 'Everything this command can set up is in place; nothing was changed.');
|
|
292
307
|
} else {
|
|
293
308
|
lines.push('', 'Done:');
|
|
294
309
|
for (const x of result.actions) lines.push(` ${x.outcome === 'failed' ? 'FAILED' : 'done '} ${x.detail}${x.error ? `\n ${x.error}` : ''}`);
|
|
@@ -321,4 +336,4 @@ function render(result, { repairOnly = false } = {}) {
|
|
|
321
336
|
return lines.join('\n');
|
|
322
337
|
}
|
|
323
338
|
|
|
324
|
-
module.exports = { setup, plan, render };
|
|
339
|
+
module.exports = { setup, plan, render, exitCode };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@passioncode-ai/passioncode",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.57",
|
|
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.57",
|
|
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.57",
|
|
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.57",
|
|
66
66
|
"commit": null,
|
|
67
|
-
"version": "0.2.
|
|
67
|
+
"version": "0.2.57",
|
|
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:30c81a7b07a8f7a83e2f700ac4a3ced780dd08b530c03e114b0b09fd796a5fbb",
|
|
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.57",
|
|
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",
|