From c48456a14a061d133a404cbc4bfa1fdc04ff50ed Mon Sep 17 00:00:00 2001 From: Brian Krabach Date: Wed, 1 Apr 2026 17:08:14 -0700 Subject: [PATCH] fix: include .settings-remote-key in remote instance debounced input selector --- muxplex/frontend/app.js | 2 +- muxplex/frontend/tests/test_app.mjs | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/muxplex/frontend/app.js b/muxplex/frontend/app.js index 64172db..eec9b7b 100644 --- a/muxplex/frontend/app.js +++ b/muxplex/frontend/app.js @@ -2386,7 +2386,7 @@ function bindStaticEventListeners() { // Delegated input save with debounce for remote instance URL/name fields var _remoteDebounceTimer; remoteInstancesContainer.addEventListener('input', function(e) { - var input = e.target.closest && e.target.closest('.settings-remote-url, .settings-remote-name'); + var input = e.target.closest && e.target.closest('.settings-remote-url, .settings-remote-name, .settings-remote-key'); if (!input) return; clearTimeout(_remoteDebounceTimer); _remoteDebounceTimer = setTimeout(function() { diff --git a/muxplex/frontend/tests/test_app.mjs b/muxplex/frontend/tests/test_app.mjs index d5ca39e..cb7261f 100644 --- a/muxplex/frontend/tests/test_app.mjs +++ b/muxplex/frontend/tests/test_app.mjs @@ -4125,3 +4125,13 @@ test('buildSidebarHTML trim happens BEFORE slice in source (structural order che 'trailing blank trim (.pop()) must appear BEFORE .slice() in buildSidebarHTML — trim the full snapshot first, then slice the last 20 lines', ); }); + +// --- federation key: remote instance input listener includes .settings-remote-key --- + +test('remote instance debounced input listener selector includes .settings-remote-key', () => { + const source = fs.readFileSync(new URL('../app.js', import.meta.url), 'utf8'); + assert.ok( + source.includes(".settings-remote-url, .settings-remote-name, .settings-remote-key"), + 'debounced input listener on #setting-remote-instances must include .settings-remote-key so key-only edits trigger _saveRemoteInstances()', + ); +});