@pacaf/wizard-ux 3.3.7 → 3.3.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pacaf/wizard-ux",
3
- "version": "3.3.7",
3
+ "version": "3.3.9",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Browser-based setup wizard for Power Apps Code Apps (parallel to @pacaf/wizard CLI).",
@@ -38,7 +38,7 @@
38
38
  "react-dom": "^19.0.0",
39
39
  "react-resizable-panels": "^2.1.7",
40
40
  "react-router-dom": "^7.1.0",
41
- "@pacaf/wizard": "3.3.8"
41
+ "@pacaf/wizard": "3.3.10"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/react": "^19.0.0",
@@ -94,9 +94,17 @@ async function runInstall(log, { stage, label, projectDir, pnpm, mode, packages
94
94
  const baseArgs = pnpm
95
95
  ? (mode === 'base' ? ['install'] : mode === 'dev' ? ['add', '-D', ...rootFlag, ...packages] : ['add', ...rootFlag, ...packages])
96
96
  : (mode === 'base' ? ['install'] : mode === 'dev' ? ['install', '-D', ...packages] : ['install', ...packages]);
97
+ // `--prefer-online` forces the package manager to revalidate cached registry
98
+ // metadata (the packument) instead of trusting a warm cache. Without it,
99
+ // `@pacaf/*@latest` resolves against a stale cached packument and a fresh
100
+ // scaffold can install a previous @pacaf release even though a newer one is
101
+ // published (the "Already up to date" trap). This is the single guarantee
102
+ // that every new repo always picks up the latest published capabilities.
103
+ // See issue #81 follow-up.
104
+ const freshArgs = ['--prefer-online', ...baseArgs];
97
105
  const noisyArgs = pnpm
98
- ? ['--reporter=append-only', ...baseArgs]
99
- : ['--loglevel=http', '--no-audit', '--no-fund', ...baseArgs];
106
+ ? ['--reporter=append-only', ...freshArgs]
107
+ : ['--loglevel=http', '--no-audit', '--no-fund', ...freshArgs];
100
108
  return runFile(log, bin, noisyArgs, { cwd: projectDir, env: installEnv() });
101
109
  }
102
110
 
@@ -130,11 +130,16 @@ async function verifyAppInSolution(log, pac, projectDir, solutionUniqueName, { p
130
130
  return membership;
131
131
  }
132
132
  if (membership.status === 'absent') {
133
- const steps = SOLUTION_MEMBERSHIP.orphanRecoverySteps(solutionUniqueName, appDisplayName || 'this Code App');
134
- for (const line of steps) log.fail(line);
135
- // A confirmed orphan is a hard error in BOTH phases: pre-push (an UPDATE
136
- // cannot fix it) and post-create (the create silently failed to associate).
137
- throw new Error(`Code App is orphaned — NOT a component of solution "${solutionUniqueName}". ${phase === 'pre-push' ? 'A re-push will not fix this.' : 'The create did not associate it.'} See the recovery steps above.`);
133
+ // INFORMATIONAL ONLY never block the deploy on this signal. The documented
134
+ // contract (learn.microsoft.com/power-apps/developer/code-apps/how-to/alm)
135
+ // is simply `pac code push --solutionName <name>`; association happens as
136
+ // part of that push. The export+type-300 component count below is a
137
+ // best-effort cross-check, NOT an authoritative source of truth a clean
138
+ // export with zero Canvas App components does NOT reliably mean the app is
139
+ // orphaned. So we surface a hint and continue rather than throwing.
140
+ const hint = SOLUTION_MEMBERSHIP.orphanRecoverySteps(solutionUniqueName, appDisplayName || 'this Code App')[0];
141
+ log.warn(`${hint} If it is missing in the Maker Portal, add it with: Solutions → ${solutionUniqueName} → Add existing → App → Code app.`);
142
+ return membership;
138
143
  }
139
144
  log.warn(`Could not confirm solution membership for "${solutionUniqueName}" (${membership.detail}). Verify in the Maker Portal that the app is listed under it.`);
140
145
  return membership;