diff --git a/src/content/docs/index.mdoc b/src/content/docs/index.mdoc
index 7877154..d3ae3dd 100644
--- a/src/content/docs/index.mdoc
+++ b/src/content/docs/index.mdoc
@@ -4,8 +4,8 @@ description: Learn what FOSSBilling is, where to start, and how to get involved
tableOfContents: false
banner:
content: |
- 0.8.1 is here! Check out the
- release notes
+ 0.8.2 is here! Check out the
+ release notes
and the 0.7 → 0.8 upgrade guide for details.
---
diff --git a/src/content/docs/maintenance/Updating/0-7-to-0-8.mdoc b/src/content/docs/maintenance/Updating/0-7-to-0-8.mdoc
index 0c6ab21..a99070f 100644
--- a/src/content/docs/maintenance/Updating/0-7-to-0-8.mdoc
+++ b/src/content/docs/maintenance/Updating/0-7-to-0-8.mdoc
@@ -30,6 +30,8 @@ The database charset has been migrated from `utf8` to `utf8mb4` / `utf8mb4_unico
- New `security.trusted_proxies` block for configuring reverse proxy trust.
- New `security.session_regeneration_grace_period` setting (default: 300).
- New `i18n.auto_detect_locale`, `i18n.date_format`, `i18n.time_format`, `i18n.datetime_pattern` settings.
+- New rate limiter policies for guest invoice endpoints (`invoice_get_ip`, `invoice_get_hash`, `invoice_pdf_ip`, `invoice_pdf_hash`).
+- New `invoice_hash_lifetime_days` setting (default: 90) controls how long invoice magic links remain valid. Set to 0 for no expiration.
## Module Migrations
@@ -40,7 +42,7 @@ The following modules have been removed or replaced. The patcher handles the mig
| `Servicemembership` removed | Membership products and orders are migrated to the "custom" product type. Review active membership orders after updating. |
| `Spamchecker` replaced | Replaced by the new [`Antispam`](/admin-guide/anti-spam/) module (supports Cloudflare Turnstile, hCaptcha, and honeypot fields). Review your spam-protection settings after the update. |
| `Wysiwyg` removed | CKEditor 5 is now integrated directly into themes. Use the `wysiwyg` Twig function to initialize editors. |
-| `Paidsupport` removed | Module data is cleaned up. |
+| `Paidsupport` removed | Module data is cleaned up and leftover files are purged from disk. |
| Added `Antispam` | New [spam-prevention module](/admin-guide/anti-spam/) with multiple challenge providers. |
| Added `Widgets` | New module for registering renderable widget slots in templates. |
@@ -384,6 +386,29 @@ The old `api.rate_*` configuration settings have been replaced by a centralized
The rate limiter is now enforced on guest ticket creation and other public endpoints. Policies are defined in `FOSSBilling\Security\RateLimiter::getDefaultConfig()`.
+### Invoice Hash Rate Limiting (0.8.2)
+
+Additional rate limits are now enforced on guest invoice endpoints.
+
+Invoice hashes are now validated; hashes outside the accepted range (30–60 hex characters) are rejected. Legacy hashes that don't meet the new format are removed and regenerated when an admin re-sends the invoice.
+Invoice hashes now expire after a configurable number of days. The new `invoice_hash_lifetime_days` setting (default: 90) controls this expiration. Setting it to `0` disables hash expiration entirely. Hash lifetime is automatically extended when an invoice is created, approved, or a payment reminder is sent.
+
+## Guest Cron Security (0.8.2)
+
+The `guest/cron/run` endpoint now requires a `hash` parameter to prevent unauthorized triggering. One is automatically generated if guest cron is enabled but no hash has been configured.
+
+The hash is displayed in **System → Cron** and can be regenerated from the admin interface. If you use the guest cron URL externally, append `?hash=...` — the old unauthenticated URL now returns a 403 error.
+
+## Email Template Validation (0.8.2)
+
+Templates are now syntax-validated on save. Failed renders are flagged with the error message and visible in the admin panel, which displays error badges and includes bulk actions for reviewing or resetting broken templates.
+
+Templates that fail to render block email delivery for their associated notifications.
+
+## Update Readiness Checks (0.8.2)
+
+The updater now checks filesystem permissions before applying an update. If any check fails, the update is blocked and the admin panel shows which paths are not writable, surfacing issues like SELinux denials or incorrect ownership that previously caused updates to fail partway through.
+
## Widget System
0.8.0 introduces a new widget system for rendering dynamic content in template slots. Use `render_widgets` in your theme templates:
@@ -395,6 +420,10 @@ The rate limiter is now enforced on guest ticket creation and other public endpo
Widgets are registered by modules and can be created by implementing the `WidgetProviderInterface`.
+### Login Form Widget Slots (0.8.2)
+
+Login forms now include widget slots that extensions can use to inject alerts, branding, or custom authentication flows.
+
## Email Templates
{% aside type="caution" %}
diff --git a/src/content/docs/maintenance/changelog.mdoc b/src/content/docs/maintenance/changelog.mdoc
index c636a03..5324f0d 100644
--- a/src/content/docs/maintenance/changelog.mdoc
+++ b/src/content/docs/maintenance/changelog.mdoc
@@ -18,6 +18,21 @@ FOSSBilling publishes release notes and tagged versions on GitHub. Use the links
For the latest changes, start with the [most recent release](https://github.com/FOSSBilling/FOSSBilling/releases/latest).
+### Version 0.8.2
+
+| Area | Summary |
+|------|---------|
+| **Security** | Rate limiting on guest invoice, PDF, and payment APIs with per-hash and per-IP limits; invoice hash format validated (30–60 hex chars) and hashes expire after configurable period; guest cron endpoint now requires security hash; extension uninstall paths validated against directory traversal; fixed reverse tabnabbing vulnerability in Theme service; password values no longer echoed in login templates |
+| **Rate Limiting** | New `invoice_get_ip`, `invoice_get_hash`, `invoice_pdf_ip`, `invoice_pdf_hash` policies; invoice hashes expire by default after 90 days (`invoice_hash_lifetime_days`) |
+| **Email Templates** | Built-in syntax validation with error tracking in admin panel; new `last_error` / `error_checked_at` columns for tracking rendering failures; bulk actions and batch delete |
+| **Payment Gateways** | One-time payment enforcement per gateway; gateway keys required based on operating mode; update readiness checks in gateway settings UI |
+| **Performance** | Doctrine ORM metadata now cached on filesystem |
+| **Updates** | Pre-flight filesystem permission checks before applying updates |
+| **Widgets** | Login forms now support widget slots for extension injection |
+| **Maintenance** | Leftover Paidsupport and Servicemembership module files fully cleaned from disk |
+
+[View the full 0.8.2 release notes](https://github.com/FOSSBilling/FOSSBilling/releases/tag/0.8.2) for the complete list of changes.
+
### Version 0.8.1
| Area | Summary |