chore(frontend-check): document use-entity-search exception; allow helpdesk multipart fetches

use-entity-search reason expanded per 2026-06-10 work order Task 11
(Gate C: allowlist with documented reason). /api/support/ (CMS widget)
and /api/helpdesk/upload (orchestrator) are multipart FormData uploads
connect-query cannot express — WARN, not FAIL.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Alex Dunmow 2026-06-10 14:52:35 +08:00
parent 0e8d0e6d1c
commit fbe14f6c57

View File

@ -34,7 +34,11 @@ var allowedFrontendFiles = map[string]bool{
"player/human-proof/index.ts": true, // Standalone player bundle — no React, fetches public REST endpoint
// createClient exceptions — each has a technical reason why useQuery/useMutation can't be used:
"hooks/use-entity-search.ts": true, // useQueries for parallel search — connect-query doesn't support this
// use-entity-search fans one debounced query out to 10 RPCs across 8 services
// via useQueries (single combined loading state + result blending for the
// command palette); generated per-RPC hooks can't express this without 10
// independent hook instances and manual aggregation.
"hooks/use-entity-search.ts": true,
"routes/admin/plugins.tsx": true, // Server-streaming (for await...of) — useMutation doesn't support streaming
"hooks/use-restart-operation.ts": true, // Server-streaming + raw Connect envelope for cross-origin orchestrator stream
"routes/admin/menus.tsx": true, // Imperative async callback in useCallback
@ -56,6 +60,8 @@ var knownNonProtoFetches = map[string]bool{
"/api/lists/subscribe": true, // Public subscribe endpoint
"/preview/": true, // Preview HTML endpoints
"/api/ai/chat/stream": true, // AI chat SSE streaming (EventSource/fetch — ConnectRPC doesn't support SSE)
"/api/support/": true, // CMS helpdesk widget: multipart attachment upload to the Chi proxy — connect-query can't send FormData
"/api/helpdesk/upload": true, // Orchestrator helpdesk: multipart attachment upload — same FormData limitation
}
var (