GPT Delagger v1.6.0
Fixes the intermittent "clicks do nothing" bug on chatgpt.com. If you have ever had a ChatGPT page look completely normal but ignore every click, this is why.
Fixed
Every version up to 1.5.1 physically detached old turns and tool embeds from the DOM, holding them in memory behind comment placeholders. ChatGPT is React, and React keeps references to the exact nodes it rendered. Take one out from under it and React's next removeChild or insertBefore against that node throws NotFoundError inside its commit phase — which React cannot recover from, so it tears the tree down. The page keeps its painted pixels and loses every event handler.
It was intermittent because it only fired when React reached back into a trimmed region: regenerating, editing an older message, switching branches, or streaming near a hidden embed.
Nothing is detached any more. Old turns and tool embeds stay mounted and are hidden with display:none — the browser skips them for layout and paint just as effectively, and React does not care.
| up to 1.5.1 | 1.6.0 | |
|---|---|---|
React removeChild on an old turn |
NotFoundError |
no error |
React insertBefore before an old turn |
NotFoundError |
no error |
| elements taken out of rendering | ~80% | ~83% |
| nodes detached from the DOM | 111 | 0 |
Faster, too
Keeping turns mounted removed a speed-up detaching had given by accident — old turns used to leave the document, so later scans were smaller. Turn discovery now reads its own tag back instead of re-deriving every turn each pass, and an already-hidden turn is never re-scanned. Net result on the 141-turn fixture, DOM queries during load:
| 1.4.0 | 1.5.0 | 1.5.1 | 1.6.0 |
|---|---|---|---|
| 1688 | 2486 | 1818 | 1028 |
Observer time while streaming stays at or below 1.4.0.
Changed
- Trimming and blocking hide rather than detach, so the placeholder machinery is gone: no comment markers, no off-DOM maps, no pruning, no restore-into-position. Turning a setting off drops an attribute. That is ~70 fewer lines and a class of ordering bugs removed.
- Keep newest embed reworked to track elements instead of placeholders. No behaviour change.
stats()counts hidden turns and embeds rather than detached ones.
Honest limits
Hidden turns still occupy memory, and React still reconciles them — that cost belongs to the page, with or without this extension, and the README no longer claims otherwise. Measurements come from the offline fixture: the element counts are exact, but they describe what the browser stops rendering, not an FPS or latency guarantee.
Install
Download gpt-delagger-v1.6.0.zip, unzip, then chrome://extensions → Developer mode → Load unpacked → pick the folder. Verify with gpt-delagger-v1.6.0.zip.sha256. Reload open ChatGPT tabs afterwards.
Full changelog: v1.5.1...v1.6.0