AI-Fill v2: research the catalog from inside the editor

Igor

The catalog editor's AI-Fill panel gained a research phase: candidate icons and screenshots arrive as a pickable grid, with one-click save into the catalog bucket.

The catalog editor's AI-Fill panel got a rewrite. Where the old version was a single round-trip — "describe this app, fill the fields" — the new flow has a research phase up front: it gathers candidate icons and screenshots, surfaces them as a grid for you to pick from, and inlines the chosen ones into the editor with a single click to save.

This is the contributor flow that mattered most: the part that used to take ten browser tabs of "is this the official icon? is that the right resolution? is this screenshot still current?" now happens in the editor panel itself. Saved images go straight to the storage bucket that powers the live catalog, so there is no "upload" step at the end.

Hardened on the way in

The image fetcher had to grow up at the same time. Every candidate URL is fetched server-side with SSRF protection (no internal addresses, no file-scheme, no surprises), a strict response-size cap, and content- type sniffing. Untrusted DOM chunks pulled from candidate pages are size-limited and stripped before they ever reach the LLM prompt.

If you're maintaining a template entry and the research panel didn't find what you expected, you can still drop in a direct URL — the same safety net applies, and the same one-click "save to storage" button moves it into the catalog asset bucket.