Causa (il "solito" problema dei progetti Sailfish): QSettings di default
scrive in ~/.config/harbour/hermes.conf, FUORI dalla directory che la
sandbox SailJail rende persistente (~/.config/harbour/hermes/). Dal
launcher le modifiche finivano in una vista effimera e sparivano a ogni
riavvio; da terminale invece restavano (da qui l'effetto "a volte si' a
volte no"). Stesso problema gia' risolto in harbour-calibreweb e
harbour-quill con il percorso esplicito.
- Settings: QSettings(configPath(), IniFormat) con configPath() =
AppConfigLocation + "/hermes.conf" (mkpath della directory)
- store(): ogni setter fa setValue + sync immediato (nessuna modifica
persa se il sistema termina l'app)
- migrateIfNeeded(): al primo avvio importa i valori rimasti nel vecchio
percorso di default (~/.config/harbour/hermes.conf, piu' i path legacy
nemo/defaultuser)
- diagnostica: log del file impostazioni e dei valori letti all'avvio
- core-test: test di persistenza (scrittura con una istanza, rilettura
con una SECONDA istanza: prova che passa dal file su disco)
- src/markdown.{h,cpp}: convertitore minimale, due funzioni:
* toRichText() -> HTML per QML Text.RichText: grassetti (**x**/__x__),
corsivi (*x*/_x_ con confini di parola per non toccare snake_case),
titoli (#), liste (-/1.), citazioni (>), codice (`x` e blocchi ```,
in monospace), link [t](u) -> solo testo, barrato ~~x~~; escape di
< & > contro injection nel rich text
* toSpeech() -> testo piatto per il TTS: via recinti di codice, marcatori
di titoli/liste/citazioni, enfasi, backtick; link/immagini -> testo;
tabelle | a | b | -> "a, b"; righe vuote compattate
- ChatModel: nuovo ruolo contentRich (calcolato in C++, testabile);
incluso nei dataChanged dello streaming
- ChatPage: le bolle dell'assistente usano contentRich con
textFormat: Text.RichText; i messaggi utente restano testo semplice
- ApiClient::speak(): il testo passa da Markdown::toSpeech (niente più
simboli di formattazione letti ad alta voce)
- core-test: 19 casi nuovi per il convertitore (tutti locali, senza device)
Verificato: build zero warning + unit test completi.