Merge branch 'develop' into main — release 1.5.0a
All checks were successful
Build and Push Docker Image / build (push) Successful in 1m1s
Create Release / release (push) Successful in 25s
CI / Security audit (push) Successful in 1m38s
CI / Tests & coverage (push) Successful in 1m35s

This commit is contained in:
2026-05-19 18:52:02 +01:00
3 changed files with 13 additions and 2 deletions

View File

@@ -6,6 +6,14 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
---
## [1.5.0a] - 2026-05-19
### Fixed
- **Status panel close button** — the `×` button now correctly hides the status panel and stops the auto-refresh timer. The button was previously using an inline `onclick` attribute which was silently blocked by the server's CSP nonce policy. Replaced with `addEventListener` wired after `innerHTML` is set, consistent with all other button handlers in the application.
---
## [1.5.0] - 2026-05-19
### Changed

View File

@@ -1,6 +1,6 @@
{
"name": "sofarr",
"version": "1.5.0",
"version": "1.5.0a",
"description": "A personal media download dashboard that shows your downloads 'so far' while you relax on the sofa waiting for your *arr services to finish",
"main": "server/index.js",
"scripts": {

View File

@@ -812,7 +812,7 @@ function renderStatusPanel(data, panel) {
let html = `
<div class="status-header">
<h3>Server Status</h3>
<button class="status-close" onclick="closeStatusPanel()">&times;</button>
<button class="status-close" id="status-close-btn">&times;</button>
</div>
<div class="status-grid">
<div class="status-card">
@@ -886,6 +886,9 @@ function renderStatusPanel(data, panel) {
html += `</tbody></table></div></div>`;
panel.innerHTML = html;
// Wire close button — addEventListener avoids CSP inline handler restrictions
const closeBtn = panel.querySelector('#status-close-btn');
if (closeBtn) closeBtn.addEventListener('click', closeStatusPanel);
// Set bar widths via JS DOM assignment — immune to CSP style-src restrictions
panel.querySelectorAll('.timing-bar[data-w]').forEach(el => {
el.style.width = el.dataset.w + '%';