Skip to content

Release v1.19.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 10:06
· 54 commits to main since this release

Release v1.19.0: runtime state never archived/restored, abandoned restores expire, disabled panel 404, translated progress, Symfony >=7.4.

Changelog

Changed

  • Requirements: Symfony floor raised to ^7.4 || ^8.0 for every symfony/* dependency (symfony/rate-limiter already needed ^7.3, and the CI "7.0" cell actually installed the latest 7.x). CI matrix drops the 7.0 cell; README / INSTALLATION aligned.
  • docs/CONFIGURATION.md documents every configuration key (including setup profile step / tab keys).

Added

  • restore.stale_after_seconds (default null = 2 × process_timeout, 0 = never): an active restore whose progress was not updated for that long is treated as abandoned. RestoreOrchestrator::isRestoreStale().
  • RestoreOrchestrator::MESSAGE_* translation ids (restore.message.*) translated in en/es/it/fr/pt/de/nl.

Fixed

  • Backups no longer nest previous archives or runtime state when backup.storage_dir, restore.progress_file, storage.history_file or setup.progress_file point inside the project but outside var/site-backup/: those paths (resolved relative to the project dir) are excluded from archives, and restores never overwrite them (BackupArchiver $runtimeStatePaths, RuntimeStatePaths).
  • A worker that died mid-restore left active: true and the site answered 503 forever; stale progress is now ignored by the site gate, progress.json reports active: false, and a new restore may start (logging the abandoned one).
  • panel.enabled: false no longer leaves the panel routes registered against the removed controller (HTTP 500): routes.yaml imports the panel through PanelRouteLoader (type nowo_site_backup_panel), which registers no route when the panel is disabled (404).
  • Restore loading page reloads as soon as the restore is no longer active (completed, failed, cleared, abandoned), not only on completed.
  • Restore progress messages were English literals, so |trans did nothing and default_message was never shown: the orchestrator now writes restore.message.* translation ids; the loading page renders default_message as its lead text and the translated step below; panel progress.json returns the translated message.
  • Locale codes are preg_quoted when building the /{locale}/_setup exclusion regex and the setup route _locale requirement.

Full Changelog: v1.18.1...v1.19.0