Skip to content

v2026.10.11.01 — 2026-10-11

  • docs(tls): correct the 9-consumer table for ADR-011's NameSet consolidation
  • feat(ssl): one reachability check with three states, wired into the renewal worker
  • fix(nginx): redirect vhost aliases use sitebuild's redirect-aware list
  • feat(ui): Object-Lock-Status, Produkttext und Purge-Fehlermeldungen für in 15 Sprachen
  • feat(api): echte Object-Lock-Erkennung für operator-eigene S3-Backup-Ziele
  • fix(backup): S3-Purge erkennt jetzt Object Lock und bloße Versionierung statt sie zu übersehen
  • fix(nginx): renderPanelNginx now rolls back on a failed test or reload
  • fix(delete): anchor agentGone's 502 check on the literal "HTTP 404:" marker
  • fix(delete): agentGone reads the agent's typed HTTP status, not error text
  • fix(domain): shadow www/alias rows no longer default to mail_enabled=true
  • docs(sitebuild): correct the hostOfURL vs parsePanelURL comment
  • fix(sitebuild): ClaimedLineages now reads a server's own panel_url too
  • fix(mail): a failed postmap -F no longer vanishes silently
  • fix(nginx): remove unconditional HTTP/3 Alt-Svc duplicate, add HSTS to panel vhost
  • fix(backup): local repo purge now deletes config last, detects orphans
  • fix(backup): a bare FTP reconnect no longer proves a failed listing meant empty
  • feat(ui): Zugangsdaten-Re-Entry-Dialog für Remote-Repository-Purge
  • feat(api): Remote-Repository-Purge — Betreiber-Globals vs. Kunden-Re-Entry
  • feat(agent): Repository-Purge für s3/ftp/sftp mit sicherer Löschreihenfolge
  • fix: use explicit php8.4-opcache instead of unresolvable generic name
  • fix: restore php8.4-imap after disputed measurement proved wrong
  • i18n: translate the ghost-site recreate label and error in all 15 languages
  • feat: render a second button for the ghost-site recreate action
  • feat: add an endpoint to recreate a ghost site on its server
  • fix: generate install_script.go's role packages from the shared list
  • refactor: read role_setup.go's package list from shared/rolepackages
  • feat: add shared rolepackages module as the single role-package source
  • feat: add an "empty completely" action to the operator's key store
  • feat: empty a deleted schedule's local backup repository through the panel
  • fix(i18n): the server-wide config warning uses the panel's em dash in every language
  • fix: make apache2/dovecot/pdns restarts conditional on real change
  • fix: confirm roles only on a real success, add the lock timeout this call site was missing
  • fix: drop redis-server from bootstrap, reconcile unretried ApplyRoles
  • fix(dashboard): a customer site whose diagnosis call fails is named, not dropped
  • chore: ignore Playwright's test-results/ run artifacts
  • fix(backup): encrypt restore_report at rest — it can now carry a password
  • feat(backup): a restore gives a deleted database, mailbox or FTP account its panel record back, with a new password shown in the report
  • fix(backup): server-wide schedules can no longer land on scope=config
  • fix(audit): name the actor even when a JWT carries no email claim
  • fix(a11y): 404 on an API GET during a scan is NOT TESTED, not a pass
  • fix(backup): a canceled run stops logging as ERROR, and a restore's file total can't be smaller than restored+skipped