@makefully/adaptfully 3.16.0 → 3.16.1

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
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to this project are documented in this file.
4
4
 
5
+ ## 3.16.1 — 2026-09-03
6
+
7
+ ### Fixed
8
+
9
+ - **`adaptfully build` signing credentials** — Capacitor/Cordova zip builds now package `assets/meta/deployments/<canonical>/` (e.g. `ios-dev` → `ios`) so Wrapfully can sign device IPAs. Previously only `release` shipped deployment folders, so `ios:dev-build` arrived on the Mac without `apple/development.*`.
10
+
5
11
  ## 3.16.0 — 2026-09-02
6
12
 
7
13
  ### Added
package/README.md CHANGED
@@ -619,7 +619,7 @@ assets/meta/deployments/<deployment>/
619
619
  apple/development.mobileprovision # ios-dev device
620
620
  ```
621
621
 
622
- The `.p12` passphrase must match `MAC_KEYCHAIN_PASSWORD` on the Mac Wrapfully host. Team ID and profile UUID are read from the `.mobileprovision`. Enable **Sign in with Apple** on the App ID when using Capgo Apple auth.
622
+ `adaptfully build` (zip-only) still packages this deployment folder for Capacitor/Cordova so device debug builds can sign. The `.p12` passphrase must match `MAC_KEYCHAIN_PASSWORD` on the Mac Wrapfully host. Team ID and profile UUID are read from the `.mobileprovision`. Enable **Sign in with Apple** on the App ID when using Capgo Apple auth.
623
623
 
624
624
  Optional `build.json` may still be present for tooling compatibility; Capacitor does not require its `ios.*` code-sign fields.
625
625
 
@@ -144,7 +144,8 @@ function createZipStream(deployFolder, contents, options = {}) {
144
144
  }
145
145
 
146
146
  /**
147
- * Game source zip for /build and /release (no credentials unless release).
147
+ * Game source zip for /build (and legacy callers). Include `deploymentDirs` when
148
+ * the builder needs signing credentials (e.g. Capacitor ios-dev).
148
149
  *
149
150
  * @param {string} deployFolder
150
151
  * @param {string} contents
@@ -71,7 +71,11 @@ export async function send(gameId, contents, server, stage, family, deployFolder
71
71
  } else if (stage === 'release') {
72
72
  archiveStream = createReleaseArchive(deployFolder, contents, options.deploymentDirs ?? [], { log });
73
73
  } else {
74
- archiveStream = createSourceArchive(deployFolder, contents, { log });
74
+ archiveStream = createSourceArchive(deployFolder, contents, {
75
+ log,
76
+ publishDir: options.publishDir,
77
+ deploymentDirs: options.deploymentDirs,
78
+ });
75
79
  }
76
80
 
77
81
  const url = resolveWrapfullyUrl(server, stage, family, gameId, platformKey, options.deploymentKey);
package/lib/node/index.js CHANGED
@@ -52,6 +52,7 @@ export {
52
52
  resolveFamilyFromTarget,
53
53
  resolvePlatformKey,
54
54
  resolvePlatformRegistrationsByKey,
55
+ resolveBuildCredentialDirs,
55
56
  resolvePublishDir,
56
57
  resolveRegistrationAssets,
57
58
  } from './registrations.js';
@@ -4,6 +4,7 @@ import { send } from './deploy.js';
4
4
  import { resolveBuildArtifactDir } from './artifacts.js';
5
5
  import { prebuildPlatform } from './prebuild.js';
6
6
  import {
7
+ resolveBuildCredentialDirs,
7
8
  resolveBuildSpec,
8
9
  resolveDeploymentsForPlatform,
9
10
  resolvePublishDir,
@@ -130,6 +131,9 @@ export async function runAdaptfullyStage(stage, platformKey, options) {
130
131
  for (const deploymentKey of deployments) {
131
132
  const publishDir = deploymentKey === 'zip' ? undefined : resolvePublishDir(deploymentKey);
132
133
  const wrapStage = stage === 'deploy' ? 'deploy' : 'build';
134
+ const deploymentDirs = wrapStage === 'build'
135
+ ? resolveBuildCredentialDirs(platformKey, pkg)
136
+ : [];
133
137
 
134
138
  log(
135
139
  `adaptfully: ${stage} ${platformKey} → `
@@ -137,6 +141,14 @@ export async function runAdaptfullyStage(stage, platformKey, options) {
137
141
  + `via Wrapfully /${wrapfullyRoute}/${wrapStage} (${buildSpec.family})`,
138
142
  );
139
143
 
144
+ if (deploymentDirs.length) {
145
+ log(
146
+ `adaptfully: build signing credentials → ${
147
+ deploymentDirs.map((dir) => path.resolve(dir)).join(', ')
148
+ }`,
149
+ );
150
+ }
151
+
140
152
  await send(
141
153
  gameId,
142
154
  contents,
@@ -149,6 +161,7 @@ export async function runAdaptfullyStage(stage, platformKey, options) {
149
161
  {
150
162
  log,
151
163
  publishDir,
164
+ deploymentDirs,
152
165
  platformKey,
153
166
  deploymentKey: wrapStage === 'deploy' ? deploymentKey : undefined,
154
167
  artifactPath,
@@ -345,6 +345,30 @@ export function resolvePublishDir(deploymentKey, metaDir = 'assets/meta') {
345
345
  return path.join(metaDir, 'deployments', deploymentKey);
346
346
  }
347
347
 
348
+ const BUILD_SIGNING_PACKAGERS = new Set(['capacitor', 'cordova']);
349
+
350
+ /**
351
+ * Credential folders to ship with `adaptfully build` (zip artifact) when the
352
+ * Wrapfully builder needs signing material — e.g. ios-dev → deployments/ios.
353
+ * Upload-only targets (SFTP, Play, ASC) are not included.
354
+ *
355
+ * @param {string} platformKey
356
+ * @param {object} pkg
357
+ * @param {string} [metaDir='assets/meta']
358
+ * @returns {string[]} Absolute paths to existing deployment dirs
359
+ */
360
+ export function resolveBuildCredentialDirs(platformKey, pkg, metaDir = 'assets/meta') {
361
+ const platform = pkg?.config?.platforms?.[platformKey];
362
+ const packager = platform?.packager;
363
+ if (!BUILD_SIGNING_PACKAGERS.has(packager)) {
364
+ return [];
365
+ }
366
+
367
+ const credentialKey = DEFAULT_BUILDER_PLATFORMS[platformKey] ?? platformKey;
368
+ const dir = path.resolve(resolvePublishDir(credentialKey, metaDir));
369
+ return fs.existsSync(dir) ? [dir] : [];
370
+ }
371
+
348
372
  const ELECTRON_TARGETS = new Set([
349
373
  'win', 'win-dev', 'mac', 'mac-dev', 'linux', 'linux-dev',
350
374
  ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makefully/adaptfully",
3
- "version": "3.16.0",
3
+ "version": "3.16.1",
4
4
  "description": "Platform abstraction and Wrapfully deploy client for Makefully games",
5
5
  "type": "module",
6
6
  "main": "./lib/node/index.js",