Merge pull request '(release) Prepare 1.2.0' (#74) from release-1.2 into master
Reviewed-on: #74
This commit was merged in pull request #74.
This commit is contained in:
29
CHANGELOG.md
29
CHANGELOG.md
@@ -1,5 +1,34 @@
|
||||
# Changelog
|
||||
|
||||
## 1.2.0 - 2026-05-28
|
||||
|
||||
Operations-focused release for more reliable production backups and maintenance.
|
||||
|
||||
### Added
|
||||
|
||||
- Staff-only updater page for checking configured Gitea releases, inspecting the installed git checkout, fetching tags, pulling the current branch, and running the native systemd updater.
|
||||
- Read-only control panel access level for authenticated non-staff users, with status pages visible and credentials, logs, configs, retention, and mutating actions kept staff-only.
|
||||
- Run completion notifications for email and webhooks, including recorded delivery history per run and target.
|
||||
- Dedicated hosts page with host cards, enabled/disabled filtering, and quick host/schedule/retention state controls.
|
||||
- Per-host rsync bandwidth limit overrides with inherit, unlimited, and explicit limit semantics.
|
||||
- Backup data totals by snapshot kind on dashboard and host detail pages, including unique/non-hardlinked data totals.
|
||||
|
||||
### Changed
|
||||
|
||||
- Real backup runs now default to verbose rsync progress output so the live run view behaves consistently with dry-runs.
|
||||
- Run progress panels are shared between dry-runs and real runs for more consistent status, timing, cancellation, and log display.
|
||||
- Incomplete snapshot cleanup now requires operator review before deletion.
|
||||
- Incomplete snapshot size reporting now prefers on-disk measurement when metadata is stale or missing.
|
||||
- Installer and environment examples now include optional updater configuration.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Remote preflight shell commands are now quoted correctly, including roots such as `/`.
|
||||
- Worker reconciliation now detects real rsync failures and stale/running process state more reliably.
|
||||
- Retention pruning and incomplete cleanup can delete snapshots containing restrictive directory modes preserved by rsync archive mode.
|
||||
- Snapshot data summaries no longer count incomplete metadata/log files as backup data when measuring from disk.
|
||||
- Filesystem SSH credential tests use writable test state without changing production defaults.
|
||||
|
||||
## 1.1.0 - 2026-05-21
|
||||
|
||||
UI-focused release for the Django control panel.
|
||||
|
||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "pobsync"
|
||||
version = "1.1.0"
|
||||
version = "1.2.0"
|
||||
description = "Pull-based rsync backup tool with hardlinked snapshots"
|
||||
requires-python = ">=3.11"
|
||||
dependencies = [
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
__all__ = ["__version__"]
|
||||
__version__ = "1.1.0"
|
||||
__version__ = "1.2.0"
|
||||
|
||||
@@ -5,6 +5,7 @@ from unittest.mock import patch
|
||||
|
||||
from django.test import SimpleTestCase
|
||||
|
||||
from pobsync import __version__
|
||||
from pobsync.cli import main
|
||||
|
||||
|
||||
@@ -15,7 +16,7 @@ class ConsoleEntrypointTests(SimpleTestCase):
|
||||
exit_code = main(["--version"])
|
||||
|
||||
self.assertEqual(exit_code, 0)
|
||||
self.assertEqual(stdout.getvalue().strip(), "pobsync 1.1.0")
|
||||
self.assertEqual(stdout.getvalue().strip(), f"pobsync {__version__}")
|
||||
|
||||
def test_maps_backup_alias_to_django_command(self) -> None:
|
||||
with patch("pobsync.cli.execute_from_command_line") as execute:
|
||||
|
||||
Reference in New Issue
Block a user