[2026-06-04] eagle: Dev/apple-browsers/address-ios-onboarding-issues-merge-fix.md
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# 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.
|
||||
- `loadUrlRespectingAIBoundary` call sites (URL loading that respects the AI query boundary).
|
||||
- AI chat history delegate wiring.
|
||||
|
||||
### 3. Upstream API additions without corresponding branch updates
|
||||
|
||||
- `TabSwitcherStaticButton` gained a required `showMenuOnLongPress:` constructor argument.
|
||||
- Two new protocol methods were added to `TabDelegate` and `TabSwitcherButtonDelegate`.
|
||||
- `OnboardingPixelReporter` gained a new `measureDuckAIFireDialogImpression()` requirement.
|
||||
|
||||
### 4. Deleted upstream API still referenced on branch
|
||||
|
||||
- `DuckAIQueryExperimentCohort` enum (used in `UnifiedToggleInputFeature`) was removed on `main`; 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.
|
||||
Reference in New Issue
Block a user