16 Commits
Author SHA1 Message Date
lucianoandClaude Fable 5 3a95a3d433 feat: gli spartiti importati restano tra gli esercizi, eliminabili
- ImportedExerciseRepository: persistenza JSON degli import (titolo dal
  nome file, note con durate/bemolli, metro; max 50, più recenti primi)
- FilePicker passa anche il nome del file (expect + 3 actual)
- PracticeSetupScreen salva la sequenza importata prima di avviare
- ExercisesScreen: sezione 'Importati' con anteprima e cestino
- fix: picker desktop su Dispatchers.Swing con finestra parent (l'import
  XML congelava l'app: dialogo Swing su thread di background)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:51:45 +02:00
lucianoandClaude Fable 5 f48a327a33 fix(ui): in modalità Spartito lo spartito assorbe lo spazio residuo
Gli Spacer elastici che centravano il contenuto collassano in FULL
(si dividevano lo spazio col pentagramma lasciandogli un terzo);
il viewport si aggancia a righi interi per non tagliare un rigo a metà.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:24:56 +02:00
lucianoandClaude Fable 5 860274aa41 ui: finestra desktop di default a 1268px di altezza
Altri +200px di base per l'area dello spartito in Pratica (che prende
lo spazio residuo con weight).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:20:57 +02:00
lucianoandClaude Fable 5 37f8b4645d ui: +300px di altezza di base per finestra desktop e spartito
Finestra desktop 1024x1068 (era 768) e fallback del viewport
spartito a 640dp (era 340).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:18:39 +02:00
lucianoandClaude Fable 5 88196f0f51 fix(ui): l'area dello spartito si adatta all'altezza della finestra
StaffFullView usa per intero l'altezza imposta dal contenitore (il tetto
di 340dp resta solo come fallback senza vincoli); in Pratica la vista
Spartito prende lo spazio verticale residuo con weight(1f, fill=false).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:15:39 +02:00
lucianoandClaude Fable 5 0a835699e0 fix(ui): spartito ad altezza fissa con auto-scroll; inserimento manuale segue l'ultima nota
- StaffFullView: viewport limitato (maxVisibleHeight, default 340dp) con
  scroll interno — in Pratica la card della nota rilevata resta sempre
  visibile anche con spartiti lunghi; l'auto-scroll alla riga corrente
  ora ha un viewport reale su cui agire
- ManualInputScreen: la riga delle note selezionate scorre da sola
  sull'ultima nota inserita

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:12:42 +02:00
lucianoandClaude Fable 5 d0d94c30fa feat: Studio op.84 n.10 di Dancla tra gli esercizi
177 note (Sol3-Re6, Sol maggiore, 4/4) estratte dal MusicXML con il
parser dell'app; livello 4, con test di presenza e sanità.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 20:50:20 +02:00
lucianoandClaude Fable 5 da0d67864f ci: MSI Windows allegato alle release; versione 1.1.2
Job desktop-msi su windows-latest: packageMsi con versione dal tag
e upload sulla stessa release (asset InTono-vX.Y.Z-windows.msi).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v1.1.2
2026-07-22 12:02:37 +02:00
lucianoandClaude Fable 5 89b99354f0 ci: DMG macOS allegato alle release; versione 1.1.1
Nuovo job desktop-dmg su macos-latest: packageDmg con versione
derivata dal tag (INTONO_VERSION) e upload sulla stessa release.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 11:46:51 +02:00
lucianoandClaude Fable 5 c00c27e606 docs: README con screenshot e badge; rifiniture pentagramma
- README riscritto: badge CI/release, screenshot reali (emulatore),
  funzionalità, architettura, istruzioni di build
- StaffLayout.lineBreaks: capienza riga in peso (√durata) con chiusura
  preferita alla stanghetta (5 test nuovi); usato da StaffFullView
- StaffFullView: travature globali clippate per riga (origine di beat
  corretta anche su righe spezzate a metà battuta)
- Cifre del tempo centrate su asse comune (metri tipo 12/8)
- PracticeSession persiste beats/beatType: il replay dalla cronologia
  conserva il metro (2 test, retrocompatibile con le sessioni salvate)
- fix: escaping Android-style (\' e \") reso letteralmente da compose
  resources in tutte le stringhe localizzate

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 11:38:02 +02:00
lucianoandClaude Fable 5 cf795e33d8 fix(release): regole dontwarn per le annotazioni di Tink
R8 falliva su assembleRelease per le annotazioni compile-only
(errorprone, javax.annotation) riferite da Google Tink, dipendenza
transitiva di androidx.security:security-crypto.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 11:03:22 +02:00
lucianoandClaude Fable 5 adc9f4c2cf chore: versione 1.1.0 (versionCode 2)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 10:52:50 +02:00
lucianoandClaude Fable 5 6226a53f3c ci: job di release firmato su tag v*
Su push di un tag v* (o avvio manuale): test, decodifica del keystore
dai secrets, assembleRelease firmato via variabili INTONO_*, upload
artifact e creazione della GitHub Release con l'APK allegato.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 10:45:31 +02:00
lucianoandClaude Fable 5 0add6de716 fix(ci): il pattern gitignore 'scores/' escludeva anche i sorgenti
'scores/' senza slash iniziale ignorava ogni directory 'scores' a
qualsiasi livello: mancavano dal repo il package com.notemusicali.scores,
ScoresScreen e i 12 spartiti bundled. Ancorato a '/scores/' (solo la
libreria alla radice) e aggiunti i file mancanti.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 10:38:51 +02:00
lucianoandClaude Fable 5 9387b50b67 ci: build APK e test su GitHub Actions
Workflow su push a main e avvio manuale: JDK 17, cache Gradle,
suite desktopTest come cancello, assembleDebug e upload dell'APK
come artifact.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 10:33:41 +02:00
lucianoandClaude Fable 5 21ad969b10 Initial commit: InTono — app KMP per l'apprendimento musicale
App Kotlin Multiplatform (Android/iOS/Desktop) con Compose Multiplatform:
controllo intonazione (YIN), pratica guidata, metronomo, ear training,
sfide, scansione spartiti via AI, spartiti bundled e pentagramma con
glifi tipografici, travature, battute e spaziatura proporzionale.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 10:06:59 +02:00