Skip to content
Open
Show file tree
Hide file tree
Changes from 93 commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
b66ed0a
docs(google): plan pluggable store providers
hyochan Sep 30, 2026
2daed17
feat(google): extract core and discover store providers
hyochan Sep 30, 2026
9feb174
feat(google): select external provider coordinates
hyochan Sep 30, 2026
477b978
feat(client): add extensible purchase store identity
hyochan Sep 30, 2026
4312cba
feat(sdks): route community Android store providers
hyochan Sep 30, 2026
0bfdcb2
feat(conformance): expose Android provider verification suite
hyochan Sep 30, 2026
706e328
feat(registry): generate store identities and selection metadata
hyochan Sep 30, 2026
d261d6c
fix(providers): close SDK and variant integration gaps
hyochan Sep 30, 2026
64397ef
test(providers): verify and document independent store integration
hyochan Sep 30, 2026
da5cdec
build(google): wire provider artifacts and CI verification
hyochan Sep 30, 2026
14e1367
fix(providers): preserve identity and provider lifecycle compatibility
hyochan Oct 1, 2026
4432e60
feat(client): target provider identity contract 0.2.0
hyochan Oct 1, 2026
9af1820
fix(flutter): preserve strict purchase store identity decoding
hyochan Oct 1, 2026
bb38632
docs: publish community provider release and migration targets
hyochan Oct 1, 2026
2f10211
docs: record full provider device regression evidence
hyochan Oct 1, 2026
e2b0e89
docs: extend provider design to Apple and Android
hyochan Oct 1, 2026
e432f90
feat: define a common Apple and Android provider contract
hyochan Oct 1, 2026
21eb650
feat: route Apple purchases through pluggable store providers
hyochan Oct 1, 2026
57f765e
fix: require core Android provider dispatch and validate its protocol
hyochan Oct 1, 2026
42ea4e9
feat: support common store providers across all six SDKs
hyochan Oct 1, 2026
b6a531e
feat: document and validate providers with shared registry bindings
hyochan Oct 1, 2026
c7a0741
fix: preserve provider contracts across purchases and release consumers
hyochan Oct 1, 2026
12748ad
fix: complete provider release and device recovery checks
hyochan Oct 1, 2026
63b54bc
fix: preserve Godot provider restoration and purchase events
hyochan Oct 1, 2026
ed826ec
fix: resolve complete provider runtime dependencies
hyochan Oct 1, 2026
4eb0684
fix: finalize provider dispatch and ci checks
hyochan Oct 1, 2026
c36e36c
fix: route community providers through public methods
hyochan Oct 1, 2026
707d725
style: remove whitespace from relocated StoreKit source
hyochan Oct 1, 2026
f8926ac
fix: enforce common provider failure and token conformance
hyochan Oct 2, 2026
b5cd5c3
docs: illustrate provider boundaries with Amazon example
hyochan Oct 2, 2026
3be96e2
docs: show community provider integration evidence
hyochan Oct 2, 2026
d257a73
fix: preserve canonical provider failure delivery
hyochan Oct 2, 2026
9b7b647
docs: clarify community Amazon example and official recommendation
hyochan Oct 3, 2026
cfc7259
fix: preserve unknown provider renewal status
hyochan Oct 3, 2026
8fff2a9
fix(react-native): preserve native unknown renewal status
hyochan Oct 3, 2026
1644ab1
fix(godot): preserve host SDK for iOS generators
hyochan Oct 3, 2026
1142ec3
fix: preserve provider failures across SDKs
hyochan Oct 3, 2026
b1ef4ff
fix(godot): ship frameworks built with stable Xcode
hyochan Oct 3, 2026
e440b40
fix: preserve apple provider lifecycle and errors
hyochan Oct 3, 2026
12b44da
fix: serialize apple lifecycle and expo setup
hyochan Oct 4, 2026
1e9af01
fix: sync apple frameworks and provider guide
hyochan Oct 4, 2026
52b30ac
fix: refresh RN cache dependency and clarify provider profiles
hyochan Oct 4, 2026
58c4092
fix: make pre-merge provider profiles compile reliably
hyochan Oct 4, 2026
5491dd2
fix: replace vulnerable braces in reviewed dependency graphs
hyochan Oct 5, 2026
a640b1d
fix(ci): verify Codecov CLI from official GitHub release
hyochan Oct 5, 2026
d03744f
fix(ci): gate coverage locally before reporting
hyochan Oct 5, 2026
267854d
fix(ci): isolate safe MAUI Maven fixture caches
hyochan Oct 5, 2026
56c62e3
fix(ci): isolate cocoapods caches by version
hyochan Oct 5, 2026
19b93e8
docs: clarify community provider compatibility
hyochan Oct 5, 2026
42234dd
fix(client): keep generated Kotlin store identity valid and pin it wi…
hyochan Oct 5, 2026
c7a1020
fix(google): name the linked store in init failures and test official…
hyochan Oct 5, 2026
cc68619
fix(sdks): keep restore errors typed and deliver every provider failu…
hyochan Oct 5, 2026
fca6771
fix(apple): surface selection errors on finish, restore the SwiftUI s…
hyochan Oct 5, 2026
339aa9c
docs: fix the provider guides and release card, and record the provid…
hyochan Oct 5, 2026
213c113
fix(godot): report provider setup errors, skip invalid purchases, and…
hyochan Oct 5, 2026
fc5b69a
ci(expo): run the Expo Android unit tests
hyochan Oct 5, 2026
fd7f92d
fix(client): derive the IAPKit result identity from its store and nam…
hyochan Oct 5, 2026
fe23efc
fix(sdks): keep end failures retryable and tie the store hint to the …
hyochan Oct 5, 2026
ac2e794
test(apple): pin that the provider's list replaces the optimistic sub…
hyochan Oct 5, 2026
f48beb0
docs: correct the tier rule and the conformance wording, and catch JS…
hyochan Oct 5, 2026
2d24230
fix(sdks): end an Expo connection that never got a provider without c…
hyochan Oct 5, 2026
724dc95
test(docs): report a spaced dash that loses its space at a line break
hyochan Oct 5, 2026
a592a71
test(expo): pin that endConnection without a provider resets state
hyochan Oct 5, 2026
bb2a6e5
test(docs): apply the spaced-dash rule at element and string-literal …
hyochan Oct 5, 2026
0767214
test(expo): count provider creations in the endConnection test
hyochan Oct 5, 2026
412b86e
test(docs): keep entities as written in string literals and pin the e…
hyochan Oct 5, 2026
8bad449
test(expo): follow the endConnection cleanup in the source-text check
hyochan Oct 5, 2026
7aa3e09
test(expo): pin that endConnection removes the stored listeners
hyochan Oct 5, 2026
53d5850
test(docs): cover nested element and literal positions in the JSX check
hyochan Oct 5, 2026
93ca5bf
fix(godot): finish hand-built purchases and signal each restored purc…
hyochan Oct 5, 2026
6c5345d
fix(sdks): keep iOS finish by id, init developer errors and empty id …
hyochan Oct 5, 2026
7a8a9b6
fix(google): keep a provider selection beside a flavored app's store …
hyochan Oct 5, 2026
772e358
fix(sdks): name the real fix in Expo store errors and accept mixed-ca…
hyochan Oct 5, 2026
11131e5
fix(apple): rethrow cancellation untouched and name the Client Protoc…
hyochan Oct 5, 2026
46261ad
ci: cover the new publications in the release gates and the parity audit
hyochan Oct 5, 2026
67f65d3
test: assert storeId in client conformance and pin the registry rules
hyochan Oct 5, 2026
8f25362
docs: disclose the Android restore, error code, KMP enum and iOS subs…
hyochan Oct 5, 2026
cee4b0c
docs: refresh the compiled agent context
hyochan Oct 5, 2026
8b510f1
docs: make the release card and API pages exact, and pin the conforma…
hyochan Oct 5, 2026
1ae5e0a
docs: name the SDKs each restore and cancellation note is true for
hyochan Oct 5, 2026
9aea055
fix(godot): keep the Android restore silent
hyochan Oct 5, 2026
3ab25af
docs: correct the restore, active-flag and registry notes
hyochan Oct 5, 2026
0202461
docs: split the Android error-code bullet to stay within the writing …
hyochan Oct 5, 2026
0a0fa57
docs: list Godot among the provider-restore callers and point it at t…
hyochan Oct 5, 2026
ef96f23
fix(godot): keep the not-prepared restore code and drop listener emis…
hyochan Oct 5, 2026
5e88f45
chore(security): replace the braces fork with expiring OSV exceptions
hyochan Oct 6, 2026
c7ed2b2
chore(security): clear the advisories published since the last audit
hyochan Oct 6, 2026
dbd5a14
fix(flutter): require openiap-apple 4.0.0 for SwiftPM
hyochan Oct 6, 2026
f133c20
docs: state the breaking changes of the provider contract train
hyochan Oct 6, 2026
e2fa8bf
chore(security): state the real blocker in the image-size exceptions
hyochan Oct 6, 2026
5e06f8d
docs: correct the Apple, Godot and Android notes and the release steps
hyochan Oct 6, 2026
2eeb489
chore(security): name the real Metro path in the image-size exceptions
hyochan Oct 6, 2026
a8100d6
docs: tighten the Godot, Flutter and release-step notes
hyochan Oct 6, 2026
c751be8
fix: strip tags without a regex in the release-note audit test
hyochan Oct 6, 2026
a45fc4e
fix(kmp): share one client across the example screens
hyochan Oct 6, 2026
938fa60
fix(kmp): reconnect the shared example client when the billing progra…
hyochan Oct 7, 2026
b8922ed
fix: align store ids with the Commerce key and enforce the provider c…
hyochan Oct 7, 2026
59cd022
fix: close provider review gaps and document the authoring contract
hyochan Oct 7, 2026
2b49313
fix(security): clear newly indexed dependency advisories
hyochan Oct 7, 2026
d1a30bf
test: align resolver cases with commerce store ids
hyochan Oct 7, 2026
0cf44fc
test: align plugin fixtures with commerce store ids
hyochan Oct 7, 2026
02e91ef
fix: isolate purchase errors and simplify provider wiring
hyochan Oct 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion .claude/commands/audit-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,9 @@ Update the documentation site for users:
`openiap-versions.json` only for `clientProtocol`, `google`, and `apple`;
framework versions come from each library's package metadata
- Derive expected versions from the explicit release plan and stable metadata;
release workflows own package-version commits
release workflows own package-version commits, except a feature PR may set
`specs/client/package.json` when the in-tree code needs the new Client
Protocol version
- Link each package to its expected GitHub Release tag, per "Docs Ship With The
Change" in `knowledge/internal/05-docs-patterns.md`
- Document ALL changes: new features, bug fixes, breaking changes
Expand Down
8 changes: 5 additions & 3 deletions .claude/commands/audit-security.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,11 @@ osv-scanner scan source \
```

The dependency audit fails on every unaccepted advisory severity, malformed
audit output, and expired or unused exceptions. An upstream-unpatched,
build-only exception must be justified and expiring in the owning
`osv-scanner.toml`. A successful GitHub dependency-submission run is separate
audit output, and expired or unused exceptions. A temporary exception for
an advisory the lock does not clear yet (no fixed release, a fix outside
the dependents' ranges, or a clearing dependency bump that has not been
tested yet) must be justified and expiring in the owning `osv-scanner.toml`.
A successful GitHub dependency-submission run is separate
evidence that the hosted graph matches the exact Bun lock commit:

```bash
Expand Down
29 changes: 17 additions & 12 deletions .claude/commands/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,13 @@ Inspect the complete public payload before publishing it.

