diff --git a/src/components/JournalList.svelte b/src/components/JournalList.svelte index fb752ca..49a7727 100644 --- a/src/components/JournalList.svelte +++ b/src/components/JournalList.svelte @@ -43,7 +43,11 @@ let searchError = $state(null); let searchAbort: AbortController | null = null; - const SEARCH_DEBOUNCE_MS = 200; + // Long enough that a moderate typist (~200ms inter-keystroke + // intervals) doesn't fire one Venice embed per keystroke; short + // enough that a deliberate query feels responsive. Matches the + // other drawer searches. + const SEARCH_DEBOUNCE_MS = 400; // Match the journal_search tool's max so the sidebar surfaces every // day the assistant could reach. Aggregated by date downstream so // the actual row count in the drawer is the unique-date count. diff --git a/src/components/MemoryList.svelte b/src/components/MemoryList.svelte index 3c71905..420c8f9 100644 --- a/src/components/MemoryList.svelte +++ b/src/components/MemoryList.svelte @@ -32,10 +32,11 @@ } const { onSelect }: Props = $props(); - // Same window the old in-modal search used. Long enough that the - // semantic-search request fires once at the end of a typing burst, - // short enough that intent-to-result still feels responsive. - const SEARCH_DEBOUNCE_MS = 200; + // Long enough that a moderate typist (~200ms inter-keystroke + // intervals) doesn't fire one Venice embed per keystroke; short + // enough that a deliberate query feels responsive. Matches the + // other drawer searches. + const SEARCH_DEBOUNCE_MS = 400; let debounceTimer: ReturnType | null = null; diff --git a/src/components/RecipeList.svelte b/src/components/RecipeList.svelte index 4717f2a..b4a4426 100644 --- a/src/components/RecipeList.svelte +++ b/src/components/RecipeList.svelte @@ -43,7 +43,11 @@ let searchError = $state(null); let searchAbort: AbortController | null = null; - const SEARCH_DEBOUNCE_MS = 200; + // Long enough that a moderate typist (~200ms inter-keystroke + // intervals) doesn't fire one Venice embed per keystroke; short + // enough that a deliberate query feels responsive. Matches the + // other drawer searches. + const SEARCH_DEBOUNCE_MS = 400; const RECIPE_SEARCH_LIMIT = 50; $effect(() => { diff --git a/src/components/WikiList.svelte b/src/components/WikiList.svelte index b619c2f..00bf7a3 100644 --- a/src/components/WikiList.svelte +++ b/src/components/WikiList.svelte @@ -24,7 +24,11 @@ } const { onSelect }: Props = $props(); - const SEARCH_DEBOUNCE_MS = 200; + // Long enough that a moderate typist (~200ms inter-keystroke + // intervals) doesn't fire one Venice embed per keystroke; short + // enough that a deliberate query feels responsive. Matches the + // other drawer searches. + const SEARCH_DEBOUNCE_MS = 400; let debounceTimer: ReturnType | null = null; diff --git a/src/screens/Chat.svelte b/src/screens/Chat.svelte index edd668a..7103fe9 100644 --- a/src/screens/Chat.svelte +++ b/src/screens/Chat.svelte @@ -3835,7 +3835,11 @@ /** AbortController for the in-flight Venice embed call — newer queries cancel older ones. */ let searchAbort: AbortController | null = null; - const SEARCH_DEBOUNCE_MS = 200; + // Long enough that a moderate typist (~200ms inter-keystroke + // intervals) doesn't fire one Venice embed per keystroke; short + // enough that a deliberate query feels responsive. Matches the + // other drawer searches. + const SEARCH_DEBOUNCE_MS = 400; $effect(() => { // Reactively read searchQuery — if it changes, the cleanup below diff --git a/src/screens/Memories.svelte b/src/screens/Memories.svelte index ee32dee..820beba 100644 --- a/src/screens/Memories.svelte +++ b/src/screens/Memories.svelte @@ -49,7 +49,7 @@ // Debounce keystrokes inside the relation-picker so rapid typing // doesn't fire one embedding request per character. Same window the // store uses for its main search. - const SEARCH_DEBOUNCE_MS = 200; + const SEARCH_DEBOUNCE_MS = 400; // The single memory currently displayed. Selection lives on // `route.memory` so it survives a refresh / back / forward and can