#40: log every check-in, persist refusal history, 503 when the store cannot answer
All checks were successful
ci / test-and-build (pull_request) Successful in 40s
#41 by Cordy was merged 2026-09-06 03:16:18 +00:00
Email verification (#31), ported onto main — supersedes #34
All checks were successful
ci / test-and-build (pull_request) Successful in 15s
#39 by Cordy was merged 2026-08-26 21:06:40 +00:00
Admin analytics (#33 phase 2): overview, accounts, timeline + Paddle checkout funnel
All checks were successful
ci / test-and-build (pull_request) Successful in 17s
#36 by Cordy was merged 2026-08-25 18:08:14 +00:00
Admin console backend spine (#33): /v1/me, staff management, custom-key minting
All checks were successful
ci / test-and-build (pull_request) Successful in 15s
#35 by Cordy was merged 2026-08-25 17:50:38 +00:00
Email verification (double opt-in), off by default (#31)
All checks were successful
ci / test-and-build (pull_request) Successful in 20s
#34 by Cordy was closed 2026-08-26 21:06:47 +00:00 1 conflicting file
Migrate store to SQLite (modernc, cgo-free) + boot import of legacy JSON (#28)
All checks were successful
ci / test-and-build (pull_request) Successful in 37s
#30 by Cordy was merged 2026-08-25 01:48:20 +00:00
#25 follow-up: below-floor 400 explains the way back to the free tier
All checks were successful
ci / test-and-build (pull_request) Successful in 11s
#27 by Cordy was merged 2026-08-25 00:33:14 +00:00
First 50 seats always free: Paddle carries paid seats, key carries total cap (#25)
All checks were successful
ci / test-and-build (pull_request) Successful in 12s
#26 by Cordy was merged 2026-08-24 12:42:50 +00:00
Subscription cancellation (cancel at period end + resume) + checkin reason (#23)
All checks were successful
ci / test-and-build (pull_request) Successful in 12s
#24 by Cordy was merged 2026-08-24 01:09:53 +00:00
OAuth sign-in: Google + Microsoft (code flow + PKCE, stdlib only)
All checks were successful
ci / test-and-build (pull_request) Successful in 12s
#21 by Cordy was merged 2026-08-24 00:08:00 +00:00
Check-in response carries the license label
All checks were successful
ci / test-and-build (pull_request) Successful in 12s
#20 by Cordy was merged 2026-07-31 11:31:21 +00:00
Heal prefers the per-license label; account org only as fallback
All checks were successful
ci / test-and-build (pull_request) Successful in 12s
#19 by Cordy was merged 2026-07-31 11:01:03 +00:00
Mint licenses with the buyer's org name; heal ctm_ orgs at re-sign
All checks were successful
ci / test-and-build (pull_request) Successful in 15s
#18 by Cordy was merged 2026-07-31 10:16:41 +00:00
Fix: seat upgrades stored the prorated delta instead of the absolute count
All checks were successful
ci / test-and-build (pull_request) Successful in 11s
#16 by Cordy was merged 2026-07-31 01:00:45 +00:00
Seat-change preview: price the change before anything is billed
All checks were successful
ci / test-and-build (pull_request) Successful in 14s
#15 by Cordy was merged 2026-07-31 00:32:19 +00:00
Licenses listing exposes subscription-backing (#12 follow-up)
All checks were successful
ci / test-and-build (pull_request) Successful in 12s
#14 by Cordy was merged 2026-07-31 00:00:51 +00:00
Origin-aware refresh + self-service seat changes
All checks were successful
ci / test-and-build (pull_request) Successful in 14s
#13 by Cordy was merged 2026-07-30 23:55:28 +00:00
README: orgs, invites, password reset, receipts, SMTP env, renewal (part of #80)
All checks were successful
ci / test-and-build (pull_request) Successful in 11s
#10 by Cordy was merged 2026-07-30 15:11:33 +00:00
Billing receipts via Paddle API (#4 remainder)
All checks were successful
ci / test-and-build (pull_request) Successful in 10s
#9 by Cordy was merged 2026-07-30 00:46:44 +00:00