- `main` contains stable package metadata only. Run stable package releases and
production docs deployment from `main`.
- `clientProtocol` mirrors `specs/client/package.json`. Never edit it directly
in a feature PR, release command, or docs deployment. A Client Protocol
release bumps the publishing manifest; `scripts/sync-versions.sh` writes the
mirror, and the audits reject a committed mismatch.
- `clientProtocol` mirrors `specs/client/package.json`. Never edit the mirror
directly; the audits reject a committed mismatch. A feature PR may set the
manifest, run `bun install --lockfile-only --ignore-scripts` and then
`scripts/sync-release-generated.sh`, and commit `bun.lock` with the staged
files, when the in-tree code needs the new Client Protocol version; the
release then dispatches with `version=current`, which publishes that version
without bumping again.
- `next` is an on-demand prerelease integration branch. Run `-rc.*` and npm
`next` releases from `next` only.
- `next` may be absent between prerelease trains. Create it from current `main`
Expand All @@ -48,10 +51,9 @@ node --test scripts/release-branch-policy.test.mjs
```

Every release lane's version-bump commit also runs
`scripts/sync-release-generated.sh`, which regenerates and stages the files
derived from version metadata (`packages/docs/src/generated/version-metadata.json`,
`packages/docs/public/llms.txt`, `packages/docs/public/llms-full.txt`,
`knowledge/_agent-context/context.md`). Expect these paths in bump commits;
`scripts/sync-release-generated.sh`, which regenerates and stages every file
that embeds release version metadata (see its `git add` list). Expect those
paths in bump commits;
they are not worktree drift. Skipping this regeneration leaves `main` stale and
fails the `Audit SDK Parity` / `Test Agent Scripts` clean-worktree checks on
every subsequent PR.
Expand Down Expand Up @@ -127,8 +129,9 @@ For a multi-package release train, use this order when affected:
8. `release-maui.yml`
9. `release-openiap.yml` — select one affected package per run:
- `client-protocol`: `@hyodotdev/openiap-client-protocol`. Its package
version *is* the Client Protocol version; a release moves `clientProtocol`
in `openiap-versions.json` through sync.
version *is* the Client Protocol version; a release with patch, minor,
major, rc-bump or exact moves `clientProtocol` through sync, while
`current` publishes the in-tree version.
- `commerce-protocol`: `@hyodotdev/openiap-commerce-protocol`; independent
package version, released when its contract, runner, or artifacts change.
- `cli`: `@hyodotdev/openiap`; independent package version.
Expand Down Expand Up @@ -199,8 +202,10 @@ Train rules (mistake guards):
versions and links against the
published releases and correct any that differ; if that needs an edit,
commit it directly to `main` together with any release-process doc updates,
and do not open a PR for that post-release docs-only commit. Run the docs
deployment; to deploy before publication, use the explicit flag in
and do not open a PR for that post-release docs-only commit. Card edits that
change wording come with the matching `scripts/audit-release-notes.test.mjs`
needles. Run the docs deployment; to deploy before publication, use the
explicit flag in
`knowledge/internal/06-git-deployment.md#deploying-documentation`.
If a train will not resume, trim its card to what published. CI's release
note audit (`bun run audit:release-notes`) fails a PR into `main` that
Expand Down
4 changes: 3 additions & 1 deletion .codex/skills/ship-release/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,9 @@ paths. Never mutate production Convex data.
a user-visible or contract-relevant change; do not bump unaffected packages
for symmetry.
5. Select stable SemVer bumps from the actual compatibility impact and run all
preflight audits required by `.claude/commands/release.md`.
preflight audits required by `.claude/commands/release.md`. The in-tree
`specs/client/package.json` version is released with `version=current` when
a feature PR already set it.

