feat: Research-Modus führt automatisch 3 Durchläufe durch

Research-Lagen (Tiefenrecherche) führen jetzt bei einem Klick auf
Aktualisieren automatisch 3 aufeinanderfolgende Refresh-Zyklen durch:
1. Breite Erfassung (initiale 4-Phasen-Recherche)
2. Vertiefung (andere Quellen, inkrementelle Analyse)
3. Konsolidierung (letzte Lücken, Fakten-Upgrade auf established)

Die Progress-Bar zeigt den aktuellen Durchlauf an (Durchlauf 1/3 etc.).
Cancel funktioniert zwischen und innerhalb der Durchläufe.
Adhoc-Lagen (Live-Monitoring) sind nicht betroffen.
Dieser Commit ist enthalten in:
Claude Dev
2026-03-27 18:38:06 +01:00
Ursprung a5ef9bbfbf
Commit 506965e3e2
4 geänderte Dateien mit 120 neuen und 7 gelöschten Zeilen

Datei anzeigen

@@ -1995,6 +1995,14 @@ a:hover {
font-size: 12px;
}
.progress-pass-info {
font-size: 11px;
color: var(--accent-primary);
margin-left: 8px;
font-weight: 600;
letter-spacing: 0.3px;
}
.progress-cancel-btn {
position: absolute;
right: var(--sp-xl);

Datei anzeigen

@@ -198,6 +198,7 @@
</div>
<div class="progress-label-container">
<span id="progress-label" class="progress-label">Warte auf Start...</span>
<span id="progress-pass-info" class="progress-pass-info" style="display:none;"></span>
<span id="progress-timer" class="progress-timer"></span>
</div>
<button id="progress-cancel-btn" class="progress-cancel-btn" onclick="App.cancelRefresh()">Abbrechen</button>

Datei anzeigen

@@ -257,6 +257,17 @@ const UI = {
labelText = extra.detail;
}
// Multi-Pass: Durchlauf-Info anzeigen
const passEl = document.getElementById('progress-pass-info');
if (passEl) {
if (extra.research_pass && extra.research_total_passes) {
passEl.textContent = `Durchlauf ${extra.research_pass}/${extra.research_total_passes}`;
passEl.style.display = '';
} else {
passEl.style.display = 'none';
}
}
// Timer starten beim Übergang von queued zu aktivem Status
if (step.active > 0 && !this._progressStartTime) {
if (extra.started_at) {
@@ -353,9 +364,11 @@ const UI = {
const label = document.getElementById('progress-label');
if (label) label.textContent = `Abgeschlossen: ${summaryText}`;
// Cancel-Button ausblenden
// Cancel-Button und Pass-Info ausblenden
const cancelBtn = document.getElementById('progress-cancel-btn');
if (cancelBtn) cancelBtn.style.display = 'none';
const passElDone = document.getElementById('progress-pass-info');
if (passElDone) passElDone.style.display = 'none';
bar.setAttribute('aria-valuenow', '100');
bar.setAttribute('aria-valuetext', 'Abgeschlossen');