1. 25 Apr, 2026 9 commits
  2. 24 Apr, 2026 28 commits
  3. 23 Apr, 2026 3 commits
    • Stefy Lanza (nextime / spora )'s avatar
      Fix Stripe charge settling: attach PM to customer on add, use CIT for subscription upgrades · 7237e508
      Stefy Lanza (nextime / spora ) authored
      When a card was added via billing page, it was only stored in the DB — never
      attached to the Stripe customer. This meant every charge was on an unattached
      PM, which Stripe processes differently.
      
      For subscription upgrades the user is actively present, so off_session=True
      was incorrect: it marks the charge as a Merchant-Initiated Transaction (MIT)
      which settles slower than Customer-Initiated (CIT). Other sites that use
      Stripe's frontend SDK do CITs, which is why their charges clear faster.
      
      - dashboard_add_payment_method_stripe: attach PM to Stripe customer and set
        as customer default immediately when the card is added
      - auto_charge: add off_session parameter (default True for existing auto
        top-up/renewal callers); document the distinction
      - dashboard_subscribe_tier: pass off_session=False so the upgrade charge is
        processed as a CIT and settles at normal speed
      7237e508
    • Stefy Lanza (nextime / spora )'s avatar
      Fix Stripe charge status check, payment feedback, and modal HTML rendering · f8c830a0
      Stefy Lanza (nextime / spora ) authored
      - auto_charge: verify payment_intent.status is succeeded/processing before returning success; add description/metadata params so subscription charges are labeled correctly in Stripe
      - pricing: redirect to ?success= after upgrade/downgrade so the persistent server-side banner shows instead of a 1.5s toast that disappears on reload
      - pricing GET endpoint: pass success/error query params to template context
      - base modal: support html:true option in open() so showConfirm can render HTML content; update showConfirm signature to accept html flag
      - pricing: pass html=true to showConfirm so the upgrade confirmation renders bold/colored text instead of raw tags
      f8c830a0
    • Stefy Lanza (nextime / spora )'s avatar
      Granular CRUD with hot-reload, pagination, searchable selects, model autocomplete · 45435f4b
      Stefy Lanza (nextime / spora ) authored
      - Per-item save/delete API endpoints for providers, rotations, autoselects (admin + user)
      - Config hot-reload on every change without server restart
      - Provider list pagination (10/page) with search/filter
      - Searchable datalist selects for >25 providers or models
      - Model name autocomplete from provider's configured model list
      - Fix JS key-escaping bug that broke rendering with special chars in keys
      45435f4b