2026-04-17 - 2026-05-17
Overview
24 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
23 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
24 Issues created by 2 users
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