Agent Orchestrator 0.12.0
80 Commits seit 0.11.2. Die Desktop-App spricht jetzt acht Sprachen, basiert auf einer neuen Farbpalette und lässt dich Sessions anheften und pro Session einen Reviewer wählen. Die mobile App bekam Themes und Diktieren per Gedrückthalten. Container, die eine Session gestartet hat, werden aufgeräumt, wenn sie endet.
Umfasst alles seit v0.11.2.
Unter macOS solltest du direkt auf 0.12.1 oder neuer gehen. Dieser Build gibt Dateideskriptoren nicht wieder frei, wodurch die Ansicht „Files“ und das Anlegen von Aufgaben nach einigen Stunden Nutzung nicht mehr funktionieren.
Bei 0.11.0 ging es darum, dass das Fundament trägt. 0.12.0 ist das, was darauf gebaut wurde: Die App spricht jetzt acht Sprachen, Seitenleiste und Einstellungen funktionieren so, wie du es erwartest, und eine ganze Klasse von Fehlern, die jede Session von deinem Board löschen konnte, ist verschwunden.
Dieses Release bringt neue Produktfunktionen und Verbesserungen der Zuverlässigkeit, ohne bestehende Workflows zu beeinträchtigen.
Highlights
Die App spricht acht Sprachen
Die Desktop-App hat jetzt eine echte Lokalisierungsschicht auf Basis von i18next. Die Sprache wählst du unter Settings > General, gespeichert wird sie in ~/.ao/ui-settings.json. Vereinfachtes Chinesisch kam zuerst und deckt Shell-Rahmen, Seitenleiste, Board, Einstellungen, Dialoge, Inspector-Tabs, Befehlspalette und Terminal-Texte ab. Japanisch, Koreanisch, Spanisch, Französisch, Deutsch und brasilianisches Portugiesisch folgten, jeweils mit eigener README. Englisch bleibt Standard und Fallback, sodass ein nicht übersetzter Text auf Englisch erscheint statt als Schlüssel. (#3465, #3541)
Mobil: Themes, native Sheets und Push-to-Talk
Die mobile App ist nicht mehr nur dunkel. Sie bringt helle und dunkle Paletten mit, dazu die Einstellung „system“, die dem Betriebssystem dauerhaft folgt, statt an dem Wert festzuhalten, der beim Start gelesen wurde. Die App-Shell wurde auf nativen Sheets neu gebaut, und das Session-Board trennt jetzt nach beendeter Runtime statt nach abgeschlossenem Status.
Außerdem gibt es Diktieren per Push-to-Talk. Halte die Mikrofontaste im Eingabefeld gedrückt, um zu sprechen, lass los, um den Text einzufügen, oder wische nach oben, um freihändig weiterzusprechen. Die Erkennung läuft auf dem Gerät (iOS SFSpeechRecognizer, Android SpeechRecognizer), es gibt also keinen API-Schlüssel und keine Kosten pro Minute, und sie ist auf das Vokabular abgestimmt, von dem Agenten-Prompts voll sind – du bekommst „git“ und „npm“ statt „get“ und „MPM“. Das Transkript landet als bearbeitbarer Entwurf im Eingabefeld, statt gesendet zu werden, denn Spracherkennung versteht Code so oft falsch, dass stilles Absenden nicht sicher ist. Jede gehaltene Aufnahme wird angehängt, sodass mehrere Tastendrücke einen gemeinsamen Prompt ergeben.
Dazu ein App-Icon im Liquid-Glass-Stil passend zum Desktop-Build und eine Korrektur für den Standard-LAN-Port, der auf den nur per Loopback erreichbaren Daemon-Port statt auf die mobile Bridge auf 3011 zeigte, sodass sich eine frische Installation ohne manuelles Anpassen nicht verbinden konnte. (#3399, #3400, #3304, #3494)
Ein neues Farbfundament
Der Renderer nutzt jetzt eine Palette aus oklch-Design-Tokens mit Geist als UI-Schrift und darauf abgebildeten shadcn-Farbaliassen und ersetzt damit fest codierte Werte in der gesamten Komponentenbibliothek. Der Session-Status hat überall eine einheitliche Palette: „arbeitet“ ist blau, „braucht dich“ ist orange, „im Review“ ist gelb, „bereit“ ist grün. (#3421)
Sessions anheften, zu denen du immer wieder zurückkehrst
Sessions lassen sich in einem Bereich Pinned oben in der Seitenleiste anheften. Das wird serverseitig gespeichert, sodass die Anheftung einen Neustart übersteht. Die Seitenleiste selbst ist jetzt einklappbar: Pinned und Projects lassen sich jeweils zuklappen, und ein Klick auf das Ordnersymbol eines Projekts klappt es auf oder zu, ohne vorher dorthin zu wechseln. (#3511, #3310)
Den Reviewer pro Session wählen
Der Reviewer-Agent war bisher eine einzige projektweite Einstellung. Jetzt kannst du für eine einzelne Session einen eigenen wählen, und das Ausführen dieses Durchlaufs ändert nichts daran, was andere Sessions im Projekt verwenden. Der Tab „Reviews“ listet außerdem jeden aufgezeichneten Durchlauf der Session auf, statt nur den aktuellen und vorherigen Lauf für einen PR, sodass du vergleichen kannst, was zwei verschiedene Reviewer gesagt haben. Ein abgelehntes Review, bei dem der Daemon einen bestehenden Durchlauf wiederverwendet, statt einen neuen zu starten, meldet sich nicht mehr als Erfolg. (#3477)
Die Einstellungen öffnen sich als Modal
Einstellungen und Projekteinstellungen öffnen sich über dem Board, statt davon wegzunavigieren, mit einer Seitenleiste für General, Updates, Developer und Help. Escape oder ein Klick außerhalb schließt sie, und du landest wieder dort, wo du warst. (#3497)
Benachrichtigungen, auf die du reagieren kannst
Wenn eine Session dich braucht und das Fenster nicht im Fokus ist, hüpft unter macOS das Dock-Symbol, unter Windows blinkt die Taskleiste, bis du zurückkommst, und das Badge mit der Zahl ungelesener Benachrichtigungen bleibt unter macOS, Windows und Linux synchron.
Im Panel sind jetzt ganze Zeilen klickbar statt nur der Titeltext, und die manuellen Tabs Unread/All sowie das Als-gelesen-Markieren sind entfallen. Benachrichtigungen verfolgen jetzt zwei unabhängige Dinge: ob du sie gesehen hast (wird beim Öffnen des Panels zurückgesetzt) und ob das zugrunde liegende Problem noch offen ist (wird nur vom Lebenszyklus geschrieben). Eine bereits gelesene Benachrichtigung bleibt aufgeführt, solange das Gemeldete ungelöst ist, und schließt sich selbst, wenn die Session den Zustand „wartet auf Eingabe“ verlässt, beendet wird oder der PR gemergt oder geschlossen wird. Übergänge, die stattgefunden haben, während der Daemon nicht lief, werden beim Start erneut geprüft. (#2534, #3296, #3495, #3558)
Aktionen in der Befehlspalette und ein Tray-Symbol in der Menüleiste
Cmd/Ctrl+K enthält jetzt Session-Aktionen und nicht nur Navigation, und das Aufgaben-Eingabefeld hinter New Task wurde ausgelagert, sodass die Palette Arbeit mit derselben Oberfläche starten kann. Unter macOS gibt es außerdem ein Tray-Symbol in der Menüleiste für Sessions, die auf dich warten. (#3531)
Container, die eine Session gestartet hat, werden aufgeräumt
Docker-Container, die eine Session gestartet hat, werden entfernt, sobald die Session einen Endzustand erreicht – auch wenn sie abstürzt oder per SIGKILL beendet wird, nicht nur, wenn du sie ausdrücklich beendest. Versieh einen Container mit dem Label ao.session=$AO_SESSION_ID, damit er aufgeräumt wird, oder mit ao.spare=true für gemeinsame Infrastruktur, die die Session überdauern soll. Docker-Aufrufe sind durch ein Timeout begrenzt, und bei einem Projekt, das nicht geladen werden kann, wird vorsichtshalber nichts aufgeräumt. (#3153)
Dateien und Diffs
Das Panel „Files“ ersetzt seinen umschaltbaren Such-Button und die Anzeige der Dateianzahl durch ein dauerhaft sichtbares Suchfeld, verzichtet auf den Aktualisieren-Button (die Liste wird ohnehin regelmäßig abgefragt) und baut die Liste als Akkordeon mit Live-Dateianzahl im Tab neu auf. Der Diff-Viewer streamt Workspace-Änderungen, während sie passieren, hat einen klareren Layout-Umschalter und Inline-Feedback pro Datei und klappt in der maximierten Ansicht richtig auf. Workspace-Diffs berücksichtigen jetzt außerdem die Basis, sodass eine Kind-Session gegen den Branch vergleicht, von dem sie tatsächlich stammt, statt gegen eine feste Basis. (#3466, #3503, #3492, #3369, #3214)
Zuverlässigkeit
Ein einzelner Ausfall leert nicht mehr dein Board. Das war der große Punkt (#3475). Drei verschiedene Fehler konnten alle Sessions auf einmal archivieren. Das Abbauen von Previews beendete die Prozessgruppe einer nackten PID, ohne erneut zu prüfen, ob sie noch zum gestarteten Prozess gehörte, und eine wiederverwendete PID riss eine fremde Prozessfamilie mit; da ein tmux-Server sein eigener Gruppenleiter ist, zerstörte ein einziger veralteter Gruppen-Kill jede Session. Eine tmux-Abfrage mit „no server running“ wurde als Tod einzelner Sessions gewertet, obwohl sie über keine einzelne Session etwas aussagt, sodass ein Schluckauf des Servers das Board archivierte. Und eine kaputte Migration lieferte 500er-Fehler, die das Board als fehlende Sessions behandelte. Liveness-Abfragen melden jetzt „nicht eindeutig“ statt „tot“, der Reaper verweigert die Auswertung eines Durchlaufs, bei dem der Großteil des Boards gleichzeitig als tot erscheint, und das Migrations-Ledger repariert sich bei bereits beschädigten Verläufen selbst. (#3491, #3598)
Orchestratoren. Für dasselbe Projekt lassen sich keine doppelten aktiven Orchestratoren mehr anlegen, ao session ls zeigt versteckte Orchestrator-Sessions an und zählt versteckte beendete Sessions, statt sie stillschweigend wegzulassen, und die automatischen Reaktivierungsnachrichten für Orchestratoren wurden zurückgenommen, nachdem sie mehr gestört als genützt haben. (#3397, #3393, #3394)
Agenten. Droid gibt rollenspezifische Modellkonfiguration über seine Einstellungsdatei weiter, die im Datenverzeichnis statt in einem temporären Verzeichnis geschrieben wird. Grok-Prompts werden zugestellt, nachdem seine TUI fertig gestartet ist, statt in ein Terminal, das noch nicht zuhört, und sein Terminal scrollt mit dem Mausrad. Der interne Fake-Test-Harness taucht nicht mehr in der Agentenauswahl auf. (#3156, #3534, #3533, #3518)
Browser. Die Auswahl für Annotationen ist gesperrt, während ein Prompt unterwegs ist, damit ein Klick sie nicht mitten im Senden umlenkt, native Ansichten übermalen die App nicht mehr, wenn sie ausgeblendet sind, die URL-Bearbeitung funktioniert im maximierten Browser unter macOS, das Badge des Elementwählers ist aus dem Annotationsdialog verschwunden, und wenn du von einer Session weg- und zurückwechselst, wird keine Preview-URL mehr erzwungen, von der du bereits wegnavigiert warst. (#3232, #3295, #3488, #3464, #3538, #3370)
Desktop. Der Auto-Updater protokolliert 404-Fehler bei fehlenden Release-Manifesten, statt einen Dialog zu zeigen, der dich auffordert, ein Auth-Token zu prüfen, das du gar nicht hast. Seitenleiste und Inspector bleiben beim Ziehen bei ihrer Mindestbreite stehen, statt zuzuschnappen. Der Daemon ignoriert SIGPIPE bei geschlossener Ausgabe. Die Bereiche PR und Completion im Inspector bleiben ausgeblendet, wenn sie leer sind, und doppelte PR-Zusammenfassungen werden dedupliziert. Dazu eine Runde Korrekturen am App-Rahmen: Navigation in der Titelleiste an den macOS-Ampelknöpfen ausgerichtet, Feinschliff an der Terminal-Tableiste, Haarlinien in Einstellungen und Archiv, Padding der Terminal-Kopfleiste und deaktivierte Textauswahl im App-Rahmen und auf Marketingseiten. (#3012, #3478, #3193, #3325, #3250, #3505, #3480, #3507, #3556, #3508, #3520)
Unter der Haube
Die Telemetrie hat einen Notschalter zur Laufzeit bekommen: AO_TELEMETRY_DISABLED_EVENTS schaltet benannte Streams stumm (mit Präfix-Abgleich per *), ohne dass ein Release nötig ist, und stummgeschaltete Streams landen trotzdem im lokalen SQLite, damit sie debugbar bleiben. Daemon-Events tragen eine Version, Update-Events werden aufgezeichnet, die PostHog-Steuerung wurde abgesichert, und in Tests wird geprüft, dass Autocapture deaktiviert ist. Die CI erzeugt jetzt neben dem .deb auch ein Linux-.rpm.
Auf der Website: Die Doku wird zusätzlich als Markdown-Zwilling veröffentlicht, mit der vollständigen Struktur in llms.txt, es gibt neue Vergleichsseiten für Agenten, das Hero-Board, die Delegations-Demo und das Mobile-Mockup wurden neu gebaut, damit sie der tatsächlichen Desktop-App entsprechen, und der CTA für die iOS-Beta ging live. Doppelte strukturierte Daten vom Typ Organization wurden entfernt, und Content Signals gelten jetzt für zugelassene Crawler. (#3401, #3388, #3406, #3395, #3363, #3438, #3344, #3430, #3496, #3428, #3429, #3500, #3521, #3522, #3144, #3367, #3365, #3389)
Upgrade
GitHub Releases und Homebrew sind die unterstützten Installationswege. Bestehende Installationen werden direkt aktualisiert. Falls ein früheres Update dein Migrations-Ledger in einem kaputten Zustand hinterlassen hat, repariert 0.12.0 es beim Start, statt den Start scheitern zu lassen.
Vollständiges Changelog: https://github.com/OrchestratorInc/agent-orchestrator/compare/v0.11.2...v0.12.0