- Refund is now idempotent and crash-safe: stamp refunded_at right after the refund succeeds, then cancel + disconnect best-effort in a try/catch (logged), and bail if already refunded. Drop the no-op DB::transaction. - Funnel report attributes users by the variant Pennant actually served (eager loaded per chunk) instead of recomputing the formula, so it can't drift from what users experienced. - Paywall states the exact amount charged today for pay_now (yearly upfront). - Throttle + block-demo middleware on the refund route; drop the inline check. - resolve(?User) nullable to match sibling features; resolve the variant once in offerFor; add French translations. |
||
|---|---|---|
| .. | ||
| css | ||
| js | ||
| views | ||