Add WebDAV backup, statistics, progress and dashboard

- WebDAV uploader: concurrency, request and bandwidth limits, retry with
  backoff, offline catch-up, encrypted manifests, durability tracking
- Automatic unique remote directory claimed with a conditional PUT
- AES-256-GCM client-side encryption with keyed blob names
- /stats, /progress, /progress/stream and a /dashboard page
- Own ctypes inotify binding with a compact watch tree (263 MB -> 76 MB RSS)
- Directory-path ignore patterns and a forget command
- Indexed range queries instead of LIKE for path prefixes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
retoor
2026-10-08 20:24:04 +02:00
co-authored by Claude Opus 5.5
parent ddf09bea88
commit 7e05e3d26c
18 changed files with 1992 additions and 208 deletions
+6 -2
View File
@@ -11,11 +11,12 @@ requires-python = ">=3.12"
dependencies = [
"fastapi>=0.110",
"uvicorn>=0.29",
"asyncinotify>=4.0",
"httpx>=0.27",
"cryptography>=42",
]
[project.optional-dependencies]
dev = ["pytest>=8", "httpx>=0.27"]
dev = ["pytest>=8"]
[project.scripts]
versiond = "versiond.cli:main"
@@ -23,5 +24,8 @@ versiond = "versiond.cli:main"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
versiond = ["dashboard.html"]
[tool.pytest.ini_options]
testpaths = ["tests"]