-
v0.1.4
Stablereleased this
2026-09-10 16:50:31 +02:00 | 7 commits to main since this releaseChanged
- 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éfautControlseul sur macOS,Alt+Ksur 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/Escinchangés (agent/annuler) quel que soit le mode. Nouveaux champshotkey_mode/toggle_hotkey/toggle_tap_countsurAriaConfig, rétrocompatibles avec un store existant. Défaut différent sur Windows/Linux : un modificateur seul ne s'y enregistre pas viaglobal-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 maisonsrc/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-highlightessayé en premier puis écarté après mesure réelle (bundleagent+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 danssrc/styles/tokens.cssà partir des tokens--aria-*existants (clair/sombre), pas un thèmehighlight.jsimporté 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) — nouveausrc/agent/historyStore.ts(tauri-plugin-store,agent-history.json) sauvegarde/restaure lesturnspour 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) ;Escefface 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 champtext(form field) qui remplaceaudio(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/streamque la voix. Contrat régénéré (audiooptionnel,textajouté) — PR laissée enreview, approbation humaine requise avant merge (CLAUDE.md règle 1/3b)
Fixed
- server :
/v1/agent/streamrestait 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 lesagent_stream_keepalive_ssecondes (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 sansdata:, 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.plistdéclareLSUIElement=truedepuis le tout premier commit — cause confirmée par lecture des sources vendues (tao/tauri/tauri-runtime-wry) :taoinitialise sa politique d'activation àRegularpar défaut et l'applique sans condition à chaque lancement (applicationDidFinishLaunching), indépendamment deInfo.plist. Corrigé parapp.set_activation_policy(tauri::ActivationPolicy::Accessory)danslib.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'étatbusysous-jacent reste utilisé ailleurs (désactive la barre de saisie, T-121) (T-127)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads