87cc4de430
PR #106445's effect was inserted above `reconnectPty` / `startFreshPty` / `startFreshDashboardChat`. React Compiler's `react-hooks/immutability` rule then treats `ptyInputLineRef` and `mobileReplacementInputUntilRef` as effect-owned values and flags the six pre-existing assignments in those callbacks as errors ("This value cannot be modified"), which is what turned the `JS & TS checks` job red. Declaring the effect after the callbacks keeps the rule quiet; eslint on the file is back to main's 0 errors / 3 warnings. Adds one pure-function vitest on `normalizePtyMobileInput` proving the symptom: a stale tracked line ("hel") makes an in-window re-emission of "hello" come out as 3×DEL + "hello", which over a composer already holding "hello" leaves "hehello"; with the tracker reset the same input passes through untouched.