Skip to content

Content-script / port recovery after long Draft.js hangs without full Chrome restart #140

Description

@Trace824

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:
    1. Trigger prolonged Draft.js hang (selector type without fast-path, or repeated failed inserts).
    2. 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.jschrome.runtime.connect({ name: 'content-script' }), port disconnect handling (~L546–553).
  • extension/background.jsport_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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions