• Will Chen's avatar
    Add "Start new chat" button to error box for Dyad Pro users (#2494) · 633baeff
    Will Chen 提交于
    ## Summary
    Added a "Start new chat" button to the ChatErrorBox component that
    appears for Dyad Pro enabled users. This provides a quick way to recover
    from certain chat errors by creating a fresh conversation.
    
    ## Key Changes
    - **ChatErrorBox.tsx**: 
      - Added `MessageSquarePlus` icon import from lucide-react
      - Imported Tooltip components for better UX
      - Added `onStartNewChat` optional callback prop
    - Rendered a new "Start new chat" button with tooltip when Dyad Pro is
    enabled and callback is provided
    
    - **ChatInput.tsx**:
      - Imported `useChats`, `useRouter`, and toast utilities
      - Added `handleNewChat` function that:
        - Creates a new chat via IPC
        - Updates the selected chat ID atom
        - Navigates to the new chat
        - Invalidates the chats cache
        - Shows error toast on failure
      - Passed `handleNewChat` to ChatErrorBox's `onStartNewChat` prop
    
    ## Implementation Details
    - The button only appears when both `isDyadProEnabled` is true AND
    `onStartNewChat` callback is provided
    - Includes a helpful tooltip: "Starting a new chat can fix some issues"
    - Styled consistently with existing UI (blue-600 background, white text,
    hover effects)
    - Gracefully handles errors during chat creation with user-facing toast
    notifications
    - Falls back to home page navigation if appId is unavailable
    
    https://claude.ai/code/session_016vbjv8b4hs5fG52yKHv4oZ
    <!-- devin-review-badge-begin -->
    
    ---
    
    <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2494">
      <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 -->
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Adds a “Start new chat” button to the chat error box for Dyad Pro users
    to quickly recover from errors. Clicking it creates a fresh chat,
    navigates to it, refreshes the chat list, and handles failures
    gracefully.
    
    - **New Features**
    - Button shows only when Dyad Pro is enabled and a callback is provided.
    - Creates a new chat via IPC, selects it, navigates to /chat, and
    invalidates the chats cache.
    - Includes a tooltip (“Starting a new chat can fix some issues”); shows
    a toast on failure and falls back to home if no appId.
    
    <sup>Written for commit f71be0aa8c08cdd258bc59daa21939cf91528c62.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > **Low Risk**
    > Low risk UI/UX change that wires an extra navigation/mutation path
    (IPC chat creation + query invalidation) behind an error-state button
    for Pro users.
    > 
    > **Overview**
    > Adds a Pro-only recovery action in `ChatErrorBox`: a new **“Start new
    chat”** button (with tooltip) shown only when `isDyadProEnabled` and an
    `onStartNewChat` callback are provided.
    > 
    > Wires this action from `ChatInput` via a new `handleNewChat` flow that
    creates a chat over IPC, updates the selected chat atom, navigates to
    the new chat route, invalidates the chats cache, and shows a toast if
    creation fails (fallback navigation to `/` when no `appId`).
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    f71be0aa8c08cdd258bc59daa21939cf91528c62. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    Co-authored-by: 's avatarClaude <noreply@anthropic.com>
    633baeff
名称
最后提交
最后更新
..
AgentConsentBanner.tsx 正在载入提交数据...
AttachmentsList.tsx 正在载入提交数据...
AuxiliaryActionsMenu.tsx 正在载入提交数据...
ChatActivity.tsx 正在载入提交数据...
ChatError.tsx 正在载入提交数据...
ChatErrorBox.tsx 正在载入提交数据...
ChatHeader.tsx 正在载入提交数据...
ChatInput.tsx 正在载入提交数据...
ChatMessage.tsx 正在载入提交数据...
CodeHighlight.tsx 正在载入提交数据...
ContextLimitBanner.tsx 正在载入提交数据...
DeleteChatDialog.tsx 正在载入提交数据...
DragDropOverlay.tsx 正在载入提交数据...
DyadAddDependency.tsx 正在载入提交数据...
DyadAddIntegration.tsx 正在载入提交数据...
DyadCodeSearch.tsx 正在载入提交数据...
DyadCodeSearchResult.tsx 正在载入提交数据...
DyadCodebaseContext.tsx 正在载入提交数据...
DyadDatabaseSchema.tsx 正在载入提交数据...
DyadDelete.tsx 正在载入提交数据...
DyadEdit.tsx 正在载入提交数据...
DyadExecuteSql.tsx 正在载入提交数据...
DyadGrep.tsx 正在载入提交数据...
DyadListFiles.tsx 正在载入提交数据...
DyadLogs.tsx 正在载入提交数据...
DyadMarkdownParser.tsx 正在载入提交数据...
DyadMcpToolCall.tsx 正在载入提交数据...
DyadMcpToolResult.tsx 正在载入提交数据...
DyadOutput.tsx 正在载入提交数据...
DyadProblemSummary.tsx 正在载入提交数据...
DyadRead.tsx 正在载入提交数据...
DyadRename.tsx 正在载入提交数据...
DyadSearchReplace.tsx 正在载入提交数据...
DyadStatus.tsx 正在载入提交数据...
DyadSupabaseProjectInfo.tsx 正在载入提交数据...
DyadSupabaseTableSchema.tsx 正在载入提交数据...
DyadThink.tsx 正在载入提交数据...
DyadTokenSavings.tsx 正在载入提交数据...
DyadWebCrawl.tsx 正在载入提交数据...
DyadWebSearch.tsx 正在载入提交数据...
DyadWebSearchResult.tsx 正在载入提交数据...
DyadWrite.tsx 正在载入提交数据...
FileAttachmentDropdown.tsx 正在载入提交数据...
FixAllErrorsButton.tsx 正在载入提交数据...
FreeAgentQuotaBanner.tsx 正在载入提交数据...
HistoryNavigation.tsx 正在载入提交数据...
HomeChatInput.tsx 正在载入提交数据...
LexicalChatInput.tsx 正在载入提交数据...
MessagesList.tsx 正在载入提交数据...
PromoMessage.tsx 正在载入提交数据...
RenameChatDialog.tsx 正在载入提交数据...
SelectedComponentDisplay.tsx 正在载入提交数据...
StreamingLoadingAnimation.tsx 正在载入提交数据...
SummarizeInNewChatButton.tsx 正在载入提交数据...
TodoList.tsx 正在载入提交数据...
TokenBar.tsx 正在载入提交数据...
UncommittedFilesBanner.tsx 正在载入提交数据...
VersionPane.tsx 正在载入提交数据...
monaco.ts 正在载入提交数据...
stateTypes.ts 正在载入提交数据...
types.d.ts 正在载入提交数据...