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