Changelog
All notable changes to Generous.nz are recorded here, grouped by version. Every deployed build has a version number, a git tag, and an entry below.
Versioning scheme
Versions follow MAJOR.MINOR.PATCH:
- 0.x — pre-launch. Minor bumps mark a completed build phase or major feature set; patches are bug fixes on the current build.
- 1.0.0 — first public launch.
- 1.x+ — post-launch: minor = new features, patch = fixes, major = breaking changes or significant re-architecture.
Each version is tagged in git (v0.2.0) and the current version is kept in
package.json. See docs/version-control.md for how to cut a release.
[0.9.184] — 2026-08-26
Fixed
- Voucher gift purchases now actually email the recipient. The order API accepted the gift name/email/message but never saved them on the order, so the "You've received a voucher" email to the gift recipient never fired. Gift details are now stored in the order metadata and used by the voucher delivery flow.
[0.9.183] — 2026-08-26
Fixed
- Orders and donations no longer depend on the seller's own Stripe webhooks
to finalise. With the direct-charge model, Stripe delivers payment events to
the connected seller account rather than the platform, which left paid
orders stuck on "pending". The checkout success pages now retrieve the
Stripe session on the seller's account and finalise the order/donation
immediately (idempotent; the webhook path still runs as a backstop). The
finalise logic was extracted to
lib/payments/finalise-checkout.tsand is shared by both paths, so receipts, WhooHoo emails, voucher assignment, stock, settlements and goal celebrations behave identically. - Donation checkouts now carry the session id in the success URL so the fundraiser page can finalise a just-completed donation the same way.
[0.9.182] — 2026-08-26
Fixed
- Wholesaler platform-fee direct debits now supply the
return_urlStripe requires at PaymentIntent confirmation (Stripe was rejecting off-session card debits without it, which showed up as payment failures in the Stripe dashboard). If a bank still asks for cardholder authentication, the invoice is marked failed with a clear reason and the business is emailed a link to their Billing settings, instead of the debit silently hanging.
[0.9.181] — 2026-08-26
Fixed
- Bunny Storage connectivity: the storage URL now uses the correct regional
endpoint format
https://{region}.storage.bunnycdn.com/{zone}instead of the oldhttps://{zone}.storage.bunnycdn.comhost, which Bunny rejects ("Could not reach Bunny"). The storage zone's region (e.g.uk,ny,sg,se,la, or blank for Frankfurt) is configurable in Admin → Site settings → Image storage & CDN and stored with the zone details; the Test connection button uses the same corrected URL, andBUNNY_STORAGE_REGIONis supported as an env fallback.
[0.9.180] — 2026-08-26
Added
- Stripe live/test mode switch in Admin → Site settings ("Payments mode").
When test mode is active the whole site runs against Stripe test keys:
checkout uses test cards, Connect onboarding creates test accounts, and
webhooks verify test-mode signatures — no real money moves. Live and test
keys coexist in the server
.env(TEST_STRIPE_SECRET_KEY,TEST_STRIPE_WEBHOOK_SECRET) and the toggle switches between them.
[0.9.179] — 2026-08-26
[0.9.179] — 2026-08-26
Added
- Help centre updated for everything shipped recently: a new "For businesses" category (how wholesale works, setting up voucher products, fulfilling wholesale orders), buyer topics for "My purchases and tracking your orders" and "Vouchers — codes, PDFs and redemption", "Fulfilling orders and adding tracking" for sellers, and a "Referral programme" topic.
- Updated the pickup/delivery, notifications and account help entries to match the current flows.
[0.9.178] — 2026-08-26
Added
- Admin → Site settings now has an "Image storage & CDN" section where the Bunny Storage zone, API key and optional CDN pull-zone URL can be entered without touching code, including a "Test connection" button. Values are stored in the database and used by all uploads; server .env values remain as the fallback.