Keep global search useful during partial failures and rapid typing #199

Closed
opened 2026-08-07 14:09:40 +00:00 by timmy · 0 comments
Owner

User problem

Global work search currently fails completely when either the issue or pull stream fails, returns as many as twice the requested result limit, and leaves superseded browser requests running during rapid typing. This makes the command palette unreliable under ordinary upstream latency or partial outages.

Evidence

  • src/gitea_proxy.py uses fail-fast asyncio.gather for the two streams and does not cap the merged result.
  • frontend/commands.js suppresses stale rendering but does not abort superseded requests.
  • No open/closed issue, PR, release, or recent commit covers partial-stream success, aggregate result bounds, or request cancellation. #195/#196 introduced search; #197/#198 added preview/claim only.

Acceptance criteria

  • One healthy stream returns useful results plus sanitized degraded-state metadata when the other stream fails.
  • Both streams failing preserves retryable HTTP 503 behavior.
  • The final normalized/deduplicated result list never exceeds limit.
  • Starting a newer query or clearing the input aborts an outstanding browser request without showing an error.
  • The command palette renders partial results with a concise degraded-search status.
  • Focused behavioral tests and the full suite pass.
## User problem Global work search currently fails completely when either the issue or pull stream fails, returns as many as twice the requested result limit, and leaves superseded browser requests running during rapid typing. This makes the command palette unreliable under ordinary upstream latency or partial outages. ## Evidence - `src/gitea_proxy.py` uses fail-fast `asyncio.gather` for the two streams and does not cap the merged result. - `frontend/commands.js` suppresses stale rendering but does not abort superseded requests. - No open/closed issue, PR, release, or recent commit covers partial-stream success, aggregate result bounds, or request cancellation. #195/#196 introduced search; #197/#198 added preview/claim only. ## Acceptance criteria - One healthy stream returns useful results plus sanitized degraded-state metadata when the other stream fails. - Both streams failing preserves retryable HTTP 503 behavior. - The final normalized/deduplicated result list never exceeds `limit`. - Starting a newer query or clearing the input aborts an outstanding browser request without showing an error. - The command palette renders partial results with a concise degraded-search status. - Focused behavioral tests and the full suite pass.
timmy self-assigned this 2026-08-07 14:09:40 +00:00
timmy closed this issue 2026-08-07 14:19:54 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
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: stackchain/stackchain-dashboard#199
No description provided.