3.1 KiB
Merge Fix: address-ios-onboarding-issues ← origin/main
Date: 2026-06-04
Branch: alex/address-ios-onboarding-issues
Commit: 4acf1c9737
Context
After merging origin/main into the feature branch, the iOS target failed to build due to a combination of upstream enum renames and code that was accidentally dropped during manual conflict resolution.
Root causes
1. Upstream enum renames
origin/main renamed two enums (removing the Experiment infix):
| Old name | New name |
|---|---|
DuckAIQueryExperimentMode |
DuckAIQueryMode |
DuckAIQueryExperimentPromptSource |
DuckAIQueryPromptSource |
The old source file DuckAIQueryExperimentMode.swift was deleted upstream but its Xcode project reference was not removed during the merge, causing a project.pbxproj orphan.
2. Code dropped during conflict resolution in MainViewController.swift
When resolving conflicts, several blocks of code that existed only on the feature branch were incorrectly discarded in favour of the incoming main version:
bindAIChatChromeChipToCurrentTab()and its call site.loadUrlRespectingAIBoundarycall sites (URL loading that respects the AI query boundary).- AI chat history delegate wiring.
3. Upstream API additions without corresponding branch updates
TabSwitcherStaticButtongained a requiredshowMenuOnLongPress:constructor argument.- Two new protocol methods were added to
TabDelegateandTabSwitcherButtonDelegate. OnboardingPixelReportergained a newmeasureDuckAIFireDialogImpression()requirement.
4. Deleted upstream API still referenced on branch
DuckAIQueryExperimentCohortenum (used inUnifiedToggleInputFeature) was removed onmain; the branch code was updated to remove that dependency.
Files changed
| File | What was fixed |
|---|---|
OnboardingIntroViewModel.swift |
Renamed enum references |
OnboardingView.swift |
Renamed enum references |
OnboardingPixelReporter.swift |
Renamed enum refs + added measureDuckAIFireDialogImpression() |
ContextualDaxDialogsFactory.swift |
Updated pixel-firing call to new method name |
RebrandedContextualDaxDialogFactory.swift |
Same as above |
UnifiedToggleInputFeature.swift |
Restored isToggleHiddenOnDuckAITab without deleted cohort enum |
OnboardingPixelReporterMock.swift |
Enum renames + added missing mock method |
MainViewController.swift |
Restored dropped AI-chat binding, URL boundary logic, new protocol stubs, updated constructor calls, removed deleted API calls |
project.pbxproj |
Removed orphan reference to deleted DuckAIQueryExperimentMode.swift |
Package.resolved (×3) |
Accepted upstream SPM dependency version bumps |
Possible follow-up
The merge resolution was done by patching the already-merged working tree rather than by redoing the merge from scratch. If a cleaner history is desired, the merge commit could be reset and the merge re-done with these fixes applied interactively. The complete list of changes above serves as a reference for what conflicts to resolve in that scenario.