======================================================================
NeReO 1.3.7 - Ne(ws) Re(ader) O(pen-source)
Newsreader Usenet (NNTP) solo testo per Android
By MCSM - 2026/09/10
======================================================================
*** VERSIONE 1.3.7 ***
Due segnalazioni di Dave Royal sul ripristino del backup. Una era
giusta, e il difetto era piu' esteso di quanto avesse visto.
* Il ripristino non duplica piu' filtri e identita'. Lui aveva
notato che i filtri venivano AGGIUNTI invece che sostituiti;
guardando il codice e' emerso che le IDENTITA' avevano lo stesso
difetto. Il ripristino e' ora IDEMPOTENTE: ripristinare due volte
lo stesso file lascia esattamente lo stesso stato. I filtri si
riconoscono da nome, campo, tipo di confronto, pattern e ambito
dei gruppi; le identita' dal nickname, che il formato di backup
usava gia' come chiave per rilegare i server.
* Il ripristino ora chiede come procedere: Unisci o Sostituisci. Il
difetto vero non era "aggiunge invece di sostituire": era che
nella stessa operazione l'app faceva TRE cose diverse (dedup su
server e sottoscrizioni, inserimento cieco su filtri e identita',
sovrascrittura sulle impostazioni). Nessuna delle due opzioni
tocca server, sottoscrizioni o articoli scaricati: cancellare un
server porterebbe via con se' i suoi gruppi e i suoi messaggi.
* "Password errata" non copre piu' gli errori di importazione. Il
dialogo decifrava E importava in un unico blocco protetto: un
guasto nel secondo passo veniva annunciato come un problema del
primo, mandando a cercare la causa sbagliata.
* L'a capo in invio non lascia piu' uno spazio in coda alle righe
che spezza. Uno spazio a fine riga e' il marcatore di rottura
debole del Format=Flowed (RFC 3676): un lettore che lo interpreta
avrebbe riunito quella riga con la successiva, disfacendo proprio
l'a-capo appena messo. Succedeva solo quando la rottura cadeva su
un doppio spazio, tutt'altro che raro dopo un punto. I doppi spazi
DENTRO la riga restano come li hai scritti, e il delimitatore
della firma conserva lo spazio che la convenzione richiede.
Domanda di Adam H. Kerman.
*** VERSIONE 1.3.6 ***
Due difetti di conformita' e una funzione che mancava, tutti nati
dalle domande di Adam H. Kerman su un gruppo anglofono. Escono prima
della 1.4 perche' riguardano cio' che NeReO mette SULLA RETE: quello
che finisce negli archivi altrui non si corregge dopo.
* Oggetti lunghi con caratteri accentati o non latini: codifica
corretta. La RFC 2047 ammette al massimo 75 caratteri per parola
codificata; NeReO ne produceva UNA SOLA di lunghezza qualunque -
misurato, un oggetto italiano normale usciva a 140 caratteri. Ora
la codifica si spezza e si piega come vuole lo standard, tagliando
solo fra caratteri interi perche' emoji e simboli multi-byte
restino intatti.
* us-ascii dichiarato quando il corpo e' davvero us-ascii (con
7bit), invece di dichiarare sempre UTF-8. Il controllo avviene
DOPO che la firma e' entrata nel corpo: deciderlo un passo prima
significherebbe dichiarare ASCII puro e poi spedire una firma con
dentro un accento.
* Nuova azione di barra: Esporta / condividi. Consegna l'articolo -
intestazioni complete comprese - a un'altra app, cosi' puoi
archiviarlo o rispondere all'autore per posta, cosa che NeReO non
sa fare da se'. Sostituisce una condivisione sparita in sordina
con la 1.3.4 insieme al vecchio menu di selezione.
* Due nuove azioni di barra: Copia link (usenet.id) e Copia
Message-ID. La prima costruisce un indirizzo web che punta
all'articolo aperto - https://usenet.id/ seguito dal suo
Message-ID - cosi' puoi mandare qualcuno a leggere proprio quel
messaggio da una chat, una mail o un forum. La seconda mette negli
appunti il Message-ID stesso, nella forma canonica, che finora si
poteva ottenere solo aprendo le intestazioni complete e
selezionandolo a mano. NeReO NON CONTATTA MAI usenet.id: compone
il testo e lo copia - nessuna connessione, nessun permesso nuovo.
Richiesta di ObiWan.
* Preimpostazione corretta: OVH torna sulla porta 119 con
STARTTLS, invece della 563 con TLS implicito. La 1.3.5 aveva
spostato sulla 563 tutti e tre i server che richiedono un account,
ma OVH non offre TLS su quella porta: sceglierlo dall'elenco
integrato produceva una configurazione che non poteva funzionare.
Il suo amministratore ha abilitato STARTTLS sulla 119 il 14
settembre 2026, e quella combinazione e' stata verificata su un
dispositivo reale. Per i server gia' configurati non cambia nulla.
*** VERSIONE 1.3.5 ***
Una sola cosa, e non e' una funzione: i messaggi d'errore del
livello di rete ora sono in INGLESE per tutti.
* Da dove nasce: un utente che usa NeReO con l'interfaccia in
inglese si e' visto rispondere IN ITALIANO quando il suo server
ha rifiutato la connessione ("483 Connessione non cifrata...") e
si e' ragionevolmente chiesto cosa avesse sbagliato. Non aveva
sbagliato niente.
* Perche' succedeva: NntpClient e' volutamente privo di dipendenze
Android - e' la scelta che lo rende provabile da riga di comando
- e quindi non ha un Context e non puo' leggere strings.xml. I
suoi messaggi sono scritti nel codice, e nessuna lingua di
sistema li tocca. Non era una traduzione dimenticata: i tre
strings.xml hanno parita' completa di chiavi.
* Cosa si e' scelto, e cosa costa: se una lingua sola deve valere
per tutti, tanto vale sia quella di values/ (il predefinito
dell'app) e la lingua franca di Usenet. NON e' la
localizzazione: e' un ripiego dichiarato, e il prezzo lo paga
ora chi usa l'app in italiano, che leggera' in inglese meno di
dieci messaggi su un'app per il resto tradotta. La soluzione
vera - passare i testi dall'esterno di quel livello - si fara'
quando quella classe verra' riaperta per altri motivi.
* Il nome utente viene ripulito dagli spazi ai bordi, come gia'
l'indirizzo del server. Uno spazio arrivato da un incolla o da un
suggerimento della tastiera veniva spedito al server, che lo
contava - e l'unico riscontro era "autenticazione fallita". La
password NO, di proposito: puo' legittimamente iniziare o finire
con uno spazio, e l'app non ha il diritto di modificarla in
silenzio.
* Campo password: pulsante per rivelarla e conteggio dei caratteri.
Il conteggio c'e' perche' coglie cio' che rivelare la password non
puo': uno spazio finale e' invisibile anche in chiaro. Se sai che
la tua ha undici caratteri e il campo ne segna dodici, il problema
e' trovato. E se davvero ha spazi ai bordi, l'app te lo dice in
rosso invece di correggerti d'autorita'.
* Il registro diagnostico NNTP annota la FORMA delle credenziali -
quanti caratteri, spazi ai bordi, presenza di caratteri non ASCII
- e MAI il valore. E' la differenza fra diagnosticare un accesso
rifiutato leggendo un log e tirare a indovinare.
* Scegliendo un server dall'elenco integrato, i tre che
richiedono un account (Eternal September, Solani, OVH) nascono
su porta 563 cifrata. Finora l'elenco proponeva a tutti la 119
in chiaro, quei tre compresi - e siccome NeReO si rifiuta di
mettere una password su una connessione non cifrata, il primo
tentativo falliva SEMPRE con un 483. Non era un caso limite: era
il percorso normale, e chi sceglie da un elenco lo fa proprio
per non dover decidere la porta. I due server aperti restano
sulla 119. Per i server gia' configurati non cambia nulla.
* Corretto un difetto che si presentava in due modi diversi.
"Apri il primo non letto" a volte tornava al post iniziale -
GIA' LETTO - pur essendoci messaggi da leggere; e marcare una
discussione come letta ogni tanto la lasciava visibile. Erano
lo STESSO difetto: NeReO rispondeva alla domanda "quali
messaggi stanno in questa discussione" in TRE modi, e uno solo
dei tre era il motore di threading che disegna davvero lo
schermo. Gli altri due confrontavano il testo dell'intestazione
References, e divergevano ogni volta che il post iniziale non
era mai stato scaricato o che un messaggio elencava il solo
padre diretto. Ora tutta l'app chiede al motore di threading.
* Nota per chi ha segnalato: le risposte orfane erano esattamente
la causa. I cambi di oggetto no - il motore di threading di
NeReO non guarda mai l'oggetto, quindi rinominare un messaggio
non puo' influenzare il raggruppamento.
* La firma puo' contenere righe vuote fra le righe di testo.
Quattro righe intercalate perdevano le ultime due, perche' il
limite contava le righe FISICHE; ora conta le righe DI TESTO,
con un tetto complessivo perche' una firma non diventi spazio
vuoto. Da sapere: la netiquette classica conta quattro righe
fisiche, vuote comprese - questa e' una tolleranza di NeReO, e
un altro lettore potrebbe comunque troncarla.
*** VERSIONE 1.3.4 - RELEASE TECNICA ***
Del codice dell'app non e' cambiata una riga rispetto alla 1.3.3.
E' cambiato tutto cio' su cui NeReO poggia.
* Catena di compilazione migrata: Android Gradle plugin 8.7.3 ->
9.3.0, Gradle 8.9 -> 9.5.0, Kotlin 2.0.21 -> 2.2.10, KSP alla
numerazione KSP2. Fatta con l'AGP Upgrade Assistant di Android
Studio, non a mano: le versioni le ha scelte lo strumento in base
a cio' che quella installazione regge davvero.
* Jetpack Compose dalla 1.7.6 alla 1.12 - venti mesi in un colpo
solo. compileSdk sale a 37 perche' Compose 1.12 lo pretende;
targetSdk RESTA a 35, deliberatamente: alzarlo farebbe scattare
restrizioni nuove del sistema operativo, e non vogliamo mescolare
QUELLE con questo salto.
* Perche' esce da sola, senza nient'altro dentro: venti mesi di
Compose toccano il disegno del testo, lo scorrimento, la tastiera
e le animazioni, cioe' tutta l'app. Se dopo questa qualcosa si
comporta male, dev'esserci UN SOLO sospettato possibile. E' la
stessa regola con cui e' uscita la 1.2.14.
* Il passo intermedio e' stato provato sul campo: toolchain nuova
con Compose ancora vecchia, compilata e installata - APK
verificato, AGP 9.3.0 con Compose 1.7.6, tutto normale. Quindi
AGP e Gradle sono gia' assolti: se qualcosa si rompe adesso, e'
Compose.
* Cosa speriamo, dichiarato per quello che e': nelle note di Compose
1.12 ci sono lavori espliciti sulla selezione col mouse e sulla
barra di selezione. Su un dispositivo senza schermo tattile quella
barra non e' mai comparsa. Questo e' l'unico modo per sapere se il
problema fosse gia' risolto a monte. E' una PREVISIONE, non una
promessa: se non si risolve, sapremo che quella strada non
bastava - e il debito di venti mesi sara' tolto comunque.
* Una cosa si e' persa, ed e' giusto dirlo: selezionando il testo di
un messaggio non compaiono piu' "Cerca sul web" e "Condividi".
Erano state aggiunte nella 1.2.8 su richiesta di Dave Royal,
sostituendo il menu di selezione con uno nostro. Compose 1.12 non
passa piu' da quel meccanismo: il menu ora e' quello della
piattaforma, e il nostro veniva ignorato in silenzio.
* Perche' non si possono ricostruire: l'API nuova permette di
AGGIUNGERE voci a quel menu, ma non dice quale testo sia
selezionato - verificato nel sorgente di androidx, non dedotto.
Senza il testo, "Cerca" e "Condividi" non sanno cosa cercare ne'
cosa condividere. Copia e Seleziona tutto non sono toccate, e
l'azione "Copia il messaggio" nella barra di lettura resta.
* SelectionToolbar.kt e' stato cancellato, non lasciato li' inerte:
il suo commento continuava ad affermare che funzionava, e un file
che mente e' peggio di un file che manca.
* Se noti qualcosa di diverso dalla 1.3.3, segnalalo anche se
sembra una sciocchezza. E' esattamente a questo che serve questa
versione.
---
*** VERSIONE 1.3.3 ***
Novita' di questa versione:
* Quando una connessione cifrata fallisce, NeReO dice ora QUALE dei
due problemi possibili sia: i rimedi sono diversi, e fino alla
1.3.2 li trattavamo come uno solo.
* CATENA DI FIRMA: se il certificato non e' firmato da un'autorita'
che Android riconosce (autofirmato, CA privata) o e' scaduto, il
messaggio lo dice e avverte esplicitamente che l'opzione di
sicurezza NON PUO' SERVIRE. Fino alla 1.3.2 la suggerivamo in ogni
caso, mandando l'utente a cercare una via d'uscita inesistente.
* NOME HOST: se invece il certificato e' valido ma emesso per un
altro indirizzo, l'opzione serve davvero e il messaggio ci
indirizza.
* INDETERMINATO: se l'errore non corrisponde a nessuno dei due,
NeReO lo dice invece di inventarsi una diagnosi, e mostra il testo
grezzo dell'eccezione - il dato che serve a chi segnala.
* L'opzione e' stata rinominata con quello che fa davvero: "Non
verificare il nome host sul certificato". Il vecchio nome,
"Consenti certificati non verificabili", prometteva piu' di quanto
mantenesse: non ha MAI fatto accettare a NeReO un certificato
autofirmato, di autorita' sconosciuta o scaduto - quello lo
rifiuta il TrustManager di Android, che quell'interruttore non
sfiora. Ora la nota sotto l'opzione lo dice esplicitamente.
* Nessun cambiamento di comportamento: cio' che si collegava prima
si collega ancora, cio' che veniva rifiutato viene rifiutato
ancora. Cambia solo quello che NeReO DICE.
* Segnalato da Bingo3331, che su Paganini ha fatto esattamente
quello che il messaggio d'errore gli diceva di fare, ha visto che
non funzionava e ne ha dedotto - ragionevolmente - che l'opzione
fosse rotta. Non e' rotta: fa un'altra cosa. Il vicolo cieco
l'avevamo costruito noi.
---
* Nuova azione "Copia il messaggio" nella barra di lettura, sia sul
telefono sia nel riquadro dei pannelli: UN CLIC copia l'intero
messaggio negli appunti, senza dover prima selezionare nulla. E'
personalizzabile come tutte le altre azioni (si puo' spostare nel
menu tre puntini o spegnere). Insieme, un pulsante "Incolla" nella
barra della schermata di scrittura.
* Perche' serviva, e non era quello che pensavamo: il video di
collaudo di Roxy chiude la questione. Sul suo Box TV la SELEZIONE
del testo FUNZIONA - il blocco si evidenzia e si estende col
trascinamento - ma la barra flottante Copia/Cerca/Condividi NON
COMPARE MAI, nemmeno per un fotogramma in 22 secondi con la
selezione ferma al centro dello schermo. Non e' un problema di
posizionamento del popup, come avevamo ipotizzato: la barra non
viene proprio chiamata.
* L'indizio del meccanismo: mancano anche le MANIGLIE di selezione,
che Compose disegna sul percorso a tocco - mentre sul telefono,
col dito, maniglie e barra ci sono entrambe. Due dispositivi, due
percorsi di input, segnali coerenti in direzioni opposte: e' il
percorso MOUSE a non alzare la barra. E su Android il tasto destro
e' BACK, quindi non c'e' nemmeno un menu contestuale su cui
ripiegare.
* Se hai una tastiera collegata, Ctrl+C e Ctrl+V funzionano gia',
anche dove la barra flottante non compare - confermato da Roxy sul
suo Box TV. Per copiare UNA PARTE di messaggio resta la via piu'
rapida, e vale la pena saperlo: la funzione c'era gia', mancava
l'informazione.
* Il rimedio gira intorno al problema invece di combatterlo: azioni
che non passano dalla selezione. Un clic, identiche a tocco e a
puntatore.
* Limite dichiarato dell'azione: copia il messaggio INTERO. Per
copiarne un pezzo bisogna ancora selezionarlo - col dito e la
barra, oppure con Ctrl+C.
---
*** VERSIONE 1.3.2 ***
Novita' di questa versione:
* Anche sul TELEFONO si puo' andare dritti al primo messaggio non
letto. Nuova opzione facoltativa in Aspetto -> "Tocca la
discussione per aprire il primo non letto": toccando la testa di
una discussione si apre il primo messaggio non ancora letto,
invece del primo post (se sono gia' tutti letti, si apre il primo
post). Vale nella vista AD ALBERO e in quella RAGGRUPPATA.
* Spenta di default: chi non la accende non nota alcuna differenza.
Nella vista raggruppata, se e' accesa anche "Tocca il messaggio
per espandere il thread", ESPANDERE HA LA PRECEDENZA - li' il
thread si apre sul posto e restare nella lista e' la cosa sensata.
* Perche' un'opzione nuova e non la stessa della 1.3.1: quella
agisce solo dove una riga rappresenta l'intera discussione
richiudibile (vista raggruppata), e nella vista ad albero -
proprio quella per cui la funzione e' stata chiesta - quel
presupposto non esiste. Riusare l'interruttore esistente non
avrebbe potuto funzionare: sono due comportamenti diversi in due
viste diverse, quindi due interruttori.
* User-Agent nella forma prevista dalla RFC 5536 (nota tecnica di Dave
Royal): ora NeReO/1.3.2 (Android), con la versione attaccata da una
BARRA. Fino alla 1.3.1 era "NeReO 1.3.1 (Android)", con uno spazio.
* Perche' non era solo estetica: la RFC 5536 par. 3.2.13 definisce
product = [CFWS] token [ [CFWS] "/" product-version ], cioe' la
versione si attacca al prodotto con la barra. Con lo spazio
l'intestazione non era ILLEGALE - la grammatica ammette piu'
prodotti e "1.3.1" e' un token valido - ma diceva un'altra cosa:
DUE PRODOTTI, uno di nome "NeReO" e uno di nome "1.3.1". Chi
raccoglie statistiche sui newsreader leggeva un software
inesistente. Il commento "(Android)" e' CFWS ed era gia' corretto.
* Le identita' gia' salvate vengono riallineate una volta sola, e
SOLO se contengono ancora esattamente uno dei predefiniti spediti
da noi. Uno User-Agent scritto dall'utente non viene mai toccato -
campo vuoto compreso, che dalla 1.2.9 significa "non dichiarare
nulla" ed e' una scelta, non una dimenticanza.
* Corretto: se l'ultimo articolo di un gruppo veniva cancellato,
quel gruppo non si aggiornava piu'. Ogni tentativo rispondeva
"423 No articles in NNNN-NNNN" e si sbloccava da solo soltanto
quando qualcuno postava di nuovo.
* Perche' succedeva: cancellato l'ultimo articolo, il numero alto
dichiarato dal gruppo NON scende (RFC 3977 par. 6.1.1: non tutti i
numeri fra il water mark basso e quello alto corrispondono a
articoli esistenti), quindi NeReO chiedeva l'intervallo dal
proprio segnalibro fino a quel numero - ormai vuoto. Il 423 che il
server restituisce NON e' un errore: la RFC 3977 par. 8.3 lo
definisce "nessun articolo in quell'intervallo", ed e' la risposta
giusta. NeReO lo trattava come fatale.
* Cosa costava davvero, oltre all'errore a schermo: la connessione
condivisa veniva buttata e riaperta per i gruppi rimanenti (socket
+ TLS + autenticazione da capo, a ogni aggiornamento), il gruppo
veniva saltato dalla guardia anti-loop, e il segnalibro non
avanzava mai - quindi l'aggiornamento dopo richiedeva lo stesso
intervallo morto. Ora il 423 produce una lista vuota, il
segnalibro avanza e l'intervallo morto si consuma una volta sola.
* Non era un caso di laboratorio: il buco fra numero basso e numero
alto e' previsto dal protocollo, e i cancel di spam sull'ultimo
articolo di un gruppo poco trafficato sono ordinaria
amministrazione. Il test deliberato di BIG Umberto su alt.test.a,
riprodotto tre volte su tre server diversi (Solani,
eternal-september, Paganini), non ha inventato uno scenario
impossibile: ha reso riproducibile una cosa che capita da sola e
che finora poteva essere archiviata come "errore di connessione".
* Sotto il cofano: prima di aggiungere il QUINTO punto del codice
che calcola "primo non letto della discussione", la logica e'
stata estratta una volta sola e i cinque punti ora la
condividono. La 1.3 e' uscita con un difetto proprio perche' una
correzione era stata applicata a due copie su quattro di un
blocco duplicato.
---
*** VERSIONE 1.3.1 ***
Novita' di questa versione:
* Nel layout a pannelli, toccare una discussione ora la espande E ci
va: con l'opzione "Tocca l'OP per espandere" attiva, il tocco apre
nel riquadro di lettura il primo messaggio NON LETTO di quella
discussione (o il primo post, se sono gia' tutti letti). Chiudendo
la discussione la selezione torna sull'OP, l'unica riga rimasta
visibile.
* Perche' era un problema serio e non un fastidio: prima il tocco
espandeva soltanto, e il primo post di una discussione con
risposte non si poteva aprire affatto. Nella 1.2.9 avevamo
indicato come via d'uscita il menu a pressione prolungata, ma su
un Box TV col telecomando quel gesto NON ESISTE: per chi legge da
li' quel messaggio era irraggiungibile. Segnalato da Roxy, che
quell'opzione l'aveva chiesta lui stesso nella 1.2.9.
* Ogni riga dell'elenco discussioni ha ora un pulsante "..." (tre
puntini verticali) che apre il suo menu contestuale - apri, plonk,
sostituisci, ritira, conservazione, selezione multipla - con UN
SOLO CLIC. La pressione prolungata continua a funzionare
esattamente come prima: e' una via in piu', non una sostituzione.
Nasce dalla stessa segnalazione: su un dispositivo guidato da un
puntatore (mini tastiera con trackpad) tenere premuto un tasto e'
tecnicamente possibile, ma cosi' lento che - parole di Roxy -
"passerebbe la voglia di usarlo".
* La barra del riquadro di lettura nei pannelli e' ora
personalizzabile, come gia' quella del telefono (Aspetto ->
Personalizza barra di lettura). Con una differenza voluta: qui
"spento" non vuol dire NASCOSTO ma SPOSTATO NEL MENU tre puntini
- nulla diventa irraggiungibile. Nasce gia' con ROT13 e
Intestazioni nel menu, perche' su un tablet tenuto in verticale
il riquadro e' stretto e cinque pulsanti non lasciavano quasi
spazio all'oggetto del messaggio. Suggerimento di Dave Royal,
gia' chiesto in precedenza da Roxy.
* Solo nel layout a pannelli, di proposito: sul telefono il tocco
naviga via, quindi "espandi e vai" sarebbe una contraddizione, e
li' la pressione prolungata e' un gesto naturale, non un ostacolo.
---
*** VERSIONE 1.3 ***
Novita' di questa versione:
* Corretta una lacuna della 1.2.17: "Invia la password solo quando
il server la chiede" NON veniva applicata all'invio di un
messaggio ne' allo scaricamento dell'elenco gruppi, che
continuavano ad autenticarsi subito. Causa: lo stesso blocco di
codice esisteva in quattro copie e ne erano state aggiornate due.
I quattro punti che aprivano una connessione sono ora unificati in
uno solo, cosi' la regola vale ovunque per costruzione.
* Per il resto la 1.3 e' la 1.2.17 provata sul campo: e' la versione
stabile che raccoglie tutta la linea 1.2.12-1.2.17 - il giro di
irrobustimento nato dall'audit di sicurezza, la verifica del nome
host TLS, ritiro e sostituzione con esito server per server, e
tutto cio' che e' emerso da due giorni di prove reali su tre
provider.
* La 1.3 e' la PRIMA VERSIONE PUBBLICA dopo la 1.2.11: chi
aggiorna da li' riceve in un colpo solo anche tutto il contenuto
delle versioni 1.2.12-1.2.17, che non sono mai state distribuite
(vedi la nota subito sotto lo storico).
---
======================================================================
ATTENZIONE - LE VERSIONI DA 1.2.12 A 1.2.17 NON SONO MAI STATE
PUBBLICATE
======================================================================
L'ultima versione distribuita pubblicamente su SourceForge e' stata
la 1.2.11.
Tutto quello che segue qui sotto, dalla 1.2.12 alla 1.2.17, e' stato
compilato e collaudato SOLO all'interno del progetto: su tre server
reali (Astraweb, usenet.ovh, eternal-september) e su un solo
dispositivo. Nessuna di quelle versioni e' mai arrivata agli utenti,
e non esiste alcun APK pubblico che le contenga.
Sono elencate perche' il loro contenuto e' TUTTO dentro la 1.3:
servono a capire cosa e' cambiato e perche', non a cercare un
aggiornamento che non e' mai esistito. Chi viene dalla 1.2.11 passa
direttamente alla 1.3 e riceve tutto in un colpo solo.
---
*** VERSIONE 1.2.17 ***
Novita' di questa versione:
* Nuova opzione "Invia la password solo quando il server la chiede"
(Manutenzione -> Sicurezza), SPENTA di default. Di norma NeReO si
autentica appena si collega, ad ogni connessione; con questa
accesa aspetta che sia il server a chiederlo, si autentica in quel
momento e ripete il comando. Su un server che non riesce a cifrare
la connessione cambia molto: i server INN lasciano leggere senza
credenziali e le pretendono solo per pubblicare, quindi la
password attraversa la rete qualche volta al mese invece che
decine di volte al giorno. Spenta di default perche' tocca il modo
in cui si contatta OGNI server: se uno smette di funzionare, si
rispegne e si torna esattamente a prima.
* Nell'elenco dei server compare l'avviso "ultimo collegamento NON
cifrato" sotto i server che stanno parlando in chiaro. Si basa su
cio' che e' realmente successo, non sulle impostazioni: un server
puo' essere configurato per cifrare, dichiararlo, e non riuscirci
comunque. E' un segno permanente e non un avviso ricorrente,
perche' quello stato non cambia da solo e un avviso che torna ogni
volta si impara a ignorare.
* Il registro diagnostico non conta piu' come errori le risposte
attese: un ritiro riuscito chiudeva la sessione con "1 errori",
perche' il 430 "no such article" - che e' esattamente la risposta
cercata - veniva contato come guasto.
---
*** VERSIONE 1.2.16 ***
Novita' di questa versione:
* Il ritiro (cancel) ora dice com'e' andata su OGNI server
configurato, non solo su quello da cui hai pubblicato. Al termine
compare un elenco - ritirato, ancora presente, non verificabile -
con il server a cui la richiesta e' stata effettivamente inviata
marcato come tale. E' la risposta che finora si poteva ottenere
solo controllando a mano, un server alla volta, da un altro
programma.
* Il dialogo di conferma dice prima quello che si scopriva dopo.
Quattro prove sul campo fra il 6 e il 7 settembre hanno stabilito
che il ritiro agisce, in pratica, solo sul server su cui hai
pubblicato: sugli altri il messaggio resta, e molti provider
ignorano del tutto le richieste di ritiro. Ne discende un
consiglio, ora scritto nella conferma: se una correzione deve
essere vista da tutti, lo strumento giusto e' "Sostituisci" e non
"Ritira" - il supersede e' un articolo normale e si propaga
sempre, il ritiro e' un messaggio di controllo e quasi nessuno lo
inoltra.
* Nessun lavoro in sottofondo: i server vengono interrogati solo in
quel momento, una connessione ciascuno, e uno irraggiungibile
diventa "non verificabile" senza far fallire il resto.
---
*** VERSIONE 1.2.15 ***
Novita' di questa versione:
* "Ritira dal server (cancel)" ora dice SE HA FUNZIONATO. Prima l'app
diceva soltanto "richiesta inviata, il server potrebbe ignorarla":
chi ritirava un messaggio su un server che ignora i messaggi di
controllo restava convinto di averlo tolto. Ora, subito dopo
l'invio, NeReO chiede al server se quell'articolo c'e' ancora e
riferisce la risposta: ritirato, ancora presente, oppure non
verificabile. Tre esiti e non due, perche' sul campo li abbiamo
visti tutti e tre.
* Un messaggio che sul server non esiste piu' (scaduto, o ritirato
dal suo autore) viene detto per quello che e', invece di comparire
come un errore di rete qualunque. Accanto alla spiegazione c'e' il
pulsante "Rimuovi la copia locale", per togliere la riga di
riepilogo rimasta orfana. Sia nella vista a pagine sia nel
pannello di lettura.
* Supersedes gestito in lettura: quando un messaggio ne sostituisce
un altro, il sostituito viene NASCOSTO (non eliminato: "Mostra
nascosti" lo riporta), e solo se i due vengono dallo stesso
indirizzo. Senza quel controllo chiunque potrebbe far sparire il
messaggio di un altro dalla vista di chi legge.
* Correzioni tecniche invisibili: una normale risposta "articolo non
trovato" non viene piu' scambiata per una connessione caduta
(difetto della 1.2.13, costava una riconnessione inutile); un
server indicato con l'indirizzo IP non produce piu' un errore
incomprensibile; cambiando gli interruttori di sicurezza viene ora
chiusa subito la connessione aperta con le impostazioni
precedenti.
---
*** VERSIONE 1.2.14 ***
Novita' di questa versione:
* VERIFICA DEL NOME HOST NELLE CONNESSIONI CIFRATE (TLS). Fino alla
1.2.13 il traffico verso il server era cifrato, ma nessuno
controllava che il certificato presentato appartenesse davvero
all'indirizzo richiesto: una rete ostile poteva mettersi in mezzo
e leggere tutto, credenziali comprese, senza che l'app se ne
accorgesse. Ora il controllo c'e', su entrambe le strade (TLS
implicito e STARTTLS), come lo fa un browser.
* Se un server ha il certificato configurato male, la connessione
fallisce con un messaggio esplicito che dice cosa e' successo e
dove intervenire, non con un errore di rete generico.
* Nuovo interruttore "Consenti certificati non verificabili"
(Manutenzione -> Sicurezza), SPENTO di default e con avviso in
rosso: chi sa che il proprio provider ha il certificato messo
male puo' collegarsi lo stesso. E' globale, non per-server, sul
modello gia' usato dalla 1.2.6 per l'autenticazione non cifrata.
* Questa versione esce DA SOLA, di proposito: e' l'unica correzione
dell'audit di sicurezza che puo' far smettere di funzionare una
configurazione che oggi funziona. Se dopo l'aggiornamento un
server non si connette piu', la causa e' senza ambiguita' questa
e la cura e' l'interruttore qui sopra.
---
*** VERSIONE 1.2.13 ***
Novita' di questa versione:
* Niente piu' errore di rete al posto del corpo di un messaggio
passando in fretta da uno all'altro. La connessione tenuta aperta
per la lettura veniva lasciata cadere dal server mentre si
leggeva, e il primo comando dopo la pausa finiva nel vuoto: ora,
se un errore di rete capita su una connessione RIUSATA, questa
viene buttata e il messaggio riletto una volta con una
connessione nuova, in silenzio. Diagnosticato col log della
Diagnostica NNTP.
* User-Agent precompilato nelle identita' NUOVE (richiesta di
Merovingio): il campo nasceva vuoto su un'app appena installata,
quindi chi non lo compilava postava anonimo senza averlo scelto.
Ora contiene %nereo%, che all'invio diventa nome e versione in
uso (e resta aggiornato da solo ad ogni release). Chi vuole
restare anonimo lo svuota: le identita' GIA' ESISTENTI non
vengono toccate.
* La verifica del nome host nelle connessioni cifrate slitta alla
1.2.14: resta l'unica correzione che esce da sola.
---
*** VERSIONE 1.2.12 ***
Novita' di questa versione:
* Giro di irrobustimento generale, nato da un audit di sicurezza su
tutto il codice. NeReO regge senza scomporsi articoli e risposte
del server malformati o costruiti apposta: messaggi fuori misura,
intestazioni con a-capo infilati dentro, catene References
abnormi, immagini Face anomale, ripristini da file di backup
manomessi. Nell'uso normale non cambia nulla - sono difese che si
notano solo quando qualcosa prova ad approfittarne.
* "Sostituisci (supersede)..." compare ora solo sui PROPRI
messaggi, e accanto c'e' il nuovo "Ritira dal server
(cancel)...": invia un messaggio di controllo che chiede al
server di ritirare un articolo che hai pubblicato. Molti server
ignorano queste richieste e la propagazione agli altri server non
e' mai garantita: il dialogo di conferma lo dice chiaramente,
invece di lasciartelo scoprire dopo.
* NON inclusa qui: la verifica del nome host nelle connessioni
cifrate. E' l'unica correzione che puo' far smettere di
funzionare una configurazione che oggi funziona (capita che un
provider presenti un certificato con nome non combaciante),
quindi esce da sola nella versione successiva - cosi', se
qualcosa non si connette piu', si sa subito di chi e' la colpa.
---
*** VERSIONE 1.2.11 ***
Novita' di questa versione:
* Aggiornata la libreria del database interno (Room) da 2.6.1 a
2.8.4: tentativo di correzione a monte del raro crash CursorWindow
del Dato 5 (vedi versione 1.2.10 qui sotto). La 2.8.4 include due
correzioni ufficiali su corse fra Flow di lettura e scritture
concorrenti, la stessa categoria di quel crash - non e' una
conferma della causa esatta, resta un'ipotesi verificata solo in
parte, e le difese gia' introdotte nella 1.2.10 restano attive
comunque, come rete aggiuntiva. Nessun cambiamento visibile
all'utente.
* Estesa la stessa difesa (elenco precedente al posto del crash)
anche alla ricerca testuale, che condivideva lo stesso rischio ma
non era ancora protetta.
---
*** VERSIONE 1.2.10 ***
Novita' di questa versione:
* Elenco articoli piu' robusto: un raro errore di lettura dal
database (IllegalStateException del CursorWindow di Room), che
poteva capitare uscendo da un gruppo mentre un sync scriveva
ancora nuovi messaggi, non manda piu' in crash l'app - ora, se
capita, mostra l'ultimo elenco valido invece di chiudersi. Prima
versione reale a portare questa difesa: era pronta dal 5
settembre, in attesa di un giro di consegna.
* Nuovo interruttore "Aggiorna automaticamente aprendo un gruppo"
(Manutenzione, segnalazione di un tester tramite Marco): entrare
in un gruppo (anche solo rientrando da un articolo appena letto)
lo sincronizzava sempre, senza un modo per disattivarlo - chi si
distraeva leggendo si ritrovava le discussioni lasciate a meta'
mescolate a quelle nuove. Ora si puo' spegnere, tenendo tutto
fermo finche' non si lancia il sync a mano (pulsante/tira giu' per
aggiornare, sempre disponibili). Default acceso: nessun cambiamento
per chi non ne ha bisogno.
---
*** VERSIONE 1.2.9.c ***
Novita' di questa versione:
* Sincronizzazione piu' robusta: eliminata una possibile corsa a
tempo fra il controllo automatico dei nuovi messaggi e altre
sincronizzazioni in corso (manuali o del timer), che poteva
contribuire a un arresto anomalo occasionale - segnalazione dal
collaudo pubblico ancora in indagine (vedi la 1.2.9.b sotto per il
log diagnostico). Non e' una correzione CONFERMATA del crash
specifico (manca ancora una prova diretta), ma un difetto di
concorrenza reale e dimostrato nel codice.
---
*** VERSIONE 1.2.9.b ***
Tre correzioni emerse dal collaudo pubblico della 1.2.9, piu' un nuovo
strumento diagnostico: prima vera nuova versione da compilare e
distribuire agli utenti (le correzioni precedenti erano rimaste "a
versione invariata" perche' la 1.2.9 non era ancora stata pubblicata).
Novita' di questa versione:
* Ricerca: la lista dei risultati non si azzera piu' riaprendo un
risultato (segnalazione di Marco): tornando da un messaggio aperto
dalla ricerca, la query e i risultati restano quelli di prima
invece di ripartire vuoti - prima bisognava rifare la stessa
ricerca ogni volta per raggiungere il risultato successivo.
* "Mostra filtrati" e' ora un audit completo (segnalazione di Marco:
"se sono filtrati perche' mai dovremmo vederli?" -> "per me e' un
audit rotto"): applicando i filtri ai messaggi gia' scaricati,
anche quelli che corrispondono a una regola "Ignora" (non solo
"Elimina del tutto") vengono ora marcati e mostrati in grigio -
prima venivano solo eliminati i secondi, i primi restavano
invisibili all'audit.
* User-Agent vuoto = post davvero anonimo (segnalazione di Marco):
lasciando vuoto il campo User-Agent nell'identita', ora il
messaggio inviato non porta piu' nessuna intestazione User-Agent,
come il testo di aiuto ha sempre promesso - prima veniva comunque
sostituito in silenzio col valore predefinito dell'app.
* Nuovo: registro dell'ultimo arresto anomalo (Manutenzione): se
l'app dovesse mai chiudersi in modo improvviso, l'ultimo crash
viene salvato da solo sul dispositivo - nulla parte
automaticamente. Se capita, copialo o esportalo dalla nuova
sezione "Ultimo arresto anomalo" e mandalo a chi sviluppa: senza
questo, un crash segnalato senza altri dettagli non e'
diagnosticabile.
---
*** VERSIONE 1.2.9 ***
Multi-identita' vera (richiesta di Marco: "un multi utente reale,
come in MesNews e/o NR MOD17 di Piao Hong") piu' il resto della
roadmap NNTP rimasta (voce E), nella stessa release - piano completo
scelto esplicitamente da Marco invece che per gradi. Chiude il gate
verso la 1.3 definitiva, in attesa solo del collaudo su device.
Novita' di questa versione:
* Multi-identita': crea quante identita' vuoi (nome, email, firma,
User-Agent, X-No-Archive, intestazioni personalizzate,
introduzione alla citazione, Face) e assegna ciascuna a un
server preciso - scrivi come "MCSM" su un server e come "TAF" su
un altro, ognuna col proprio indirizzo e la propria Face. Nuove
schermate Identita' (elenco + editor); l'assegnazione a un
server si fa modificando il server. Chi aveva gia' un'identita'
generale o override per-server nelle versioni precedenti se li
ritrova migrati automaticamente, senza dover rifare nulla.
* STARTTLS (RFC 4642): i server rimasti su una porta in chiaro
(di solito 119) possono ora passare a una connessione cifrata
subito dopo la connessione, in alternativa al TLS implicito.
* CAPABILITIES: letto e registrato in diagnostica alla connessione.
* Lettura piu' veloce: leggendo un thread, il corpo degli articoli
riusa la stessa connessione invece di riconnettersi ad ogni
singolo articolo.
* Override per server dell'autenticazione non cifrata: per un
singolo server puoi forzarla sempre consentita o sempre bloccata,
indipendentemente dall'impostazione globale (Manutenzione ->
Sicurezza).
* Backup e ripristino portano ora anche le identita' e le nuove
opzioni per server; i vecchi backup restano leggibili come prima.
* Citazioni molto annidate - soglia numerica (Aspetto, richiesta di
Marco): oltre una certa profondita' (default 8, configurabile fra
6/8/10/12) i ">" ripetuti diventano il numero del livello ("9",
"10", "11"...) invece di allungarsi all'infinito - solo nella
resa a schermo, con stile citazioni "chevron"/"entrambi": il
testo che arriva e quello che parte resta sempre con i ">"
standard, quindi la profondita' si legge correttamente ovunque,
anche in un altro client. Attivo di default.
* Tocca il messaggio per espandere il thread (Aspetto, opzionale,
richiesta di Roxy): in alternativa al pulsante +/- (ingrandito a
48dp minimo per chi mira da lontano, es. TV box col telecomando),
il tocco sul testo del primo messaggio di una discussione con
risposte puo' espanderla/comprimerla invece di aprirla; il
messaggio resta comunque raggiungibile dal menu (tocco
prolungato) -> "Apri". Spento di default.
* Bozze spostate dentro il gruppo (richiesta di Marco): "Bozze" non
e' piu' nel menu principale - si apre dal menu del gruppo a cui
si sta scrivendo, gia' filtrata sulle bozze di quel gruppo (ogni
bozza sa gia' a quale gruppo appartiene). Un interruttore
"Questo gruppo"/"Tutti i gruppi" dentro lo schermo permette di
vedere comunque tutte le bozze insieme, quando serve.
* Swipe verticale: ora passa anche da una discussione all'altra
(segnalazione di Marco): nella lettura, con "solo non letti"
spento lo swipe in fondo/inizio messaggio si fermava zitto
all'ultimo/primo post della discussione invece di proseguire -
diverso da quando "solo non letti" e' acceso, che gia' saltava
alla discussione successiva. Ora lo swipe verticale si comporta
allo stesso modo in entrambi i casi (le frecce singole < >
restano bloccate dentro la discussione corrente, come sempre -
per quello ci sono le doppie frecce).
---
*** VERSIONE 1.2.8 ***
Tappa intermedia fra la 1.2.7 e la futura 1.3 "completa": raccoglie
tutto cio' che era stato preparato come 1.3/1.3.1/1.3.2 durante il
collaudo in solitaria, rinumerato prima di qualunque diffusione piu'
larga - nessuna di quelle versioni e' mai uscita ufficialmente (quei
numeri sono poi stati riusati dalle versioni reali descritte piu' in
alto: sono omonimi, non le stesse build). La
1.3 vera arrivera' solo quando anche il resto della roadmap NNTP
(CAPABILITIES, STARTTLS, pool di connessioni, override
auth-non-cifrata per-server) sara' completato o scartato.
Novita' di questa versione:
* Barra di lettura personalizzabile: in Aspetto -> "Personalizza
barra di lettura" scegli quali icone mostrare nella barra bassa
della lettura e in che ordine (interruttore mostra/nascondi +
frecce su/giu', comode anche col telecomando dei TV box).
* Aggiornamento selettivo: l'icona di aggiornamento ora apre un menu
- "Aggiorna tutto" (come prima) oppure "Scegli quali server
aggiornare". Sull'intestazione di ogni server un menu simile
permette di aggiornare solo quel server o solo alcuni suoi
gruppi, invece di scaricare sempre tutto. In tablet/pannelli e'
disponibile il livello server.
* Lettura a tutto schermo nei pannelli (tablet): mentre leggi, una
nuova icona nasconde temporaneamente le colonne gruppi e
discussioni per concentrarti sul testo; si richiude da sola
uscendo dall'articolo.
* Cerca/Condividi sul testo selezionato: selezionando del testo in
un articolo, oltre a Copia e Seleziona tutto compaiono anche
Cerca (ricerca web) e Condividi. "Traduci" e' stato scartato
DEFINITIVAMENTE (dipenderebbe da un gestore non garantito su ogni
device).
* Controllo aggiornamenti a quattro modalita': in Manutenzione ->
Aggiornamenti scegli fra Mai / Una volta al giorno / Ogni 4 ore /
Ad ogni apertura. Sotto il selettore compare sempre "Ultimo
controllo: ..." cosi' si vede che il controllo funziona anche
quando non trova nulla di nuovo (nessun avviso in quel caso, solo
quel testo).
* Corretto un bug: il vecchio limite "una volta al giorno" era per
giorno di calendario, non per tempo trascorso - chi apriva l'app
anche una sola volta prima che una nuova versione fosse
pubblicata restava "bloccato" fino al giorno dopo, qualunque
numero di volte riaprisse l'app nel frattempo.
* Diagnostica NNTP potenziata (Bingo3331 + HAL): col log NNTP acceso
(Manutenzione -> Diagnostica), ora si registra anche un riepilogo
di ogni risposta OVER/XOVER (righe ricevute, numeri mancanti,
duplicati), i tempi di ogni comando, e un'intestazione/piede per
ogni sessione NNTP - pensato per capire i buchi nel backfill di
provider come Astraweb.
* Nuova diagnostica manuale "Diagnostica LISTGROUP...": chiede al
server l'elenco vero degli articoli di un gruppo e lo confronta
con l'ultimo riepilogo overview; sui numeri assenti, verifica con
STAT se esistono davvero - distingue un buco nel database
overview del server da un articolo davvero scaduto o cancellato.
---
*** VERSIONE 1.2.7 ***
Novita' di questa versione:
* Connessione non sicura: se un server rifiuta la password su una
connessione non cifrata, ora compare un avviso chiaro con due
scelte - "Passa a SSL" (consigliato) oppure "Consenti non cifrata"
(sconsigliato). Niente piu' fallimento muto per chi e' alle prime
armi. L'avviso non compare durante il controllo automatico a
intervalli, solo quando aggiorni tu.
* Risposta ai crosspost: nuova opzione in Manutenzione per rispondere
di default a TUTTI i gruppi dell'originale invece del solo gruppo
corrente (spenta di default; puoi comunque scegliere caso per caso).
* Vista continua: un separatore piu' spesso segna ora l'inizio di
ogni nuova sotto-discussione, cosi' si distinguono a colpo d'occhio.
---
*** VERSIONE 1.2.6 ***
Novita' di questa versione:
* Sicurezza: la password non viene piu' inviata su una connessione
non cifrata (viaggerebbe in chiaro - RFC 4643 lo vieta). Se hai
davvero un vecchio server che lo richiede, puoi consentirlo
consapevolmente in Manutenzione -> Sicurezza. Preferisci sempre la
porta SSL (di solito 563).
* "Controlla aggiornamenti" ora e' anche nel menu principale, accanto
a Informazioni e Novita' - niente piu' trafila in Manutenzione.
* Vista a pannelli: menu a tre punti su ogni post, con il plonk
dell'autore. Prima bisognava passare alla vista a schermo intero.
* Vista a pannelli: si possono riordinare i gruppi anche qui (icona
"riordina" in cima alla colonna gruppi), non piu' solo a schermo
intero.
* Il backup ora salva l'ordine dei gruppi: al ripristino non torna
piu' tutto in ordine alfabetico.
* Vista Intestazioni piu' pulita: il lungo codice base64 di
Face/X-Face non viene piu' mostrato (la faccina resta accanto
all'autore).
* Muta citazioni: un nuovo pulsante nasconde il testo citato con un
tocco, cosi' resta in evidenza solo il messaggio nuovo (un tocco sul
segnaposto lo rimostra). Icona "virgolette" nella barra di lettura e
nelle intestazioni dei pannelli.
* Vista a pannelli: nel pannello di lettura lo swipe su/giu' salta al
post non letto successivo/precedente della discussione (se non ce ne
sono, al post seguente/precedente) - come sul telefono.
---
*** VERSIONE 1.2.5 (correzioni) ***
Novita' e correzioni di questa versione:
* Vista continua: aprendo un thread lungo non vengono piu' segnati
come letti in blocco i messaggi successivi al selezionato. Ora si
marca letto solo cio' che appare davvero sotto gli occhi: il
messaggio scelto all'apertura, e poi ogni messaggio man mano che lo
porti in cima scorrendo.
* Vista continua: i gruppi del crosspost sono ora mostrati (in rosso)
su ogni post, non solo nella vista a singolo articolo.
* Con il filtro "solo non letti" attivo, se non c'e' nulla da leggere
l'elenco ora dice "Nessun messaggio da leggere" invece di "Nessun
messaggio".
* Controllo aggiornamenti: NeReO puo' avvisare quando c'e' una
versione piu' recente su SourceForge (automatico una volta al
giorno, disattivabile in Manutenzione, piu' un pulsante manuale).
Solo avviso e link: l'app non scarica ne' installa nulla da se'.
---
*** VERSIONE 1.2.4 (correzioni) ***
Novita' e correzioni di questa versione:
* Riflusso testo: ora unisce anche le righe "orfane" di una-due
parole rimaste in mezzo a un capoverso. Prima, anche col riflusso
attivo, qualche riga corta (una "e" o una "è" da sola) restava
isolata perche' l'euristica precedente la scambiava per un a-capo
voluto. Ora restano su riga propria solo etichette, saluti e frasi
brevi che finiscono con punteggiatura (. , : ; ! ? ...). Spento di
default; solo in lettura.
---
*** VERSIONE 1.2.3 (correzioni) ***
Novita' e correzioni di questa versione:
* Vista ad albero: i messaggi che aprono una discussione non
risultano piu' "gia' letti" quando non lo sono. Il colore segue
ora lo stato reale del post, in accordo con "vai al prossimo non
letto".
* Vista continua: rispondendo a un messaggio crosspostato ora
compare l'avviso per scegliere in quali gruppi rispondere, come
nella vista a singolo articolo. Prima la risposta finiva solo nel
primo gruppo, senza avviso.
* Vista continua: aprendo piu' messaggi non letti non compare piu'
"Error: connection reset" al posto del testo. I corpi si scaricano
una richiesta per volta, invece di aprire tante connessioni insieme.
* Vista a pannelli: l'aggiornamento usa di default l'icona in cima
alla colonna; lo swipe "tira giu'" non ruba piu' il primo
scorrimento verso l'alto. Lo swipe resta riattivabile in Aspetto.
Sul telefono nulla cambia.
* Riflusso testo: ora agisce anche sui post che vanno a capo stretto
(intorno alle 38-40 colonne), che prima venivano ignorati del tutto
e restavano con parole orfane. Sempre spento di default; solo in
lettura.
* Vista continua: aprendo un thread su un messaggio in mezzo, i
messaggi in testa che vengono solo attraversati all'apertura non
vengono piu' segnati come "letti". La marcatura vale dal messaggio
scelto in giu', non su cio' che scorre via all'apertura.
---
*** VERSIONE 1.2.2 (correzioni) ***
Novita' e correzioni di questa versione:
* Nuova opzione "Riflusso testo" (Aspetto): ricompone i capoversi
spezzati dall'a-capo classico a 72 colonne, cosi' i post si leggono
ordinati su schermo stretto invece di mostrare righe orfane di una
o due parole. Spenta di default; solo in lettura.
* Aggiornamento molto piu' veloce: una sola connessione per server
invece di una per ogni gruppo (con molti gruppi la differenza si
sente). La striscia col numero di nuovi messaggi ora compare anche
premendo l'icona di aggiornamento, non solo col "tira giu'".
* Vista a pannelli (tablet): nella vista continua la terza colonna
segue ora lo stesso ordine-albero della colonna centrale (non piu'
per data). Scrivendo un post l'editor si apre a tutto schermo, cosi'
la tastiera non copre piu' l'area di scrittura in orizzontale.
* Vista a pannelli (tablet/orizzontale): selezionando un messaggio
dall'albero ora si posiziona di nuovo correttamente in cima e ci
resta (nella 1.2 poteva finire in un punto casuale).
* Il cerchietto "aggiorna" non resta piu' appeso in cima all'albero:
lo scorrimento torna immediato.
* Connessioni SSL/TLS: aggiunto il timeout di lettura che mancava,
cosi' una connessione cifrata che si blocca non lascia l'app in
attesa infinita.
---
*** VERSIONE 1.2 ***
Novita' di questa versione:
* Compatibilita' server: alcuni provider (Astraweb tra questi)
rifiutano il comando OVER usato per scaricare le intestazioni e
la sincronizzazione si fermava. Ora NeReO ripiega automaticamente
su XOVER, cosi' quei server tornano a funzionare.
* Plonk esteso alle risposte: una regola su "da" puo' nascondere
anche le risposte al post filtrato e l'intero ramo sottostante,
chiunque le abbia scritte (reversibile: togli la regola e tornano).
* Parita' su tablet: nella vista a pannelli ci sono ora le
intestazioni complete e il ROT13, e si raggiungono anche le Bozze.
La vista continua si apre gia' posizionata sul messaggio scelto.
* Gruppi: tieni premuto un gruppo per scaricare in un colpo solo i
corpi mancanti degli ultimi 300 messaggi. "Segui la discussione"
ora vale per l'intero thread; i tuoi post sono riconosciuti anche
con le identita' per-server.
* Dopo l'invio di un post: conferma "Messaggio inviato" e refresh
automatico del gruppo, cosi' il proprio messaggio compare senza
ricaricare a mano (appena il server lo rende disponibile).
* Backup completo (identita' per-server, tutte le impostazioni e le
discussioni seguite; ripristino compatibile coi backup vecchi).
* Diagnostica NNTP in Manutenzione: registra il dialogo col server
(password sempre oscurata) per risolvere piu' in fretta i casi
strani. Spenta di default.
* Correzioni: barra icone in basso a due righe sugli schermi
stretti; via un errore spurio che compariva scorrendo veloce.
Per il resto restano le funzioni complete della 1.1. L'interfaccia
e' disponibile in italiano e in inglese.
======================================================================
=============
COS'E' NeReO
=============
NeReO e' un lettore di newsgroup Usenet per Android, dedicato alle
discussioni testuali.
Niente gruppi binari, niente allegati, niente pubblicita', niente
telemetria: solo messaggi e conversazioni, come Usenet e' sempre stata.
E' software libero, rilasciato con licenza GNU GPL v3 o successiva.
===================
LINGUA INTERFACCIA
===================
NeReO segue automaticamente la lingua del telefono:
* telefono in italiano -> interfaccia in italiano
* qualunque altra lingua -> interfaccia in inglese
Se preferisci una lingua diversa da quella del telefono, puoi
impostarla solo per NeReO, senza toccare il resto del sistema, in
due modi:
* dentro l'app: Aspetto -> Lingua
* dal sistema: Impostazioni -> App -> NeReO -> Lingua
(solo Android 13 e successivi)
Su Android 13 e successivi le due strade comandano la stessa scelta.
Su Android 12 e precedenti la voce di sistema non esiste: in quel
caso si cambia lingua dall'interruttore dentro l'app.
Sono previste soltanto queste due lingue.
==============
COSA SA FARE
==============
LETTURA
* Tre modi di vedere le discussioni: ad albero, sequenziale, oppure
raggruppate per thread.
* Vista continua: tutti i messaggi di una discussione uno sotto
l'altro, con salto diretto al messaggio scelto nell'albero.
* Citazioni a colori per livello, con possibilita' di accorciarle.
* Face (l'avatar storico di Usenet) mostrata accanto all'autore.
* ROT13, intestazioni complete, albero della conversazione.
* Navigazione con gesti: scorri per passare al messaggio o alla
discussione successiva.
* Indicazione delle risposte ai tuoi messaggi, con salto diretto
alla prima non letta.
SCRITTURA
* Risposte con citazione in quattro modalita', compresa la citazione
ridotta e la rifinitura riga per riga.
* Crosspost: risposte e nuovi thread su piu' gruppi.
* Firma con varianti a rotazione e segnaposto automatici.
* Identita' diversa per ogni server, se serve.
* Bozze salvate localmente.
ORGANIZZAZIONE
* Filtri con azioni chiare (Ignora, Elimina, Evidenzia, Segui il
thread) oppure a punteggio per chi vuole il controllo fine.
Applicabili anche ai messaggi gia' scaricati.
* Plonk autore con un tocco.
* Ricerca per messaggio o per discussione.
* Conservazione automatica: per tempo o per numero di discussioni,
impostabile gruppo per gruppo.
* Backup e ripristino della configurazione, con cifratura opzionale.
ASPETTO
* Tema chiaro, scuro o automatico; colori dinamici Material You.
* Dieci tinte per l'interfaccia, sei dimensioni di testo.
* Layout a pannelli per tablet e schermi larghi, con proporzioni
regolabili.
CONNESSIONE
* NNTP con autenticazione, SSL/TLS su porta dedicata.
* Fallback automatico IPv6/IPv4.
======================
PRIMA CONFIGURAZIONE
======================
1. Apri il menu (tre puntini in alto a destra) e scegli "Server",
poi il "+" in basso.
Puoi partire da un server noto o inserirne uno a mano.
Esempio gratuito: news.eternal-september.org, porta 563, SSL
(richiede registrazione gratuita sul loro sito).
2. Sempre dal menu, apri "Identita' e firma" e inserisci nome ed
e-mail con cui vuoi comparire nei gruppi.
3. Torna all'elenco e tocca il "+" in basso per sfogliare i gruppi
disponibili sul server e sottoscrivere quelli che ti interessano.
4. Tocca un gruppo per scaricarne i messaggi.
======================
NOTE DI INSTALLAZIONE
======================
* Se stai aggiornando da una versione precedente, installa l'APK
sopra quella esistente: NON disinstallare prima, o perderai gruppi,
letture e impostazioni.
* Se il telefono blocca l'installazione, autorizza le origini
sconosciute per l'app da cui apri il file.
* Requisiti: Android 8.0 o successivo.
==============
SEGNALAZIONI
==============
Per una segnalazione utile bastano tre cose:
* cosa stavi facendo quando e' successo;
* uno screenshot, se il problema si vede;
* il blocco da Informazioni -> Dati tecnici (c'e' un tasto Copia).
================
STORICO VERSIONI
================
1.2.7 Avviso "connessione non sicura" con due scelte (passa a SSL /
consenti non cifrata) quando un server rifiuta l'auth in
chiaro. Opzione: rispondi ai crosspost su tutti i gruppi per
default. Vista continua: separatori piu' spessi a inizio
sotto-discussione.
1.2.6 Sicurezza: niente password su connessione non cifrata
(override consapevole in Manutenzione). "Controlla
aggiornamenti" nel menu principale. Vista a pannelli: menu
plonk per-post e riordino gruppi. Il backup salva l'ordine
dei gruppi. Codice Face/X-Face nascosto nelle Intestazioni.
Muta citazioni con un tocco. Vista a pannelli: swipe su/giu'
al post non letto successivo/precedente.
1.2.5 Vista continua: la marcatura "letto" segue cio' che vedi
davvero (solo il messaggio in cima, mentre scorri), non l'intera
schermata di segnaposto. Gruppi crosspost su ogni post in vista
continua. Stato vuoto "Nessun messaggio da leggere". Controllo
aggiornamenti su SourceForge (disattivabile, solo avviso + link).
1.2.4 Riflusso testo: unisce anche le righe "orfane" di una-due
parole rimaste in mezzo a un capoverso (restano a se' solo
etichette, saluti e frasi brevi che finiscono con
punteggiatura).
1.2.3 Vista ad albero: i messaggi che aprono una discussione non
risultano piu' sempre "letti" (il colore segue lo stato
reale). Vista continua: ripristinato l'avviso crosspost in
risposta; niente piu' "connection reset" sui corpi (una
richiesta per volta). Vista a pannelli: icona di aggiornamento
come default, swipe "tira giu'" opzionale (Aspetto). Riflusso
testo esteso agli autori a impaginazione stretta (~38-40 col).
Vista continua: la marcatura "letto" vale solo dal messaggio
scelto in giu' (niente piu' capi-thread letti solo perche'
attraversati all'apertura).
1.2.2 Nuova opzione "Riflusso testo" (ricompone i capoversi a 72
colonne). Aggiornamento piu' veloce (una connessione per
server invece che per gruppo); striscia conteggio anche
sull'icona.
Posizionamento del messaggio nella vista a pannelli
(regressione landscape); cerchietto "aggiorna" non piu'
appeso in cima all'albero; timeout di lettura SSL/TLS.
1.2 Compatibilita' server (ripiego OVER->XOVER: risolve Astraweb
e simili). Plonk esteso alle risposte. Parita' su tablet:
intestazioni, ROT13 e Bozze nella vista a pannelli; vista
continua posizionata. "Scarica corpi (ultimi 300)" tenendo
premuto un gruppo. "Segui la discussione" sull'intero thread;
identita' per-server riconosciute. Backup completo.
Diagnostica NNTP in Manutenzione. Barra icone a due righe.
Conferma "inviato" e refresh automatico dopo un post.
1.1 Cambio lingua dentro l'app (Aspetto -> Lingua). Rete di
sicurezza del database: copia automatica e avviso prima di
un eventuale azzeramento per schema incompatibile.
1.0 Prima versione stabile. Interfaccia in italiano e inglese.
1.0-RC01 Release candidate: traduzione completa dell'interfaccia.
beta20 Risolti tre crash (gruppi molto grandi, schermata vuota col
tasto indietro, finestre di conferma). Filtri applicabili ai
messaggi gia' scaricati; elimina discussione; salto alle
risposte ai propri post; chiudi applicazione; correzioni a
vista continua, tastiera e citazione ridotta.
beta19 Citazione ridotta corretta; maiuscola automatica; elenco
gruppi scaricato per intero; conservazione per numero di
discussioni.
beta18 Risposte ai propri post evidenziate; vista continua del
thread; filtri con azioni al posto dei punteggi; crosspost
su nuovo thread.
beta17 Risposta ai crosspost scegliendo i gruppi; fallback
IPv6/IPv4.
beta16 Correzioni al layout orizzontale e all'interfaccia.
beta14-15 Intestazioni complete; Face affidabili; rifinisci citazione.
beta11-13 Ricerca; riordino gruppi; crosspost; splashscreen.
beta7-10 Da MyNewsReader a NeReO; bozze; identita' multiple.
beta1 Primo rilascio.
===============
RINGRAZIAMENTI
===============
NeReO e' arrivato fin qui grazie a chi lo ha provato pazientemente
versione dopo versione, segnalando difetti, proponendo funzioni e
insistendo quando qualcosa non convinceva.
Un grazie particolare a Roxy, Bingo3331, Big Umberto, rpoggi, Paul,
Dave Royal, Alessandro, John (n2n), Macchia, Allen e il Merovingio:
molte delle cose che oggi funzionano bene esistono perche' qualcuno
si e' preso la briga di spiegare con precisione cosa non andava.
Il progetto nasce dal MOD 17 di Newsreader di Piao Hong, di cui
riprende l'impostazione dell'interfaccia.
Usenet Still Lives!
===================
MCSM (aka Marco)