Name: harbour-hermes Summary: Client for the Hermes Web UI with voice Version: 0.5.0 Release: 1 Group: Qt/Qt License: MIT URL: https://git.hackatoniclife.com/kaneda/harbour-hermes Source0: %{name}-%{version}.tar.gz Source1: %{name}.desktop Requires: sailfishsilica-qt5 >= 0.10.9 BuildRequires: pkgconfig(sailfishapp) >= 1.0.2 BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5Qml) BuildRequires: pkgconfig(Qt5Quick) BuildRequires: pkgconfig(Qt5Network) BuildRequires: pkgconfig(Qt5Multimedia) BuildRequires: desktop-file-utils BuildRequires: qt5-qttools-linguist %description Native Sailfish OS client for the Hermes Web UI (hermes-webui). Sessions list, chat with live streaming replies, voice dictation (server-side Whisper transcription) and read-aloud of replies (server-side TTS), plus a hands-free conversation mode. %changelog * Sat Sep 12 2026 Carlo Baratto - 0.5.0-1 - Sezione Sessions nelle Impostazioni: selettore profilo (le sessioni mostrate sono quelle del profilo scelto). Switch per-client via /api/profile/switch con cookie firmato — il profilo attivo globale del server NON viene toccato; elenco profili da /api/profiles; opzione "(attivo sul server)" che rimuove il cookie; reapply del profilo dopo il login * Sat Sep 12 2026 Carlo Baratto - 0.4.0-1 - Localizzazione dell'interfaccia: italiano, inglese (sorgente), francese e tedesco (78 stringhe per lingua); .qm generati con sailfishapp_i18n e installati in /usr/share/harbour-hermes/translations, caricati in base alla lingua di sistema; stringhe C++ in tr(); plurali dei messaggi corretti * Sat Sep 12 2026 Carlo Baratto - 0.3.2-1 - README: nota sui limiti delle voci TTS (allowlist del server; 400 invalid voice) e su come gestirli (voce vuota = default del server) * Sat Sep 12 2026 Carlo Baratto - 0.3.1-1 - Auto-invio dettatura piu' robusto: il testo viene passato esplicitamente (niente rilettura del campo), l'opzione vale "on" salvo disattivazione esplicita, niente focus tastiera prima dell'invio; i rifiuti di invio ora sono visibili (avviso a schermo + log [chat]/[hermes]) * Sat Sep 12 2026 Carlo Baratto - 0.3.0-1 - Nessuna configurazione cablata nel binario: indirizzo server, voce, engine e preset sono impostazioni dell'app (default neutri; vuoto = decide il server); selettori voce/engine costruiti dai preset configurabili; Content-Type audio coerente col formato reale; durata massima registrazione configurabile (vadMaxMs) * Sat Sep 12 2026 Carlo Baratto - 0.2.1-1 - Fix build: rimosso il warning -Wreorder (ordine dell'inizializzazione di m_sessionsModel nel costruttore di ApiClient) * Sat Sep 12 2026 Carlo Baratto - 0.2.0-1 - Modalita' dialogo (voce continua): ascolto con stop automatico sul silenzio (QAudioInput + VAD), trascrizione, invio automatico, lettura della risposta e riascolto in ciclo; pausa e sensibilita' microfono configurabili; la dettatura manuale puo' inviare da sola * Sat Sep 12 2026 Carlo Baratto - 0.1.2-1 - Fix lista sessioni vuota sul device: le QVariantList di mappe non espongono i campi nei delegate su Qt 5.6 -> nuovo SessionsModel (QAbstractListModel con ruoli: session_id/title/message_count/updated_at) - /api/sessions con i parametri della sidebar web (sidebar_source=webui, exclude_hidden=1): solo sessioni WebUI, niente CLI/cron * Sat Sep 12 2026 Carlo Baratto - 0.1.1-1 - Fix pagine non caricabili sul device: TextField.onAccepted inesistente -> EnterKey; Button.highlighted rimosso; ComboBox senza Repeater; Theme.highlightDimmerColor -> Theme.rgba; azioni menu via Page * Sat Sep 12 2026 Carlo Baratto - 0.1.0-1 - Prima release: login alla Web UI di Hermes, lista sessioni, chat con streaming SSE, dettatura vocale (registrazione OGG/Opus -> /api/transcribe), lettura risposte (/api/tts -> QMediaPlayer), nuova sessione, sandbox SailJail (Internet;Audio;Microphone) %prep %setup -q -n %{name}-%{version} %build %qmake5 make %{?_smp_mflags} %install make install INSTALL_ROOT=%{buildroot} mkdir -p %{buildroot}%{_datadir}/applications # Desktop file cercato in modo robusto: sfdk usa i sorgenti live (shadow build) # e la directory sorgente puo' chiamarsi %{name}-%{version} (tarball), # %{name} (clone) o %{name}-main (zip di Gitea); %{SOURCE1} e' il fallback. DESKTOP=$(find %{_builddir}/.. -maxdepth 4 -name '%{name}.desktop' 2>/dev/null | head -1) if [ -z "$DESKTOP" ] && [ -f %{SOURCE1} ]; then DESKTOP=%{SOURCE1}; fi if [ -z "$DESKTOP" ]; then echo "ERROR: %{name}.desktop not found" >&2 exit 1 fi install -m 0644 "$DESKTOP" %{buildroot}%{_datadir}/applications/%{name}.desktop desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop || true %files %defattr(-,root,root,-) %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/86x86/apps/%{name}.png %{_datadir}/icons/hicolor/108x108/apps/%{name}.png %{_datadir}/icons/hicolor/128x128/apps/%{name}.png %{_datadir}/icons/hicolor/172x172/apps/%{name}.png %{_datadir}/%{name}/qml %{_datadir}/%{name}/translations