Summary
After Draft.js compose wedges (long hangs), navigate / read_page can time out (~30s) with content-script port disconnect / reinject loops. Operators should not need a full Chrome restart to restore messaging.
Repro
- Context: Tab stuck after heavy compose / selector timeouts on x.com.
- Steps:
- Trigger prolonged Draft.js hang (selector type without fast-path, or repeated failed inserts).
- Call
navigate or read_page.
- Observed: ~30s timeouts; port disconnect; reinject attempts; sometimes only full Chrome restart restores health.
Code pointers (verified against /workspace/FSB)
extension/content/lifecycle.js — chrome.runtime.connect({ name: 'content-script' }), port disconnect handling (~L546–553).
extension/background.js — port_disconnected (~L5335); ensureContentScriptInjected / script_reinjection recovery (~L5559–5569, ~L16888).
extension/content/messaging.js — tool timeout / Unknown tool paths.
Proposed fix
Harden recovery: on port disconnect after compose stress, single-flight reinject + bounded retry for navigate/read_page without requiring browser restart. Ensure hung draft_fast_path / readiness waits cannot leave the port permanently wedged (timeouts cancel outstanding work).
Acceptance / regression
- After induced hang, navigate/read succeed within one reinject cycle.
- No restart required for recovery in the common case.
Owner
extension
Priority: P1 · Owner: extension
Summary
After Draft.js compose wedges (long hangs),
navigate/read_pagecan time out (~30s) with content-script port disconnect / reinject loops. Operators should not need a full Chrome restart to restore messaging.Repro
navigateorread_page.Code pointers (verified against /workspace/FSB)
extension/content/lifecycle.js—chrome.runtime.connect({ name: 'content-script' }), port disconnect handling (~L546–553).extension/background.js—port_disconnected(~L5335);ensureContentScriptInjected/script_reinjectionrecovery (~L5559–5569, ~L16888).extension/content/messaging.js— tool timeout / Unknown tool paths.Proposed fix
Harden recovery: on port disconnect after compose stress, single-flight reinject + bounded retry for
navigate/read_pagewithout requiring browser restart. Ensure hung draft_fast_path / readiness waits cannot leave the port permanently wedged (timeouts cancel outstanding work).Acceptance / regression
Owner
extension
Priority: P1 · Owner: extension