diff --git a/CHANGELOG.md b/CHANGELOG.md index 4105ac9..53462ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes are documented here. Releases follow [SemVer](https://semver.org). Image tags published to Docker Hub (`krippler52/starr`) and GHCR (`ghcr.io/krippler/starr`). -## [Unreleased] +## [1.2.10] — 2026-07-16 ### Fixed - **Docker client socket/fd leak** — every Docker operation (`docker stop`/`start` around a repair, and each auto-discovery scan) opened a docker-py client but never closed it, leaking a `requests` session + a socket to `/var/run/docker.sock` each time. Discovery now runs on every scheduled-repair preflight, so on a long-lived container these accumulated until the process could hit its open-file limit. All clients are now closed after use (repair shutdown/restart, `discover()`, `_self_appdata_root()`, and the container-lookup failure path). diff --git a/README.md b/README.md index 656186e..69d3abe 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ docker run -d \ -v /mnt/user/appdata:/appdata:rw \ -v /mnt/user/appdata/starr/backups:/backups \ -v /var/run/docker.sock:/var/run/docker.sock \ - krippler52/starr:1.2.9 + krippler52/starr:1.2.10 ``` **That's it for the host side.** Open the dashboard, paste each app's API key, click **Save Credentials**, and Starr remembers it for scheduled runs and reloads. URLs / DB paths / container names are auto-discovered from Docker. @@ -72,7 +72,7 @@ docker run -d \ | Tag | Use | |---|---| -| `1.2.9` | exact version — recommended pin for production | +| `1.2.10` | exact version — recommended pin for production | | `1.2` / `1` | floating minor / major | | `latest` | newest **released version** (updated on every version tag) | | `edge` | tip of `main` — newest merged code, for testing ahead of a release | diff --git a/app/server.py b/app/server.py index 145e000..941811f 100644 --- a/app/server.py +++ b/app/server.py @@ -879,7 +879,7 @@ def _repair_worker(cfg: dict) -> None: _job.history = [] _job.result = None - emit("SYS", f"Starr DB Repair v1.2.9 – job started for {cfg['app'].upper()}", "sys") + emit("SYS", f"Starr DB Repair v1.2.10 – job started for {cfg['app'].upper()}", "sys") emit("SYS", f"Dry run: {cfg.get('dry_run', False)}", "sys") db_path = None diff --git a/app/templates/index.html b/app/templates/index.html index a774304..c7b20dd 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -411,7 +411,7 @@

STARR DB REPAIR

STARR DB REPAIR

-

Database Diagnostic & Recovery — v1.2.9

+

Database Diagnostic & Recovery — v1.2.10

@@ -1428,7 +1428,7 @@

STARR DB REPAIR

// Header text document.getElementById('appTitle').textContent = cfg.name + ' DB REPAIR'; - document.getElementById('appSub').textContent = cfg.sub + ' — v1.2.9'; + document.getElementById('appSub').textContent = cfg.sub + ' — v1.2.10'; document.getElementById('logoSvg').innerHTML = cfg.icon; document.getElementById('termTitle').textContent = cfg.name + ' REPAIR LOG';