- 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. |
||
|---|---|---|
| .. | ||
| components | ||
| contexts | ||
| hooks | ||
| layouts | ||
| lib | ||
| pages | ||
| providers | ||
| services | ||
| types | ||
| utils | ||
| app.tsx | ||
| ssr.tsx | ||