text edits from client