From ba29cc48220a356cf59002c188adbd1c5462d0b1 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 7 Nov 2025 22:10:14 -0500 Subject: [PATCH] release(v1.8.9): fix(oidc, admin): first-save Client ID/Secret (closes #64) --- CHANGELOG.md | 10 ++++++++++ public/js/adminPanel.js | 14 +++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eaa0ca8..c4ee13b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## Changes 11/7/2025 (v1.8.9) + +release(v1.8.9): fix(oidc, admin): first-save Client ID/Secret (closes #64) + +- adminPanel.js: + - Masked inputs without a saved value now start with data-replace="1". + - handleSave() now sends oidc.clientId / oidc.clientSecret on first save (no longer requires clicking “Replace” first). + +--- + ## Changes 11/7/2025 (v1.8.8) release(v1.8.8): background ZIP jobs w/ tokenized download + in‑modal progress bar; robust finalize; janitor cleanup — closes #60 diff --git a/public/js/adminPanel.js b/public/js/adminPanel.js index d0a6d24..f8e564d 100644 --- a/public/js/adminPanel.js +++ b/public/js/adminPanel.js @@ -58,7 +58,7 @@ function wireHeaderTitleLive() { function renderMaskedInput({ id, label, hasValue, isSecret = false }) { const type = isSecret ? 'password' : 'text'; - const disabled = hasValue ? 'disabled data-replace="0" placeholder="•••••• (saved)"' : ''; + const disabled = hasValue ? 'disabled data-replace="0" placeholder="•••••• (saved)"' : 'data-replace="1"'; const replaceBtn = hasValue ? `` : ''; @@ -1070,11 +1070,15 @@ function handleSave() { const idEl = document.getElementById("oidcClientId"); const scEl = document.getElementById("oidcClientSecret"); - if (idEl?.dataset.replace === '1' && idEl.value.trim() !== '') { - payload.oidc.clientId = idEl.value.trim(); + const idVal = idEl?.value.trim() || ''; + const secVal = scEl?.value.trim() || ''; + const idFirstTime = idEl && !idEl.hasAttribute('data-replace'); // no saved value yet + const secFirstTime = scEl && !scEl.hasAttribute('data-replace'); // no saved value yet + if ((idEl?.dataset.replace === '1' || idFirstTime) && idVal !== '') { + payload.oidc.clientId = idVal; } - if (scEl?.dataset.replace === '1' && scEl.value.trim() !== '') { - payload.oidc.clientSecret = scEl.value.trim(); + if ((scEl?.dataset.replace === '1' || secFirstTime) && secVal !== '') { + payload.oidc.clientSecret = secVal; } const ooSecretEl = document.getElementById("ooJwtSecret");