Handle the Ctrl+D binding.
Delete-confirm screens and the auth/thread selectors keep their own Ctrl+D behavior. Otherwise, when an editable prompt (the chat input or an inline free-text field) is focused, Ctrl+D deletes a non-empty selection or the character right of the cursor. Only at the end of the prompt with no active selection does it exit the app.