# linux QA Video Report

- Generated at: 2026-04-02T04:02:01.339Z
- Model: `gemini-3-flash-preview`
- Target: https://github.com/Comfy-Org/ComfyUI_frontend/pull/10336
- Before video: `./qa-artifacts/qa-report-Linux-23882962824/qa-before-session.mp4` (3.1 MB)
- After video: `./qa-artifacts/qa-report-Linux-23882962824/qa-session.mp4` (3.2 MB)
- Mode: **Comparative (before/after)**

## AI Review
## Summary
The PR fixes a regression where workflow tabs were lost after a browser restart because tab pointers were stored only in `sessionStorage`. The fix implements a dual-write approach to both `sessionStorage` (for tab isolation) and `localStorage` (for persistence across restarts).

The **BEFORE** video confirms the issue: after a simulated restart, only the most recently active tab is restored, and previous tabs are lost.
The **AFTER** video proves the fix: after the same restart simulation, all previously open workflow tabs are correctly restored.

## Behavior Changes
| Behavior | Before (main) | After (PR) | Verdict |
| :--- | :--- | :--- | :--- |
| **Workflow Tab Persistence** | Only the last active workflow is restored after browser restart; other open tabs are lost. | All open workflow tabs from the previous session are correctly restored. | `Fixed` |
| **Session Isolation** | Relied solely on `sessionStorage`. | Uses `sessionStorage` with a `localStorage` fallback for restarts. | `Improved` |

## Timeline Comparison
| Time | Type | Severity | Before (main) | After (PR) |
| :--- | :--- | :--- | :--- | :--- |
| `0:12` | State | `None` | Two tabs are open: "Unsaved Workflow" and "Unsaved Workflow (2)". | Two tabs are open: "Unsaved Workflow" and "Unsaved Workflow (2)". |
| `0:14` | Behavior | `None` | Page reloads (simulating restart). | Page reloads (simulating restart). |
| `0:17` | State | `Fixed` | **Only one tab** ("Unsaved Workflow (2)") is visible. The previous tab was lost. | **Both tabs** are restored and visible in the top bar. |

## Confirmed Issues
No issues confirmed. The PR successfully restores the intended behavior.

## Overall Risk
**Low.** The change introduces a fallback mechanism to `localStorage` which was the standard behavior in previous versions (V1). It includes validation logic (`isValidPointer`) to ensure that stale or malformed data in `localStorage` doesn't crash the application. The automated tests cover the restart scenario explicitly.

## Verdict
{"verdict": "REPRODUCED", "risk": "low", "confidence": "high"}
