Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/content/docs/index.mdoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ description: Learn what FOSSBilling is, where to start, and how to get involved
tableOfContents: false
banner:
content: |
<strong>0.8.1 is here!</strong> Check out the
<a href="https://github.com/FOSSBilling/FOSSBilling/releases/tag/0.8.1">release notes</a>
<strong>0.8.2 is here!</strong> Check out the
<a href="https://github.com/FOSSBilling/FOSSBilling/releases/tag/0.8.2">release notes</a>
and the <a href="/maintenance/updating/0-7-to-0-8/">0.7 → 0.8 upgrade guide</a> for details.
---

Expand Down
31 changes: 30 additions & 1 deletion src/content/docs/maintenance/Updating/0-7-to-0-8.mdoc
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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. |

Expand Down Expand Up @@ -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:
Expand All @@ -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" %}
Expand Down
15 changes: 15 additions & 0 deletions src/content/docs/maintenance/changelog.mdoc
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down
Loading