diff --git a/apps/web/src/lib/__tests__/transcript-search.test.ts b/apps/web/src/lib/__tests__/transcript-search.test.ts index f94e35c22..105269a1c 100644 --- a/apps/web/src/lib/__tests__/transcript-search.test.ts +++ b/apps/web/src/lib/__tests__/transcript-search.test.ts @@ -54,6 +54,10 @@ describe('filterSegments — empty/null query behavior (#908)', () => { segments.length, ); }); + + it('returns the original segment array when no filters are active', () => { + expect(filterSegments(segments, { search: '' })).toBe(segments); + }); }); describe('filterSegments — null-safe segment text (#908)', () => { diff --git a/apps/web/src/lib/transcript-search.ts b/apps/web/src/lib/transcript-search.ts index 7a22c05aa..0c1c12ab9 100644 --- a/apps/web/src/lib/transcript-search.ts +++ b/apps/web/src/lib/transcript-search.ts @@ -68,6 +68,8 @@ export function filterSegments( segments: readonly TranscriptSegment[], { search, speaker }: TranscriptFilter, ): TranscriptSegment[] { + if (!search && !speaker) return segments as TranscriptSegment[]; + // Hoisted out of the loop: removes N toLowerCase() allocations per keystroke // update on long transcripts. This is the optimization PR #972 shipped. const lowerSearchQuery = search ? search.toLowerCase() : '';