{"version":"2.1.227","anchor":"terminal-renderer-state-moved-off-module-globals","canonical_anchor":"terminal-renderer-state-moved-off-module-globals","heading":"Terminal renderer state moved off module globals","tier":"internal","area":"Terminal Rendering","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.227\/e\/terminal-renderer-state-moved-off-module-globals","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.227","markdown":"### Terminal renderer state moved off module globals\n\nRenderer instances no longer share mutable state, so multiple renderers don't interfere.\n\n**What**\n\nLayout rectangles are now stored on each rendered node rather than in a shared module-level map, and the \"stdout has died\" latch moved onto the renderer instance. Renderer instances no longer share mutable state.\n\n**Details**\n\n- Node layout is used for hit-testing, click dispatch and scroll adjustment.\n- Instance fields `stdoutDead` and `tolerateDeadStdout` replace globals; neither name exists in v2.1.226.\n\n**Evidence**\n\n`if (e.tolerateDeadStdout && (kSd(a) === \"EIO\" || kSd(a) === \"EPIPE\")) {`\n\n- Area: Terminal Rendering\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 0\/5"}