Every pane registered its own global onPtyData/onPtyExit listener, so each output chunk woke N listeners and N-1 discarded it after an id compare. With many terminals under heavy output that fan-out is pure overhead. Now one IPC listener dispatches through a Map keyed by sessionId: one lookup per chunk, only the owning pane runs.