Skip to content

fix(ui): scroll lock, mobile modal animation, and dashboard card entrance#268

Merged
av1155 merged 1 commit intomainfrom
fix/scroll-lock-modal-animation-dashboard
Mar 21, 2026
Merged

fix(ui): scroll lock, mobile modal animation, and dashboard card entrance#268
av1155 merged 1 commit intomainfrom
fix/scroll-lock-modal-animation-dashboard

Conversation

@av1155
Copy link
Owner

@av1155 av1155 commented Mar 21, 2026

Closes #267

What changed

Three UI fixes in the settings modal and dashboard.

Scroll lock after modal navigation: The htmx:afterSwap handler in the settings page controller now resets document.body.style.overflow when #app-content is swapped. Previously, navigating to /settings/help via the modal's help link left the body overflow locked because the settings page controller's listener never handled app-content swaps.

Mobile modal compact-then-expand: showModal() is now deferred until the HTMX form response lands in #add-instance-modal-content. A pendingModalShow flag is set on click and consumed in htmx:afterSwap, so the dialog animates in fully populated. Error and send-error handlers reset the flag on network failure. Previously, showModal() was called immediately on click, so the modal opened near-empty and then grew as the form loaded.

Dashboard card entrance: Per-card opacity: 0 animations are replaced by a single container-level animation on #instance-grid that fires only on initial hydration. The new instance-grid-enter keyframe matches shell-content-enter exactly: opacity: 0.65 → 1, translateY(4px) → 0, 180ms with station easing. Subsequent 15s poll swaps skip the animation entirely.

Checklist

  • All quality gates pass
  • No new dependencies
  • Template-only changes; no schema, route, or config changes
  • N/A Tests: no behaviour changes to Python logic

- Clear body overflow when HTMX navigates away from settings via
  app-content swap, preventing the page from staying scroll-locked
  after clicking the modal's help link (#267)
- Defer showModal() until form content is loaded so the modal
  animates in fully populated on mobile, not compact-then-expanding
- Replace per-card opacity-0 flash animation on dashboard with a
  single container-level entrance matching shell-content-enter
  parameters (opacity 0.65->1, 4px translate, 180ms)
@av1155 av1155 merged commit 4b0e9a5 into main Mar 21, 2026
15 checks passed
@av1155 av1155 deleted the fix/scroll-lock-modal-animation-dashboard branch March 21, 2026 15:54
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Mar 21, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [av1155/houndarr](https://github.com/av1155/houndarr) | minor | `v1.5.0` → `v1.6.0` |
| [ghcr.io/av1155/houndarr](https://github.com/av1155/houndarr) | minor | `v1.5.0` → `v1.6.0` |

---

### Release Notes

<details>
<summary>av1155/houndarr (av1155/houndarr)</summary>

### [`v1.6.0`](https://github.com/av1155/houndarr/releases/tag/v1.6.0)

[Compare Source](av1155/houndarr@v1.5.0...v1.6.0)

##### Added

- Opt-in upgrade search pass that periodically re-searches library items which already have a file and meet the quality cutoff, giving each `*arr` instance a chance to find better releases; each instance has independent batch size, cooldown, and hourly cap controls ([#&#8203;266](av1155/houndarr#266)).

##### Changed

- A 3-second pause is now inserted between consecutive real searches within the same cycle to spread downstream indexer fan-out; the delay applies only to dispatched searches, not to skipped or errored items ([#&#8203;272](av1155/houndarr#272)).

##### Fixed

- Navigating to the settings help page via the "What do these settings mean?" link inside the instance modal no longer leaves the page scroll-locked until refresh ([#&#8203;268](av1155/houndarr#268)).
- Instance modal on mobile no longer briefly appears compact before expanding; the dialog now animates in fully populated ([#&#8203;268](av1155/houndarr#268)).
- Dashboard instance cards now enter with a smooth container-level fade that matches the shell animation instead of a per-card flash ([#&#8203;268](av1155/houndarr#268)).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4962
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: scroll lock, mobile modal animation, and dashboard card entrance

1 participant