## 2. Publish packages sequentially

Expand Down
60 changes: 60 additions & 0 deletions .github/actions/coverage-report/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Preserve and report coverage
description: Archive required local coverage and report to Codecov without blocking verified builds on service outages.
inputs:
package-path:
description: Workspace-relative package directory
required: true
flag:
description: Canonical Codecov upload flag
required: true
use-oidc:
description: Whether the caller can request an OIDC token
required: true
runs:
using: composite
steps:
- name: Preserve verified coverage
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: coverage-${{ inputs.flag }}
path: ${{ github.workspace }}/${{ inputs.package-path }}/coverage/lcov.info
if-no-files-found: error
retention-days: 14

- name: Install verified Codecov CLI
id: codecov-cli
continue-on-error: true
shell: bash
working-directory: ${{ github.workspace }}
run: |
timeout 120s scripts/install-security-tool.sh codecov "$RUNNER_TEMP/codecov-cli"
cat > "$RUNNER_TEMP/codecov" <<'EOF'
#!/usr/bin/env bash
exec timeout 120s "${BASH_SOURCE[0]}-cli" "$@"
EOF
chmod 755 "$RUNNER_TEMP/codecov"

- name: Report coverage to Codecov
id: codecov-upload
if: steps.codecov-cli.outcome == 'success'
continue-on-error: true
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7
with:
binary: ${{ runner.temp }}/codecov
use_oidc: ${{ inputs.use-oidc }}
fail_ci_if_error: true
disable_search: true
files: coverage/lcov.info
flags: ${{ inputs.flag }}
name: ${{ inputs.flag }}
network_prefix: ${{ inputs.package-path }}/
working-directory: ${{ inputs.package-path }}

- name: Report Codecov service failure
if: ${{ !cancelled() && (steps.codecov-cli.outcome == 'failure' || steps.codecov-upload.outcome == 'failure') }}
shell: bash
run: |
echo "::warning::Codecov reporting failed. Required local project and patch coverage passed; the LCOV artifact is available in this run."
printf '%s\n' '### Coverage reporting' '' \
'Required local project and patch coverage passed. Codecov reporting failed; use the archived LCOV report in this run.' \
>> "$GITHUB_STEP_SUMMARY"
88 changes: 73 additions & 15 deletions .github/workflows/ci-expo-iap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@ on:
- "packages/google/gradle/openiap-store.gradle"
- "libraries-versions.jsonc"
- "codecov.yml"
- "scripts/install-security-tool.sh"
- "scripts/assert-lcov-coverage.mjs"
- ".github/actions/coverage-report/**"
- "scripts/test-ios-log-sanitizers.sh"
- "scripts/ci/retry-gradle.sh"
- ".github/workflows/ci-expo-iap.yml"
- "!**/*.md"
push:
Expand All @@ -26,7 +30,11 @@ on:
- "packages/google/gradle/openiap-store.gradle"
- "libraries-versions.jsonc"
- "codecov.yml"
- "scripts/install-security-tool.sh"
- "scripts/assert-lcov-coverage.mjs"
- ".github/actions/coverage-report/**"
- "scripts/test-ios-log-sanitizers.sh"
- "scripts/ci/retry-gradle.sh"
- ".github/workflows/ci-expo-iap.yml"
- "!**/*.md"

