@crossdelta/platform-sdk 0.26.13 → 0.26.15

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,32 @@ 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.15] - 2026-11-04
9
+
10
+ ### Fixed
11
+ - **The generated `lint-and-tests.yml` follows the workspace workflow again.** The template missed the
12
+ split lint steps (Biome lint, Biome format, custom lint rules and their tests) and the new
13
+ `typecheck` job, which type-checks the affected packages with each package's own tsconfig.
14
+ The sync leaves out what only exists in the source repository: the Biome format step for
15
+ `packages/jackherd` and `packages/pf-mcp`, the custom lint rule steps and the `KNOWN_RED` skip
16
+ list of the typecheck job, so a generated workspace has no step pointing at a missing path.
17
+
18
+ ## [0.26.14] - 2026-11-02
19
+
20
+ ### Fixed
21
+ - **The generated `build-and-deploy.yml` installs the Pulumi CLI before its first pulumi call.**
22
+ Only `Pulumi up` installed the CLI through `pulumi/actions`; the client build upload reads the
23
+ bucket from `pulumi stack output` and the deploy job's image comparison runs ahead of `Pulumi up`,
24
+ both relying on a CLI the runner image used to ship. On `ubuntu-26.04` they failed with
25
+ `pulumi: command not found` (exit 127). The template's deploy job now installs the CLI
26
+ unconditionally; its build job has no client build upload to need it.
27
+
28
+ ## [0.26.13] - 2026-10-31
29
+
30
+ ### Removed
31
+ - **The `cap:build:android:pilot` task is gone from the workspace `turbo.json` template.** The script
32
+ built debug-signed production APKs, which a properly signed release cannot update.
33
+
8
34
  ## [0.26.12] - 2026-10-28
9
35
 
10
36
  ### Fixed
@@ -483,6 +483,12 @@ jobs:
483
483
  npm-token: $\{{ github.token }}
484
484
  ignore-scripts: 'true'
485
485
 
486
+ # The runner image no longer ships the Pulumi CLI (ubuntu-26.04, 2026-11-02), and the first
487
+ # `pulumi` call of this job is the comparison below, ahead of `Pulumi up`. Without a `command`
488
+ # the action only installs it.
489
+ - name: Install the Pulumi CLI
490
+ uses: pulumi/actions@v7
491
+
486
492
  # The scopes this deploy moves to another image than the stack runs, from the stack's
487
493
  # `scopeImages` output of the last `up`. The steps that follow a new image (the Studio smoke
488
494
  # check among them) hang off this list rather than off a build marker: a dispatch that builds
@@ -17,7 +17,7 @@ permissions:
17
17
  contents: read
18
18
  pull-requests: read
19
19
 
20
- # A draft skips lint and test under their own check names: GitHub shows the newest check run per
20
+ # A draft skips lint, test and typecheck under their own check names: GitHub shows the newest check run per
21
21
  # name, and a draft push followed at once by `gh pr ready` leaves two runs on one commit, so a
22
22
  # skipped "lint" could land after, and hide, the real one. A docs-only PR runs them but skips every
23
23
  # step after the file check, so both end as a success and a required check never waits for a run
@@ -49,9 +49,9 @@ jobs:
49
49
  cache-restore-keys: bun-v4-$\{{ runner.os }}-
50
50
  ignore-scripts: 'true'
51
51
 
52
- - name: Run Linter
52
+ - name: Biome lint
53
53
  if: steps.docs-only.outputs.docs_only != 'true'
54
- run: bun run --if-present lint
54
+ run: bunx biome lint .
55
55
 
56
56
  - name: Component manifest
57
57
  if: steps.docs-only.outputs.docs_only != 'true'
@@ -131,6 +131,64 @@ jobs:
131
131
  bun run --if-present test
132
132
  fi
133
133
 
134
+ # Types are checked per package with the package's own tsconfig, as `scripts/pre-commit-checks.ts`
135
+ # does. The packages are built first (the install runs the root `prepare`): a package's types
136
+ # resolve through its dependencies' dist.
137
+ typecheck:
138
+ name: $\{{ github.event.pull_request.draft && 'typecheck (draft)' || 'typecheck' }}
139
+ if: github.event.pull_request.draft == false
140
+ runs-on: ubuntu-latest
141
+ timeout-minutes: 15
142
+ steps:
143
+ - name: Checkout code
144
+ uses: actions/checkout@v6
145
+ with:
146
+ fetch-depth: 2
147
+
148
+ - name: Check for docs-only changes
149
+ id: docs-only
150
+ uses: ./.github/actions/pr-docs-only
151
+ with:
152
+ patterns: docs/**/*.md
153
+ github-token: $\{{ github.token }}
154
+
155
+ - name: Setup Bun and install dependencies
156
+ if: steps.docs-only.outputs.docs_only != 'true'
157
+ uses: ./.github/actions/setup-bun-install
158
+ with:
159
+ enable-cache: 'true'
160
+ cache-key: bun-v4-$\{{ runner.os }}-$\{{ hashFiles('bun.lock', 'bunfig.toml') }}
161
+ cache-restore-keys: bun-v4-$\{{ runner.os }}-
162
+
163
+ # Same scope rule as the test job: `turbo ls --affected` names the changed packages and their
164
+ # dependents, and a change to a root file every package reads checks them all.
165
+ - name: Run Typecheck
166
+ if: steps.docs-only.outputs.docs_only != 'true'
167
+ env:
168
+ GLOBAL_PATHS: package.json bunfig.toml tsconfig.json .npmrc .bun-version patches/ .github/workflows/lint-and-tests.yml .github/actions/setup-bun-install/
169
+ TURBO_SCM_BASE: HEAD^1
170
+ TURBO_SCM_HEAD: HEAD
171
+ run: |
172
+ # shellcheck disable=SC2086 # GLOBAL_PATHS is a space-separated pathspec list
173
+ CHANGED=$(git diff --name-only HEAD^1 HEAD -- $GLOBAL_PATHS | head -1)
174
+ if [ -n "$CHANGED" ]; then
175
+ echo "::notice::${CHANGED} changed: typechecking every package."
176
+ PACKAGES=$(bunx turbo ls --output=json | jq -r '.packages.items[].path')
177
+ else
178
+ PACKAGES=$(bunx turbo ls --affected --output=json | jq -r '.packages.items[].path')
179
+ fi
180
+ FAILED=""
181
+ for PACKAGE in $PACKAGES; do
182
+ [ -f "$PACKAGE/tsconfig.json" ] || continue
183
+ echo "::group::tsc $PACKAGE"
184
+ (cd "$PACKAGE" && bunx tsc --noEmit) || FAILED="$FAILED $PACKAGE"
185
+ echo "::endgroup::"
186
+ done
187
+ if [ -n "$FAILED" ]; then
188
+ echo "::error::Type errors in:${FAILED}"
189
+ exit 1
190
+ fi
191
+
134
192
  e2e:
135
193
  runs-on: ubuntu-latest
136
194
  timeout-minutes: 30
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossdelta/platform-sdk",
3
- "version": "0.26.13",
3
+ "version": "0.26.15",
4
4
  "description": "Platform toolkit for event-driven microservices — keeping code and infrastructure in lockstep.",
5
5
  "keywords": [
6
6
  "cli",