Skip to content

Release v1.1.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 14:08
· 51 commits to main since this release

Release v1.1.0

Ops CLI (enable/disable/status/hash-password), soft bypass, IP exclusions,
JSON 503, calm + idea page templates, and panel UX improvements.

See docs/CHANGELOG.md and docs/UPGRADING.md.

Changelog

Added

  • Dev preview route /_maintenance_preview (on when kernel.debug by default) to render the configured public maintenance page like Symfony /_error/503.
  • Console commands nowo:maintenance-mode:enable, disable, status (exit 2 when effectively on; --until on enable), and hash-password.
  • Soft QA bypass: security.bypass_token via query parameter and optional HttpOnly cookie.
  • IP / CIDR exclusions (exclusions.ips) via IpUtils (set framework.trusted_proxies behind proxies).
  • PHP attribute #[ExcludeFromMaintenance] and route default _maintenance_exclude.
  • Domain events: MaintenanceEnabledEvent, MaintenanceDisabledEvent, MaintenanceUpdatedEvent.
  • Twig helpers nowo_maintenance_is_enabled() and nowo_maintenance_state().
  • Panel: clear-schedule action, flash messages, manual vs effectively-on status, logout only when password is required.
  • JSON 503 when the client prefers application/json; dynamic Retry-After from scheduledDisableAt; Cache-Control: no-store.
  • Six calm framework examples (Bootstrap 5.3, Foundation 6.9, Tailwind CSS 4) plus six “idea” patterns (short, compassionate, playful, brand, countdown, updates) in en / es / it / fr / pt / de / nl; demo gallery at /examples.
  • Demo exclusion smoke endpoints + /examples/bypass guide; docs clarify that the public 503 page must not link to panel login and that security.password_protection toggles the login section.

Changed

  • Default 503 page and default_message use friendlier, low-anxiety wording (maintenance.page.* keys).
  • Listener registered as kernel.event_listener so subscriber_priority is honoured (default 31, after the router; was 32 in 1.0.0).
  • MaintenanceManager::schedule() supports clearMissing; added clearSchedule() and isEffectivelyEnabled().

Compatibility

  • Unchanged: PHP >=8.2, <8.6; Symfony ^7.0 || ^8.0 (CI minors 7.4, 8.0, 8.1).

Full Changelog: v1.0.0...v1.1.0