fix: defer comment sheet window cleanup to avoid dismiss crash
Hiding the dedicated comment window (or calling endEditing on it)
synchronously inside SwiftUI's .sheet onDismiss crashes when the
TextField is still first responder — resigning a @FocusState-bound
field mid-sheet-teardown re-enters SwiftUI while the sheet view tree
is still unwinding. Defer both endEditing and isHidden to the next
main-runloop tick so the current dismiss callback returns first.
Also drops the redundant dismiss() in CommentSheetContent's Done
button. onDismiss() already clears the sheet target, so dismiss()
was a double-dismiss racing with the same teardown.
Adds signposts and pendingDismissSource tracking around the second
window path to make any future regression easier to bisect.