diff --git a/backend/extension-src/content-script.js b/backend/extension-src/content-script.js index f322596..bde89ed 100644 --- a/backend/extension-src/content-script.js +++ b/backend/extension-src/content-script.js @@ -358,6 +358,13 @@ function buildTabletBanner(bookingId) { } function processCheckinPageBanner() { + // bookings_view has its own `ui-tabs-nav` tablist too (Mandatory + // Information / Optional Booking Details / Newbook Drive) — without this + // guard this banner duplicated there alongside processCheckinBanner's + // augmented reminder banner (confirmed 2026-10-01 from a live screenshot). + // This one is purely for the dedicated bookings_checkin/ page. + if (!/^\/bookings_checkin\//.test(location.pathname)) return; + const tablist = document.querySelector('ul[role="tablist"].ui-tabs-nav'); if (!tablist || tablist.hasAttribute(PROCESSED_ATTR)) return; const bookingId = extractBookingIdFromLocation(); diff --git a/backend/extension-src/options/options.js b/backend/extension-src/options/options.js index 8aea603..5525aa3 100644 --- a/backend/extension-src/options/options.js +++ b/backend/extension-src/options/options.js @@ -40,8 +40,19 @@ async function refreshDeviceList(preselectId) { defaultDeviceSelect.innerHTML = devices.map(d => `` ).join(''); - if (preselectId) defaultDeviceSelect.value = preselectId; + if (preselectId && devices.some(d => d.device_id === preselectId)) { + defaultDeviceSelect.value = preselectId; + } defaultSection.style.display = ''; + // A