From 68fa80b6941fd692c2a35ebefcfea5c70532c2a5 Mon Sep 17 00:00:00 2001 From: Brian Krabach Date: Wed, 15 Apr 2026 13:59:03 -0700 Subject: [PATCH] feat: update frontend to use device_id-based session keys and API URLs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - buildTileHTML: prefer session.deviceId over legacy integer remoteId for data-remote-id - buildSidebarHTML: prefer session.deviceId over legacy integer remoteId for data-remote-id - getVisibleSessions: check s.sessionKey (device_id:name) in hidden_sessions list for backward compatibility with both old (plain name) and new (device_id:name) formats - openSession: rename _remoteId → _deviceId to reflect value is now a device_id string - createNewSession: rename internal remoteId variable → deviceId for clarity All federation API URLs continue to work via opts.remoteId (now contains deviceId value). Backward compatibility maintained: fallback to remoteId when deviceId not present (old server). Tests: updated test_open_session_fires_bell_clear_for_remote to check _deviceId guard; added 5 new tests covering all structural changes. --- muxplex/frontend/app.js | 35 +++++----- muxplex/tests/test_frontend_js.py | 108 +++++++++++++++++++++++++++++- 2 files changed, 125 insertions(+), 18 deletions(-) diff --git a/muxplex/frontend/app.js b/muxplex/frontend/app.js index 6d10a00..0435be8 100644 --- a/muxplex/frontend/app.js +++ b/muxplex/frontend/app.js @@ -444,7 +444,9 @@ function buildTileHTML(session, index, mobile) { } const lastLines = allLines.slice(_lineCount).join('\n'); - const remoteIdAttr = session.remoteId != null ? ` data-remote-id="${escapeHtml(session.remoteId)}"` : ''; + // Prefer deviceId (device_id string from backend) over legacy integer remoteId + var _effRemoteId = session.deviceId != null ? session.deviceId : session.remoteId; + const remoteIdAttr = _effRemoteId != null ? ` data-remote-id="${escapeHtml(_effRemoteId)}"` : ''; return ( `
` + `
` + @@ -498,8 +500,10 @@ function buildSidebarHTML(session, currentSession) { } const lastLines = allLines.slice(-20).join('\n'); + // Prefer deviceId (device_id string from backend) over legacy integer remoteId + var _sidebarEffRemoteId = session.deviceId != null ? session.deviceId : (session.remoteId != null ? session.remoteId : ''); return ( - `
` + + `
` + `