blog·2 min lezen

8 bugs die we pas vonden door het zelf te gebruiken

Wat er misging toen we onze Claude-assistent in DirectAdmin zelf gingen gebruiken. Van verdwenen knoppen tot 1 GB aan vergeten processen.

Tests slaagden, schermafbeeldingen zagen er goed uit. Toen gingen we de assistent zelf gebruiken op echte websites. Binnen een paar uur hadden we deze lijst. Ze zijn allemaal opgelost, maar elk ervan is een les voor wie iets vergelijkbaars bouwt.

1. "Toestaan" was er wel, maar niet te zien

Een lange chat, een goedkeurkaart, en geen knoppen. De kaarten stonden in een flex-kolom met overflow: hidden. Zodra het gesprek langer werd dan het scherm, kromp elke kaart tot een streepje. In korte testgesprekken zie je dat nooit.

Les: zet flex-shrink: 0 op de items van een scrollende flex-kolom, en test met een lang gesprek.

2. Alles stond er twee keer

Tekst kwam live binnen, woord voor woord. Daarna verscheen het complete antwoord nog een keer. Het volledige bericht kwam binnen vóór de laatste stukjes van de stream.

Les: zodra het complete tekstblok binnen is, negeer je de stukjes die daarna nog komen.

3. "Claude is bezig…", maar Claude wachtte op jou

De statusregel zei "Voert uit: wp core check-update", terwijl er een kaart op goedkeuring wachtte. Omdat je ook bug 1 had, zag je die kaart niet. Resultaat: iedereen wachtte op elkaar.

Les: laat de status zeggen dat er op jou gewacht wordt, en scroll de vraag in beeld.

4. Een meerkeuzevraag werd een ja/nee-vraag

Claude vroeg "Wat wordt de nieuwe prijs?" met drie opties. Onze interface toonde "Toestaan / Weigeren". Na "toestaan" wist Claude nog steeds niets, en stelde de vraag opnieuw in tekst. Het antwoord op zo'n vraag moet terug via updatedInput.answers. Details in Claude Agent SDK: goedkeuren en vragen.

5. De chat werd breder dan het scherm

Eén lange regel code in een diff, en de hele chatkolom werd 1868 pixels breed in een vak van 1020. Alles rechts viel weg, waaronder de opties van een vraag.

Les: grid- en flex-items hebben standaard een minimale breedte gelijk aan hun inhoud. Zet min-width: 0 op de kolom.

6. 1 GB aan processen die niemand meer gebruikte

Bij elke update van de achtergrondservice bleven de lopende assistent-processen van sommige accounts draaien. Hun verbinding was weg, maar het proces wachtte gewoon op de volgende vraag. Na een avond ontwikkelen waren het er vier, samen ruim 1 GB geheugen.

Les: laat een proces stoppen als zijn invoer sluit, en ruim bij het opstarten achtergebleven processen op.

7. Ingelogd volgens de check, uitgelogd in het echt

De koppelpagina zei "gekoppeld", maar de eerste opdracht faalde met "OAuth session expired". De status-check keek alleen of er een token was, niet of dat token nog werkte.

Les: herken de foutmelding in het gesprek en laat de gebruiker direct opnieuw koppelen.

8. Een homepage werd aangezien voor een standaardpagina

Bij het koppelen van een GitHub-repository zette het systeem elke bestaande index.html opzij, in de veronderstelling dat dat DirectAdmins placeholder was. Het was een echte pagina. Veilig bewaard en snel terug, maar niet de bedoeling. Het hele verhaal staat in van git push naar live in 3 seconden.

Wat we ervan leerden

Geautomatiseerde tests vonden nul van deze acht. Ze kwamen allemaal naar boven bij echt gebruik: lange gesprekken, echte WordPress-sites met eigenaardige plugins, een service die herstart terwijl iemand aan het werk is. Zelf gebruiken wat je bouwt blijft de beste test.

MK
Maarten Keizer

Oprichter van Invoker. Ruim twintig jaar hosting, systeembeheer en webdevelopment; bouwt de Claude-hosting zelf en test alles eerst op de eigen servers.

over maarten