Agent Orchestrator 0.12.0

80 commits sinds 0.11.2. De desktop-app spreekt nu acht talen, heeft een nieuw kleurenpalet en laat je sessies vastzetten en per sessie een reviewer kiezen. De mobiele app kreeg thema's en dicteren door ingedrukt te houden. Containers die een sessie heeft gestart, worden opgeruimd als die sessie stopt.

Omvat alles sinds v0.11.2.

Gebruik je macOS, ga dan direct naar 0.12.1 of nieuwer. Deze build lekt file descriptors en laat de weergave Files en het aanmaken van taken na een paar uur gebruik vastlopen.

Bij 0.11.0 ging het erom dat het fundament gewicht kon dragen. 0.12.0 is wat erop is gebouwd: de app spreekt nu acht talen, de zijbalk en de instellingen werken zoals je zou verwachten, en een soort fout die elke sessie van je board kon vegen, is verdwenen.

Deze release voegt nieuwe productmogelijkheden en betrouwbaarheidsverbeteringen toe zonder bestaande workflows te breken.

Hoogtepunten

De app spreekt acht talen

De desktop-app heeft nu een echte lokalisatielaag, gebouwd op i18next. Je kiest de taal onder Settings > General en die wordt onthouden in ~/.ao/ui-settings.json. Vereenvoudigd Chinees kwam als eerste en dekt de shell, de zijbalk, het board, de instellingen, dialogen, inspectortabs, het opdrachtenpalet en de terminalteksten. Japans, Koreaans, Spaans, Frans, Duits en Braziliaans Portugees volgden, elk met een eigen README. Engels blijft de standaard en de terugvaltaal, dus een onvertaalde tekst toont Engels in plaats van een sleutel. (#3465, #3541)

Mobiel: thema's, native sheets en ingedrukt houden om te praten

De mobiele app is niet langer alleen donker. Hij heeft een licht en een donker palet plus een voorkeur "system" die het besturingssysteem blijft volgen in plaats van vast te houden aan wat hij bij het starten las. De app-shell is opnieuw opgebouwd op native sheets, en het sessieboard splitst op beëindigde runtime in plaats van op de status afgerond.

Hij heeft ook push-to-talk-dicteren. Houd de microfoontoets in het invoerveld ingedrukt om te spreken, laat los om in te voegen, of veeg omhoog om hem handsfree vast te zetten. Spraakherkenning draait op het apparaat zelf (iOS SFSpeechRecognizer, Android SpeechRecognizer), dus er is geen API-sleutel nodig en er zijn geen kosten per minuut. De herkenning is afgestemd op de woordenschat waar prompts voor agents vol van zitten, dus je krijgt "git" en "npm" in plaats van "get" en "MPM". Het transcript komt als bewerkbaar concept in het invoerveld terecht in plaats van te worden verstuurd, omdat spraak-naar-tekst code vaak genoeg verkeerd verstaat dat ongemerkt versturen niet veilig is. Opeenvolgende opnames worden achter elkaar toegevoegd, zodat meerdere keren indrukken één prompt opbouwt.

Verder een Liquid Glass-app-pictogram dat past bij de desktopbuild, en een fix voor de standaard-LAN-poort. Die wees naar de daemonpoort die alleen op loopback luistert in plaats van naar de mobiele bridge op 3011, waardoor een nieuwe installatie geen verbinding kon maken zonder die met de hand aan te passen. (#3399, #3400, #3304, #3494)

Een nieuwe kleurenbasis

De renderer is overgestapt op een palet van oklch-designtokens met Geist als UI-lettertype en daarop gemapte shadcn-kleuraliassen, ter vervanging van hardgecodeerde waarden in de hele componentenbibliotheek. De sessiestatus heeft nu overal waar die verschijnt één consistent palet: bezig is blauw, heeft-je-nodig is oranje, in review is geel, klaar is groen. (#3421)

Zet de sessies vast waar je steeds naar terugkeert

Sessies kun je vastzetten in een sectie Pinned bovenaan de zijbalk. Dat wordt aan de serverkant bewaard, zodat het vastzetten een herstart overleeft. De zijbalk zelf is inklapbaar geworden: Pinned en Projects klap je elk apart in, en met een klik op het mappictogram van een project klap je het uit of in zonder er eerst naartoe te wisselen. (#3511, #3310)

Kies de reviewer per sessie

De reviewer-agent was vroeger één instelling voor het hele project. Nu kun je er een kiezen voor een afzonderlijke sessie, en het draaien van die ronde verandert niets aan wat andere sessies in het project gebruiken. De tab Reviews toont ook elke vastgelegde ronde van de sessie in plaats van alleen de huidige en vorige run voor een PR, zodat je kunt vergelijken wat twee verschillende reviewers zeiden. Een geweigerde review, waarbij de daemon een bestaande ronde hergebruikt in plaats van een nieuwe te draaien, meldt zichzelf niet meer als geslaagd. (#3477)

Instellingen openen als modaal venster

Instellingen en projectinstellingen openen boven het board in plaats van ervan weg te navigeren, met een zijbalk voor General, Updates, Developer en Help. Met Escape of een klik erbuiten sluit je het, en je komt terug waar je was. (#3497)

Meldingen waar je iets mee kunt

Als een sessie je nodig heeft en het venster geen focus heeft, springt het Dock op macOS, knippert de taakbalk op Windows tot je terugkomt, en blijft het aantal ongelezen meldingen op de badge gesynchroniseerd op macOS, Windows en Linux.

In het paneel zijn hele rijen klikbaar in plaats van alleen de titeltekst, en de handmatige tabs Unread/All en markeren als gelezen zijn verdwenen. Meldingen houden nu twee onafhankelijke dingen bij: of je de melding hebt gezien (gewist wanneer je het paneel opent) en of het onderliggende probleem nog openstaat (alleen bijgewerkt door de levenscyclus). Een melding die je al hebt gelezen, blijft in de lijst staan zolang wat ze meldde onopgelost is, en sluit zichzelf als de sessie niet meer op input wacht, wordt beëindigd, of als de PR wordt gemerged of gesloten. Overgangen die plaatsvonden terwijl de daemon niet draaide, worden bij het opstarten opnieuw gecontroleerd. (#2534, #3296, #3495, #3558)

Acties in het opdrachtenpalet en een pictogram in de menubalk

Cmd/Ctrl+K bevat nu sessieacties, niet alleen navigatie, en het taakinvoerveld achter New Task is losgetrokken zodat het palet werk kan starten met dezelfde UI. macOS krijgt ook een meldingspictogram in de menubalk voor sessies die op je wachten. (#3531)

Containers die een sessie heeft gestart, worden opgeruimd

Docker-containers die een sessie heeft gestart, worden verwijderd als die sessie een eindtoestand bereikt, ook als hij crasht of met SIGKILL wordt afgeschoten, en niet alleen als je hem zelf expliciet stopt. Geef een container het label ao.session=$AO_SESSION_ID om hem te laten opruimen, of ao.spare=true voor gedeelde infrastructuur die de sessie moet overleven. Docker-aanroepen zijn begrensd met een time-out, en een project dat niet laadt, faalt veilig in plaats van op te ruimen. (#3153)

Bestanden en diffs

Het Files-paneel heeft de aan/uit-zoekknop en het label met het aantal bestanden vervangen door een altijd zichtbaar zoekveld, de vernieuwknop laten vallen (de lijst pollt al), en de lijst opnieuw opgebouwd als accordeon met een live bestandsaantal op de tab. De diff-viewer streamt wijzigingen in de workspace terwijl ze gebeuren, heeft een duidelijkere schakelaar voor de lay-out en inline feedback per bestand, en wordt goed uitgevouwen in de gemaximaliseerde weergave. Workspace-diffs houden nu ook rekening met de basis, zodat een onderliggende sessie vergelijkt met de branch waar hij echt vandaan kwam in plaats van met een vaste basis. (#3466, #3503, #3492, #3369, #3214)

Betrouwbaarheid

Eén storing veegt je board niet meer leeg. Dit was de belangrijkste (#3475). Drie afzonderlijke bugs konden alle sessies tegelijk archiveren. Het afbreken van een preview stopte een hele procesgroep op basis van een kale PID zonder opnieuw te controleren of die nog bij het gestarte proces hoorde, en een hergebruikt PID-nummer nam een ongerelateerde procesfamilie mee; omdat een tmux-server zijn eigen groepsleider is, vernietigde één verouderde groepskill elke sessie. Een tmux-controle met "no server running" werd gelezen als het einde van elke afzonderlijke sessie, terwijl die niets zegt over een individuele sessie, dus een hapering van de server archiveerde het board. En een mislukte migratie gaf 500-fouten die het board behandelde als ontbrekende sessies. Livenesscontroles melden nu onbeslist in plaats van dood, de reaper weigert een ronde af te ronden waarin het grootste deel van het board tegelijk dood lijkt, en het migratieregister repareert zichzelf bij geschiedenissen die al beschadigd waren. (#3491, #3598)

Orchestrators. Er kunnen geen dubbele actieve orchestrators meer worden aangemaakt voor hetzelfde project, ao session ls toont verborgen orchestrator-sessies en telt verborgen beëindigde sessies in plaats van ze stilletjes weg te laten, en de automatische berichten om orchestrators opnieuw aan de slag te krijgen zijn teruggedraaid nadat ze meer ruis dan nut bleken te geven. (#3397, #3393, #3394)

Agents. Droid geeft rolspecifieke modelconfiguratie door via zijn instellingenbestand, dat in de datamap wordt geschreven in plaats van in een tijdelijke map. Prompts voor Grok worden afgeleverd nadat de TUI klaar is met opstarten in plaats van in een terminal die nog niet luistert, en de terminal scrolt met het muiswiel. De interne nep-testharness verschijnt niet meer in de agentkiezers. (#3156, #3534, #3533, #3518)

Browser. De annotatieselectie wordt vergrendeld terwijl een prompt onderweg is, zodat een klik het doel niet halverwege het versturen kan veranderen, native weergaven tekenen niet meer over de app heen als ze verborgen zijn, URL's bewerken werkt in de gemaximaliseerde browser op macOS, de badge van de elementselector is uit de annotatiedialoog gehaald, en als je van een sessie weg- en weer terugwisselt, wordt een preview-URL waarvan je al weg was genavigeerd niet meer teruggezet. (#3232, #3295, #3488, #3464, #3538, #3370)

Desktop. De auto-updater logt 404-fouten bij ontbrekende releasemanifesten in plaats van een dialoog te tonen die je vraagt een authenticatietoken te controleren dat je niet hebt. Bij het slepen van de zijbalk en de inspector stoppen ze bij hun minimale breedte in plaats van dicht te klappen. De daemon negeert SIGPIPE bij gesloten output. De secties PR en Completion in de inspector blijven verborgen als er niets in staat, en dubbele PR-samenvattingen worden ontdubbeld. Daarnaast een ronde fixes aan de interface: titelbalknavigatie uitgelijnd op de verkeerslichtknoppen van macOS, een opgepoetste tabbalk in de terminal, scheidingslijnen in instellingen en archief, padding in de bovenbalk van de terminal, en tekstselectie uitgeschakeld in de app-interface en op marketingpagina's. (#3012, #3478, #3193, #3325, #3250, #3505, #3480, #3507, #3556, #3508, #3520)

Onder de motorkap

Telemetrie kreeg een noodschakelaar die tijdens runtime werkt: AO_TELEMETRY_DISABLED_EVENTS zet benoemde streams stil (met prefixmatching via *) zonder dat er een release nodig is, en stilgezette streams komen nog steeds in de lokale SQLite terecht, zodat ze te debuggen blijven. Daemon-events krijgen een versie mee, update-events worden vastgelegd, de PostHog-instellingen zijn aangescherpt en tests controleren dat autocapture uit staat. CI levert nu naast de .deb ook een Linux-.rpm.

Op de site: de documentatie wordt gepubliceerd met Markdown-tweelingen en de volledige hiërarchie in llms.txt, er zijn vergelijkingspagina's voor agents bijgekomen, het board in de hero, de delegatiedemo en de mobiele mockup zijn opnieuw gebouwd zodat ze lijken op hoe de desktop-app er echt uitziet, en de CTA voor de iOS-bèta staat live. Dubbele gestructureerde data voor Organization is verwijderd en contentsignalen gelden nu voor toegestane crawlers. (#3401, #3388, #3406, #3395, #3363, #3438, #3344, #3430, #3496, #3428, #3429, #3500, #3521, #3522, #3144, #3367, #3365, #3389)

Upgraden

GitHub Releases en Homebrew zijn de ondersteunde installatiemethoden. Bestaande installaties worden ter plekke bijgewerkt. Als een eerdere update je migratieregister in een kapotte staat heeft achtergelaten, repareert 0.12.0 dat bij het starten in plaats van het opstarten te laten mislukken.

Volledige changelog: https://github.com/OrchestratorInc/agent-orchestrator/compare/v0.11.2...v0.12.0