fix: Glow-Bug + focusWorkingTab-Option

Glow-Fix (3 Ursachen behoben):
- notifyGlow: schickt jetzt an targetTabId statt an den aktiven Tab des
  Nutzers. Vorher: Agent arbeitet in Tab B, Glow geht an Tab A (den der
  Nutzer gerade sieht) — Tab B leuchtet nie.
- executeForBroker: notifyGlow(true) beim ersten Tool-Call, nicht erst
  bei 'round'. Vorher: targetTabId war bei 'round' noch null, currentTabId()
  gab undefined zurück, Glow wurde nie gesendet.
- notifyTargetTab: Glow auf neuen Tab übertragen wenn Agent Tab wechselt.

focusWorkingTab (neue Config-Option):
- ExtensionConfig.focusWorkingTab: boolean (Default false)
- notifyTargetTab: bringt Tab in Vordergrund wenn focusWorkingTab=true
- Checkbox 'Tab live mitverfolgen' in Einstellungen > Anzeige & Sicherheit
- false = Agent arbeitet im Hintergrund (bisheriges Verhalten)
- true = Tab wird bei jedem Wechsel sichtbar
This commit is contained in:
2026-08-10 10:02:37 +02:00
parent 160e2c884d
commit 8d03f36b0e
4 changed files with 34 additions and 2 deletions
+6
View File
@@ -88,6 +88,7 @@ const paceMsInput = need<HTMLInputElement>('paceMs');
const showCursorInput = need<HTMLInputElement>('showCursor');
const pageOverlaySelect = need<HTMLSelectElement>('pageOverlay');
const blockMailSendInput = need<HTMLInputElement>('blockMailSend');
const focusWorkingTabInput = need<HTMLInputElement>('focusWorkingTab');
const providerSelect = need<HTMLSelectElement>('provider');
const baseUrlInput = need<HTMLInputElement>('baseUrl');
const apiKeyInput = need<HTMLInputElement>('apiKey');
@@ -379,6 +380,7 @@ function applyConfigToFields(cfg: ExtensionConfig): void {
setFieldValue(paceMsInput, String(cfg.paceMs));
if (document.activeElement !== showCursorInput) showCursorInput.checked = cfg.showCursor;
if (document.activeElement !== blockMailSendInput) blockMailSendInput.checked = cfg.blockMailSend;
if (document.activeElement !== focusWorkingTabInput) focusWorkingTabInput.checked = cfg.focusWorkingTab ?? false;
setFieldValue(providerSelect, cfg.provider);
setFieldValue(baseUrlInput, cfg.baseUrl);
@@ -685,6 +687,10 @@ function wireSettings(): void {
patchConfigValue({ showCursor: showCursorInput.checked });
});
focusWorkingTabInput.addEventListener('change', () => {
patchConfigValue({ focusWorkingTab: focusWorkingTabInput.checked });
});
blockMailSendInput.addEventListener('change', () => {
patchConfigValue({ blockMailSend: blockMailSendInput.checked });
if (!blockMailSendInput.checked) {
+4
View File
@@ -1099,6 +1099,10 @@
<input type="checkbox" id="showCursor">
<label for="showCursor">Mauszeiger sichtbar einblenden</label>
</div>
<div class="row check">
<input type="checkbox" id="focusWorkingTab">
<label for="focusWorkingTab" title="Tab bei jedem Wechsel in den Vordergrund bringen — gut zum Live-Zuschauen. Aus = Agent arbeitet im Hintergrund.">Tab live mitverfolgen (Vordergrund)</label>
</div>
<div class="row check">
<input type="checkbox" id="blockMailSend">
<label for="blockMailSend" title="Klicks auf Senden-Schaltflächen in Mail-Oberflächen werden abgelehnt. Der Agent legt nur Entwürfe an.">Senden in Mails blockieren (nur Entwürfe)</label>