-
released this
2026-09-25 14:44:57 +02:00 | 38 commits to main since this releaseNovità
Onboarding swipe-first. Il flusso a 6 passi ora si percorre con un dito:
HorizontalPagersincronizzato col ViewModel. Lo swipe guidaavanti/indietro; se un passo non si committa (scrittura fallita) la pagina torna al punto reale. L'unico gate resta lo step agenda, ed è l'ultimo: lo swipe avanti non incontra mai un blocco.- Hint swipe animato (nudge + freccia) sopra la barra d'azione; i tasti restano.
- Scala testo ridotta a 3 opzioni — Compatto / Standard / Grande — default Standard.
- Copy più asciutto: post-grant giocoso, intro più secca.
Installazione
Debug-signed. Scarica
app-debug.apk, installa su /e/OS (A16, arm64). Audio e testo restano sul telefono; unica eccezione la geocodifica Nominatim.Verifiche
assembleDebug+ suite JVM (core-model/geo/llm/asr + app) verdi.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Carazza v0.3 Stable
released this
2026-09-25 13:47:52 +02:00 | 39 commits to main since this releaseRevisione UI dell'onboarding + modulo fiscale + fix contatti.
Novità
- Onboarding a 6 swipe: Benvenuto, Permessi, Registrazione, Modelli, Tuoi dati, Orari e lavori. Tono leggero, via il jargon (Shizuku), "continua senza" in primo piano.
- Permessi in batch: un solo tasto "Accorda tutti" = un popup; spunte verdi dopo il grant.
- Modulo fiscale (
it.carazza.fiscal): validazione partita IVA con checksum Luhn (DPR 633/1972) + provincia di rilascio; lookup nome attività per codice ATECO (set curato). - Contatti: apri la scheda reale via
contactId(non la ricerca), aggiungi il cliente dalla bozza (ACTION_INSERT), verdetto "non in rubrica" con CTA. - README riscritto: posizionamento "gestionale per autonomi", target umano.
Installazione
Firma: debug keystore condivisa (aggiornabile in place). ARM64 — Pixel 8a / /e/OS A16, senza Google Play Services.
adb install -r app-release.apkI modelli (ASR + LLM) NON sono nell'APK: si scaricano al primo avvio (o si spingono a mano).
Verifica
- SHA-256:
7baa4dc93a8ac1b564181cb9c2b25ebc7911bf8d6e0ec40a4fe39fd14b7dfd42 - 548 test JVM verdi, 0 fallimenti.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-09-24 22:09:56 +02:00 | 41 commits to main since this releaseNovità v0.2
Geocoding robusto
- Fallback Photon: se Nominatim non dà un pin (down, throttled o junk), ci prova Photon. Tollera anche i typo della trascrizione vocale (es.
all'apiario→al piariorecuperato da Photon). - Cache con namespace: Nominatim e Photon condividono lo store senza collide — un "non trovato" dell'uno non viene più riletto come risposta dell'altro.
- Tip retry nella schermata Nuovo lavoro: quando il segnaposto manca o è approssimativo (strada/paese), un 💡 invita a correggere l'indirizzo e riprovare la geocodifica (force, bypass cache). L'ultimo controllo resta all'operatore, che vede il pin prima di prenotare.
Tema
- Container scuri caldi: lo stato "selezionato" non è più viola di Material.
- Angoli squadrati su telai e pulsanti.
Installazione
Firmato con il keystore condiviso: si installa come aggiornamento sopra la v0.1 senza disinstallare (versionCode 2).Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Fallback Photon: se Nominatim non dà un pin (down, throttled o junk), ci prova Photon. Tollera anche i typo della trascrizione vocale (es.
-
released this
2026-09-19 18:53:18 +02:00 | 49 commits to main since this releasePercorso completo: registrazione del Dialer -> bozza revisionabile -> evento in calendario.
Audio e testo restano sul telefono. Unica eccezione di rete: la geocodifica dell'indirizzo
verso OpenStreetMap Nominatim.Bersaglio verificato: Pixel 8a (
akita), Android 16 / SDK 36, arm64, build LineageOS
community4.2-a16-20260815662915, 8 GB RAM. Nessun Google Play Services.Cosa fa
- Scoperta delle registrazioni del Dialer via
MediaStore, idempotente. - Trascrizione locale con Qwen3-ASR 0.6B, diarizzazione "chi ha detto cosa".
- Estrazione strutturata a schema (tipo intervento, quando grezzo, urgenza, indirizzo, prezzo).
- Risoluzione date in linguaggio naturale fatta in codice proprio, non dal modello.
- Geocodifica Nominatim con fallback: se fallisce l'evento si crea comunque con il solo indirizzo testuale.
- Prenotazione su
CalendarContractcon esito tipizzato (Booked/SavedWithoutCalendar/AlreadyBooked/Invalid). - Enrollment vocale del titolare per distinguere la sua voce da quella del cliente.
Verificato sul dispositivo (build installata 2026-09-19 20:27)
Il fix dell'onboarding regge end-to-end.
fede.wavera inERROREcon
impossibile caricare il modello ASR da .../files/models/asr— la cartella PADRE, firma
del bug. Dopo l'aggiornamento con-r(dati intatti) la stessa registrazione eoraBOZZA_PRONTAe lo statoERROREescomparso del tutto dall'archivio.RAM: il gate del piano passa.
VmHWMmisurato durante una trascrizione reale:
2,52 GiB contro il limite di 3,3 GiB richiesto.VmPeakvirtuale 21 GiB (mmap del
modello), RSS a riposo 375 MB dopo il rilascio.Scansione: lo switch ora fa qualcosa. A spento,
dumpsys jobschedulernon mostra
alcun lavoro perit.carazza. Portando l'intervallo a 30 minuti il job riprogrammato
risultaTIME=+29m35s.⚠️ RTF: il gate V2 del piano NON passa
Il piano chiede RTF (audio diviso inference) >= 2,0. Misurato, per trascrizione:
audio wall RTF piano note 1,0 s 3,1 s 0,31 dominio caricamento modello 14,6 s 12,4 s 1,18 misurato con questa build 20,1 s 15,7 s 1,28 22,5 s 40,7 s 0,55 30,8 s 22,2 s 1,39 848,7 s (14 min) 4103,9 s (68 min) 0,21 chiamata reale Media 0,82. Sotto i 30 secondi l'ASR sta piu' o meno al tempo reale; una chiamata da
14 minuti richiede 68 minuti, circa 10 volte peggio del gate.Il tempo cresce piu' veloce dell'audio: da 22 s a 849 s l'audio e' x38, il muro e' x185.
Comportamento superlineare, coerente con attention quadratica o pressione di memoria, non
con un costo per secondo costante.Conseguenza operativa: una giornata di chiamate da 15 minuti non si processa in una
pausa. Va deciso se il target realistico e' "clip brevi" o se serve lavorare su quantizzazione,
thread o chunking prima di considerare l'app usabile sul flusso principale.Note minori emerse
- La Diagnostica dice "RTF ultima trascrizione" ma legge
ORDER BY rowid DESC. Ri-trascrivendo
una registrazione vecchia la riga viene aggiornata in posto, il rowid non cambia, e lo schermo
continua a riportare una riga diversa da quella appena processata. ERROREnon ha retry sul tap: e' deliberato ("tap per leggere, selezione per agire"), ma il
dialogo d'errore offre solo "Chiudi".- Su questo telefono le registrazioni del Dialer stanno in
/storage/emulated/0/Chiamate/;
la cartella configurataChiamatela risolve correttamente.
Installazione
Firma debug: distribuzione interna, non Play Store.
adb install -r app-debug.apkDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Scoperta delle registrazioni del Dialer via