- 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>
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>
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>
- 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>
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>
- 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>
'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>