• v0.1.4 b3cc80f0e0

    v0.1.4
    All checks were successful
    release / server-image (push) Has been skipped
    ci / server (push) Successful in 12s
    ci / desktop-ts (push) Successful in 29s
    ci / desktop-rust (push) Successful in 3m30s
    Stable

    ahitosly released this 2026-09-10 16:50:31 +02:00 | 7 commits to main since this release

    Changed

    • desktop : bouton « Se déconnecter » déplacé en bas de la page Compte des Settings (demande directe de l'humain) (T-129)

    Added

    • desktop : mode de déclenchement « Basculer », en plus du push-to-talk existant (ADR-016) — Settings › Général propose un sélecteur de mode (une seule carte affichée à la fois, mode au-dessus) ; en mode Basculer, une touche dédiée (toggle_hotkey, défaut Control seul sur macOS, Alt+K sur les autres OS, configurable via capture clavier) démarre l'enregistrement après un nombre d'appuis rapprochés configurable (2 à 4, défaut 2), et un seul appui l'arrête. Tab/Esc inchangés (agent/annuler) quel que soit le mode. Nouveaux champs hotkey_mode/toggle_hotkey/toggle_tap_count sur AriaConfig, rétrocompatibles avec un store existant. Défaut différent sur Windows/Linux : un modificateur seul ne s'y enregistre pas via global-hotkey (revue de code, PR #119) — l'échec de registration y est désormais loggué plutôt que silencieux (T-128)
    • desktop : blocs de code plus larges + coloration syntaxique dans la fenêtre agent (AgentWindow.tsx) — une bulle contenant un bloc de code (y compris un tableau ASCII envoyé comme du code par Hermes, cas réel qui a déclenché cette tâche) s'élargit désormais jusqu'à min(100%, 900px) au lieu de rester plafonnée à 85% de la bulle ; fenêtre agent par défaut élargie en cohérence (tauri.conf.json, 720×620 → 860×640). Nouveau plugin rehype maison src/agent/highlightPlugin.ts::rehypeAgentHighlight (19 langages plausibles pour un agent de code, src/agent/highlightLanguages.ts) colore les blocs de code annotés d'un langage — rehype-highlight essayé en premier puis écarté après mesure réelle (bundle agent +178 kB brut/+54 kB gzip quel que soit le sous-ensemble de langages demandé, à cause d'un import interne non tree-shakable ; le plugin maison ramène le coût à +107 kB/+33 kB gzip pour le même résultat). Palette .hljs-* définie dans src/styles/tokens.css à partir des tokens --aria-* existants (clair/sombre), pas un thème highlight.js importé tel quel. Passe esthétique explicitement reportée en T-106/T-108 puis redemandée par l'humain avec cet exemple concret (T-126)
    • desktop : persistance locale de l'historique de la fenêtre agent (AgentWindow.tsx) — nouveau src/agent/historyStore.ts (tauri-plugin-store, agent-history.json) sauvegarde/restaure les turns pour survivre à une vraie destruction de fenêtre ou un redémarrage de l'app (crash, Cmd+Q), pas seulement à un close/reopen (déjà géré depuis T-107). Restauration bornée à 2h (HISTORY_TTL_MS, miroir de la fenêtre de continuité Hermes, ADR-012) ; Esc efface aussi l'historique persisté. Persistance côté client uniquement (règle 6 CLAUDE.md), aucun changement de contrat/schéma. Piste écartée : lire l'historique directement depuis l'API Hermes (GET /v1/responses/{id} ne renvoie que le tour final ; les « sessions » Hermes sont un mécanisme distinct qu'Aria n'utilise pas, y basculer changerait le contrat serveur, hors scope) (T-124)
    • server/desktop : écrire directement à l'agent (T-121) — POST /v1/agent(/stream) accepte un nouveau champ text (form field) qui remplace audio (désormais optionnel) et saute l'étape STT ; côté client, icône ⌨️ en bas de la fenêtre agent (AgentWindow.tsx) révèle un champ + bouton Envoyer, même flux /v1/agent/stream que la voix. Contrat régénéré (audio optionnel, text ajouté) — PR laissée en review, approbation humaine requise avant merge (CLAUDE.md règle 1/3b)

    Fixed

    • server : /v1/agent/stream restait bloqué indéfiniment côté client après ~50s en usage réel derrière le reverse proxy déployé — un timeout d'inactivité (idle timeout, distinct du buffering déjà traité en T-104) coupait la connexion SSE dès qu'Hermes mettait plus de temps que ce timeout à produire son premier octet utile (typiquement un tool call en cours), alors que Hermes finissait bien de répondre de son côté. pipeline/agent.py::_stream_with_keepalive émet désormais une ligne de commentaire SSE (: keep-alive\n\n) toutes les agent_stream_keepalive_s secondes (15 s par défaut) sans nouvel événement, réinitialisant tout timeout d'inactivité intermédiaire ; aucun changement de contrat (transport-level, pas un nouveau type d'événement) ni côté client (le parseur SSE desktop ignorait déjà toute frame sans data:, confirmé par un test dédié) (T-125)

    Fixed

    • desktop (macOS) : icône Aria visible dans le Dock en plus du system tray, alors que Info.plist déclare LSUIElement=true depuis le tout premier commit — cause confirmée par lecture des sources vendues (tao/tauri/tauri-runtime-wry) : tao initialise sa politique d'activation à Regular par défaut et l'applique sans condition à chaque lancement (applicationDidFinishLaunching), indépendamment de Info.plist. Corrigé par app.set_activation_policy(tauri::ActivationPolicy::Accessory) dans lib.rs::setup() (API officielle Tauri, un seul appel suffisant — pas de repromotion dynamique au focus des fenêtres constatée dans le code) (T-127)

    Removed

    • desktop : champ « Modèle (optionnel) » retiré du formulaire de profil (ProfileForm, profil par défaut et profils par application, Settings › Applications) — l'utilisateur ne peut plus choisir le modèle de réécriture depuis le client (T-122)
    • desktop : encart « Style de base du serveur » retiré de Settings › Applications (affichage brut du prompt de base, jugé peu lisible) — l'endpoint GET /v1/prompts/base (T-101) et la commande Tauri associée restent en place côté serveur/Rust, simplement plus appelés depuis le client (T-123)
    • desktop : bandeau d'en-tête de la fenêtre agent (pastille de statut + « Agent »/« Agent — en cours… ») retiré (AgentWindow.tsx), demande directe de l'humain — l'état busy sous-jacent reste utilisé ailleurs (désactive la barre de saisie, T-121) (T-127)
    Downloads