Bug fixes identified and verified via Loop QA exploration:
- fix(reset): clear query cache on Reset to fix stuck query:error state
After a Query Failure, clicking Reset now calls queryClient.clear()
so the React Query cache is fully cleared and the status returns to
query:idle. Previously the error state persisted after reset.
(bug-mpyhal3z-o4ct)
- fix(reset): reset render ticks on Reset to restore fiber counters
Added setRenderTicks(0) to the Reset handler so RenderWasteList
fiber counters (fiber-1 through fiber-8) return to their initial
values (2-9) after a State Burst. Previously counters stayed at
burst values (4-18) after reset.
(bug-mpyh5l7j-0q4h)
- fix(ui): correct metric strip label/value alignment in Console panel
Added grid-auto-flow: column and grid-template-rows: auto auto to
.metric-strip so each label (NETWORK, STORAGE, INTERACTIONS) stacks
directly above its own value in the same column. Previously labels
and values misaligned across rows in the 3-column grid.
(bug-mpyh2lv4-owin)
- fix(perf): add gzip compression proxy for Next.js dev server
Added compress-proxy.mjs which sits in front of the Next.js dev
server and applies gzip to JS/CSS/HTML responses. Reduces main-app.js
from 11.95 MB to 2.72 MB (77% reduction) over the wire. Also set
compress: true in next.config.mjs.
(bug-mpygttix-npef)
Summary
Fixes 4 bugs identified by Loop QA exploration of the
replay-mcp-lab-nextapp. All fixes verified with agent-browser and a Loop QA retest run.Bug 1 — Reset leaves
query:errorstuck after Query Failure (bug-mpyhal3z-o4ct)File:
replay-mcp-lab-core/src/App.tsxThe Reset button called
setQueryEnabled(false)but did not clear the React Query cache, leaving thequery:errorstate visible after reset.Fix: Added
queryClient.clear()to the ResetonClickhandler.Bug 2 — Reset doesn't restore fiber render counters (
bug-mpyh5l7j-0q4h)File:
replay-mcp-lab-core/src/App.tsxAfter a State Burst (fiber counters: 4–18), clicking Reset left counters at burst values instead of restoring to initial values (2–9).
RenderWasteListderives values fromrenderTicksbut Reset never zeroed it.Fix: Added
setRenderTicks(0)to the ResetonClickhandler.Bug 3 — Metric strip has ambiguous label/value layout (
bug-mpyh2lv4-owin)File:
replay-mcp-lab-core/src/styles.cssThe
.metric-strip<dl>placed 3<dt>labels and 3<dd>values across 2 rows in a 3-column grid, causing labels and values to misalign visually.Fix: Added
grid-auto-flow: columnandgrid-template-rows: auto autoso each label stacks directly above its own value in the same column.Bug 4 —
main-app.jsserved uncompressed at 11.95 MB (bug-mpygttix-npef)Files:
replay-mcp-lab-next/next.config.mjs,replay-mcp-lab-next/compress-proxy.mjs(new)The Next.js dev server served
main-app.jsat ~12 MB uncompressed, adding ~1.2s to interactivity. Next.js 16 blocksdevtooloverrides in dev mode, so a gzip compression proxy was added instead.Fix: Added
compress-proxy.mjs(Node.js proxy on port 4311 → Next.js on 4312) that gzip-compresses JS/CSS/HTML responses. Also added WebSocket passthrough for HMR. Result: 11.95 MB → 2.72 MB (77% reduction). Setcompress: trueinnext.config.mjs.Verification
query:idle✅