"Resentin" è, in dialetto veneto/friulano, l'atto di pulire i fondi di una tazzina di caffè con la grappa. È anche il nome di questo client nativo Android per grappa-irc, il bouncer IRC self-hosted con API REST + Phoenix Channels.
Scritto in Kotlin + Jetpack Compose.
(Sopra: home con contatori messaggi non letti, chat in modalità "Bolle" con link cliccabili e upload immagini, chat in modalità "Monoriga IRC", directory canali di una rete, elenco membri con nick colorati, impostazioni generali e pannello di amministrazione (sezione reti) — le prime cinque prese collegandosi come visitor a irc.sindro.me, rete Azzurra; le ultime due dal proprio account su un bouncer personale.)
- Login via client token, username/password o link magico
grappa://(es. da QR code) — inclusi i client token per account con 2FA — con supporto ai login "visitor" anonimi dei bouncer che li offrono. - Accesso via QR direttamente dalla sessione web di cicchetto: nel menu Actions → Settings → "Open on another device" di cicchetto viene mostrato un QR temporaneo, che basta scansionare da Resentin (pulsante "Scansiona codice QR" nella schermata di login) per accedere sul telefono senza reinserire credenziali.
- Elenco reti/canali con contatori dei messaggi non letti e delle menzioni (badge rosso se ci sono menzioni), in grassetto se ci sono messaggi da leggere; menu a pressione lunga su un canale per segnarlo come letto o abbandonarlo senza doverlo aprire.
- Directory dei canali di una rete, con ricerca, ordinamento per numero di utenti/nome e topic in anteprima, oltre a join diretto per nome/nick o messaggio privato dalla stessa schermata.
- Chat in tempo reale via Phoenix Channels, con backfill dello storico e cursore di lettura sincronizzato col server (riprende da dove eri rimasto, con un divisore "hai letto fino a qui").
- Due modalità di visualizzazione, selezionabili dalle impostazioni:
Bolle e Monoriga IRC (
[timestamp] <nick> messaggio), entrambe con prefisso di ruolo sul nick (~&@%+), nick colorati (opzionale) e timestamp opzionali coi secondi. - Parsing colori mIRC (nei messaggi e nei topic) e link cliccabili in chat.
- Popup con il topic completo del canale al tap sull'header.
- Elenco membri del canale con whois, messaggio privato, kick/ban e gestione dei privilegi (op/voice/halfop/...) al tap su un nick.
- Impostazioni canale con gestione modalità (mode) e liste ban/exempt/invex, per chi ha i permessi sul canale.
- Archivio delle conversazioni abbandonate, con possibilità di recuperarle.
- Pannello di amministrazione (per gli account admin del bouncer).
- Alias di testo e template di risposta personalizzabili.
- Upload di file/foto in chat (pulsante allegato) e integrazione come Share Target Android — puoi condividere foto/file da altre app direttamente su una chat di Resentin.
- Notifiche push per messaggi privati e menzioni: di default la connessione resta aperta solo ad app in primo piano (risparmio batteria), con due modalità opzionali per riceverle anche ad app chiusa — vedi Notifiche push a basso consumo sotto.
Di default Resentin tiene la connessione WebSocket aperta solo quando l'app è in primo piano, per non consumare batteria in background. Per ricevere comunque le notifiche di messaggi privati e menzioni ad app chiusa, ci sono due opzioni indipendenti in Impostazioni:
- Notifiche push a basso consumo, che usa UnifiedPush — un protocollo aperto e decentralizzato per le notifiche push su Android, alternativa a Firebase Cloud Messaging che non richiede servizi Google. Resentin registra un endpoint reale con crittografia Web Push (VAPID + RFC 8291), esattamente come farebbe un service worker da browser: il payload è cifrato end-to-end fino al dispositivo, il distributore fa solo da relay. Lato server serve grappa-irc con supporto UnifiedPush (attualmente in revisione, PR #1261).
- Resta connesso in background, la vecchia modalità always-on, se preferisci non installare un distributore.
Le due modalità sono indipendenti e possono anche coesistere.
Per usare la prima modalità serve un'app "distributore" installata sul telefono — è lei che riceve le notifiche dal sistema operativo e le inoltra alle app registrate, incluso Resentin:
- ntfy — probabilmente il più semplice: funziona da subito come distributore senza account né configurazione. Disponibile su F-Droid e Google Play.
- Elenco completo e aggiornato, mantenuto dal progetto UnifiedPush: https://unifiedpush.org/users/distributors/
Una volta installato un distributore, basta attivare il toggle in Impostazioni → "Notifiche push a basso consumo": Resentin chiederà quale distributore usare (o userà quello di default del sistema) e completerà la registrazione. Le sottoscrizioni attive — sia UnifiedPush che Web Push da browser, se usi anche cicchetto — sono visibili e revocabili singolarmente da lì, sotto "Dispositivi registrati".
Serve un'istanza di grappa-irc raggiungibile via HTTPS e un token client (o le credenziali del tuo account). Se vuoi solo provare l'app, molte istanze pubbliche di grappa-irc accettano login "visitor" anonimi senza bisogno di un account.
./gradlew assembleDebugL'APK di debug viene generato in app/build/outputs/apk/debug/.
Rilasciato con licenza MIT — vedi LICENSE, come grappa-irc.






