• Will Chen's avatar
    Add delightful streaming loading animation (#2425) · e991d732
    Will Chen 提交于
    ## Summary
    - Create new `StreamingLoadingAnimation` component with two variants for
    chat streaming states
    - **Initial variant**: Flowing wave animation with 5 glowing orbs,
    staggered bounce, and gradient fills
    - **Streaming variant**: Pulsing indicator with rotating ring and
    animated "generating..." text
    - Replace inline animations in ChatMessage with the new component for
    cleaner code
    
    ## Test plan
    - Start the app and send a message to trigger chat streaming
    - Verify the initial loading animation shows glowing bouncing orbs when
    waiting for first response
    - Verify the streaming indicator shows pulsing "generating..." text
    while content is being generated
    - Check animations work correctly in both light and dark modes
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    <!-- devin-review-badge-begin -->
    
    ---
    
    <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2425">
      <picture>
    <source media="(prefers-color-scheme: dark)"
    srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1">
    <img
    src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1"
    alt="Open with Devin">
      </picture>
    </a>
    <!-- devin-review-badge-end -->
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > **Low Risk**
    > UI-only changes that replace existing loading indicators; main risk is
    visual/regression or performance issues from the new animations.
    > 
    > **Overview**
    > Adds a new `StreamingLoadingAnimation` component with two variants
    (`initial` and `streaming`) using `framer-motion`, rotating verbs, and a
    scrambled text effect.
    > 
    > Updates `ChatMessage` to replace the previous inline loading/spinner
    animations with this shared component for both the pre-response and
    in-stream indicators.
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    65fac50463768be2e56810c498ca5b4c694754bd. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Add a reusable StreamingLoadingAnimation component with “initial” and
    “streaming” variants to improve chat loading feedback. Replaces ad‑hoc
    animations in ChatMessage for a cleaner, consistent UI.
    
    - **New Features**
      - StreamingLoadingAnimation component:
        - initial: glowing orb wave
        - streaming: organic equalizer bars
      - Rotating verbs with scramble text reveal; theme-aware colors
    
    - **Refactors**
    - ChatMessage now uses the new component instead of inline framer-motion
    blocks
      - Centralizes animation styles; no changes to streaming logic
    
    <sup>Written for commit 65fac50463768be2e56810c498ca5b4c694754bd.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    ---------
    Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
    e991d732
名称
最后提交
最后更新
..
chat 正在载入提交数据...
home 正在载入提交数据...
preview_panel 正在载入提交数据...
settings 正在载入提交数据...
ui 正在载入提交数据...
AIGeneratorTab.tsx 正在载入提交数据...
AppList.tsx 正在载入提交数据...
AppSearchDialog.tsx 正在载入提交数据...
AppUpgrades.tsx 正在载入提交数据...
AutoApproveSwitch.tsx 正在载入提交数据...
AutoExpandPreviewSwitch.tsx 正在载入提交数据...
AutoFixProblemsSwitch.tsx 正在载入提交数据...
AutoUpdateSwitch.tsx 正在载入提交数据...
BugScreenshotDialog.tsx 正在载入提交数据...
CapacitorControls.tsx 正在载入提交数据...
ChatInputControls.tsx 正在载入提交数据...
ChatList.tsx 正在载入提交数据...
ChatModeSelector.tsx 正在载入提交数据...
ChatPanel.tsx 正在载入提交数据...
ChatSearchDialog.tsx 正在载入提交数据...
CommunityCodeConsentDialog.tsx 正在载入提交数据...
ConfirmationDialog.tsx 正在载入提交数据...
ContextFilesPicker.tsx 正在载入提交数据...
CopyErrorMessage.tsx 正在载入提交数据...
CreateAppDialog.tsx 正在载入提交数据...
CreateCustomModelDialog.tsx 正在载入提交数据...
CreateCustomProviderDialog.tsx 正在载入提交数据...
CreatePromptDialog.tsx 正在载入提交数据...
CustomErrorToast.tsx 正在载入提交数据...
CustomThemeDialog.tsx 正在载入提交数据...
DefaultChatModeSelector.tsx 正在载入提交数据...
DeleteConfirmationDialog.tsx 正在载入提交数据...
DyadProSuccessDialog.tsx 正在载入提交数据...
DyadProTrialDialog.tsx 正在载入提交数据...
EditCustomModelDialog.tsx 正在载入提交数据...
EditThemeDialog.tsx 正在载入提交数据...
ErrorBoundary.tsx 正在载入提交数据...
ForceCloseDialog.tsx 正在载入提交数据...
GitHubConnector.tsx 正在载入提交数据...
GitHubIntegration.tsx 正在载入提交数据...
GithubBranchManager.tsx 正在载入提交数据...
GithubCollaboratorManager.tsx 正在载入提交数据...
HelpBotDialog.tsx 正在载入提交数据...
HelpDialog.tsx 正在载入提交数据...
ImportAppButton.tsx 正在载入提交数据...
ImportAppDialog.tsx 正在载入提交数据...
InputRequestToast.tsx 正在载入提交数据...
LibraryList.tsx 正在载入提交数据...
LoadingBlock.tsx 正在载入提交数据...
LocalAgentNewChatToast.tsx 正在载入提交数据...
MaxChatTurnsSelector.tsx 正在载入提交数据...
McpConsentToast.tsx 正在载入提交数据...
McpToolsPicker.tsx 正在载入提交数据...
ModelPicker.tsx 正在载入提交数据...
NeonConnector.tsx 正在载入提交数据...
NeonDisconnectButton.tsx 正在载入提交数据...
NeonIntegration.tsx 正在载入提交数据...
NodePathSelector.tsx 正在载入提交数据...
PortalMigrate.tsx 正在载入提交数据...
PriceBadge.tsx 正在载入提交数据...
ProBanner.tsx 正在载入提交数据...
ProModeSelector.tsx 正在载入提交数据...
ProviderSettings.tsx 正在载入提交数据...
ReleaseChannelSelector.tsx 正在载入提交数据...
RuntimeModeSelector.tsx 正在载入提交数据...
ScreenshotSuccessDialog.tsx 正在载入提交数据...
SettingsList.tsx 正在载入提交数据...
SetupBanner.tsx 正在载入提交数据...
SetupProviderCard.tsx 正在载入提交数据...
SupabaseConnector.tsx 正在载入提交数据...
SupabaseIntegration.tsx 正在载入提交数据...
TelemetryBanner.tsx 正在载入提交数据...
TelemetrySwitch.tsx 正在载入提交数据...
TemplateCard.tsx 正在载入提交数据...
ThinkingBudgetSelector.tsx 正在载入提交数据...
VercelConnector.tsx 正在载入提交数据...
VercelIntegration.tsx 正在载入提交数据...
ZoomSelector.tsx 正在载入提交数据...
app-sidebar.tsx 正在载入提交数据...
appItem.tsx 正在载入提交数据...