Split-view panes now render a compact streaming status: the spinner, elapsed time, token count, and cancel hint stay, but the rotating "witty" loading phrase is suppressed. StreamingStatus gains a showPhrase prop (default true, so the main chat is unchanged); when false it also skips the phrase-rotation timer so each pane avoids a needless interval.
* feat(web-shell): allow host to override streaming loading phrases
Add a `loadingPhrases` resolver to WebShellCustomization / WebShellProps so
hosts can override the built-in witty phrases per UI language. Returning an
array replaces the defaults, [] hides the phrase, and undefined/null keeps
the built-in defaults.
Resolve the host function through a ref so the phrase-rotation effect keeps a
stable dependency: an inline (non-memoized) resolver no longer tears down the
15s interval on every streaming re-render. pickPhrase re-resolves each tick so
a resolver swapped mid-stream is reflected on the next rotation.
* fix(web-shell): harden loadingPhrases resolver against throws + cover empty→non-empty toggle
Address review suggestions on #5900:
- Contain a host resolver that throws inside resolvePhrases (it would
otherwise propagate out of the 15s setInterval tick every cycle and freeze
the phrase); fall back to the built-in defaults and warn.
- Add tests for the throw-fallback path and for the []→non-empty transition
picked up on the next rotation tick (guards the dropped empty early-return).
---------
Co-authored-by: Shaojin Wen <shaojin.wensj@alibaba-inc.com>