9ed1833207
Investigating P15 (a stable-reference cursor dropped on an unrelated commit) found the premise was false: Ink does NOT re-assert the cursor on every commit. Ink's useCursor uses a no-deps useInsertionEffect that re-runs only when the cursor COMPONENT re-renders. React re-renders a whole subtree on an ancestor's commit, so Ink re-asserts when the cursor is in that subtree — but when an unrelated SIBLING owns the changing state, the cursor component does not re-render and Ink drops the cursor too. vue (watch on positionRef) already matches Ink in that sibling case and for the recommended reactive usage; the two differ only in the narrow edge of a set-once cursor plus an ancestor-driven commit (Vue's fine-grained reactivity vs React's render cascade). A global per-commit re-assert would diverge from Ink in the opposite (sibling) direction. So this is an unavoidable Vue ≠ React consequence: document it and keep the reactivity-tied behavior rather than "fix" it. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>