When an async source passed to the command palette throws (network error, bad JSON), the loading spinner never resolves and the whole palette becomes unresponsive — even for local commands.
Unhandled Promise Rejection: TypeError: results is not iterable
at CommandPalette.mergeSources (command-palette.tsx:141)
at async Promise.all (index 2)Fix direction: isolate each source with Promise.allSettled, render per-source error rows, and keep local commands interactive while remote sources are pending.
Blocked on the positioning refactor because the error rows change the palette height and the old positioning code jumps.