2025-05-16 - 2026-05-16
Overview
32 Pull requests merged by 2 users
Merged
#69 feat(infra): pass Blossom S3 config to Zooid with schema key prefix
Merged
#67 fix: stripe portal dead-end with callback return flow
Merged
#66 chore: improve billing customer name using Nostr kind 0 with pubkey fallback
Merged
#64 feat: open payment modal immediately on relay plan upgrade
Merged
#58 chore: encrypt tenant NWC URL at rest and stop secret exposure in tenant APIs
Merged
#54 fix: manual Lightning payment reconciliation with Stripe invoice state
Merged
#56 fix: relay sync create/update classification to prevent false create mode on updates
Merged
#53 fix: silent relay state drift when activity bus drops events
Merged
#51 chore: prevent duplicate Lightning charges by adding durable invoice-level NWC payment guard
Merged
#49 fix: add idempotency keys to all Stripe mutation calls
Merged
#46 fix: silent NWC auto-payment failure messaging in invoice.created fallback
Merged
#45 fix: relay sync failures with delayed bounded retries
Merged
#43 fix: enforce relay member capacity limits from plan definitions
Merged
#44 feat: add missing SQLite indexes for billing and API hot-path queries
Merged
#42 chore: strict Subdomain Validation with Detailed Error Messages
Merged
#40 feat: encourage payment setup for paid relays without making it required
Merged
#41 feat: add confirmation dialog for relay deactivate/reactivate with explicit warnings
Merged
#35 docs: document delinquent relay status across spec
Merged
#39 feat: display relay provisioning errors in UI
Merged
#27 Add tenant create endpoint
Merged
#26 fix: relay secret rotation on infra sync updates
Merged
#23 fix: make stripe webhooks explicitly toggleable with mandatory secret validation
Merged
#24 chore: replace placeholder letter badges with actual SVG logos
Merged
#22 feat: add Nostrord to recommended apps
Merged
#20 chore: harden relay plan validation to prevent billing bypass and plan-state drift
Merged
#16 docs(auth): document intentional session-style NIP-98 model
Merged
#17 fix: invoice error mapping so Stripe 4xx responses are not returned as 500
Merged
#14 fix: respect activity_type in set_relay_status and include activate_relay
Merged
#11 feat(frontend): handle bolt11 generation failures in payment dialog
Merged
#5 fix(billing): ensure all tenants have valid Stripe customer IDs
Merged
#10 fix: invoice.paid reactivating manually deactivated relays
Merged
#7 fix: fiat invoice to Lightning msat conversion by applying real-time BTC FX quotes
32 Issues closed from 2 users
Closed
#68 Use s3 backend
Closed
#62 Stripe portal dead-ends
Closed
#61 Improve billing name
Closed
#60 Pop up payment modal when switching plan
Closed
#59 Failed sync due to schema requirements
Closed
#57 NWC wallet connection secrets are stored in plaintext
Closed
#52 Manual Lightning payment flow is not reconciled to Stripe invoice state
Closed
#55 Relay sync path misclassifies update/deactivate flows as create flows
Closed
#48 Internal activity bus can drop events and cause silent state drift
Closed
#50 Duplicate Lightning charge risk in invoice processing
Closed
#47 Stripe mutation calls are not idempotent
Closed
#38 NWC payment failure is swallowed silently, error context never reaches the user
Closed
#34 Relay sync failures are never retried, relay stays broken indefinitely
Closed
#33 Relay member capacity limit defined in plans but never enforced
Closed
#36 Missing database indexes, all billing-critical queries are full table scans
Closed
#37 Subdomain validation has no length limit and allows reserved names
Closed
#30 No confirmation dialog on relay deactivate/reactivate
Closed
#28 No payment setup enforcement before paid relay creation
Closed
#29 No relay upgrade flow (free → paid) -> plan change fires no payment validation
Closed
#32 Relay sync errors stored in DB but never surfaced in UI
Closed
#25 Relay secret rotates on every infra sync
Closed
#19 Stripe webhook signature verification allows empty secret, enabling forged events
Closed
#21 Add nostrord to recommended apps
Closed
#18 Plan ID is not validated, enabling billing bypass and paid-feature drift
Closed
#15 Improve Stripe error mapping for invoice fetches
Closed
#12 Harden NIP-98 HTTP auth to exact URL/method with replay protection
Closed
#13 Relay activation logged as deactivate_relay due to hardcoded activity type
Closed
#9 Payment dialog hides bolt11 fetch failures and can stay forever on Generating invoice
Closed
#2 New tenants are created with an empty stripe_customer_id in the identity onboarding path
Closed
#8 Invoice.paid reactivates all inactive paid relays, including manually deactivated relays
Closed
#6 Incorrect fiat-to-msat conversion causes wrong Lightning invoice amounts in manual and auto-pay billing
Closed
#3 Support npub format in ADMINS environment variable for admin authentication
36 Issues created by 2 users
Opened
#1 Federation
Opened
#2 New tenants are created with an empty stripe_customer_id in the identity onboarding path
Opened
#3 Support npub format in ADMINS environment variable for admin authentication
Opened
#6 Incorrect fiat-to-msat conversion causes wrong Lightning invoice amounts in manual and auto-pay billing
Opened
#8 Invoice.paid reactivates all inactive paid relays, including manually deactivated relays
Opened
#9 Payment dialog hides bolt11 fetch failures and can stay forever on Generating invoice
Opened
#12 Harden NIP-98 HTTP auth to exact URL/method with replay protection
Opened
#13 Relay activation logged as deactivate_relay due to hardcoded activity type
Opened
#15 Improve Stripe error mapping for invoice fetches
Opened
#18 Plan ID is not validated, enabling billing bypass and paid-feature drift
Opened
#19 Stripe webhook signature verification allows empty secret, enabling forged events
Opened
#21 Add nostrord to recommended apps
Opened
#25 Relay secret rotates on every infra sync
Opened
#28 No payment setup enforcement before paid relay creation
Opened
#29 No relay upgrade flow (free → paid) -> plan change fires no payment validation
Opened
#30 No confirmation dialog on relay deactivate/reactivate
Opened
#31 No relay deletion endpoint or UI
Opened
#32 Relay sync errors stored in DB but never surfaced in UI
Opened
#33 Relay member capacity limit defined in plans but never enforced
Opened
#34 Relay sync failures are never retried, relay stays broken indefinitely
Opened
#36 Missing database indexes, all billing-critical queries are full table scans
Opened
#37 Subdomain validation has no length limit and allows reserved names
Opened
#38 NWC payment failure is swallowed silently, error context never reaches the user
Opened
#47 Stripe mutation calls are not idempotent
Opened
#48 Internal activity bus can drop events and cause silent state drift
Opened
#50 Duplicate Lightning charge risk in invoice processing
Opened
#52 Manual Lightning payment flow is not reconciled to Stripe invoice state
Opened
#55 Relay sync path misclassifies update/deactivate flows as create flows
Opened
#57 NWC wallet connection secrets are stored in plaintext
Opened
#59 Failed sync due to schema requirements
Opened
#60 Pop up payment modal when switching plan
Opened
#61 Improve billing name
Opened
#62 Stripe portal dead-ends
Opened
#63 Billing sync failing
Opened
#65 Move billing banner
Opened
#68 Use s3 backend