xmarcoxadami/voicecommander-pro
[TITOLO] Genera un’app Windows “VoiceCommander” (Electron) che esegue comandi vocali/testuali sul PC. [RUOLO] Sei un generatore di CODICE. Fornisci un progetto completo, avviabile e compilabile su Windows 10/11. [OBIETTIVO] L’app deve: 1) Ascoltare comandi vocali in italiano e accettare input testuale. 2) Interpretare i comandi e produrre internamente un’azione strutturata (JSON). Non mostrarla in UI. 3) Eseguire l’azione sul sistema nativamente tramite Electron. Nessun bridge HTTP. [COMANDI SUPPORTATI] - “apri you tube” → apri https://www.youtube.com - “cerca <testo> su google” → apri https://www.google.com/search?q=<testo URL-encoded> - “apri/crea un file di testo e scrivi <testo>” → crea/append su Desktop un .txt con timestamp e scrivi <testo> - “riavvia il pc” → riavvia solo dopo conferma esplicita “sì” [PIATTAFORMA] - Windows 10/11 x64. - App desktop Electron con finestra propria. Nessun servizio esterno. [REQUISITI TECNICI] - Node.js + Electron. - Sicurezza: contextIsolation:true, nodeIntegration:false; API esposte solo via preload.js con contextBridge. - IPC: canale vc:execute (renderer → main) per eseguire le azioni. - STT in ordine di uso: A) Offline: Vosk (npm vosk) con modello IT; gestisci download e path in README. B) Fallback: Web Speech API (Chromium) se disponibile. C) Fallback finale: input tastiera. - TTS opzionale: pacchetto say per conferme brevi. - FS: fs, path. - Sistema: child_process.spawn o execFile per shutdown /r /t 0. - Browser: shell.openExternal per URL esterni. - Vietato: eval, new Function, stringhe in setTimeout/setInterval. Niente inline script non necessari. [ARCHITETTURA] - package.json — script start e build-win. - main.js — crea BrowserWindow, gestisce ipcMain.handle('vc:execute', ...). - preload.js — espone window.native.execute(action). - index.html — UI moderna; NESSUN codice o JSON visibile; include solo markup/stili. - renderer.js — logica UI: STT (Vosk→WebSpeech→testo), parsing comandi (regex), invio a window.native.execute, gestione stati e notifiche. - assets/icon.ico — icona app. - README.md — setup, run, build, STT, permessi riavvio, troubleshooting. [PARSE COMANDI — REGEX] - (?i)^apri\\s+(?:you\\s*tube|youtube)\\s*$ → open_url("https://www.youtube.com") - (?i)^cerca\\s+(.+?)\\s+su\\s+google\\s*$ → web_search($1) - (?i)^(?:apri|crea)\\s+un\\s+file\\s+di\\s+testo\\s+e\\s+scrivi\\s+(.+)$ → write_file($1) - (?i)^riavvia(?:\\s+il)?\\s*(?:pc|computer)?\\s*$ → system_reboot(confirm=true) [AZIONI NATIVE] - open_url → shell.openExternal(url) - web_search → shell.openExternal('https://www.google.com/search?q=' + encodeURIComponent(query)) - write_file → default %USERPROFILE%\\Desktop\\note_YYYYMMDD_HHMM.txt; se esiste append, altrimenti crea cartella e file. - system_reboot → spawn('shutdown', ['/r','/t','0'], { shell:true, detached:true }) solo dopo conferma “sì”. [UI/UX] Interfaccia Windows moderna, tema scuro, una sola finestra. Nessun codice visibile, nessun JSON a schermo. STRUTTURA - Header 48 px: titolo “VoiceCommander”, icona, stato: verde Ready, blu Ascolto, giallo Conferma, rosso Errore. - Corpo a due pannelli: Sinistra “Comando”, Destra “Attività”. - Footer 36 px: latenza microfono, dispositivo audio, scorciatoie. PANNELLO COMANDO (SINISTRA) - Card “Microfono” con pulsante circolare 64 px: Stati: Off (contorno), On (riempito con alone), Mute (grigio), Errore (rosso). Anello di livello audio con animazione discreta. - Controlli: Selettore dispositivo input. Interruttore “Hotword”. Selettore lingua (it-IT predefinito). - Campo input testuale senza placeholder. - Pulsanti: “Analizza” (primario). “Esegui su PC” (accentato, abilitato solo quando l’azione è valida). PANNELLO ATTIVITÀ (DESTRA) - Card “Trascrizione” in tempo reale, evidenziata a fine turno. - Card “Azione interpretata” (visuale, no testo tecnico): Icone: globo (Apri URL), lente (Ricerca), documento (Scrivi file), power (Riavvio). Parametri mostrati come tag grafici con testo troncato e tooltip. Banner “Conferma richiesta” con “Sì / No” per azioni distruttive. - Card “Cronologia”: Timeline verticale con orario, icona, esito (Successo/Annullato/Errore). Azioni ri-eseguibili dalla voce di timeline. STATI E MICROINTERAZIONI - Ascolto: alone sul microfono, onde sottili sui bordi card; stato header blu. - Analisi: spinner sottile “Comprendo…”. - Conferma: modale centrata “Confermi l’operazione?” con due pulsanti. - Successo/Errore: toast discreti in basso a destra (2 s). PALETTE E TIPOGRAFIA - Sfondo: #0B0F14 → #0E1420. - Pannelli: #121821. - Accento: #3AA0FF. Successo: #21C27A. Avviso: #FFBF3A. Errore: #FF5C5C. - Testo: primario #DBE7FF, secondario #8EA6CC. - Font: Segoe UI/System UI; titoli 600. COMPONENTI CHIAVE - Pulsante microfono prominente e isolato. - Tag parametri con icona mini, tooltip al passaggio. - Modale conferma riavvio con icona power. ACCESSIBILITÀ - Contrasto WCAG AA ≥ 4.5:1. - Navigazione tastiera completa e focus ring evidente. - Etichette ARIA per microfono, stato, conferme. RESPONSIVE - ≥1200 px: due colonne. - 900–1199 px: 55/45. - ≤899 px: schede impilate, header sticky. SCORCIATOIE - Ctrl+M: microfono on/off. - Invio: Analizza. - Ctrl+Invio: Esegui su PC. - Esc: stop ascolto o chiudi modale. ONBOARDING - Primo avvio: tre tooltip guidati su Microfono, Analizza, Esegui. Pulsante “Salta”. MESSAGGISTICA - Microcopy breve: Ready, Ascolto…, Analizzo…, Azione pronta, Conferma richiesta, Operazione riuscita, Operazione annullata, Errore. SICUREZZA VISIVA - Azioni distruttive con bordo giallo prima della conferma, rosso su errore. - Riavvio sempre con conferma esplicita. STILE - Card r=16–20 px, ombre morbide, icone 20–24 px (56 px nelle testate). - Animazioni 150–250 ms, curve ease-out. - Solo contenuto grafico e testuale. Nessun placeholder e nessuna sezione “Suggerimenti”. [SICUREZZA] - contextIsolation:true, nodeIntegration:false. - IPC whitelisted (vc:execute) e validazione input. - Conferma esplicita per riavvio. - Niente comandi shell arbitrari o elevati oltre a quelli previsti. [DELIVERABLES OBBLIGATORI — OUTPUT] Rispondi SOLO con: 1) Project tree: Project tree: . ├─ package.json ├─ main.js ├─ preload.js ├─ index.html ├─ renderer.js ├─ assets/ │ └─ icon.ico └─ README.md arduino Copia codice 2) File completi in blocchi separati, formato: -- filename: <nome> -- <contenuto completo> markdown Copia codice 3) README.md con: - requisiti (Node LTS) - npm install, npm start - build Windows (electron-packager o electron-builder) con comando pronto - istruzioni Vosk (modello IT, path, microfono Windows) - fallback Web Speech e input testuale - test rapidi dei 4 comandi - note su permessi per riavvio [TEST RAPIDI] - “apri you tube” - “cerca droni fpv su google” - “apri un file di testo e scrivi comprare latte e pane” - “riavvia il pc” → rispondi “sì” [QUALITÀ] - Codice pulito, commenti essenziali. - Gestione errori STT e file I/O. - Nessun uso di eval o stringhe in timer. - UI conforme alla sezione [UI/UX].
initial commit
