Compose Multiplatform 1.12 låter AI-agenter styra din körande app
- MCP-servern stänger återkopplingsloopen mellan agent och app
- Fönster-API:et migrerar till androidx.compose.ui.window.v2
- VectorPainter delar nu grafikresurser mellan ikoner
- FAQ
- Behöver jag använda en AI-agent för att ha nytta av 1.12?
- Vad betyder ”experimentell” i JetBrains releaser?
- Fungerar MCP-servern med vilken AI-agent som helst?
JetBrains har släppt Compose Multiplatform 1.12.0 med två nyheter som märks direkt i vardagen: en experimentell MCP-server som kopplar AI-kodningsagenter till Hot Reload och ett nytt experimentellt API för fönster och dialoger. Den första gör att agenten kan se resultatet av sin egen kodändring. Den andra löser ett gammalt irritationsmoment på desktop, där fönsterstorlek och dialogplacering varit svårt att styra exakt.
Compose Multiplatform är JetBrains UI-ramverk för att bygga gränssnitt till Android, iOS, desktop och webb från samma Kotlin-kod. Det bygger på Googles Jetpack Compose-bibliotek och parallellt med 1.12.0 kom Compose UI 1.12.0 med bland annat stöd för färgrymder utanför sRGB på Android API 29 och uppåt.
MCP-servern stänger återkopplingsloopen mellan agent och app
Hot Reload i sig är inget nytt: du ändrar en Composable, sparar och den körande applikationen uppdaterar sig utan omstart. Problemet uppstår när en AI-agent skriver koden åt dig. Agenten skriver, filen sparas, appen laddar om och sedan sitter agenten helt blind. Den vet inte om ändringen kompilerade, om layouten kraschade eller om knappen hamnade utanför skärmen.
MCP står för Model Context Protocol och är ett standardiserat sätt för AI-modeller att prata med externa verktyg. I 1.12.0 exponerar Compose Hot Reload en sådan server mot den körande applikationen, något heise.de var först att rapportera detaljerat om. Via den kan en agent utlösa en reload, ta en skärmdump av appen, inspektera det semantiska trädet, simulera klick och textinmatning samt läsa applikationsloggarna.
Räkna ihop vad det innebär. Agenten kan skriva en Composable, ladda om, ta en bild och faktiskt titta på resultatet. Den kan klicka sig igenom ett flöde för att se om navigeringen fungerar. Den kan läsa stacktracen när något kraschar i stället för att gissa. Det semantiska trädet är särskilt användbart, eftersom det är samma struktur som skärmläsare och UI-tester läser. En agent som kan inspektera det kan verifiera att knappen har en läsbar etikett, inte bara att den ser rätt ut på en skärmdump.
För dig som utvecklare betyder det främst att felen upptäcks tidigare i kedjan. Ett vanligt mönster med AI-agenter är loopen: verktyg, resultat, nytt beslut. Utan återkoppling från den körande appen är loopen bruten och agenten fortsätter producera kod baserat på antaganden. Med MCP-servern får den ett faktiskt observationssteg.
Servern är experimentell, vilket är JetBrains sätt att säga att API:et kan ändras utan varsel. Behandla den som något att testa i ett sidoprojekt, inte något att bygga ett teams arbetsflöde kring i höst. Och tänk på vad du släpper in: en agent som kan simulera textinmatning i en körande app kan också fylla i fält den inte borde röra. Kör den mot testdata.
Fönster-API:et migrerar till androidx.compose.ui.window.v2
Den andra nyheten är mindre men mer omedelbart användbar. `WindowState` och `DialogState` har fått en experimentell version två i paketet `androidx.compose.ui.window.v2`. Det ger finare kontroll över position och storlek: du kan sätta minsta och största fönsterstorlek och du kan positionera en dialog relativt huvudfönstret i stället för relativt skärmen.
Låter det trivialt är det för att det borde ha varit det. Den som byggt en desktopapp i Compose känner igen problemet att en dialogruta dyker upp i övre vänstra hörnet på fel skärm i en tvåskärmsuppsättning.
VectorPainter delar nu grafikresurser mellan ikoner
1.12.0 kommer efter en rad releaser som gradvis fyllt ut ramverket. I 1.9.3 nådde Compose Multiplatform for web betastatus, tillgänglighetsstöd kom till webbmålen och kravet på `skiko.js` för Kotlin/JS försvann.
Samma version utökade `@Preview`-annotationen med parametrar som `widthDp`, `heightDp`, `locale` och `showBackground`, så att förhandsvisningar går att variera utan att duplicera kod.
I Compose UI 1.12.0 finns en optimering som är värd att känna till även om du aldrig rör den: `VectorPainter` delar nu interna grafikresurser när samma `ImageVector` renderas flera gånger. Ritar du en ikon i en lista med hundra rader laddas texturen en gång i stället för hundra. Beteendet går att stänga av via flaggan `ComposeUiFlags.isVectorDrawCacheSharingEnabled` om det skulle krocka med något i din kod.
För svenska utvecklare som redan jobbar med Kotlin på Android är tröskeln till Compose Multiplatform låg. Samma Composable-syntax, samma mentala modell men koden går till iOS och desktop också. Kombinationen av hot reload med agentåterkoppling och ett fönster-API som faktiskt fungerar gör desktop-spåret betydligt mindre motigt än det var för ett år sedan.
FAQ
Behöver jag använda en AI-agent för att ha nytta av 1.12?
Nej. Hot Reload fungerar precis som förut utan MCP-servern och det nya fönster-API:et är helt oberoende av AI-delen.
Vad betyder ”experimentell” i JetBrains releaser?
Att API:et kan ändras eller tas bort i kommande versioner utan bakåtkompatibilitet. Du kan använda det men du får räkna med att skriva om koden vid en uppgradering. Kompilatorn ger dig oftast en varning som kräver en explicit opt-in-annotation.
Fungerar MCP-servern med vilken AI-agent som helst?
Den fungerar med klienter som stöder Model Context Protocol. Eftersom protokollet är öppet och används av flera större verktyg är det inte låst till en specifik leverantör men stödet varierar mellan klienter och du får kontrollera dokumentationen för just din agent.
Källor
- stöd för färgrymder utanför sRGB på Android API 29 och uppåt developer.android.com
- 1.9.3 nådde Compose Multiplatform for web betastatus kotlinlang.org
