diff --git a/CHANGELOG.md b/CHANGELOG.md index add2789..8e953dd 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.6] — 2026-07-17 + +### Fixed +- **The rightmost dashboard column still couldn't be dragged** — cards in the right column of a two-column layout couldn't be moved to create a third column or into the first column (only after seeding a third column from the left did the middle column become movable). Root cause: native HTML5 drag-and-drop — adding the + rail on dragstart reflowed the columns and the browser's drag hit-testing broke dragging out of the rightmost column. Rearranging is now driven by **pointer events with a floating clone** and purely coordinate-based routing, so every column behaves identically. Verified by driving a real mouse in a headless browser (right-column → new third column, right-column → first column, and in-column reorder all work). + ## [1.3.5] — 2026-07-17 ### Fixed diff --git a/README.md b/README.md index ee4ecdd..ff4b172 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.5 + krippler52/starr:1.3.6 ``` **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.5` | exact version — recommended pin for production | +| `1.3.6` | 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 60dc6b1..73d436b 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.5 – job started for {cfg['app'].upper()}", "sys") + emit("SYS", f"Starr DB Repair v1.3.6 – 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 0ec823b..6873e7a 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -162,14 +162,20 @@ .dash-card > .panel-head, .dash-card > .terminal-bar { position: relative; padding-left: 30px; } .drag-handle { position: absolute; left: 9px; top: 50%; transform: translateY(-50%); - cursor: grab; user-select: none; + cursor: grab; user-select: none; touch-action: none; font-size: 14px; line-height: 1; color: var(--muted); 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); } .drag-handle:active { cursor: grabbing; } -.dash-card.is-dragging { opacity: .35; } +.dash-card.is-dragging { opacity: .3; } +/* The floating clone that follows the pointer during a drag (pointer-based DnD). */ +.drag-clone { + position: fixed; left: 0; top: 0; margin: 0; z-index: 9999; + pointer-events: none; opacity: .92; border-radius: var(--radius); + box-shadow: 0 14px 44px rgba(0,0,0,.55); +} .dash-col.drop-into { outline: 2px dashed var(--app); outline-offset: -2px; border-radius: var(--radius); } .dash-card.drop-before { box-shadow: 0 -3px 0 -1px var(--app); } .dash-card.drop-after { box-shadow: 0 3px 0 -1px var(--app); } @@ -467,7 +473,7 @@
Database Diagnostic & Recovery — v1.3.5
+Database Diagnostic & Recovery — v1.3.6