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.commercialv2.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.Reconcilenow readsAuroraMeter.Storage.load_counter/3instead 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.commercialrewritten 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 checkout —
config :aurora_meter_pro, stripe_metered_prices: %{plan => [price_id]};AuroraMeter.Pro.Stripeattaches every flat price (quantity 1) and every metered price (no quantity) of the plan, so Stripe actually invoices the usage the reporter sends.stripe_pricesmay now list several flat prices per plan.checkout_params/2is public and pure. -
Plan from price —
AuroraMeter.Pro.Config.plan_for_price/1;Subscriptions.sync/1resolves 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
timestampjust 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 dashboard —
usage_dashboard/1is 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/2returns everything it needs so LiveViews re-render on usage broadcasts (the mountableAuroraMeter.Pro.Live.Dashboarddoes). -
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_emailand:allow_promotion_codes; an existing Stripe customer is reused. -
stripe_portal_configuration(orportal_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 issince_days:(default 90).Rollup.rollup_all/1takes options. -
Reporter and alerts consider
trialingandpast_duesubscriptions, not onlyactive;AuroraMeter.Pro.Periodignores non-entitled or expired windows. -
Configno longer creates atoms from webhook input (String.to_existing_atom).
Fixed
-
Subscriptions.sync/1readscurrent_period_start/endfrom the first subscription item when the API version no longer puts them on the subscription, and accepts an expandedcustomerobject. -
The webhook plug halts the connection and answers
400to 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 billing —
AuroraMeter.Pro.StripeimplementsAuroraMeter.Billing.Provider(Checkout, Billing Portal). A self-containedAuroraMeter.Pro.Webhookplug verifies Stripe signatures (HMAC-SHA256) and keeps subscriptions in sync viaAuroraMeter.Pro.Subscriptions. -
Usage reporting —
AuroraMeter.Pro.UsageReporter(Oban) reports metered usage deltas to Stripe Billing Meters exactly once, via theaurora_meter_usage_reportsledger. -
Subscription-aligned periods —
AuroraMeter.Pro.Period. -
Rollups & export —
AuroraMeter.Pro.Rollup(month buckets from counters, day buckets from durable events);AuroraMeter.Pro.Export.usage_csv/2. -
Dashboard —
AuroraMeter.Pro.Components.usage_dashboard/1and the mountableAuroraMeter.Pro.Live.DashboardLiveView. -
Quota alerts —
AuroraMeter.Pro.Alertsfires[:aurora_meter, :alert]+ an optional handler once per{tenant, feature, period, threshold}. -
Reconciliation —
AuroraMeter.Pro.Reconcile(local consistency check). -
Installer —
AuroraMeter.Pro.Migrationandmix aurora_meter_pro.gen.migration. -
Testing —
AuroraMeter.Pro.Stripe.Fake(no network in tests).