diff --git a/CHANGELOG.md b/CHANGELOG.md index cf20ba5..89a252f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## 1.1.0 - 2026-05-21 + +UI-focused release for the Django control panel. + +### Added + +- Dedicated list pages for runs, snapshots, schedules, purged snapshots, and changelog navigation. +- Dashboard priority panels for required action, next scheduled work, recent activity, and storage pressure. +- Dashboard host cards with clearer backup activity, snapshot health, next run, and retention status. +- Lightweight live refresh for active run detail pages, including status, timing, controls, and rsync log output. +- Lightweight live refresh for dashboard priority and host status sections. +- Current-page navigation states for primary and system navigation. +- Responsive dashboard behavior for narrower screens. + +### Changed + +- Reworked the primary navigation around day-to-day operator workflows and moved admin/system links out of the main path. +- Simplified legacy-facing labels and removed source-of-truth wording that no longer applies to the Django-first model. +- Improved run and snapshot detail pages with clearer links between backup runs, snapshots, logs, and review actions. +- Improved dashboard spacing and card layouts to reduce cramped or overlapping text. +- Documented the Django-template-first partial refresh pattern for future UI work. + ## 1.0.0 - 2026-05-21 Initial stable release of the Django-first pobsync control panel. diff --git a/README.md b/README.md index 2a3416c..1f9a399 100644 --- a/README.md +++ b/README.md @@ -156,7 +156,7 @@ The UI includes: ## Restoring Data -pobsync 1.0 treats restores as an explicit manual operation. The control panel shows restore guidance on each snapshot +pobsync treats restores as an explicit manual operation. The control panel shows restore guidance on each snapshot detail page, but it does not run restore commands for you yet. That is deliberate: restores should be inspected and tested before data is copied back into a live system. diff --git a/pyproject.toml b/pyproject.toml index a7b13da..d6ad68d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "pobsync" -version = "1.0.0" +version = "1.1.0" description = "Pull-based rsync backup tool with hardlinked snapshots" requires-python = ">=3.11" dependencies = [ diff --git a/src/pobsync/__init__.py b/src/pobsync/__init__.py index db084d0..52bb99a 100644 --- a/src/pobsync/__init__.py +++ b/src/pobsync/__init__.py @@ -1,2 +1,2 @@ __all__ = ["__version__"] -__version__ = "1.0.0" +__version__ = "1.1.0" diff --git a/src/pobsync_backend/tests/test_console_entrypoint.py b/src/pobsync_backend/tests/test_console_entrypoint.py index b5ce58a..57ffd08 100644 --- a/src/pobsync_backend/tests/test_console_entrypoint.py +++ b/src/pobsync_backend/tests/test_console_entrypoint.py @@ -15,7 +15,7 @@ class ConsoleEntrypointTests(SimpleTestCase): exit_code = main(["--version"]) self.assertEqual(exit_code, 0) - self.assertEqual(stdout.getvalue().strip(), "pobsync 1.0.0") + self.assertEqual(stdout.getvalue().strip(), "pobsync 1.1.0") def test_maps_backup_alias_to_django_command(self) -> None: with patch("pobsync.cli.execute_from_command_line") as execute: