Skip to content

Local Waifu 0.1.20

Choose a tag to compare

@lumizone lumizone released this 25 May 08:51
· 2 commits to main since this release

Mostly a payments + UX cleanup release. License processing moves from
Dodo test to Dodo live (real cards now). The paywall got loading-state
polish so the Buy buttons no longer look dead during the first second
of cold start.

Changed

  • License processing is now live. New purchases hit the real Dodo
    Payments live environment, $25 lifetime / $35 renewal, license keys
    arrive by email from Dodo. Existing license keys you redeemed during
    the test/beta window keep working on this build, no re-activation
    required.
  • Paywall buttons show a loading state. "Buy lifetime" and "Buy
    renewal" now render a small spinner while the app fetches the
    checkout URLs from the backend, instead of looking disabled. Fixes
    the "is this broken?" first-click moment.
  • Lifetime price copy simplified to "$25". Previous "$25 launch ·
    $35 standard" framing implied a discount code that no longer applies
    on live checkout. The actual charge has always been $25, and that's
    what the button now says.
  • Refund + revocation copy is honest about timing. Terms,
    withdrawal form, and privacy policy no longer promise an automatic
    "Locked within ~12 hours" after a refund. The current build doesn't
    poll Dodo on a schedule, so the app will pick up a revoked license
    when you next re-redeem or manage devices in Settings → License.

Marketing site

  • Polar → Dodo across all legal pages. The Polar Software Inc.
    Merchant of Record references in /terms, /privacy, /thank-you,
    /withdrawal-form, and /contact have been updated to Dodo Payments,
    Inc. The post-purchase thank-you page now links to the Dodo customer
    portal instead of polar.sh. GDPR/CRD-aligned.

Fixed

  • License deactivation error path now scrubs response bodies. The
    /licenses/deactivate call previously surfaced a raw 400-character
    slice of any future error format Dodo returns. Now routes through
    the same sanitiser as validate/activate (strips sk- / Bearer /
    AIza / x-goog-api-key patterns), so a future Dodo error shape
    that echoes user data or tokens can't leak via this path.
  • Cancellation guards on license-tab and paywall fetches. Closes a
    hard-rule-66 violation where a user switching tabs mid-fetch could
    briefly see stale state from the prior async resolve.
  • dev.sh sanity check now matches the active provider. Was
    validating Polar env vars only; now picks Dodo or Polar based on
    LW_LICENSE_PROVIDER and warns on missing values for the active set.