A search that could not start is now the tab's startError in the per-tab
cache, set by the mutation's own onError, so it survives the panel
unmounting. The first page is no longer asked for again by itself, and
the ErrorBanner with Retry stays until Retry clears it.
An add to the Quest log now marks the row added from the mutation's own
onSuccess, which runs even when the row has unmounted, so the check is
there when the tab is shown again.
Review findings F1 and F2 on PR #152; task db934d36-f554-41ef-9061-5f100a0b6452.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/quick now renders mock 1j: a grape zap header, Crock pot | 30 min or
less tabs with a helper line each, and rows of grounded quick_ideas
(64 px washed photo, Bagel name, "25 min · Medium" or "Crock pot · 6 hr
· Easy", the time left off when the recipe has none) with a teal "+"
that adds the idea to the Quest log and becomes a check.
Each tab is its own POST /api/v1/ideas/quick search, polled with useJob
and filled as the server grounds ideas. A tab's pages, the job finding
its next page and the ideas added are kept in the query cache for the
session, so switching tabs or leaving the screen keeps them. "Show me
more" asks for the same kind excluding every name shown; no_ideas_found
on a later page ends the tab honestly. Failures use the ErrorBanner and
Retry, as Cook from what I have does.
The App bootstrap tests that used /quick as a placeholder route now use
/settings/notifications.
Maestro task db934d36-f554-41ef-9061-5f100a0b6452.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>