You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Changes
Replaced the hosted Basic and Plus plans with a single Pro plan
($2.99/month or $24.00/year): unlimited bills, 6 users, 3 bill groups,
export, and full analytics. New accounts receive a 30-day Pro trial with no
card required.
Derived checkout, subscription, and webhook entitlement from configured
Stripe price IDs; historical Basic/Plus price IDs resolve to Pro access.
Persisted Stripe webhook events for idempotent processing, failed billing
closed on incomplete configuration, and reconciled canceled checkouts.
Added opt-in, privacy-filtered server crash reporting (SENTRY_DSN).
Kept the public self-hosted image tracker-free and published hosted
analytics in a separate SaaS image; added a privacy-minimized bill_shared event.
Refreshed web, server, and mobile dependencies, including fixes for
brace-expansion and DOMPurify advisories.
Upgrade notes
Self-hosted: no configuration changes are required. The stripe_webhook_events table is created automatically at startup.
SaaS / billing-enabled deployments: set STRIPE_PRICE_PRO_MONTHLY and STRIPE_PRICE_PRO_ANNUAL, and keep the existing STRIPE_PRICE_BASIC_* and STRIPE_PRICE_PLUS_* values. Subscription
updates carrying an unrecognized price ID resolve to the Free tier.
Crash reporting is off unless SENTRY_DSN is set. See docs/server-crash-reporting.md.
Sources
Diff source: git log v4.12.2..v4.13.0, run on 2026-09-30.