willchen96 crash-proofs shared workflows
A single shared workflow could take down the backend; this pass makes the listing page fail gracefully instead of falling over.
The trigger was concrete: when a workflow shared by one user was displayed to another, the app tried to attach the sharer's name and profile - and if that lookup failed, the whole request could crash the server rather than just erroring out. willchen96's pass hardens that path and adds a few related fixes:
- The workflow list now degrades gracefully - if a sharer's name or contact can't be found, the list still loads instead of aborting.
- Loading shared workflows is faster and cheaper, swapping a scan of up to a thousand user records for direct lookups of only the people actually involved.
- Users can no longer share a workflow with themselves, and email addresses are cleaned up before matching so invites land correctly.
- Missing AI-provider keys (Google, OpenAI, Anthropic) now surface a clear error up front instead of failing deep inside a request.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?