bd9955d529
Closing the rename field unmounts the input, and the unmount can still fire onBlur, which committed the draft the user had just asked to throw away with Escape. Enter also called commit() directly and then again from blur. Route both through blur with a cancelled flag so the commit runs exactly once and Escape never renames.