Skip to content

Commit 659ea81

Browse files
committed
feat(missingPm): improve manual install confirmation text & ensure confirm modal stacks above pm popup
1 parent 9dc335e commit 659ea81

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

src/renderer/i18n/translations.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
'missingPm.popup.autoCta': 'Installer',
1818
'missingPm.popup.manualTitle': 'Installation personnalisée',
1919
'missingPm.popup.manualDesc': "Exécutez le script AM-INSTALLER dans votre terminal pour choisir entre AM ou AppMan et leurs options. Consultez la documentation pour plus d'informations.",
20+
'missingPm.manual.confirmTitle': "Commande copiée",
21+
'missingPm.manual.confirmDesc': "Commande copiée — collez-la dans un terminal. Une fois l'installation terminée, relancez AM-GUI.",
22+
'missingPm.manual.ok': 'OK',
23+
'missingPm.manual.cancel': 'Annuler',
2024
'missingPm.popup.manualCta': 'Copier la commande',
2125
'missingPm.popup.docs': 'Voir la documentation',
2226
'missingPm.popup.statusIdle': 'Choisissez une option pour continuer.',
@@ -217,6 +221,10 @@
217221
'missingPm.auto.error': 'Auto-install failed: {msg}',
218222
'missingPm.auto.errorShort': 'Auto-install failed.',
219223
'missingPm.manual.copied': 'Command copied. Open a terminal and paste it.',
224+
'missingPm.manual.confirmTitle': 'Command copied',
225+
'missingPm.manual.confirmDesc': 'Command copied — paste it into a terminal. Once the installation is finished, restart AM-GUI.',
226+
'missingPm.manual.ok': 'OK',
227+
'missingPm.manual.cancel': 'Cancel',
220228
'missingPm.manual.copyError': 'Unable to copy the command.',
221229
'toast.cancelRequested': 'Cancel requested…',
222230
'settings.gpuTitle': 'GPU acceleration',
@@ -402,6 +410,10 @@
402410
'missingPm.popup.manualTitle': 'Installazione personalizzata',
403411
'missingPm.popup.manualDesc': "Esegui lo script AM-INSTALLER nel terminale per scegliere tra AM o AppMan e le rispettive opzioni. Consulta la documentazione per maggiori informazioni.",
404412
'missingPm.popup.manualCta': 'Copia il comando',
413+
'missingPm.manual.confirmTitle': 'Comando copiato',
414+
'missingPm.manual.confirmDesc': "Comando copiato — incollalo in un terminale. Una volta terminata l'installazione, riavvia AM-GUI.",
415+
'missingPm.manual.ok': 'OK',
416+
'missingPm.manual.cancel': 'Annulla',
405417
'missingPm.popup.docs': 'Apri la documentazione',
406418
'missingPm.popup.statusIdle': 'Scegli un\'opzione per continuare.',
407419
'missingPm.auto.installing': 'Download e configurazione in corso…',

src/renderer/renderer.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1750,6 +1750,27 @@ async function handleManualInstallClick() {
17501750
await copyTextToClipboard(command);
17511751
showToast(t('missingPm.manual.copied'));
17521752
setPmPopupStatus('missingPm.manual.copied');
1753+
1754+
// Show a confirmation dialog instructing user what to do next
1755+
const confirmed = await openActionConfirm({
1756+
message: t('missingPm.manual.confirmDesc'),
1757+
okLabel: t('missingPm.manual.ok'),
1758+
intent: 'install'
1759+
});
1760+
if (confirmed) {
1761+
// close the missingPm popup and exit the app so user can follow instructions
1762+
hideMissingPmPopup();
1763+
if (window.electronAPI?.closeWindow) {
1764+
window.electronAPI.closeWindow();
1765+
}
1766+
} else {
1767+
// User cancelled: keep popup open (return to choices)
1768+
setPmPopupStatus('missingPm.popup.statusIdle');
1769+
setTimeout(() => {
1770+
const ctrl = ensureMissingPmPopup();
1771+
ctrl?.autoBtn?.focus?.();
1772+
}, 60);
1773+
}
17531774
} catch (err) {
17541775
console.error('Manual install copy error', err);
17551776
showToast(t('missingPm.manual.copyError'));

style.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,6 +1267,12 @@ body.pm-popup-open { overflow: hidden; }
12671267

12681268
/* Modale générique */
12691269
.modal { position:fixed; inset:0; display:flex; align-items:center; justify-content:center; background:rgba(0,0,0,.55); z-index:600; padding:40px 30px; backdrop-filter:blur(4px); }
1270+
1271+
/* Ensure action confirm modal is above missingPm popup layer */
1272+
#actionConfirmModal { z-index: 1601; }
1273+
1274+
/* Ensure action confirm modal shows above pm popup layer */
1275+
#actionConfirmModal { z-index: 1600; }
12701276
.modal[hidden] { display:none !important; }
12711277
.modal-dialog { background:var(--card); border:1px solid var(--border); border-radius:14px; width: clamp(420px, 70vw, 900px); max-height:80vh; display:flex; flex-direction:column; box-shadow:var(--shadow); }
12721278
.modal-header { display:flex; align-items:center; gap:12px; padding:12px 16px; border-bottom:1px solid var(--border); }

0 commit comments

Comments
 (0)