Title: Second tab does not mirror active scan state and in-progress indicators
Type: bug
Severity: high
Area: multi-tab realtime UI / scan runtime / Socket.IO state sync
Description:
When two tabs are open and a scan is started in one tab, the second tab does not consistently show the same in-progress state. Live text/log updates may appear, but the secondary tab can miss key scan-state UI such as the active button pulse and the same ongoing scan context shown in the primary tab.
Expected Behavior:
Any already-open tab should reflect the same active scan state in real time, including:
- active scan button pulse
- in-progress status/timer context
- matching scan feedback indicating a scan is currently running
Actual Behavior:
The second tab can lag or drift from the initiating tab, especially around visual state that indicates a scan is still active.
Steps to Reproduce:
- Open tab 1 and tab 2 against the same local UI.
- Start a scan from tab 1.
- Observe tab 2 while the scan is running.
Evidence:
- Recent user reports show live feedback appearing in tab 2 without the same active scan indication.
- Relevant code paths:
/Users/techmore/projects/NmapUI/nmapui/jobs.py
/Users/techmore/projects/NmapUI/nmapui/app_bindings.py
/Users/techmore/projects/NmapUI/nmapui/handlers/connections.py
/Users/techmore/projects/NmapUI/static/js/scan_runtime.js
/Users/techmore/projects/NmapUI/static/js/report_generation_ui.js
Proposed Fix:
Make active scan state a single shared runtime source for all open tabs and ensure the UI derives pulsing/in-progress indicators from that shared state without tab-local drift.
Implementation Notes:
- Verify existing-tab fanout, not just late-join replay
- Verify
job_status and feedback-driven UI state cannot overwrite each other incorrectly
- Add browser-level regression coverage that asserts both tabs show the same active scan indicator while the scan is running
Related Issues:
Title: Second tab does not mirror active scan state and in-progress indicators
Type: bug
Severity: high
Area: multi-tab realtime UI / scan runtime / Socket.IO state sync
Description:
When two tabs are open and a scan is started in one tab, the second tab does not consistently show the same in-progress state. Live text/log updates may appear, but the secondary tab can miss key scan-state UI such as the active button pulse and the same ongoing scan context shown in the primary tab.
Expected Behavior:
Any already-open tab should reflect the same active scan state in real time, including:
Actual Behavior:
The second tab can lag or drift from the initiating tab, especially around visual state that indicates a scan is still active.
Steps to Reproduce:
Evidence:
/Users/techmore/projects/NmapUI/nmapui/jobs.py/Users/techmore/projects/NmapUI/nmapui/app_bindings.py/Users/techmore/projects/NmapUI/nmapui/handlers/connections.py/Users/techmore/projects/NmapUI/static/js/scan_runtime.js/Users/techmore/projects/NmapUI/static/js/report_generation_ui.jsProposed Fix:
Make active scan state a single shared runtime source for all open tabs and ensure the UI derives pulsing/in-progress indicators from that shared state without tab-local drift.
Implementation Notes:
job_statusand feedback-driven UI state cannot overwrite each other incorrectlyRelated Issues: