@passioncode-ai/passioncode 0.2.55 → 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,16 @@
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
+
3
14
  ## 0.2.55 - 2026-11-03
4
15
 
5
16
  ### Fixed
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.55",
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.55",
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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "family": "passioncode",
3
- "version": "0.2.55",
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.55",
65
+ "ref": "v0.2.56",
66
66
  "commit": null,
67
- "version": "0.2.55",
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:52a667e167df1bdfaee95bdfcc45689c0b7366b96608f7c986a8c632be0e1516",
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.55",
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",