(release) Prepare 1.0.0 release metadata
Add the initial 1.0.0 changelog, bump the package/application version, and expose the release version through `pobsync --version`. Cover the version output in the console entrypoint tests.
This commit is contained in:
29
CHANGELOG.md
Normal file
29
CHANGELOG.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Changelog
|
||||
|
||||
## 1.0.0 - 2026-05-21
|
||||
|
||||
Initial stable release of the Django-first pobsync control panel.
|
||||
|
||||
### Added
|
||||
|
||||
- Django control panel for hosts, global settings, schedules, SSH credentials, snapshots, runs, self-checks, and logs.
|
||||
- Native systemd installer and updater for production backup servers.
|
||||
- SQLite by default, with optional MariaDB support.
|
||||
- Scheduler and worker services for queued manual backups and scheduled backups.
|
||||
- Manual backup, dry-run, cancellation, verbose rsync logging, and run detail views.
|
||||
- Snapshot discovery for existing backup directories and SQL-backed snapshot records.
|
||||
- SQL retention planning and apply flow with base snapshot protection and incomplete snapshot visibility.
|
||||
- Dashboard and host pages with backup health, latest run/snapshot, next run, and storage/stat summaries.
|
||||
- Restore guidance on snapshot detail pages.
|
||||
|
||||
### Changed
|
||||
|
||||
- Django and the database are now the source of truth for configuration.
|
||||
- Docker Compose is documented as development and disposable test tooling rather than the primary production path.
|
||||
- The `pobsync` console entrypoint is now a maintainer layer around Django management commands.
|
||||
|
||||
### Removed
|
||||
|
||||
- Legacy YAML config import/export workflow.
|
||||
- Public short aliases for configuration commands.
|
||||
- Obsolete global config storage fields.
|
||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "pobsync"
|
||||
version = "0.1.0"
|
||||
version = "1.0.0"
|
||||
description = "Pull-based rsync backup tool with hardlinked snapshots"
|
||||
requires-python = ">=3.11"
|
||||
dependencies = [
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
__all__ = ["__version__"]
|
||||
__version__ = "0.1.0"
|
||||
|
||||
__version__ = "1.0.0"
|
||||
|
||||
@@ -6,6 +6,8 @@ from typing import Sequence
|
||||
|
||||
from django.core.management import execute_from_command_line
|
||||
|
||||
from pobsync import __version__
|
||||
|
||||
|
||||
COMMAND_ALIASES = {
|
||||
"backup": "run_pobsync_backup",
|
||||
@@ -34,6 +36,9 @@ Configuration is managed from the Django control panel. Use
|
||||
|
||||
def main(argv: Sequence[str] | None = None) -> int:
|
||||
args = list(sys.argv[1:] if argv is None else argv)
|
||||
if args and args[0] in {"--version", "version"}:
|
||||
print(f"pobsync {__version__}")
|
||||
return 0
|
||||
if not args or args[0] in {"-h", "--help", "help"}:
|
||||
print(_usage())
|
||||
return 0
|
||||
|
||||
@@ -9,6 +9,14 @@ from pobsync.cli import main
|
||||
|
||||
|
||||
class ConsoleEntrypointTests(SimpleTestCase):
|
||||
def test_version_prints_package_version(self) -> None:
|
||||
stdout = StringIO()
|
||||
with patch("sys.stdout", stdout):
|
||||
exit_code = main(["--version"])
|
||||
|
||||
self.assertEqual(exit_code, 0)
|
||||
self.assertEqual(stdout.getvalue().strip(), "pobsync 1.0.0")
|
||||
|
||||
def test_maps_backup_alias_to_django_command(self) -> None:
|
||||
with patch("pobsync.cli.execute_from_command_line") as execute:
|
||||
exit_code = main(["backup", "web-01", "--dry-run"])
|
||||
|
||||
Reference in New Issue
Block a user