Expand Down Expand Up @@ -100,27 +108,73 @@ jobs:
- name: Test
run: bun run test:coverage

- name: Enforce line coverage
run: node ../../scripts/assert-lcov-coverage.mjs coverage/lcov.info 90

- name: Upload coverage
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7
with:
use_oidc: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}
fail_ci_if_error: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}
disable_search: true
files: coverage/lcov.info
flags: expo-iap
name: expo-iap
network_prefix: libraries/expo-iap/
working-directory: libraries/expo-iap
- name: Enforce project and patch coverage
env:
COVERAGE_BASE_REF: ${{ github.event.pull_request.base.sha || github.event.before || 'HEAD^' }}
run: node ../../scripts/assert-lcov-coverage.mjs coverage/lcov.info --component expo-iap

- name: Test plugin
run: bun run test:plugin

- name: Consumer install smoke test
run: bun run verify:consumer-install

- name: Preserve and report coverage
uses: ./.github/actions/coverage-report
with:
package-path: libraries/expo-iap
flag: expo-iap
use-oidc: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}

android-unit:
name: Android unit tests
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
fetch-depth: 1
persist-credentials: false

- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: 20

- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: 1.3.13

- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('libraries/expo-iap/bun.lock', 'libraries/expo-iap/example/bun.lock') }}
restore-keys: ${{ runner.os }}-bun-

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Install example dependencies
working-directory: libraries/expo-iap/example
run: bun install --frozen-lockfile

