@crossdelta/platform-sdk 0.26.11 → 0.26.13

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
@@ -5,6 +5,15 @@ All notable changes to `@crossdelta/platform-sdk` will be documented in this fil
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.26.12] - 2026-10-28
9
+
10
+ ### Fixed
11
+ - **`check-image-tag-exists` finds existing tags again.** The runner sets the `repository-owner`
12
+ input, declared without a default, to an empty string, which skipped the fallback to
13
+ `$GITHUB_REPOSITORY_OWNER`; the lookup asked `/orgs//packages/…`, got 404 and reported every tag
14
+ as missing, so a re-run build job rebuilt an image GHCR already held. An empty owner now falls back
15
+ like the prefix does.
16
+
8
17
  ## [0.26.11] - 2026-10-28
9
18
 
10
19
  ### Changed
@@ -22,6 +22,16 @@ const PAGE_SIZE = 100
22
22
  const resolveRepositoryPrefix = (input, env) =>
23
23
  input || env.GHCR_REPOSITORY_PREFIX || env.GITHUB_REPOSITORY?.split('/')[1] || 'platform'
24
24
 
25
+ /**
26
+ * Resolves the GHCR package owner: the explicit input, else $GITHUB_REPOSITORY_OWNER. The runner sets
27
+ * a declared input without a default to '', so an empty input has to fall back here; an empty owner
28
+ * asks `/orgs//packages/…`, which answers 404 and reads as "missing".
29
+ * @param {string} input - The action's repository-owner input, possibly empty
30
+ * @param {Record<string, string | undefined>} env - Process environment
31
+ * @returns {string}
32
+ */
33
+ const resolveRepositoryOwner = (input, env) => input || env.GITHUB_REPOSITORY_OWNER || ''
34
+
25
35
  /**
26
36
  * Checks if the target tag exists in a list of container versions.
27
37
  * @param {Object[]} versions - Array of version objects from GitHub API
@@ -102,4 +112,10 @@ const createGhcrClient = ({ owner, prefix, token, maxPages = 5, fetchImpl = fetc
102
112
  return { lookupTag }
103
113
  }
104
114
 
105
- module.exports = { createGhcrClient, describeLookup, resolveRepositoryPrefix, tagExistsInVersions }
115
+ module.exports = {
116
+ createGhcrClient,
117
+ describeLookup,
118
+ resolveRepositoryOwner,
119
+ resolveRepositoryPrefix,
120
+ tagExistsInVersions,
121
+ }
@@ -16,7 +16,7 @@
16
16
 
17
17
  const { appendFileSync } = require('node:fs')
18
18
  const { exit } = require('node:process')
19
- const { createGhcrClient, describeLookup, resolveRepositoryPrefix } = require('./ghcr.js')
19
+ const { createGhcrClient, describeLookup, resolveRepositoryOwner, resolveRepositoryPrefix } = require('./ghcr.js')
20
20
 
21
21
  /**
22
22
  * Builds environment variable keys for GitHub Actions inputs.
@@ -71,7 +71,7 @@ const imageTag = getInput('image-tag', { required: true })
71
71
  const githubToken = getInput('github-token', { required: true })
72
72
 
73
73
  // Optional inputs - defaults from environment for portability
74
- const repositoryOwner = getInput('repository-owner', { defaultValue: process.env.GITHUB_REPOSITORY_OWNER })
74
+ const repositoryOwner = resolveRepositoryOwner(getInput('repository-owner'), process.env)
75
75
  const repositoryPrefix = resolveRepositoryPrefix(getInput('repository-prefix'), process.env)
76
76
  const maxPages = Number(getInput('max-pages', { defaultValue: '5' }))
77
77
 
@@ -55,10 +55,6 @@
55
55
  "cap:build:android:preview": {
56
56
  "dependsOn": ["build"],
57
57
  "cache": false
58
- },
59
- "cap:build:android:pilot": {
60
- "dependsOn": ["build"],
61
- "cache": false
62
58
  }
63
59
  },
64
60
  "ui": "tui",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossdelta/platform-sdk",
3
- "version": "0.26.11",
3
+ "version": "0.26.13",
4
4
  "description": "Platform toolkit for event-driven microservices — keeping code and infrastructure in lockstep.",
5
5
  "keywords": [
6
6
  "cli",