The unsaved-changes confirmations still go through window.confirm: the native-menu command router (file:new, file:newGrid, app:reload in App.tsx) and the in-app MenuBar''s New Map / New Grid handlers. Unlike window.prompt (#14), confirm does work under Electron, but it renders as a bare Chromium dialog that matches neither the native dialogs nor the in-app modal family.
- Desktop: route through a main-process
dialog.showMessageBox IPC (same pattern as the unsaved-close guard).
- Browser: use the existing
ConfirmModal.
- Same treatment for any future confirm needs; after this,
window.confirm/window.prompt should not appear in the codebase outside the browser-fallback in selectTool.
The unsaved-changes confirmations still go through
window.confirm: the native-menu command router (file:new,file:newGrid,app:reloadin App.tsx) and the in-app MenuBar''s New Map / New Grid handlers. Unlikewindow.prompt(#14),confirmdoes work under Electron, but it renders as a bare Chromium dialog that matches neither the native dialogs nor the in-app modal family.dialog.showMessageBoxIPC (same pattern as the unsaved-close guard).ConfirmModal.window.confirm/window.promptshould not appear in the codebase outside the browser-fallback in selectTool.