Repository navigation
feat(apollo-react): add the Wind chat first run, suggestions and thinking state - #1396
Open
BenGSchulz wants to merge 1 commit into
Open
BenGSchulz wants to merge 1 commit into
BenGSchulz wants to merge 1 commit into
Conversation
This was referenced Oct 16, 2026
Contributor
Dependency License Review
License distribution
Excluded packages
|
BenGSchulz
added this pull request to stack #1374
October 16, 2026 16:23
Contributor
📊 Coverage + size by packagePer-package coverage and bundle size on this PR. New-line coverage = of the source lines this PR adds or changes, the % hit by tests.
"Coverage" is each package's own |
BenGSchulz
force-pushed
the
feat/wind-chat-first-run-suggestions
branch
from
October 16, 2026 18:34
3eccbfe to
61291d0
Compare
…king state Show the first-run experience in the Wind chat on apollo-wind's ChatHero: centered around the composer in FullScreen and docked above it in Embedded, giving way to the transcript on the first message without remounting the composer. Show the service's suggestions on PromptSuggestions under the reply they were set after, sending or filling the composer on pick, and drive the thinking state's messages from the loading provider. Hoist the loading message rotation state into the loading provider, the suggestion pick into useSuggestionSelect and the first-run and suggestion selectors into chat state, and switch Material's loading text, suggestions and first-run experience to them. MST-16567 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BenGSchulz
force-pushed
the
feat/wind-chat-first-run-suggestions
branch
from
October 16, 2026 19:52
61291d0 to
869302c
Compare
BenGSchulz
marked this pull request as ready for review
October 16, 2026 20:13
This was referenced Oct 16, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Sixth PR of the Wind chat renderer stack (MST-16567). It adds the first-run experience, suggestions and thinking state. The stack was first rebased onto
mainso it can use W-7'sChatHeroandPromptSuggestions(#1368).First-run experience (apollo-wind
ChatHero)firstRunExperiencehas a title, description or suggestions.dockedhero sits at the bottom of the message area, above the composer, where Material's is, with Material's vertical list of suggestions.hasMessagesfollows the service events, in the same batch as the transcript), and not while a conversation loads, where the skeleton shows. A reply awaited on an empty chat shows the thinking row inside the hero, as Material shows its loading text beside the first run.sendRequestclears the prompt in both renderers (service behaviour), so the draft survives a first message from the host, such as a greeting reply.sendOnClickit sends through theRequestintercept; otherwise it fills the composer. Focus goes to the composer either way, as in Material.Suggestions after messages (apollo-wind
PromptSuggestions)setSuggestionslist shows under the latest reply, titled "Suggestions" and animated in. It belongs to the user turn it was set in: replies to that turn keep it (a host may set it from its Request handler, before the reply), and the next user message leaves it behind.sendOnClickfalls back to the first-run setting, as in Material.Thinking state
ThinkingIndicatorrow now takes its messages from the loading provider: the service's defaults rotate everyduration(an earlier duration is kept when new defaults come without one),setLoadingMessagereplaces them, and each request or hostsetShowLoading(true)starts again from the defaults.Hoisted into
src/chat/headlessproviders/loading-provider.tsx:loadingMessages,loadingMessageDurationchat-loading-text.tsx: defaults,setLoadingMessage, duration, reset on request.useLoadingMessagesreads itchat-loading-text.tsxreads it and keeps its fadehooks/use-suggestions.ts:useSuggestionSelectchat-suggestions.tsxhooks/use-suggestions.ts:useConversationSuggestionssendOnClickwith the first-run fallback, and whether they still belong to the latest user turnchat-message.tsxreads items andsendOnClick(Material keeps showing them whenever the conversation is non-empty)providers/chat-state-provider.tsx:firstRunVisible,suggestions,hasMessageshasMessagesfrom the service events and the initial conversationchat-fre.tsx,chat-message.tsxA small Material change: a
setLoadingMessagesent before the loading text mounts is no longer lost.Storybook
pnpm storybook:design, then Apollo React / Chat / Playground, Compare renderers:firstRunExperienceon) in Embedded and FullScreen.sendOnClick, so picking fills the composer; sending on pick is covered by Suggestions that send and the tests.sendOnClick). Send another message to see them cleared.compactModefor the compact hero and chips.Tests
vitest --run src/chat src/material/components/ap-chat src/material/components/ap-tool-call: 52 files, 293 tests pass, including Material regression tests for the loading text (rotation and set message under fake timers, nothing running after unmount), first run and suggestions, and a no-flash test beside a conversation set before mount in both renderers. New tests cover:sendOnClickfallback and clearing on request;firstRunVisible;Requestparity test.tsc --noEmit: clean.biome checkon touched files: one warning already present (extra setter dependencies inchat-state-provider.tsx'suseMemo).DOCS.mdnow says the service does not store suggestions and that only a request ornewChatclears them.message.suggestions-title,message.generating-response.Stack
Jira: MST-16567
🤖 Generated with Claude Code