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