revert(extension): drop post-3.1.2 frame-targeting band-aids

Restores extension/ to the state directly after webNavigation was removed
(4d78970). The six follow-up commits layered heuristics on an unverified
premise (frame-ID sweeps, multi-phase probes, retry loops) without fixing
the underlying resolver. They are removed so the real fix can be built on
a known state.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Timo
2026-08-17 23:53:10 +02:00
parent 804c36c694
commit 04694d4439
23 changed files with 245 additions and 744 deletions
+5 -13
View File
@@ -28,7 +28,6 @@
large: Object.freeze({ width: 440, height: 640 })
});
const storageKey = `chatOverlayLayout:${location.origin}`;
const openStateKey = `chatOverlayOpen:${location.origin}`;
const systemTheme = window.matchMedia('(prefers-color-scheme: light)');
let context = null;
let opened = false;
@@ -58,7 +57,6 @@
let chatSize = 'standard';
let chatStartMode = 'bubble';
let chatReactionDisplay = 'chat';
let lastUserOpenState = null;
let themeMode = 'system';
let themePalette = 'eucalyptus';
let pageDockTarget = null;
@@ -578,12 +576,8 @@
if (persistPreference) setLocalStorage({ chatSize });
}
function setOpened(next, persistPreference = true) {
function setOpened(next) {
opened = !!next && !!context?.enabled;
if (persistPreference) {
lastUserOpenState = opened;
setLocalStorage({ [openStateKey]: opened });
}
panel.classList.toggle('open', opened);
launcher.style.display = opened ? 'none' : '';
if (opened) {
@@ -596,7 +590,6 @@
function applyContext(next) {
const previousRoomId = context?.roomId;
const previousEnabled = context?.enabled === true;
context = next || null;
const supported = !!context?.supported;
const optedIn = !!context?.enabled;
@@ -611,10 +604,10 @@
launcher.setAttribute('aria-disabled', String(!context?.enabled));
if (!optedIn) startStateApplied = false;
if (!context?.enabled) {
setOpened(false, false);
} else if (preferencesLoaded && (!startStateApplied || !previousEnabled)) {
setOpened(false);
} else if (preferencesLoaded && !startStateApplied) {
startStateApplied = true;
setOpened(lastUserOpenState ?? (chatStartMode === 'open'), false);
setOpened(chatStartMode === 'open');
}
applyStrings();
applyLayout();
@@ -974,7 +967,7 @@
systemTheme.addEventListener('change', handleSystemTheme);
chrome.storage.onChanged.addListener(handleStorage);
chrome.runtime.onMessage.addListener(handleRuntime);
chrome.storage.local.get([storageKey, openStateKey, 'themeMode', 'themePalette', 'chatPosition', 'chatSize', 'chatStartMode', 'chatReactionDisplay'], data => {
chrome.storage.local.get([storageKey, 'themeMode', 'themePalette', 'chatPosition', 'chatSize', 'chatStartMode', 'chatReactionDisplay'], data => {
if (destroyed) return;
const storedLayout = data[storageKey];
if (storedLayout && typeof storedLayout === 'object') {
@@ -985,7 +978,6 @@
chatPosition = normalizePosition(data.chatPosition);
chatSize = normalizeSize(data.chatSize);
chatStartMode = data.chatStartMode === 'open' ? 'open' : 'bubble';
lastUserOpenState = typeof data[openStateKey] === 'boolean' ? data[openStateKey] : null;
chatReactionDisplay = data.chatReactionDisplay === 'video' ? 'video' : 'chat';
layout.mode = chatPosition;
if (layout.mode === 'detached') layout.detachedInitialized = true;