-
Notifications
You must be signed in to change notification settings - Fork 417
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Temporary fix]: Add a debouncer to the Omnibar Scroll Visibility animations #3518
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Task/Issue URL: https://app.asana.com/0/414235014887631/1208580381705388/f Tech Design URL: CC: Description: This PR removes MockDependencyProvider and the ability to create testing instances of AppDependencyProvider. Any test files that use it have been updated to take their dependencies directly. The only tests affected by this change are subscription ones; DownloadManagerTests had a mock dependency provider property, but it didn't appear to be used in any way.
Task/Issue URL: https://app.asana.com/0/414709148257752/1207138951730082/f Tech Design URL: CC: **Description**: Allow marketplace URLs to work. Note that the URL must be from a 'user' request. So we can't cancel and re-issue the URL otherwise it doesn't work. This also means that can't handle the case where it doesn't work unless we want to check the user has an EU apple account, which we don't. **Steps to test this PR**: 1. With an EU Apple ID, visit altstore.io and install their marketplace. Should cause iOS system prompts and then install successfully. 2. With a non-EU Apple ID, visit altstore.io and try to install their marketplace. Nothing will happen (unfortunately we are unable to catch this case).
Task/Issue URL: https://app.asana.com/0/1204167627774280/1208539744359975/f **Description**: No changes in code, just updating BSK to have the latest version
Task/Issue URL: https://app.asana.com/0/72649045549333/1208547223289955/f Tech Design URL: CC: **Description**: Uses `NewTabPageController` as a home controller, but removes new tab page customization capabilities based on `newTabPageSections` feature flag state. Existing features of Home Screen should remain unchanged. Summary of changes done in this PR: * `SimpleNewTabPageView` now serving as a view for new tab page without customization features. Created based on the fully featured `NewTabPageView`. * Favorites placeholders and add button are not visible when customization flag is disabled. * Report action is not added to the browsing menu when link is missing. This prevents showing option which performs no action in case menu is shown on NTP. (cc @afterxleep) * Favorites data source adapter is listening for display mode changes and updates favorites accordingly. * Current (old) Dax Onboarding is integrated with the New Tab Page. (cc @alessandroboron) **Steps to test this PR**: #### Dax onboarding 1. Install fresh app 2. Go through onboarding, make sure Dax dialogs are shown properly on empty tab. #### Basic functionality 1. Make sure NTP flag is disabled in debug menu. 3. Without favorites, Dax logo should be visible. 4. Add some favorites. 5. It should be possible to long press to edit/remove and drag and drop to reorder. #### Toolbar menu items 1. Check toolbar displays bookmarks icon when NTP sections flag disabled. 2. Enable NTP sections flag in debug menu. 3. Reopen new tab page 4. Ensure browsing menu with shortcuts is available. #### Sync 1. Enable sync on two devices. 2. Verify updates for favorites are visible. **Definition of Done (Internal Only)**: * [x] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? **Copy Testing**: * [x] Use of correct apostrophes in new copy, ie `’` rather than `'` **Orientation Testing**: * [x] Portrait * [x] Landscape **Device Testing**: * [ ] iPhone SE (1st Gen) * [x] iPhone 8 * [ ] iPhone X * [x] iPhone 14 Pro * [ ] iPad **OS Testing**: * [x] iOS 15 * [ ] iOS 16 * [x] iOS 17 **Theme Testing**: * [x] Light theme * [x] Dark theme --- ###### Internal references: [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL: https://app.asana.com/0/72649045549333/1208262951113965/f Description: This change updates BSK to the version that will be used on macOS. It doesn't affect iOS at all.
Task/Issue URL: https://app.asana.com/0/414709148257752/1208607157395789/f Tech Design URL: CC: **Description**: Updates UserDefaults API usage declaration `1C8F.1`. **Steps to test this PR**: 1. Verify tests pass. **Definition of Done (Internal Only)**: * [ ] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? --- ###### Internal references: [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943)
…gering the download (#3472) Task/Issue URL: https://app.asana.com/0/414709148257752/1207504349745342/f **Description**: When wallet passes are served as BLOB type downloads they just trigger the download prompt instead of directly open their preview allowing adding them to Wallet app.
Task/Issue URL: https://app.asana.com/0/414709148257752/1208602903372806/f Tech Design URL: CC: **Description**: Addresses an issue when OmniBar was not sized properly on phones after rotating to landscape and back to portrait. Seems like root cause was some "optimization" in iOS 18 layout system which changed when `updateConstraints` is being called. Solution was to use `setNeedsUpdateConstraints()` while preparing cell for both "real" and "fake" OmniBar. Additionally call to `super.updateConstraints()` was moved to the end of the override as highlighted in [documentation](https://developer.apple.com/documentation/uikit/uiview/1622512-updateconstraints#discussion). **Steps to test this PR**: 1. Rotate to landscape and back to portrait with single and multiple tabs for both bar position settings (top and bottom). 2. Repeat for iPad **Definition of Done (Internal Only)**: * [ ] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? **Orientation Testing**: * [x] Portrait * [x] Landscape **Device Testing**: * [x] iPhone 8 * [x] iPhone 16 * [x] iPad **OS Testing**: * [x] iOS 15 * [x] iOS 17 * [x] iOS 18 --- ###### Internal references: [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL: https://app.asana.com/0/1148564399326804/1207106552424205/f Tech Design URL: CC: **Description**: Email parsing improved on macOS. This PR doesn't affect iOS
…nload)` (#3478) Task/Issue URL: https://app.asana.com/0/414709148257752/1208621179920770/f **Description:** When navigation should trigger download and is of data scheme handle it via decisionHandler(.download) **Steps to test this PR:** - test downloads on https://napuzba.com/data-url/ (ensure proper file name and extension) - test website from https://app.asana.com/0/1206777341262243/1208605967462508/f following repro steps in https://app.asana.com/0/0/1208605967462508/1208619416618129/f **Definition of Done (Internal Only)**: * [ ] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? **Copy Testing**: * [ ] Use of correct apostrophes in new copy, ie `’` rather than `'` **Orientation Testing**: * [ ] Portrait * [ ] Landscape **Device Testing**: * [ ] iPhone SE (1st Gen) * [ ] iPhone 8 * [ ] iPhone X * [ ] iPhone 14 Pro * [ ] iPad **OS Testing**: * [ ] iOS 15 * [ ] iOS 16 * [ ] iOS 17 **Theme Testing**: * [ ] Light theme * [ ] Dark theme --- ###### Internal references: [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943)
Please make sure all GH checks passed before merging. It can take around 20 minutes. Briefly review this PR to see if there are no issues or red flags and then merge it.
Task/Issue URL: https://app.asana.com/0/1176956903599313/1208602127384124/f **Description**: Fire a pixel when we show the error page in the WebView.
Task/Issue URL: https://app.asana.com/0/1203301625297703/1207921724970682/f **Description**: Make running the script more explicit, by providing additional argument if it is subsequent release. It will then fail on initial release if the release branch exists and fail on subsequent release if release branch does not.
Task: https://app.asana.com/0/414235014887631/1208634590356693/f Description: This PR fixed the following warning: HomeMessage.xcassets:./WidgetEducation/WidgetEducationHomeScreen.imageset/(null)[2d][iphone.png] The image set "WidgetEducationHomeScreen" has an unassigned child. The iphone.png was no referenced, but the file remained and a warning was happened.
Task/Issue URL: https://app.asana.com/0/414235014887631/1208634590356697/f Tech Design URL: CC: Description: Hi, Removed unnecessary references from the project. Thanks.
Task/Issue URL: https://app.asana.com/0/0/1208077416568652/f **Description**: Updates BSK dependency
<!-- Note: This checklist is a reminder of our shared engineering expectations. Feel free to change it, although assigning a GitHub reviewer and the items in bold are required.⚠️ If you're an external contributor, please file an issue first before working on a PR, as we can't guarantee that we will accept your changes if they haven't been discussed ahead of time. Thanks! --> Task/Issue URL: https://app.asana.com/0/0/1208234424227124/f Tech Design URL: CC: @ayoy **Description**: - Changes nightly builds to release to TestFlight only - Adds promote TestFlight to appstore (mirroring MacOS) which gets the latest test flight build and uploads the meta data for that version. Currently only tested with Alpha. <!-- If at any point it isn't actively being worked on/ready for review/otherwise moving forward strongly consider closing it (or not opening it in the first place). If you decide not to close it, use Draft PR while work is still in progress or use `DO NOT MERGE` label to clarify the PRs state and comment with more information. --> **Steps to test this PR**: - [Initial test flow](https://github.com/duckduckgo/iOS/actions/runs/11491500989/job/31983979375) (without upload meta data). - This iteration of the flow only checked the version and build number to upload without doing the upload - For Alpha it found `Latest upload for version 7.142.0 on ios platform is build: 1` - For Stable it found `Latest upload for version 7.142.0 on ios platform is build: 0` - The nightly job ran (conveniently) to update the alpha build in TestFlight, and a rerun of the [promote flow](https://github.com/duckduckgo/iOS/actions/runs/11491747964/job/31984649252) showed it found updated build number of 2 which we expect - [Final run](https://github.com/duckduckgo/iOS/actions/runs/11492279658) failed due to Alpha not quite setup to accept submissions due to metadata conflicts with stable, but it did successfully update the version and some of the metadata, so confident this will work for stable builds. Before ![image](https://github.com/user-attachments/assets/a4e47883-f1bf-4256-9425-a3870a0d9be9) After promotion run ![image](https://github.com/user-attachments/assets/1d23ea75-e26e-41de-a976-6052068f6b15) <!-- Before submitting a PR, please ensure you have tested the combinations you expect the reviewer to test, then delete configurations you *know* do not need explicit testing. Using a simulator where a physical device is unavailable is acceptable. --> **Definition of Done (Internal Only)**: * [ ] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? **Copy Testing**: * [ ] Use of correct apostrophes in new copy, ie `’` rather than `'` **Orientation Testing**: * [ ] Portrait * [ ] Landscape **Device Testing**: * [ ] iPhone SE (1st Gen) * [ ] iPhone 8 * [ ] iPhone X * [ ] iPhone 14 Pro * [ ] iPad **OS Testing**: * [ ] iOS 15 * [ ] iOS 16 * [ ] iOS 17 **Theme Testing**: * [ ] Light theme * [ ] Dark theme --- ###### Internal references: [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL: https://app.asana.com/0/1206580121312550/1208341440402810/f macOS PR: duckduckgo/macos-browser#3410 BSK PR: duckduckgo/BrowserServicesKit#1024 ## Description Shows VPN onboarding tips.
Task/Issue URL: https://app.asana.com/0/1108686900785972/1208264562025859/f **Description**: Store and keep in sync the subscription access token for the duckduckgo.com domain cookie. For the implementation guidelines please see description of the linked task.
Task/Issue URL: https://app.asana.com/0/414235014887631/1207921724970682/f **Description**: Make sure the if condition actually is checked correctly.
Please make sure all GH checks passed before merging. It can take around 20 minutes. Briefly review this PR to see if there are no issues or red flags and then merge it.
<!-- Note: This checklist is a reminder of our shared engineering expectations. Feel free to change it, although assigning a GitHub reviewer and the items in bold are required.⚠️ If you're an external contributor, please file an issue first before working on a PR, as we can't guarantee that we will accept your changes if they haven't been discussed ahead of time. Thanks! --> Task/Issue URL: https://app.asana.com/0/72649045549333/1208547223289954/f Tech Design URL: CC: @brindy **Description**: This is a follow up after #3453. Removes unused code related to HomePageViewController. Home renderers abstraction was also removed, though the implementation itself is used in both Bookmarks controller and to show Favorites while editing URL on non-home tab. **Steps to test this PR**: 1. Make sure code compiles and tests pass. **Definition of Done (Internal Only)**: * [ ] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? **Copy Testing**: * [ ] Use of correct apostrophes in new copy, ie `’` rather than `'` **Orientation Testing**: * [ ] Portrait * [ ] Landscape **Device Testing**: * [ ] iPhone SE (1st Gen) * [ ] iPhone 8 * [ ] iPhone X * [ ] iPhone 14 Pro * [ ] iPad **OS Testing**: * [ ] iOS 15 * [ ] iOS 16 * [ ] iOS 17 **Theme Testing**: * [ ] Light theme * [ ] Dark theme --- ###### Internal references: [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL: https://app.asana.com/0/1206329551987282/1208577512136639/f **Description**: Add a feature flag used to show Add to Dock during the onboarding flow. Note that the feature will be available only for iPhone
Task/Issue URL: https://app.asana.com/0/1206329551987282/1208577512136638/f **Description**: Add localised strings for Add to Dock.
<!-- Note: This checklist is a reminder of our shared engineering expectations. Feel free to change it, although assigning a GitHub reviewer and the items in bold are required.⚠️ If you're an external contributor, please file an issue first before working on a PR, as we can't guarantee that we will accept your changes if they haven't been discussed ahead of time. Thanks! --> Task/Issue URL: https://app.asana.com/0/414709148257752/1208653357224780/f **Description**: Attempt to fix crash: Sentry: https://errors.duckduckgo.com/organizations/ddg/issues/169611/?project=8&query=is%3Aunresolved+firstSeen%3A-15d&referrer=issue-stream&sort=freq&statsPeriod=14d&stream_index=0
Task/Issue URL: https://app.asana.com/0/1206329551987282/1208577512136708/f **Description**: Add the Add to Dock tutorial Dax dialog.
Task/Issue URL: https://app.asana.com/0/1208659004342413/1208659004342413 Autoconsent Release: https://github.com/duckduckgo/autoconsent/releases/tag/v10.17.0 ## Description Updates Autoconsent to version [v10.17.0](https://github.com/duckduckgo/autoconsent/releases/tag/v10.17.0). ### Autoconsent v10.17.0 release notes See release notes [here](https://github.com/duckduckgo/autoconsent/blob/v10.17.0/CHANGELOG.md)
<!-- Note: This checklist is a reminder of our shared engineering expectations. Feel free to change it, although assigning a GitHub reviewer and the items in bold are required.⚠️ If you're an external contributor, please file an issue first before working on a PR, as we can't guarantee that we will accept your changes if they haven't been discussed ahead of time. Thanks! --> Task/Issue URL: https://app.asana.com/0/1201141132935289/1208637202774549/f Tech Design URL: CC: **Description**: the DuckPlayer frontend will start sending a generic 'telemetry' events soon - this PR adds support for the first one, but in a format that can be expanded later without needing new handlers.
<!-- Note: This checklist is a reminder of our shared engineering expectations. Feel free to change it, although assigning a GitHub reviewer and the items in bold are required.⚠️ If you're an external contributor, please file an issue first before working on a PR, as we can't guarantee that we will accept your changes if they haven't been discussed ahead of time. Thanks! --> Task/Issue URL: https://app.asana.com/0/1205591970852438/1208504563612286/f Tech Design URL: CC: **Description**: Updates new tagline. No user facing strings, but we might as well update the test data. <!-- If at any point it isn't actively being worked on/ready for review/otherwise moving forward strongly consider closing it (or not opening it in the first place). If you decide not to close it, use Draft PR while work is still in progress or use `DO NOT MERGE` label to clarify the PRs state and comment with more information. --> **Steps to test this PR**: 1. 2. <!-- Before submitting a PR, please ensure you have tested the combinations you expect the reviewer to test, then delete configurations you *know* do not need explicit testing. Using a simulator where a physical device is unavailable is acceptable. --> **Definition of Done (Internal Only)**: * [ ] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? **Copy Testing**: * [ ] Use of correct apostrophes in new copy, ie `’` rather than `'` **Orientation Testing**: * [ ] Portrait * [ ] Landscape **Device Testing**: * [ ] iPhone SE (1st Gen) * [ ] iPhone 8 * [ ] iPhone X * [ ] iPhone 14 Pro * [ ] iPad **OS Testing**: * [ ] iOS 15 * [ ] iOS 16 * [ ] iOS 17 **Theme Testing**: * [ ] Light theme * [ ] Dark theme --- ###### Internal references: [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL: https://app.asana.com/0/1208660715919854/1208660715919854 Autofill Release: https://github.com/duckduckgo/duckduckgo-autofill/releases/tag/15.1.0 BSK PR: duckduckgo/BrowserServicesKit#1044 ## Description Updates Autofill to version [15.1.0](https://github.com/duckduckgo/duckduckgo-autofill/releases/tag/15.1.0).
Task/Issue URL: https://app.asana.com/0/1206329551987282/1208577512136709 **Description**: Add the Add to Dock Promo view to the final dialog of the onboarding flow.
<!-- Note: This checklist is a reminder of our shared engineering expectations. Feel free to change it, although assigning a GitHub reviewer and the items in bold are required.⚠️ If you're an external contributor, please file an issue first before working on a PR, as we can't guarantee that we will accept your changes if they haven't been discussed ahead of time. Thanks! --> Task/Issue URL: https://app.asana.com/0/1201037661562251/1208183525704010/f Tech Design URL: CC: **Description**: Updates BSK. <!-- If at any point it isn't actively being worked on/ready for review/otherwise moving forward strongly consider closing it (or not opening it in the first place). If you decide not to close it, use Draft PR while work is still in progress or use `DO NOT MERGE` label to clarify the PRs state and comment with more information. --> **Steps to test this PR**: 1. Check macOS PR 2. <!-- Before submitting a PR, please ensure you have tested the combinations you expect the reviewer to test, then delete configurations you *know* do not need explicit testing. Using a simulator where a physical device is unavailable is acceptable. --> **Definition of Done (Internal Only)**: * [ ] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? **Copy Testing**: * [ ] Use of correct apostrophes in new copy, ie `’` rather than `'` **Orientation Testing**: * [ ] Portrait * [ ] Landscape **Device Testing**: * [ ] iPhone SE (1st Gen) * [ ] iPhone 8 * [ ] iPhone X * [ ] iPhone 14 Pro * [ ] iPad **OS Testing**: * [ ] iOS 15 * [ ] iOS 16 * [ ] iOS 17 **Theme Testing**: * [ ] Light theme * [ ] Dark theme --- ###### Internal references: [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL: https://app.asana.com/0/1207603085593419/1208640706072126/f Tech Design URL: CC: Description: This PR fixes the server info metadata.
Task/Issue URL: https://app.asana.com/0/1204099484721401/1208366641490350/f **Description**: - Refactors DuckPlayerNavigation handler for improved navigation and stability - Implements Open In New Tab Behavior - Opens "Watch in Youtube" links in new tab by default - Fixes issues found in Open in New tab closed ship review - Improves navigation for "Default" mode to prevent full screen videos (https://app.asana.com/0/1204099484721401/1208528683217627/f) - Updates pixel logic - Removes DuckPlayer Launch Experiment logic and pixels
<!-- Note: This checklist is a reminder of our shared engineering expectations. Feel free to change it, although assigning a GitHub reviewer and the items in bold are required.⚠️ If you're an external contributor, please file an issue first before working on a PR, as we can't guarantee that we will accept your changes if they haven't been discussed ahead of time. Thanks! --> Task/Issue URL: https://app.asana.com/0/1204023833050360/1208567121137949/f Tech Design URL: CC: **Description**: <!-- If at any point it isn't actively being worked on/ready for review/otherwise moving forward strongly consider closing it (or not opening it in the first place). If you decide not to close it, use Draft PR while work is still in progress or use `DO NOT MERGE` label to clarify the PRs state and comment with more information. --> **Steps to test this PR**: 1. No changes for iOS. <!-- Before submitting a PR, please ensure you have tested the combinations you expect the reviewer to test, then delete configurations you *know* do not need explicit testing. Using a simulator where a physical device is unavailable is acceptable. --> **Definition of Done (Internal Only)**: * [ ] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? **Copy Testing**: * [ ] Use of correct apostrophes in new copy, ie `’` rather than `'` **Orientation Testing**: * [ ] Portrait * [ ] Landscape **Device Testing**: * [ ] iPhone SE (1st Gen) * [ ] iPhone 8 * [ ] iPhone X * [ ] iPhone 14 Pro * [ ] iPad **OS Testing**: * [ ] iOS 15 * [ ] iOS 16 * [ ] iOS 17 **Theme Testing**: * [ ] Light theme * [ ] Dark theme --- ###### Internal references: [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL: https://app.asana.com/0/1108686900785972/1208264562025859/f **Description**: Initial PR -> #3488 Update to how the subscription cookie operates: - constraint the cookie to `subscriptions.duckduckgo.com` - on sign out do not fully remove the cookie - just clear the value - gate the feature behind the `setAccessTokenCookieForSubscriptionDomains` privacy config feature flag
Please make sure all GH checks passed before merging. It can take around 20 minutes. Briefly review this PR to see if there are no issues or red flags and then merge it.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Task/Issue URL: https://app.asana.com/0/1204099484721401/1208671955053442/f
Tech Design URL:
CC:
Description:
Fixes a crash related to PDFs and scroll position
This seems to be caused by our navigation bar's hiding animation/visibility triggering a didScrollEvent, which causes the app to enter an infinite loop and eventually crash.
The issue does not seem to occur when the navigation bar is at the bottom and is not very evident on iOS 17.
Are there some iOS 18 updates that making it more evident?
This adds a debouncer to the method to break the loop while we investigate futher
Steps to test this PR: