Search failure is indistinguishable from the empty pre-query state #107

Closed
opened 2026-07-15 19:52:54 +00:00 by claude-bot · 1 comment
Contributor

Severity: Medium · Confidence: High · Effort: XS · Category: ui

Evidence

  • app/src/pages/Search/SearchPage.tsx:139-153 - catch { setResults(null); }; :511-519 - renders the same "Type to search." empty state when results is null.

Problem
If /api/search errors (500, timeout, embedding backend down for semantic search), the UI reverts to the exact pre-query empty state. A user who searched sees no indication the request failed.

Impact
A user concludes their content isn't there rather than that search errored - especially damaging for semantic search when the AI backend is down.

Fix
Add a distinct error state and render "Search failed - try again."

Acceptance criteria

  • A failing /api/search shows an error message, not the empty prompt.

Filed from the 2026-07-15 codebase audit. Full report: docs/.internal/report-2026-07-15.md (gitignored).

**Severity:** Medium · **Confidence:** High · **Effort:** XS · Category: ui **Evidence** - `app/src/pages/Search/SearchPage.tsx:139-153` - `catch { setResults(null); }`; `:511-519` - renders the same "Type to search." empty state when `results` is null. **Problem** If `/api/search` errors (500, timeout, embedding backend down for semantic search), the UI reverts to the exact pre-query empty state. A user who searched sees no indication the request failed. **Impact** A user concludes their content isn't there rather than that search errored - especially damaging for semantic search when the AI backend is down. **Fix** Add a distinct `error` state and render "Search failed - try again." **Acceptance criteria** - [ ] A failing `/api/search` shows an error message, not the empty prompt. --- _Filed from the 2026-07-15 codebase audit. Full report: `docs/.internal/report-2026-07-15.md` (gitignored)._
Author
Contributor

/api/search failures (500, timeout, embedding backend down) now render a distinct 'Search failed — try again.' state instead of reverting to the identical 'Type to search' empty prompt.

Shipped in 59e4fdd (test fix 6561f9a), part of the v7.3.0 milestone. Verified on dev (v7.2.1-3-g6561f9a): app suite 65/65 and api suite 268/268 green on the dev server; the one CI red was the known runner flake (iac#159), not this change.

`/api/search` failures (500, timeout, embedding backend down) now render a distinct **'Search failed — try again.'** state instead of reverting to the identical 'Type to search' empty prompt. Shipped in `59e4fdd` (test fix `6561f9a`), part of the v7.3.0 milestone. Verified on dev (`v7.2.1-3-g6561f9a`): app suite 65/65 and api suite 268/268 green on the dev server; the one CI red was the known runner flake (iac#159), not this change.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/TeaLeaves#107
No description provided.