flow-extension/popup.html
type-two 607b5ec2b5 fix(harvest): robust Download-row finder + two-step hover + Copy Log button + 300-line log
Reported symptom: harvest opens the More menu then moves on without ever hovering
Download. Cause: the size flyout's text can glue onto the Download row (textContent
"Download1K Original size2K Upscaled..."), so the old /^download\b/ match — which needs a
word boundary right after "download" — returned null and the whole size step was skipped.

Fix: findDownloadRow() matches "download" anywhere and takes the SHORTEST visible
candidate (the row itself, not a wrapper that swallowed the flyout). Stage-3 hover now
moves in two steps (approach from the left, then settle on centre) to fire a real
mouseenter that unfurls the submenu, and re-queries. Added per-stage logging (Download
row text+coords, chosen size option) so a copied log shows exactly where any future miss
happens. Popup gains a Copy button (whole activity log to clipboard) and log retention is
raised 100 -> 300 so a full harvest pass is capturable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 11:33:18 +10:00

94 lines
3.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flow Auto-Pilot</title>
<link rel="stylesheet" href="popup.css">
</head>
<body>
<div class="app-container">
<!-- Header -->
<header class="app-header">
<div class="logo-area">
<span class="logo-icon"></span>
<div class="logo-text">
<h1>Flow Auto-Pilot</h1>
<span class="subtext">Labs FX Integration</span>
</div>
</div>
<div class="status-indicator" id="global-status">
<span class="dot"></span>
<span class="status-label">Idle</span>
</div>
</header>
<!-- Main Control Panel -->
<main class="control-panel">
<!-- Connection Input -->
<div class="form-group">
<label for="server-url">Local Server URL</label>
<div class="input-with-button">
<input type="url" id="server-url" value="http://localhost:8017" placeholder="http://localhost:8017">
</div>
</div>
<!-- Action Buttons: Prompt Mode runs the queue; DL Mode grabs what's on screen -->
<div class="actions" style="display:flex;gap:8px">
<button id="toggle-btn" class="btn btn-primary start-state" style="flex:1">▶ Prompt Mode</button>
<button id="dl-btn" class="btn btn-primary start-state" style="flex:1">⬇ DL Mode</button>
</div>
<label class="form-group" style="display:flex;align-items:center;gap:8px;cursor:pointer">
<input type="checkbox" id="auto-start"> Auto-start when the Flow tab opens
</label>
<!-- Console / Activity Logs -->
<div class="console-section">
<div class="console-header">
<span>Activity Log</span>
<span><button id="copy-logs" class="btn-text">Copy</button> &nbsp; <button id="clear-logs" class="btn-text">Clear</button></span>
</div>
<div class="console-body" id="log-console">
<div class="log-entry system-log">[System] Extension loaded. Click Start to begin.</div>
</div>
</div>
<!-- Collapsible Settings -->
<details class="advanced-settings">
<summary>Advanced Selector Adjustments</summary>
<div class="settings-content">
<p class="settings-info">Customize targets if the page layout changes. Leave blank for auto-detection.</p>
<div class="form-group">
<label for="sel-prompt">Prompt Input Selector</label>
<input type="text" id="sel-prompt" placeholder="Auto-detect (textarea / editable div)">
</div>
<div class="form-group">
<label for="sel-generate">Submit Button Selector</label>
<input type="text" id="sel-generate" placeholder="Auto-detect (→ arrow / send)">
</div>
<div class="form-group">
<label for="sel-model">Results / Media Selector</label>
<input type="text" id="sel-model" placeholder="Auto-detect (media library container)">
</div>
<div class="form-group">
<label for="poll-interval">Polling Interval (ms)</label>
<input type="number" id="poll-interval" value="4000" min="1000" step="500">
</div>
</div>
</details>
</main>
<!-- Footer -->
<footer class="app-footer">
<span>Active Tab Automation</span>
<span class="version">v1.0.0</span>
</footer>
</div>
<script src="popup.js"></script>
</body>
</html>