• Adekunle James Adeniji's avatar
    AI Conflict Resolver (#2240) · d70c8269
    Adekunle James Adeniji 提交于
    Solves part of #2207
    
    
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > Introduces an in-app merge conflict workflow with both AI-assisted and
    manual resolution, integrated into Git sync and branch merges.
    > 
    > - New `GithubConflictResolver` dialog: previews conflicting sections,
    "Auto-Resolve with AI" (with optional auto-approve) and "Accept Current
    Changes", and progresses through multi-file conflicts
    > - Integrated into `GitHubConnector` and `GithubBranchManager` to
    surface conflicts after failed push/merge, guide resolution, and then
    finalize via `ipc.github.completeMerge` (rebase-continue or merge
    commit)
    > - New IPC contracts/handlers: `github:get-conflicts`,
    `github:resolve-conflict` (writes/stages ours), `github:complete-merge`;
    plus improved conflict detection by checking conflicts directly on
    errors
    > - Enhanced error/rebase-state messaging and abort/continue flows;
    avoids relying on IPC-serialized error names
    > - E2E tests for AI and manual conflict resolution; fake LLM updated to
    emit conflict-fixing `dyad-write`
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    98b8aa07ef175a2806bbc0609b433279fbde78c8. 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
    Adds inline merge-conflict resolution with a chat-based flow and a
    cancel option. Conflict detection, streaming, and cancel behavior are
    more reliable; merges remain blocked until the repo is clean.
    
    - **New Features**
    - Inline conflict banner listing files, with “Resolve merge conflicts
    with AI” (opens a new chat, auto-starts streaming) and “Cancel sync”;
    buttons disable while resolving or cancelling.
    - New useResolveMergeConflictsWithAI hook that validates appId, guards
    rapid clicks, creates the chat, navigates, starts the stream, and
    refreshes chats/app on completion; integrated into GitHubConnector and
    GithubBranchManager and clears conflicts only after chat creation.
    - E2E tests for AI resolution and cancel flow; fake LLM supports new and
    legacy prompts; Electron IPC docs clarify stream start returns void and
    how to avoid duplicate streams.
    
    - **Bug Fixes**
    - Always fetch conflicts after failed sync/merge, not relying on
    serialized error names; clearer messages for rebase/merge states and
    when conflict checks fail.
    - Cancel sync only shows success when an abort actually occurs; clears
    conflicts and refreshes branches; buttons disable during cancellation.
    - Resets streaming state if stream setup or navigation fails; onError
    now refreshes chat list and app; e2e git commands quote filenames.
    
    <sup>Written for commit 8ec0dd605bdadbec9b64b64643c0010129c9735b.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    
    
    
    <!-- devin-review-badge-begin -->
    
    ---
    
    <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2240">
      <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 -->
    
    ---------
    Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
    Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
    d70c8269
名称
最后提交
最后更新
..
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 正在载入提交数据...
ChatCompletionNotificationSwitch.tsx 正在载入提交数据...
ChatInputControls.tsx 正在载入提交数据...
ChatList.tsx 正在载入提交数据...
ChatModeSelector.tsx 正在载入提交数据...
ChatPanel.tsx 正在载入提交数据...
ChatSearchDialog.tsx 正在载入提交数据...
CommunityCodeConsentDialog.tsx 正在载入提交数据...
ConfirmationDialog.tsx 正在载入提交数据...
ContextCompactionSwitch.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 正在载入提交数据...
LanguageSelector.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 正在载入提交数据...