fix: use useDeferredValue + shouldFilter=false for search debounce
cmdk doesn't support controlled search state, so to debounce filtering:
1. Disable cmdk's built-in filter with shouldFilter={false}
2. Use useDeferredValue to defer the search value
3. Do our own filtering/sorting in useMemo with the deferred value
This allows the input to remain responsive while filtering is deferred.