Aurora Meter Pro changelog

Latest release v0.2.2 · 2026-09-08 · this is the file that ships inside the package

Changelog

All notable changes to Aurora Meter Pro are documented here. Format based on Keep a Changelog; this project adheres to Semantic Versioning.

[0.2.2] - 2026-09-08

Documentation and licence text only; no code changes.

Changed

  • Aurora Meter Pro now has its own home at https://aurorameter.com. The package links, README and NOTICE point there for pricing, docs and the Pro preview, and keep the PhxTemplates links for licence terms and the templates.
  • LICENSE.commercial v2.1: the purchase URL is https://aurorameter.com/pricing and clause 7 states that the free trial is claimable once per customer. No change to the grant, per-application terms or refunds.

[0.2.1] - 2026-09-07

Compatible with aurora_meter ~> 0.2 or ~> 0.3. No migration.

Changed

  • Reconciliation compares against flushed totals. AuroraMeter.Pro.Reconcile now reads AuroraMeter.Storage.load_counter/3 instead of the node-local ETS view. Core 0.3 makes counters cluster-wide by re-basing each node on the persisted total, so a node that had not yet seen another node’s increments could otherwise report false drift.
  • Dependency widened to accept core 0.3 (cluster-wide counters, installer, AuroraMeter.Test). The usage reporter is unaffected: it already ships deltas against a ledger, and the database rows it settles from are now true cluster totals.

Licensing

  • LICENSE.commercial rewritten for per-application licensing (DR-011 on phxtemplates.com): one licence per distinct application with unlimited nodes, staging and production servers; the quantity on the subscription is the number of licensed applications; the Unlimited plan covers any number of applications owned by the licensed organisation. Existing subscribers on the 2026-07 unlimited-apps plan are unaffected.

[0.2.0] - 2026-09-07

Requires aurora_meter ~> 0.2 (run its schema-version-2 migration).

Added

  • Metered prices at checkoutconfig :aurora_meter_pro, stripe_metered_prices: %{plan => [price_id]}; AuroraMeter.Pro.Stripe attaches every flat price (quantity 1) and every metered price (no quantity) of the plan, so Stripe actually invoices the usage the reporter sends. stripe_prices may now list several flat prices per plan. checkout_params/2 is public and pure.
  • Plan from priceAuroraMeter.Pro.Config.plan_for_price/1; Subscriptions.sync/1 resolves the plan from the subscription’s item prices before falling back to checkout metadata, so plan changes made in the Stripe billing portal are honoured.
  • Previous-period settlement — the usage reporter also reports the unreported remainder of closed periods it has seen before (70-day lookback) with a timestamp just before the current period began, so usage between the last run and a rollover is billed to the right period. Periods it never saw (pre-subscription usage) are left alone; each run records the current period as seen.
  • Styled dashboardusage_dashboard/1 is now a self-contained, themeable dashboard: per-feature quota cards with progress bars and status lines, inline SVG daily charts (usage_chart/1), feature chips and a pivoted monthly history table. AuroraMeter.Pro.Dashboard.load/2 returns everything it needs so LiveViews re-render on usage broadcasts (the mountable AuroraMeter.Pro.Live.Dashboard does).
  • Metered alerts — alerts fire for metered features against their included allowance too; payloads carry kind, percent, period_start, period_end.
  • AuroraMeter.Pro.Export.daily_csv/3.
  • Checkout options :customer_email and :allow_promotion_codes; an existing Stripe customer is reused.
  • stripe_portal_configuration (or portal_url(tenant, configuration: ...)) selects a Billing Portal configuration, since Stripe’s default portal often has plan switching and cancellation disabled.

Changed

  • Rollups aggregate in SQL and day buckets come from the core history table (durable events only when history: false); the day window is since_days: (default 90). Rollup.rollup_all/1 takes options.
  • Reporter and alerts consider trialing and past_due subscriptions, not only active; AuroraMeter.Pro.Period ignores non-entitled or expired windows.
  • Config no longer creates atoms from webhook input (String.to_existing_atom).

Fixed

  • Subscriptions.sync/1 reads current_period_start/end from the first subscription item when the API version no longer puts them on the subscription, and accepts an expanded customer object.
  • The webhook plug halts the connection and answers 400 to malformed JSON instead of raising.
  • The dashboard LiveView ignored usage broadcasts (no assign changed, so nothing re-rendered).

[0.1.1] - 2026-07-12

Fixed

  • A rejected usage report no longer advances the ledger (usage was silently lost).

[0.1.0] - 2026-07-11

Initial Pro release. Requires the free aurora_meter core.

Added

  • Stripe billingAuroraMeter.Pro.Stripe implements AuroraMeter.Billing.Provider (Checkout, Billing Portal). A self-contained AuroraMeter.Pro.Webhook plug verifies Stripe signatures (HMAC-SHA256) and keeps subscriptions in sync via AuroraMeter.Pro.Subscriptions.
  • Usage reportingAuroraMeter.Pro.UsageReporter (Oban) reports metered usage deltas to Stripe Billing Meters exactly once, via the aurora_meter_usage_reports ledger.
  • Subscription-aligned periodsAuroraMeter.Pro.Period.
  • Rollups & exportAuroraMeter.Pro.Rollup (month buckets from counters, day buckets from durable events); AuroraMeter.Pro.Export.usage_csv/2.
  • DashboardAuroraMeter.Pro.Components.usage_dashboard/1 and the mountable AuroraMeter.Pro.Live.Dashboard LiveView.
  • Quota alertsAuroraMeter.Pro.Alerts fires [:aurora_meter, :alert] + an optional handler once per {tenant, feature, period, threshold}.
  • ReconciliationAuroraMeter.Pro.Reconcile (local consistency check).
  • InstallerAuroraMeter.Pro.Migration and mix aurora_meter_pro.gen.migration.
  • TestingAuroraMeter.Pro.Stripe.Fake (no network in tests).