- name: Build config plugin
run: bun run build:plugin

- name: Generate Android project
working-directory: libraries/expo-iap/example
run: npx expo prebuild --platform android --no-install --clean

- name: Install JDK
uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # v6.0.1
with:
distribution: "temurin"
java-version: "17"

- name: Run Android unit tests
working-directory: libraries/expo-iap/example/android
run: |
"$GITHUB_WORKSPACE/scripts/ci/retry-gradle.sh" ./gradlew :expo-iap:testDebugUnitTest --stacktrace

ios-xcode-27:
name: iOS example (Xcode 27)
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
Expand Down Expand Up @@ -155,7 +209,11 @@ jobs:

- name: Generate scene-based iOS project
working-directory: libraries/expo-iap/example
run: npx expo prebuild --platform ios --clean
run: |
CP_CACHE_DIR="$RUNNER_TOOL_CACHE/cocoapods/$(pod --version)"
export CP_CACHE_DIR
printf 'CP_CACHE_DIR=%s\n' "$CP_CACHE_DIR" >> "$GITHUB_ENV"
npx expo prebuild --platform ios --clean

- name: Install CocoaPods dependencies
working-directory: libraries/expo-iap/example/ios
Expand Down
31 changes: 17 additions & 14 deletions .github/workflows/ci-flutter-inapp-purchase.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ on:
- "packages/google/gradle/openiap-store.gradle"
- "libraries-versions.jsonc"
- "codecov.yml"
- "scripts/install-security-tool.sh"
- "scripts/assert-lcov-coverage.mjs"
- ".github/actions/coverage-report/**"
- ".github/workflows/ci-flutter-inapp-purchase.yml"
- ".github/workflows/release-flutter.yml"
- "scripts/ci/retry-gradle.sh"
Expand All @@ -27,6 +30,9 @@ on:
- "packages/google/gradle/openiap-store.gradle"
- "libraries-versions.jsonc"
- "codecov.yml"
- "scripts/install-security-tool.sh"
- "scripts/assert-lcov-coverage.mjs"
- ".github/actions/coverage-report/**"
- ".github/workflows/ci-flutter-inapp-purchase.yml"
- ".github/workflows/release-flutter.yml"
- "scripts/ci/retry-gradle.sh"
Expand Down Expand Up @@ -80,20 +86,10 @@ jobs:
- name: Filter generated coverage
run: dart run tool/filter_coverage.dart

- name: Enforce line coverage
run: node ../../scripts/assert-lcov-coverage.mjs coverage/lcov.info 90

- name: Upload coverage
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7
with:
use_oidc: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}
fail_ci_if_error: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}
disable_search: true
files: coverage/lcov.info
flags: flutter-inapp-purchase
name: flutter-inapp-purchase
network_prefix: libraries/flutter_inapp_purchase/
working-directory: libraries/flutter_inapp_purchase
- name: Enforce project and patch coverage
env:
COVERAGE_BASE_REF: ${{ github.event.pull_request.base.sha || github.event.before || 'HEAD^' }}
run: node ../../scripts/assert-lcov-coverage.mjs coverage/lcov.info --component flutter-inapp-purchase

- name: Android consumer build smoke test
run: |
Expand Down Expand Up @@ -124,6 +120,13 @@ jobs:
flutter build apk --release --target-platform android-arm64
done

- name: Preserve and report coverage
uses: ./.github/actions/coverage-report
with:
package-path: libraries/flutter_inapp_purchase
flag: flutter-inapp-purchase
use-oidc: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}

apple-xcode-27:
name: Apple examples (Flutter 3.44 + Xcode 27)
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ci-maui-iap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ jobs:
working-directory: packages/google
run: |
"$GITHUB_WORKSPACE/scripts/ci/retry-gradle.sh" ./gradlew \
:openiap-core:assembleRelease \
:openiap:assemblePlayRelease \
:openiap:assembleAmazonRelease \
:openiap:assembleHorizonRelease
Expand Down
Loading
Loading