bmersereau puts a 3-minute leash on stalled chat streams
When the model hangs, the connection now dies cleanly instead of dangling forever.
Under load, bmersereau's fork was hitting a familiar failure: the chat backend would call out to the LLM provider, the provider would stall, and the open streaming connection would just sit there - eating resources and leaving the user staring at a frozen reply. Four separate bug reports traced back to the same symptom.
The fix is small and uniform. Both chat endpoints - the general one and the project-scoped one - now race the model call against a 180-second deadline. If the deadline wins, the user gets a structured timeout error and the connection closes properly. The team also added tests that assert the timeout pattern is actually present in both routes, so it can't silently drift away in a future refactor.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?