# Changelog - Training Buddy v2.0

---

## Interfaccia Utente

### Schermata Principale

#### Nuove funzionalità
- **Modalità ripetute**: Possibilità di creare il proprio programma di allenamento personalizzato
- **Cronologia esercizi**: Log di tutti gli esercizi svolti
- **Campi tempo dinamici**: Quando la modalità ripetute è OFF, mostrati i campi "Tempo Esercizio" e "Tempo Pausa" direttamente nella schermata principale
- **Pulsante suoni ridisegnato**: Trasformato in button con stesso stile del pulsante "Cronologia"
- **Layout più compatto**: Ridotto spacing verticale per utilizzare meglio lo spazio
- **Aggiornamento voci**: Cambiati tutti i suoni di avviso
- **Tasto reset**: Ripristina tutte le funzionalità dell'app come appena installata

#### Modifiche terminologia
- "Modalità Programma" → **"Modalità Ripetute"**
- Card del programma: design unificato e interattivo

#### Card Programma Ripetute
**Con programma ripetute attivo:**
- Icona CheckCircle verde
- Background verde (#10B981) con opacità 20%
- Testo: "Programma Attivo" + nome del programma
- Icona matita a destra per indicare modificabilità
- Cliccabile: apre schermata gestione programmi

**Senza programma ripetute selezionato:**
- Icona Close (X) rossa
- Background rosso (#EF4444) con opacità 20%
- Testo: "Nessun Programma" + "Seleziona o crea programma"
- Cliccabile: apre schermata gestione programmi

---

### Schermata Allenamento (Esercizio e Pausa)

#### Nuove funzionalità
- **Indicatore progresso**: Aggiunto indicatore "Ripetuta X di Y" sopra al pulsante STOP quando la modalità ripetute è attiva
- Visibile sia durante l'esercizio che durante la pausa
- Mostra il blocco corrente e il totale dei blocchi del programma

---

### Schermata Impostazioni

#### Nuove funzionalità
- **Dialog di conferma reset**: Prima di resettare, viene mostrato un AlertDialog con:
  - Elenco dettagliato di cosa verrà cancellato
  - Avviso che l'azione è irreversibile
  - Pulsanti "Annulla" e "Conferma"

#### Elementi rimossi
- Campi "Tempo Esercizio" e "Tempo Pausa" (spostati nella schermata principale)

---

## Funzionalità Backend

### Sistema di Gestione Programmi

#### Nuove funzionalità
- **Programmi di default**: Due programmi pre-caricati al primo avvio:
  1. **"Ripetute Corsa Indoor"** (5 ripetute: 1min-2min-3min-2min-1min con pause di 1min)
  2. **"Iron Man"** (4 ripetute: 3min-3min-3min-4min con pause di 1min)

#### Miglioramenti tecnici
- **Inizializzazione singola garantita**: Implementato Mutex per prevenire duplicazione programmi
- **Flag di inizializzazione**: Sistema per evitare ricreazione programmi ad ogni avvio
- **Gestione memoria**: Flag `hasInitialized` per ottimizzare performance
- **Metodi pubblici**: Resi pubblici `createRipetuteCorsaIndoorProgram()` e `createIronManProgram()`
- **Nuovo metodo**: `deleteAllPrograms()` per reset completo

---

### Sistema di Reset

#### Implementazione reset completo
Quando l'utente conferma il reset nelle Impostazioni:

**Dati cancellati:**
- Tutti i dati personali (nome, genere) → reset a default
- Tutte le preferenze (tempi, modalità, suoni) → reset a default
- Tutti i programmi salvati → eliminati
- Programma attivo → rimosso
- Tutta la cronologia allenamenti → cancellata

**Dati ricreati:**
- 2 programmi di default (Ripetute Corsa Indoor, Iron Man)

**Metodi aggiunti:**
- `ProgramManager.deleteAllPrograms()`
- `ExerciseLogManager.clearAllHistory()`

---

## Miglioramenti Design

### Stile Minimalista
- Rimosse TUTTE le ombre dall'app per un look più pulito:
  - Card "Ciao Buddy"
  - Card "Modalità Ripetute"
  - Card motivazionali durante esercizio
  - Card congratulazioni durante pausa
  - Toggle switch (cerchio bianco)

### Consistenza Visiva
- Pulsanti "Cronologia" e "Suoni" con stesso stile
- Card uniformi con trasparenza elegante (alpha 0.1f)
- Spacing ridotto e ottimizzato

---

## Risultato Finale

### Training Buddy v2.0 ora offre:
- Interfaccia più pulita e moderna
- Terminologia coerente ("Ripetute")
- Gestione programmi di allenamento personalizzati
- Reset completo con conferma
- Migliore utilizzo dello spazio schermo
- Feedback visivo durante allenamento
- Performance ottimizzate

---

## Note Tecniche

### Tecnologie utilizzate:
- Kotlin
- Jetpack Compose
- Hilt (Dependency Injection)
- DataStore (Preferences)
- Coroutines & Flow
- Mutex (Thread safety)

### Pattern implementati:
- MVVM Architecture
- Repository Pattern
- Singleton Pattern
- Observer Pattern (Flow)
- Atomic Operations (Mutex)

---

## Prossimi Passi

1. Localizzazione (altre lingue)
2. Backup/restore dati utente
3. Avviso sonoro diverso dopo ultimo esercizio della serie

---

**Versione**: 2.0  
**Data rilascio**: 23 Ottobre 2025  
**Tipo update**: Major Update (UI Redesign + New Features)
