e6708af1f2
Deleting a session in the desktop app fired instantly on click — the CLI path (hermes sessions delete) asks y/N by default, so one misclick (Archive and Delete sit right next to each other) permanently destroyed a conversation with no dialog and no undo (#61470). Route every delete entry point (sidebar rows, tab menus, the chat header, context menus — all share useSessionActions) through a shared DeleteSessionDialog built on ConfirmDialog. ConfirmDialog gains an onOpenAutoFocus prop so dialogs with no input keep focus off the close button (a11y). Tests: menu delete now asks; cancel keeps the session; Enter confirms; Escape cancels; delete item disabled without onDelete; the same guard applies via SessionContextMenu.