Skip to content

A pack owner gets the first-Show offer, with the upgrade (#969) - #971

Merged
Skeyelab merged 1 commit into
mainfrom
agent3/first-show-upgrade
Oct 27, 2026
Merged

Skeyelab merged 1 commit into
mainfrom
agent3/first-show-upgrade

Conversation

@Skeyelab

Copy link
Copy Markdown
Member

Fixes #969.

When a pack owner's first Show ends with that pack's mixer family Armed, the first-Show offer now shows, as Eric decided. afterShowEnded now gets planLicense(), the plan as owned, instead of license(), which reported Pro because of the Armed pack. The call moved into RecordScreenModel.firstShowOffer(...), next to trialNote from #966, so a test can reach it. The paywall it opens already offers only the upgrade to someone who bought a pack (PackOffer.items returns [.upgrade]).

The after-Take offers (afterTakeOnDevice, afterTakeStopped) still read license(). That's right for them: the pack really gave that Take the Drive Copy and the names.

Tests (AppTests/FirstShowOfferTests)

  • packOwnerGetsTheFirstShowOfferWithTheUpgrade: red first, with the seam still on license(): ✘ ... FirstShowOfferTests.swift:24:9: Expectation failed: offer(pro) == .firstShowEnded. It passes after the switch. Its second check (the paywall's items are [.upgrade]) passed already. It repeats a package test, but it covers the issue's "offers the upgrade" condition.
  • proOwnerNeverGetsIt and freeUserStillGetsIt: passed on their first run. They are regression guards.

Full ./scripts/verify.sh passed: macOS build and AppTests, iOS Simulator build, 139s.

For Eric

  • With only the upgrade offered, the paywall's headline is "Pro on every audio interface", not "Your first Show is recorded". The same happens with the pack offer today. Say if you'd rather keep the moment's line.
  • A pack owner who already ended Shows before this never had the once-ever flag set, so they get the offer at their next Show's end. Packs are Debug only, so no tester is affected.
  • Only tests, not a device.

afterShowEnded read license(), which counts a pack on the Armed family
as Pro, so a pack owner whose first Show ended with that mixer Armed
never got the offer. It now reads planLicense(), like the Trial note
(#966). The paywall it opens already offers the upgrade to someone who
bought a pack.

Assisted-by: Claude Code:claude-opus-5-5
@Skeyelab
Skeyelab enabled auto-merge (squash) October 27, 2026 03:19
@codecov

codecov Bot commented Oct 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@Skeyelab
Skeyelab merged commit f889779 into main Oct 27, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A pack owner never gets the first-Show offer when that pack's mixer was Armed

1 participant