Monetization: Polar chosen as billing provider

- Updated ai.md billing decision to reference Polar (polar.sh)
- Updated code comments (PremiumUrl, IsPremium) to reference Polar
- MONETIZATION.md updated locally (gitignored — confidential)

207 tests, 0 warnings.
This commit is contained in:
2026-08-18 10:13:53 -07:00
parent 2e8629c5c2
commit 5ad58542fb
2 changed files with 6 additions and 6 deletions
+3 -3
View File
@@ -144,14 +144,14 @@ public class MainViewModel : ViewModelBase
// integration test can assert they point at real destinations.
public const string ChannelUrl = "https://youtube.com/@llamachileshop";
public const string MastodonUrl = "https://mastodon.llamachile.tube/@gramps";
// Tabled 2026-08-14: the billing provider is not chosen yet (Gumroad/Lemon Squeezy — TASK 23);
// Tabled 2026-08-14: billing provider chosen (Polar — polar.sh);
// the subscription page (premium unlock) lands here once set up. Coffee/thanks URL is live.
public const string PremiumUrl = "";
public const string CoffeeUrl = "https://buymeacoffee.com/llamachiley";
public static string AppVersionLabel => $"Version {typeof(MainViewModel).Assembly.GetName().Version?.ToString(3)}";
/// <summary>The About hub's Unlock Premium button lights up only once the
/// billing URL is set (tabled 2026-08-14 — provider undecided, TASK 23).</summary>
/// billing URL is set (Polar — polar.sh, pending TASK 10 implementation).</summary>
public bool IsPremiumAvailable => PremiumUrl.Length > 0;
/// <summary>Full in-app licensing/legal text, loaded on demand from the
@@ -257,7 +257,7 @@ public class MainViewModel : ViewModelBase
public SocialsConfig? Socials => _socials;
/// <summary>Freemium: 6 slots — YT + 1 other, the rest locked. Premium seam: all 6 open.</summary>
private static bool IsPremium => false; // unlock deferred (TASK 23) — seam only
private static bool IsPremium => false; // unlock deferred (TASK 10) — seam only
/// <summary>Canvas.Top for the social bar: 0 = top, 1040 = bottom (40px from the 1080 edge).</summary>
public double SocialBarTop => _socials?.BarPosition == SocialBarPosition.Top ? 0 : 1040;
+3 -3
View File
@@ -609,9 +609,9 @@ annual subscription** (settled 2026-08-14 — replaces the earlier "one-time unl
keep the promise simple).
- **Billing:** NOT locked to itch.io (creator's call 2026-08-14). Hunted fact — **itch.io has no native
subscription billing** (no annual/recurring product billing; only pay-what-you-want, pre-orders,
early-access, keys, and a Patreon integration). Candidates for annual subs + license-key verification:
**Gumroad** (its native affiliate program is a tiebreaker if the affiliate angle in TASK 10 matters)
and **Lemon Squeezy**. Decision deferred to TASK 10.
early-access, keys, and a Patreon integration). **Chosen platform: Polar (polar.sh)** — open-source
MoR (Apache 2.0), handles payments, subscriptions, license keys, and global tax compliance.
Startup Program gives Scale plan free for 12 months. Details in `MONETIZATION.md`.
- **Support (creator's model):** in-app bug-reporting mechanism → issues into git; most queries are
how-tos / feature requests / manual-skimmers. Maintenance cadence = "when I get around to it" with
emergency patches; not a 24/7 service promise.