Failed to authenticate. API Error: 401 Invalid authentication credentials
[2026-05-18] vault sync
This commit is contained in:
@@ -8,6 +8,7 @@ related:
|
||||
- "[[family/documents/recipes-wishlist]]"
|
||||
---
|
||||
Китай
|
||||
- [ ] Короткий Type C кабель
|
||||
- [ ] Жёлтый дождевик как у Джейсона
|
||||
- [ ] Экран для проектора ребенку
|
||||
- [ ] орехи чили
|
||||
|
||||
@@ -11,8 +11,9 @@
|
||||
| PR | Branch | Review status |
|
||||
|---|---|---|
|
||||
| [#4544](https://github.com/duckduckgo/apple-browsers/pull/4544) | `demo-tracker-blocking-onboarding` | Open — review required (Alessandro + Rachel left comments) |
|
||||
| [#4591](https://github.com/duckduckgo/apple-browsers/pull/4591) | `demo-tracker-blocking-onboarding-ui-polish` | Approved |
|
||||
| [#4664](https://github.com/duckduckgo/apple-browsers/pull/4664) | `demo-tracker-blocking-onboarding-chat-path-dialog-polish` | Approved |
|
||||
| [#4584](https://github.com/duckduckgo/apple-browsers/pull/4584) | `demo-tracker-blocking-onboarding-eoj-dax-animation` | **Merged** ✅ 2026-05-18 |
|
||||
| [#4591](https://github.com/duckduckgo/apple-browsers/pull/4591) | `demo-tracker-blocking-onboarding-ui-polish` | **Merged** ✅ 2026-05-15 |
|
||||
| [#4664](https://github.com/duckduckgo/apple-browsers/pull/4664) | `demo-tracker-blocking-onboarding-chat-path-dialog-polish` | **Merged** ✅ 2026-05-15 |
|
||||
| [#4855](https://github.com/duckduckgo/apple-browsers/pull/4855) | `demo-tracker-blocking-onboarding-sr-feedback` | Open — no review yet |
|
||||
| [#4668](https://github.com/duckduckgo/apple-browsers/pull/4668) | `demo-tracker-blocking-onboarding-uti-flow` | Open — no review yet |
|
||||
|
||||
@@ -74,13 +75,13 @@
|
||||
|
||||
---
|
||||
|
||||
### 🔴 SR — GJ6b/ "You've got this" EOJ fails after tapping "Got it" on tracker blocking step
|
||||
### ✅ SR — GJ6b/ "You've got this" EOJ fails after tapping "Got it" on tracker blocking step
|
||||
|
||||
**Source:** [Gary Apr 29](https://app.asana.com/1/137249556945/task/1214147157456478/comment/1214409112744728): "This dialogue fails to appear after tapping 'Got it' on the tracker blocking step. As a result, we also skip the subscription upsell dialogue."
|
||||
|
||||
This is the same bug as **PR #4544 — Bugbot r3234645543** below. Fix is in `didTapDismissContextualOnboardingAction` on sr-feedback branch, not yet on #4544 branch.
|
||||
**Fix:** `if contextualOnboardingLogic.chatPathPhase == .trackerToEOJ { delegate?.tabDidRequestNewTab(self) }` added to `didTapDismissContextualOnboardingAction` in `TabViewController.swift`.
|
||||
|
||||
**State:** 🔴 Fix exists in PR #4855 (`sr-feedback`), NOT in PR #4544. GitHub thread on #4544 NOT resolved.
|
||||
**State:** ✅ Fix landed in `alex/demo-tracker-blocking-onboarding` via PR #4584 merge (2026-05-18). GitHub thread on #4544 still open — needs resolving.
|
||||
|
||||
---
|
||||
|
||||
@@ -198,59 +199,73 @@ All resolved on GitHub. Fixed in later commits on the `#4544` branch.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4544 — Alessandro (ContextualOnboardingNewTabDialogFactoryTests.swift:172): Tests are for the legacy factory
|
||||
### 🟠 PR #4544 — Alessandro (ContextualOnboardingNewTabDialogFactoryTests.swift:172): Tests are for the legacy factory
|
||||
|
||||
**Source:** [Alessandro May 7 review on PR #4544](https://github.com/duckduckgo/apple-browsers/pull/4544), `ContextualOnboardingNewTabDialogFactoryTests.swift:172`
|
||||
|
||||
**Issue:** "Just bear in mind that these tests are for the legacy factory." Tests added under `// MARK: - Chat Path – Subsequent Dialog` target `NewTabDaxDialogFactory` (legacy), not `RebrandedNewTabDaxDialogFactory` (active under the rebranding flag).
|
||||
**Issue:** "Just bear in mind that these tests are for the legacy factory." Tests target `NewTabDaxDialogFactory`, not `RebrandedNewTabDaxDialogFactory` (active under rebranding flag).
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. Rebranded factory coverage may be insufficient.
|
||||
**State:** 🟠 Partially addressed — `createFinalDialog` chat-path branching removed (both factories now symmetric), so the asymmetry this comment highlighted is gone. `createSubsequentDialog` chat-path logic still only tested via legacy factory. GitHub thread still open.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4544 — Bugbot: Dead property `pendingCompletionDialogMessage` never set non-nil (`NewTabDaxDialogFactory.swift:192`)
|
||||
### ✅ PR #4544 — Bugbot (r3234446893): Dead `isChatPath` branch in `NewTabDaxDialogFactory.createFinalDialog`
|
||||
|
||||
**Source:** Bugbot on PR #4544, `NewTabDaxDialogFactory.swift:192`
|
||||
**Source:** Bugbot on PR #4544, `NewTabDaxDialogFactory.swift:192` ([r3234446893](https://github.com/duckduckgo/apple-browsers/pull/4544#discussion_r3234446893))
|
||||
|
||||
**Issue:** `NewTabDaxDialogFactory.createFinalDialog` was updated with chat-path conditional logic (`chatPathPhase == .trackerToEOJ && isAIChatEnabled` choosing a different message + pixel), but `RebrandedNewTabDaxDialogFactory.createFinalDialog` was not updated to match — despite its section mark being renamed to "Chat-Path Completion". The `.final` spec is currently unreachable for chat-path + AI-enabled users (the chat EOJ is driven by `presentChatPathOnboardingCompletionIfNeeded` instead), so `pendingCompletionDialogMessage` is always nil.
|
||||
**Issue:** `NewTabDaxDialogFactory.createFinalDialog` had chat-path conditional logic (`chatPathPhase == .trackerToEOJ && isAIChatEnabled`), but `RebrandedNewTabDaxDialogFactory.createFinalDialog` did not. `.final` is unreachable for chat-path + AI-enabled users (EOJ driven by `presentChatPathOnboardingCompletionIfNeeded`), so both branches were dead.
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. The dead branching in `NewTabDaxDialogFactory` was removed in a later commit; verify `RebrandedNewTabDaxDialogFactory` is consistent.
|
||||
**Fix:** Removed `isChatPath` conditional from `NewTabDaxDialogFactory.createFinalDialog` — both factories now always use standard EOJ message + `daxDialogsEndOfJourneyNewTabUnique` pixel. Deleted test `testWhenChatPathEOJState_AndFinalDialogAppears_ThenFiresDuckAIExperimentFinalDialogPixel` (tested dead code); simplified remaining final-dialog tests.
|
||||
|
||||
**State:** ✅ Fixed in `alex/demo-tracker-blocking-onboarding` working tree (2026-05-18). Not yet committed.
|
||||
|
||||
---
|
||||
|
||||
### 🟡 PR #4544 — Bugbot (r3234645543) / SR GJ6b/: Chat-path EOJ not shown after tapping tracker dialog CTA
|
||||
### ✅ PR #4544 — Bugbot (r3234645543) / SR GJ6b/: Chat-path EOJ not shown after tapping tracker dialog CTA
|
||||
|
||||
**Source:** [Bugbot comment r3234645543 on PR #4544](https://github.com/duckduckgo/apple-browsers/pull/4544#discussion_r3234645543), `TabViewController.swift:4214`. Also reported as SR GJ6b/ by [Gary Apr 29](https://app.asana.com/1/137249556945/task/1214147157456478/comment/1214409112744728) — same bug.
|
||||
|
||||
**Issue:** When user taps "Got it" on the tracker-blocked dialog, the code goes through `didTapDismissContextualOnboardingAction`, which does not call `tabDidRequestNewTab`. The EOJ new tab is never opened.
|
||||
|
||||
**Fix:** Added `if contextualOnboardingLogic.chatPathPhase == .trackerToEOJ { delegate?.tabDidRequestNewTab(self) }` to `didTapDismissContextualOnboardingAction`. (Same block was already in `didNavigateAwayFromContextualOnboardingDialog`.)
|
||||
**Fix:** `if contextualOnboardingLogic.chatPathPhase == .trackerToEOJ { delegate?.tabDidRequestNewTab(self) }` in `didTapDismissContextualOnboardingAction` (`TabViewController.swift:4206`).
|
||||
|
||||
**State:** Fix exists in commit `6c3774e4f8` on `sr-feedback` branch (PR #4855). **NOT present on the `#4544` branch itself.** Fix will land in `main` when the full PR stack merges. GitHub thread on PR #4544 is **NOT resolved**.
|
||||
**State:** ✅ Fix in `alex/demo-tracker-blocking-onboarding` (landed via PR #4584 merge, 2026-05-18). GitHub thread on PR #4544 still open — needs resolving.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4544 — Bugbot: Rebranded factory's final dialog missing chat-path branching (`RebrandedNewTabDaxDialogFactory.swift:202`)
|
||||
### ✅ PR #4544 — Bugbot: Rebranded factory's final dialog missing chat-path branching (`RebrandedNewTabDaxDialogFactory.swift:202`)
|
||||
|
||||
**Source:** Bugbot on PR #4544, `RebrandedNewTabDaxDialogFactory.swift:202`
|
||||
|
||||
**Issue:** `NewTabDaxDialogFactory.createFinalDialog` has chat-path branching (`chatPathPhase == .trackerToEOJ && isAIChatEnabled`), but `RebrandedNewTabDaxDialogFactory.createFinalDialog` does not — both are selected by the `onboardingRebranding` feature flag. While `.final` is currently unreachable for chat-path + AI-enabled users, divergence could cause the wrong message + pixel if the flow changes.
|
||||
**Issue:** `NewTabDaxDialogFactory.createFinalDialog` had chat-path branching, `RebrandedNewTabDaxDialogFactory.createFinalDialog` did not. Both factories are selected by the `onboardingRebranding` feature flag.
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. Needs symmetry check between the two factories.
|
||||
**Fix:** Resolved by removing the dead branch from `NewTabDaxDialogFactory` (see r3234446893 entry above). Both factories now symmetric.
|
||||
|
||||
**State:** ✅ Fixed in `alex/demo-tracker-blocking-onboarding` working tree (2026-05-18). Not yet committed.
|
||||
|
||||
---
|
||||
|
||||
### ✅ PR #4544 — Bugbot (r3257070868): Unused `UserDefaultsPropertyWrapper.Key` cases
|
||||
|
||||
**Source:** [Bugbot comment r3257070868 on PR #4544](https://github.com/duckduckgo/apple-browsers/pull/4544#discussion_r3257070868), `UserDefaultsPropertyWrapper.swift:59-61`
|
||||
|
||||
**Issue:** `daxChatPathVisitSiteSeen` and `daxIsChatFirstPath` added to the `Key` enum but never used — `DefaultDaxDialogsSettings` stores these via `KeyValueStoring` with its own `ChatPathKey` constants.
|
||||
|
||||
**Fix:** Removed both dead enum cases from `UserDefaultsPropertyWrapper.Key`.
|
||||
|
||||
**State:** ✅ Fixed in `alex/demo-tracker-blocking-onboarding` working tree (2026-05-18). Not yet committed.
|
||||
|
||||
---
|
||||
|
||||
## PR #4591 Comments
|
||||
|
||||
> PR #4591 (`demo-tracker-blocking-onboarding-ui-polish`) is **Approved**. Open threads still need resolving before merge. Threads in GitHub order.
|
||||
> PR #4591 (`demo-tracker-blocking-onboarding-ui-polish`) — **Merged** ✅ 2026-05-15. Threads documented for reference.
|
||||
|
||||
### 🔴 PR #4591 — Bugbot (SyncSettingsViewController.swift:738): Experiment pixel skips `.connect` receiver
|
||||
### ✅ PR #4591 — Bugbot (SyncSettingsViewController.swift:738): Experiment pixel skips `.connect` receiver
|
||||
|
||||
**Source:** Bugbot on PR #4591, `SyncSettingsViewController.swift:738`
|
||||
|
||||
**Issue:** The experiment success pixel fires for `.recovery` sync path but skips `.connect`. mallexxx acknowledged: pixel originates in upstream PR #4575, not this PR.
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. Acknowledged as upstream issue.
|
||||
**State:** ✅ Acknowledged upstream issue (PR #4575). Not in scope. PR merged — thread irrelevant.
|
||||
|
||||
---
|
||||
|
||||
@@ -262,29 +277,27 @@ All resolved on GitHub. Fixed in later commits on the `#4544` branch.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4591 — Bugbot (SyncSettingsViewController.swift:588): Missing experiment success pixel in `controllerDidCreateSyncAccount`
|
||||
### ✅ PR #4591 — Bugbot (SyncSettingsViewController.swift:588): Missing experiment success pixel in `controllerDidCreateSyncAccount`
|
||||
|
||||
**Source:** Bugbot on PR #4591, `SyncSettingsViewController.swift:588`
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. Needs verification / fix.
|
||||
**State:** ✅ Acknowledged upstream issue (PR #4575). Not in scope. PR merged — thread irrelevant.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4591 — Bugbot (MainViewController.swift): Removed `performCancel` may leave omnibar in editing state
|
||||
### ✅ PR #4591 — Bugbot (MainViewController.swift): Removed `performCancel` may leave omnibar in editing state
|
||||
|
||||
**Source:** Bugbot on PR #4591, `MainViewController.swift`
|
||||
|
||||
**Issue:** Removing `performCancel` call may leave the omnibar stuck in editing state in certain paths.
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. Needs verification.
|
||||
**State:** ✅ Acknowledged upstream issue (PR #4624). Not in scope. PR merged — thread irrelevant.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4591 — Bugbot (HistoryCleaner.swift:74): nil-coalescing
|
||||
### ✅ PR #4591 — Bugbot (HistoryCleaner.swift:74): nil-coalescing
|
||||
|
||||
**Source:** Bugbot on PR #4591, `HistoryCleaner.swift:74`
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. Needs review.
|
||||
**State:** ✅ Acknowledged upstream issue (PR #4625). Not in scope. PR merged — thread irrelevant.
|
||||
|
||||
---
|
||||
|
||||
@@ -296,23 +309,19 @@ All resolved on GitHub. Fixed in later commits on the `#4544` branch.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4591 — Alessandro (RebrandedNewTabDaxDialogFactory.swift): Closure sent via notification
|
||||
### ✅ PR #4591 — Alessandro (RebrandedNewTabDaxDialogFactory.swift): Closure sent via notification
|
||||
|
||||
**Source:** [Alessandro review on PR #4591](https://github.com/duckduckgo/apple-browsers/pull/4591), `RebrandedNewTabDaxDialogFactory.swift`
|
||||
|
||||
**Issue:** "Not a big fan of sending this closure in a notification, but I guess this would require some refactoring to change it." Settings deep-link callback dispatched via `NotificationCenter` with a closure payload.
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. Alessandro acknowledged it's a refactor; no fix required to merge.
|
||||
**State:** ✅ NIP — Alessandro acknowledged refactor not required. PR merged.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4591 — Alessandro (MainViewController.swift): `as? (() -> Void)` runtime cast
|
||||
### ✅ PR #4591 — Alessandro (MainViewController.swift): `as? (() -> Void)` runtime cast
|
||||
|
||||
**Source:** [Alessandro review on PR #4591](https://github.com/duckduckgo/apple-browsers/pull/4591), `MainViewController.swift`
|
||||
|
||||
**Issue:** `as? (() -> Void)` cast is only checked at runtime — if the factory's closure signature ever changes, it will silently fail.
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. Fixed in commit `482056566b` on `sr-feedback` (wrapped in a typed `SettingsDeepLinkCallback` struct). Fix is NOT on #4591 branch; will land when stack merges.
|
||||
**State:** ✅ Fixed in `sr-feedback` (typed `SettingsDeepLinkCallback` struct, commit `482056566b`). Lands with PR #4855. PR #4591 merged.
|
||||
|
||||
---
|
||||
|
||||
@@ -510,15 +519,13 @@ All resolved on GitHub. Fixed in later commits on the `#4544` branch.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4855 — Alessandro (line 450): Add `!restorePromptHandler.isEligibleForRestorePrompt()` to the returning-user guard
|
||||
### ✅ PR #4855 — Alessandro (line 450): Add `!restorePromptHandler.isEligibleForRestorePrompt()` to the returning-user guard
|
||||
|
||||
**Source:** [Alessandro May 15 review on PR #4855](https://github.com/duckduckgo/apple-browsers/pull/4855), `OnboardingIntroViewModel.swift:450`. Also referenced in [Alessandro's May 15 Asana comment](https://app.asana.com/1/137249556945/task/1214348462471176/comment/1214794564106665).
|
||||
|
||||
**Issue:** The current guard `guard case .introDialog(isReturningUser: false) = introSteps.first` excludes returning users and those eligible to restore data during onboarding. But if the experiment is later remotely enrolled for all users (e.g. post-experiment analysis phase), returning users who are eligible for restore will bypass the guard and still see the Duck.ai experiment step.
|
||||
**Fix:** `!restorePromptHandler.isEligibleForRestorePrompt()` is the second condition in the guard at `OnboardingIntroViewModel.swift:451`.
|
||||
|
||||
**Fix:** Add `!restorePromptHandler.isEligibleForRestorePrompt()` as an additional condition to the guard.
|
||||
|
||||
**State:** ✅ Implemented — `!restorePromptHandler.isEligibleForRestorePrompt()` is the second condition in the guard at `OnboardingIntroViewModel.swift:451`. Fix is in working tree, NOT committed. GitHub thread NOT resolved.
|
||||
**State:** ✅ Committed in `alex/demo-tracker-blocking-onboarding` via PR #4584 merge (commit `4e626d3bdc`, 2026-05-18). GitHub thread on PR #4855 still open — needs resolving.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user