Agent Orchestrator 0.12.0
80 commit dalla 0.11.2. L'app desktop ora parla otto lingue, poggia su una nuova palette di colori e ti permette di fissare le sessioni e scegliere un reviewer per ogni sessione. L'app mobile ha ricevuto i temi e la dettatura push-to-talk. I container avviati da una sessione vengono ripuliti quando questa termina.
Copre tutto ciò che è arrivato dopo la v0.11.2.
Gli utenti macOS dovrebbero passare direttamente alla 0.12.1 o a una versione successiva. Questa build perde file descriptor e, dopo qualche ora di utilizzo, rompe la vista Files e la creazione dei task.
La 0.11.0 riguardava fondamenta capaci di reggere il peso. La 0.12.0 è ciò che ci è stato costruito sopra: l'app ora parla otto lingue, barra laterale e impostazioni funzionano come ti aspetteresti, ed è scomparsa una categoria di guasti che poteva cancellare tutte le sessioni dalla board.
Questa release aggiunge nuove funzionalità di prodotto e miglioramenti di affidabilità senza rompere i flussi di lavoro esistenti.
In evidenza
L'app parla otto lingue
L'app desktop ora ha un vero livello di localizzazione, basato su i18next, con la lingua scelta in Settings > General e salvata in ~/.ao/ui-settings.json. Il cinese semplificato è arrivato per primo e copre la cornice della shell, la barra laterale, la board, le impostazioni, le finestre di dialogo, le schede dell'inspector, la command palette e i testi del terminale. Sono seguiti giapponese, coreano, spagnolo, francese, tedesco e portoghese brasiliano, insieme ai README in ciascuna lingua. L'inglese resta la lingua predefinita e di ripiego, così una stringa non tradotta mostra il testo inglese invece di una chiave. (#3465, #3541)
Mobile: temi, sheet nativi e dettatura push-to-talk
L'app mobile non è più solo scura. Include palette chiara e scura e una preferenza "sistema" che continua a seguire il sistema operativo invece di bloccarsi su quanto letto all'avvio, con la struttura dell'app ricostruita su sheet nativi e la board delle sessioni suddivisa in base al runtime terminato anziché allo stato completato.
Ha anche la dettatura push-to-talk. Tieni premuto il tasto del microfono nel composer per parlare, rilascia per inserire il testo, oppure scorri verso l'alto per bloccarlo e usarlo a mani libere. Il riconoscimento avviene sul dispositivo (iOS SFSpeechRecognizer, Android SpeechRecognizer), quindi non servono chiavi API né ci sono costi al minuto, ed è orientato al vocabolario di cui sono pieni i prompt per gli agenti, così ottieni "git" e "npm" invece di "get" e "MPM". La trascrizione arriva nel composer come bozza modificabile invece di essere inviata, perché il riconoscimento vocale fraintende il codice abbastanza spesso da rendere poco sicuro un invio silenzioso. Le registrazioni successive si accodano, così più pressioni costruiscono un unico prompt.
In più, un'icona dell'app in Liquid Glass coerente con la build desktop e una correzione della porta LAN predefinita, che puntava alla porta del daemon riservata al loopback invece che al bridge mobile sulla 3011, per cui una nuova installazione non riusciva a connettersi senza modificarla a mano. (#3399, #3400, #3304, #3494)
Una nuova base cromatica
Il renderer è passato a una palette di design token oklch, con Geist come font dell'interfaccia e gli alias di colore shadcn mappati su di essa, sostituendo i valori hardcoded in tutta la libreria di componenti. Lo stato delle sessioni ora ha un'unica palette coerente ovunque compaia: in lavorazione è blu, richiede il tuo intervento è arancione, in review è giallo, pronta è verde. (#3421)
Fissa le sessioni a cui torni sempre
Le sessioni possono essere fissate in una sezione Pinned in cima alla barra laterale, salvata lato server così il fissaggio sopravvive a un riavvio. La barra laterale stessa è diventata comprimibile: Pinned e Projects si possono comprimere singolarmente, e un clic sull'icona della cartella di un progetto lo espande o lo comprime senza doverci prima passare. (#3511, #3310)
Scegli il reviewer per ogni sessione
L'agente reviewer era un'unica impostazione valida per tutto il progetto. Ora puoi sceglierne uno per una singola sessione, ed eseguire quel passaggio non cambia ciò che usano le altre sessioni del progetto. La scheda Reviews elenca inoltre ogni passaggio registrato per la sessione, invece della sola esecuzione corrente e precedente per una PR, così puoi confrontare cosa hanno detto due reviewer diversi. Una review rifiutata, quando il daemon riutilizza un passaggio esistente invece di eseguirne uno nuovo, non si presenta più come un successo. (#3477)
Le impostazioni si aprono in una finestra modale
Le impostazioni e le impostazioni del progetto si aprono sopra la board invece di allontanartene, con una barra laterale per General, Updates, Developer e Help. Esc o un clic all'esterno le chiudono, e torni dove eri. (#3497)
Notifiche su cui puoi agire
Quando una sessione ha bisogno di te e la finestra non ha il focus, l'icona nel Dock di macOS rimbalza, la barra delle applicazioni di Windows lampeggia finché non torni e il badge con il numero di notifiche non lette resta sincronizzato su macOS, Windows e Linux.
All'interno del pannello, le righe intere sono cliccabili invece del solo titolo, e sono scomparse le schede manuali Unread/All e la funzione segna come letto. Le notifiche ora tengono traccia di due aspetti indipendenti: se l'hai vista (si azzera quando apri il pannello) e se il problema sottostante è ancora aperto (lo aggiorna solo il ciclo di vita). Una notifica già letta resta in elenco finché ciò che segnalava non è risolto, e si chiude da sola quando la sessione esce dallo stato needs-input, termina, o la PR viene integrata o chiusa. Le transizioni avvenute mentre il daemon era spento vengono ricontrollate all'avvio. (#2534, #3296, #3495, #3558)
Azioni nella command palette e un'icona nella barra dei menu
Cmd/Ctrl+K ora include azioni sulle sessioni, non solo la navigazione, e il composer dei task dietro New Task è stato estratto così la palette può avviare nuovi task con la stessa interfaccia. Su macOS arriva anche un'icona di notifica nella barra dei menu per le sessioni in attesa di te. (#3531)
I container avviati da una sessione vengono ripuliti
I container Docker avviati da una sessione vengono rimossi quando quella sessione raggiunge uno stato terminale, anche quando va in crash o riceve SIGKILL, non solo quando la termini esplicitamente. Etichetta un container con ao.session=$AO_SESSION_ID perché venga rimosso, oppure con ao.spare=true per l'infrastruttura condivisa che deve sopravvivere alla sessione. Le chiamate a Docker hanno un timeout, e un progetto che non si carica fallisce in modo sicuro invece di procedere alla rimozione. (#3153)
File e diff
Il pannello Files ha sostituito il pulsante di ricerca a scomparsa e l'etichetta con il numero di file con un campo di ricerca sempre visibile, ha eliminato il pulsante di aggiornamento (l'elenco fa già polling) e ha ricostruito l'elenco come fisarmonica con un conteggio dei file in tempo reale sulla scheda. Il visualizzatore di diff trasmette le modifiche del workspace man mano che avvengono, ha un selettore di layout più chiaro e feedback in linea per file, e si espande correttamente nella vista ingrandita. I diff del workspace ora sono anche consapevoli del branch di base, così una sessione figlia confronta le modifiche con il branch da cui proviene davvero invece che con una base fissa. (#3466, #3503, #3492, #3369, #3214)
Affidabilità
Un singolo guasto non svuota più la board. Questa era la correzione più importante (#3475). Tre bug distinti potevano archiviare tutte le sessioni in un colpo solo. La chiusura delle anteprime terminava l'intero gruppo di un PID nudo senza verificare che appartenesse ancora al processo avviato, e un numero di PID riciclato eliminava una famiglia di processi estranea; poiché un server tmux è il leader del proprio gruppo, un solo kill di gruppo obsoleto distruggeva tutte le sessioni. Una risposta "no server running" di tmux veniva interpretata come la morte di ogni sessione, quando non dice nulla sulle singole sessioni, così un intoppo del server archiviava la board. E una migrazione compromessa restituiva errori 500 che la board interpretava come sessioni assenti. I controlli di liveness ora riportano un esito non conclusivo invece di dichiarare la sessione morta, il reaper si rifiuta di concludere un passaggio in cui la maggior parte della board risulta morta contemporaneamente, e il registro delle migrazioni si ripara da solo sulle cronologie già compromesse. (#3491, #3598)
Orchestratori. Non è più possibile creare orchestratori attivi duplicati per lo stesso progetto, ao session ls mostra le sessioni nascoste dell'orchestratore e conta quelle terminate nascoste invece di scartarle silenziosamente, e i messaggi automatici di riattivazione dell'orchestratore sono stati ritirati dopo essersi rivelati più rumorosi che utili. (#3397, #3393, #3394)
Agenti. Droid inoltra la configurazione del modello specifica per ruolo tramite il proprio file di impostazioni, scritto nella directory dei dati invece che in una directory temporanea. I prompt di Grok vengono consegnati dopo che la sua TUI ha finito di avviarsi invece che in un terminale che non è ancora in ascolto, e il suo terminale scorre con la rotella. L'harness di test finto interno non compare più nei selettori degli agenti. (#3156, #3534, #3533, #3518)
Browser. La selezione delle annotazioni è bloccata mentre un prompt è in invio, così un clic non può cambiarne il bersaglio a metà; le viste native non si disegnano più sopra l'app quando sono nascoste; la modifica dell'URL funziona nel browser ingrandito su macOS; il badge del selettore di elementi è stato tolto dalla finestra delle annotazioni; e uscire da una sessione e rientrarvi non reimposta più un URL di anteprima da cui ti eri già spostato. (#3232, #3295, #3488, #3464, #3538, #3370)
Desktop. L'aggiornamento automatico registra nei log i 404 sui manifest di release mancanti invece di mostrare una finestra che ti invita a controllare un token di autenticazione che non hai. Il trascinamento di barra laterale e inspector si ferma alla larghezza minima invece di chiuderli di scatto. Il daemon ignora SIGPIPE sull'output chiuso. Le sezioni PR e Completion nell'inspector restano nascoste quando sono vuote, e i riepiloghi PR duplicati vengono deduplicati. Oltre a questo, una serie di correzioni all'interfaccia: navigazione della barra del titolo allineata ai pulsanti semaforo di macOS, rifiniture alla barra delle schede del terminale, linee sottili in impostazioni e archivio, padding della barra superiore del terminale e selezione del testo disattivata sulla cornice dell'app e sulle pagine di marketing. (#3012, #3478, #3193, #3325, #3250, #3505, #3480, #3507, #3556, #3508, #3520)
Sotto il cofano
La telemetria ha ottenuto un interruttore di emergenza a runtime: AO_TELEMETRY_DISABLED_EVENTS silenzia gli stream indicati (con corrispondenza per prefisso tramite *) senza dover rilasciare una nuova versione, e gli stream silenziati finiscono comunque nel SQLite locale così restano analizzabili. Gli eventi del daemon riportano la versione, gli eventi di aggiornamento vengono registrati, i controlli di PostHog sono stati rafforzati e nei test si verifica che l'autocapture sia disattivato. La CI ora genera anche un .rpm per Linux accanto al .deb.
Sul sito: la documentazione è pubblicata anche in versione Markdown, con l'intera gerarchia esposta in llms.txt; sono state aggiunte pagine di confronto tra agenti; la board nella sezione hero, la demo di delega e il mockup mobile sono stati ricostruiti per corrispondere all'aspetto reale dell'app desktop; e la CTA per la beta iOS è andata online. Sono stati rimossi i dati strutturati Organization duplicati, e i content signal ora si applicano ai crawler consentiti. (#3401, #3388, #3406, #3395, #3363, #3438, #3344, #3430, #3496, #3428, #3429, #3500, #3521, #3522, #3144, #3367, #3365, #3389)
Aggiornamento
GitHub Releases e Homebrew sono i percorsi di installazione supportati. Le installazioni esistenti si aggiornano sul posto. Se un aggiornamento precedente ha lasciato il registro delle migrazioni in uno stato non valido, la 0.12.0 lo ripara all'avvio invece di bloccarsi.
Changelog completo: https://github.com/OrchestratorInc/agent-orchestrator/compare/v0.11.2...v0.12.0