diff --git a/CHANGELOG.md b/CHANGELOG.md index b87e8fa..1f58e9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ 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`). +## [1.3.1] — 2026-07-17 + +### Fixed +- **Dashboard panel titles were pushed to the centre of their headers** — the drag grip added in 1.3.0 was injected as a flex child of each panel header, and with `justify-content: space-between` that turned every header into three items, centering the title (Connection, Repair Operations, etc.) instead of left-aligning it. The grip is now absolutely positioned in a small reserved gutter, out of the flex flow, so headers lay out exactly as before 1.3.0 with the grip appearing on hover. + ## [1.3.0] — 2026-07-16 ### Added diff --git a/README.md b/README.md index 7cdac66..5b1fba6 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.3.0 + krippler52/starr:1.3.1 ``` **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.3.0` | exact version — recommended pin for production | +| `1.3.1` | 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 d46fc5b..e39a4f3 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.3.0 – job started for {cfg['app'].upper()}", "sys") + emit("SYS", f"Starr DB Repair v1.3.1 – 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 f42fcac..8d2c224 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -132,10 +132,15 @@ .dash-card { position: relative; } /* Grip handle injected into each card header by JS. Hidden until you hover the card (or while a drag is in progress), Fresharr-style. */ +/* The grip is absolutely positioned in a small reserved gutter so it is OUT of + the header's flex flow — otherwise it becomes a third flex item and + `justify-content: space-between` shoves each panel title to the centre. */ +.dash-card > .panel-head, .dash-card > .terminal-bar { position: relative; padding-left: 30px; } .drag-handle { - cursor: grab; user-select: none; flex-shrink: 0; + position: absolute; left: 9px; top: 50%; transform: translateY(-50%); + cursor: grab; user-select: none; font-size: 14px; line-height: 1; color: var(--muted); - opacity: 0; transition: opacity .15s; padding: 0 6px 0 0; margin-right: -2px; + opacity: 0; transition: opacity .15s; } .dash-card:hover .drag-handle, .dashboard.dnd-active .drag-handle { opacity: .5; } .drag-handle:hover { opacity: 1; color: var(--app); } @@ -438,7 +443,7 @@

STARR DB REPAIR

STARR DB REPAIR

-

Database Diagnostic & Recovery — v1.3.0

+

Database Diagnostic & Recovery — v1.3.1

@@ -1633,7 +1638,7 @@

STARR DB REPAIR

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