Repository navigation
Paywall offer for mixer packs, shared packs, and the launch price stage (#705) - #770
Merged
Merged
Conversation
…ge (#705) PackOffer.items decides what the paywall offers: the Armed X Air or X32's pack first with Pro beside it, Pro only for a generic input, only the upgrade for someone who bought a pack (a second pack is hidden), full Pro for someone whose only pack is Family Shared, nothing on Pro. The headline is "Pro for your XR18". PackAvailability offers packs in Debug builds only. PriceStage.current is .launch, labeled "Launch price". OwnedPurchase.isFamilyShared and ProPurchases.boughtPacks tell bought packs from shared ones (saved for cold start). An upgrade bought by this person needs a pack they bought; a shared upgrade rests on any owned pack, so a family keeps Pro and a refunded pack can't lean on a relative's. Claude-Session: https://claude.ai/code/session_01K4ihr1i6m1uuUswAENvJKJ Assisted-by: Claude Code:claude-opus-5-5
Skeyelab
force-pushed
the
packs-offer-705
branch
from
October 16, 2026 05:01
f1790df to
0717fa2
Compare
Skeyelab
enabled auto-merge (squash)
October 16, 2026 05:01
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This was referenced Oct 16, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#705, the Kit for slices 3 and 4: the offer model, shared packs, and the price stage. Stacked on #769. Auto-merge stays off until it's retargeted to
main. Still no app change; the app PR wires this up behindPackAvailability.Decisions it implements (Eric, through the coordinating session, 2026-10-16)
PackOffer.items):.upgrade, since a second pack is hidden..pro, which is option (a)..pack(family), then.pro..pro.PackOffer.headline): "Pro for your XR18", from the linked Mixer's model. Without a link it uses the family's name ("X Air", "X32").PackAvailabilityis Debug only. It doesn't reach TestFlight or the App Store until Eric tries packs on a device.PriceStage.current = .launch, with the label "Launch price" at that stage only. The coordinating session set Pro to $4.99 in App Store Connect. Moving to the next stage is a one-line PR.Shared versus bought (
OwnedPurchase.isFamilyShared,ProPurchases.boughtPacks, saved for cold start)isFamilySharedfromtransaction.ownershipType == .familySharedinProStore.refreshOwned()(today it's always false), load the pack and upgrade products, and passboughtPackstoPackOffer.items.Tests, written first (
PackOfferTests,ProPurchasesTests):PackOfferorPackAvailability);sharedPackGetsPro,launchPriceandboughtVersusShared(compile);boughtUpgradeNeedsBoughtPack(behavioral: the old rule let a shared pack carry it);sharedUpgradeWithSharedPack, because the old rule already allowed it; it now guards that case. Also the existinglastKnownPacksround-trip, which first went red whenboughtPackswasn't saved and was fixed by saving it.Reviewed: a code-review agent found no blockers. Its "should the upgrade use bought packs?" question was settled by Eric's Family Sharing answer, as above. Its two nits (wording, newline trim) are done.
Checked: full package tests (1,031) pass, and
VERIFY_QUICK=1 ./scripts/verify.shpasses.