Subscriptions drift on both stores (Apple prices in the dry run, localizations, group names, attributes, territories, intro offers reported; Play offer phases and prices, other-regions price, dropped regions gated, grace period, --prune-languages); pitfall 104, CHANGELOG; test fixtures for the new reads

This commit is contained in:
CRTkafa 2026-10-22 20:49:43 +08:00
parent e381bc2256
commit abc195aee6
8 changed files with 558 additions and 59 deletions

View file

@ -1251,3 +1251,17 @@ that fails without the fix (see CONTRIBUTING.md).
- **Do:** update storebound; the warning was false.
- **Guard:** `readProjectEntitlements` in `cli/apple/signing.ts` compares forward-slash paths on every OS
(`tests/entitlements-ref.test.ts`).
## 104. An existing store item differs from the config and the run said nothing
- **Symptom:** `apple iap --yes` updated only missing localizations of live consumables while the config's USD prices
(12.99 / 129.99 / 649.99) differed from the store (9.99 / 99.99 / 500.00); the dry run showed no price, and changed
names and descriptions were never sent. An audit found the same class in 24 places (subscriptions, offers, app
price and availability, events, custom pages, review details).
- **Cause:** existing items were checked for existence only, not compared field by field.
- **Do:** read the dry run: every difference of an existing item is a row (old -> new). Text changes are sent;
prices, dropped regions and removed territories need `--allow-price-changes` / `--allow-availability-changes`
(the owner's call); fields Apple cannot edit (family sharing on, offer-code and win-back campaigns, intro offers,
subscription period) are named, never changed.
- **Guard:** `iapLocalizationChanges` / `iapAttributeChanges` / `availabilityChange` (`cli/apple/iap.ts`), the
subscription helpers in `cli/lib/subscriptions.ts`, `planAppInfo` / `reviewDetailDiff`, `campaignDiff`,
`winBackDiff`, `eventAttrDiff`; tests `apple-iap-drift`, `subscriptions-drift`, `appinfo-drift`, `misc-drift`.