Skip to content
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
wants to merge 43 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
de78c05
Remove MockDependencyProvider (#3456)
samsymons Oct 21, 2024
aacd4bf
Merge branch 'release/7.142.0'
THISISDINOSAUR Oct 21, 2024
2ed846e
support third party marketplace URLs (#3461)
brindy Oct 22, 2024
2bab26b
Update BSK (#3468)
Bunn Oct 22, 2024
ec52eaa
Use New Tab Page implementation without customization features (#3453)
dus7 Oct 23, 2024
7af9a58
Bump BSK to the version with newTabSearchField feature flag (#3449)
ayoy Oct 24, 2024
fc4d473
Set UserDefaults API access reason to 1C8F.1 (#3475)
dus7 Oct 24, 2024
a0be7f8
For BLOB downloads make sure the file is not preview-able before trig…
miasma13 Oct 24, 2024
8127b00
Fix updating OmniBar constraints on iOS18 (#3473)
dus7 Oct 24, 2024
a0f4e64
Email parsing improved (#3436)
tomasstrba Oct 24, 2024
9634e7f
Handle 'data' scheme downloads through WebKit's `decisionHandler(.dow…
miasma13 Oct 24, 2024
17e373e
Release 7.141.1-0 (#3479)
samsymons Oct 24, 2024
9060fce
Merge branch 'hotfix/7.141.1'
samsymons Oct 24, 2024
0fbd933
Merge branch 'release/7.142.0'
THISISDINOSAUR Oct 25, 2024
2d09cb7
Add pixel when the error page is shown (#3487)
alessandroboron Oct 25, 2024
cc0caf5
Make running the script more explicit (#3484)
jaceklyp Oct 25, 2024
44db773
Fix image set warning (#3459)
daisuke-t-jp Oct 28, 2024
958d556
Remove Recovered References (#3457)
daisuke-t-jp Oct 28, 2024
4384133
point to BSK branch (#3492)
SabrinaTardio Oct 28, 2024
c41048c
TestFlight only release and promotion (#3474)
kshann Oct 28, 2024
dc67e00
Show VPN onboarding tips (#3429)
diegoreymendez Oct 28, 2024
41cf8e9
Use cookie to share subscription access token on DDG domains (#3488)
miasma13 Oct 28, 2024
5baa4cb
Fix the condition (#3496)
jaceklyp Oct 28, 2024
c5aab0c
Release 7.143.0-0 (#3497)
afterxleep Oct 28, 2024
199de4d
Remove HomePageViewController code (#3454)
dus7 Oct 29, 2024
fb6a53f
Add to Dock Onboarding feature flag (#3476)
alessandroboron Oct 29, 2024
f01897e
Add to Dock Localised strings (#3494)
alessandroboron Oct 29, 2024
8f94eaf
Blind attempt to fix Omnibar-related crash (#3500)
afterxleep Oct 29, 2024
cd36bac
Onboarding Add to Dock Tutorial (#3482)
alessandroboron Oct 30, 2024
82f02f0
Update autoconsent to v10.17.0 (#3504)
daxmobile Oct 30, 2024
374492a
adding impression pixels for duckplayer in landscape mode (#3493)
shakyShane Oct 30, 2024
a3bf844
Update tests to use new tagline (#3439)
quanganhdo Oct 30, 2024
5016b8a
Update BSK with autofill 15.1.0 (#3507)
daxmobile Oct 31, 2024
aa4257c
Onboarding Add to Dock Promo view (#3505)
alessandroboron Oct 31, 2024
62f9154
BSK changes for macOS release note screen update (#3466)
quanganhdo Oct 31, 2024
2d750c9
Set version_check_wait_retry_limit to 1 (#3511)
ayoy Oct 31, 2024
36c702e
Fix VPN server info metadata (#3501)
samsymons Nov 1, 2024
0243794
Duckplayer New Tab + Refactor (#3491)
afterxleep Nov 1, 2024
0873a74
Bug Fix: Phishing Detection Dataset Discrepancies (#3469)
not-a-rootkit Nov 1, 2024
cc7929e
Update to subscription cookie (#3512)
miasma13 Nov 1, 2024
ef09bfb
Release 7.143.0-1 (#3516)
miasma13 Nov 1, 2024
f6a9d71
Merge branch 'release/7.143.0'
miasma13 Nov 1, 2024
8028c7a
Add debouncer to navbar animation
afterxleep Nov 1, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/workflows/promote_testflight.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Promote TestFlight to App Store

on:
workflow_dispatch: {}

jobs:
promote-testflight-to-appstore:
runs-on: macos-14

steps:
- name: Check out the code
uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
sparse-checkout: |
.github
Gemfile
Gemfile.lock
fastlane
scripts

- name: Set up fastlane
run: bundle install

- name: Promote TestFlight to App Store
env:
APPLE_API_KEY_BASE64: ${{ secrets.APPLE_API_KEY_BASE64 }}
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
APPLE_API_KEY_ISSUER: ${{ secrets.APPLE_API_KEY_ISSUER }}
run: |
git config --global user.name "Dax the Duck"
git config --global user.email "[email protected]"
bundle exec fastlane promote_latest_testflight_to_appstore
5 changes: 2 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
destination:
description: "Upload destination (App Store or TestFlight)"
required: true
default: appstore
default: testflight
type: choice
options:
- appstore
Expand Down Expand Up @@ -36,10 +36,9 @@ jobs:
id: destination
run: |
INPUT_DESTINATION=${{ github.event.inputs.destination }}
echo "destination=${INPUT_DESTINATION:-"appstore"}" >> $GITHUB_OUTPUT
echo "destination=${INPUT_DESTINATION:-"testflight"}" >> $GITHUB_OUTPUT

- name: Assert release branch
if: steps.destination.outputs.destination == 'appstore'
run: |
case "${{ github.ref }}" in
*release/*) ;;
Expand Down
2 changes: 1 addition & 1 deletion Configuration/Version.xcconfig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
MARKETING_VERSION = 7.142.0
MARKETING_VERSION = 7.143.0
4 changes: 2 additions & 2 deletions Core/AppPrivacyConfigurationDataProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ import BrowserServicesKit
final public class AppPrivacyConfigurationDataProvider: EmbeddedDataProvider {

public struct Constants {
public static let embeddedDataETag = "\"6098a36b63dcb92404871b8b6c92a46e\""
public static let embeddedDataSHA = "a72538e90ef1aba77d30dde1379e7344fe9f3ca1655796c9b555bed412daa205"
public static let embeddedDataETag = "\"f8b9cfd5f1eb7b77c21d4476f85bd177\""
public static let embeddedDataSHA = "c26c97714d73a9e1e99dbd341d5890da42b49d34a296672be3d3cea00bdd37a0"
}

public var embeddedDataEtag: String {
Expand Down
3 changes: 3 additions & 0 deletions Core/FeatureFlag.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public enum FeatureFlag: String {
case syncPromotionBookmarks
case syncPromotionPasswords
case onboardingHighlights
case onboardingAddToDock
case autofillSurveys
case autcompleteTabs

Expand Down Expand Up @@ -94,6 +95,8 @@ extension FeatureFlag: FeatureFlagSourceProviding {
return .remoteReleasable(.subfeature(SyncPromotionSubfeature.passwords))
case .onboardingHighlights:
return .internalOnly
case .onboardingAddToDock:
return .internalOnly
case .autofillSurveys:
return .remoteReleasable(.feature(.autofillSurveys))
case .autcompleteTabs:
Expand Down
41 changes: 27 additions & 14 deletions Core/PixelEvent.swift
Original file line number Diff line number Diff line change
Expand Up @@ -708,6 +708,11 @@ extension Pixel {
case privacyProTransactionProgressNotHiddenAfter60s
case privacyProSuccessfulSubscriptionAttribution
case privacyProKeychainAccessError
case privacyProSubscriptionCookieMissingTokenOnSignIn
case privacyProSubscriptionCookieMissingCookieOnSignOut
case privacyProSubscriptionCookieRefreshedWithAccessToken
case privacyProSubscriptionCookieRefreshedWithEmptyValue
case privacyProSubscriptionCookieFailedToSetSubscriptionCookie

// MARK: Pixel Experiment
case pixelExperimentEnrollment
Expand Down Expand Up @@ -788,11 +793,16 @@ extension Pixel {
case duckPlayerViewFromSERP
case duckPlayerViewFromOther
case duckPlayerOverlayYoutubeImpressions
case duckPlayerLandscapeLayoutImpressions
case duckPlayerOverlayYoutubeWatchHere
case duckPlayerSettingAlwaysDuckPlayer
case duckPlayerSettingAlwaysSettings
case duckPlayerSettingNeverSettings
case duckPlayerSettingBackToDefault
case duckPlayerSettingsAlwaysOverlaySERP
case duckPlayerSettingsAlwaysOverlayYoutube
case duckPlayerSettingsNeverOverlaySERP
case duckPlayerSettingsNeverOverlayYoutube
case duckPlayerWatchOnYoutube
case duckPlayerSettingAlwaysOverlayYoutube
case duckPlayerSettingNeverOverlayYoutube
Expand Down Expand Up @@ -820,13 +830,9 @@ extension Pixel {
case pproFeedbackSubcategoryScreenShow(source: String, reportType: String, category: String)
case pproFeedbackSubmitScreenShow(source: String, reportType: String, category: String, subcategory: String)
case pproFeedbackSubmitScreenFAQClick(source: String, reportType: String, category: String, subcategory: String)

// MARK: DuckPlayer Pixel Experiment
case duckplayerExperimentCohortAssign
case duckplayerExperimentSearch
case duckplayerExperimentDailySearch
case duckplayerExperimentWeeklySearch
case duckplayerExperimentYoutubePageView

// MARK: WebView Error Page Shown
case webViewErrorPageShown
}

}
Expand Down Expand Up @@ -1517,6 +1523,11 @@ extension Pixel.Event {
case .privacyProTransactionProgressNotHiddenAfter60s: return "m_privacy-pro_progress_not_hidden_after_60s"
case .privacyProSuccessfulSubscriptionAttribution: return "m_subscribe"
case .privacyProKeychainAccessError: return "m_privacy-pro_keychain_access_error"
case .privacyProSubscriptionCookieMissingTokenOnSignIn: return "m_privacy-pro_subscription-cookie-missing_token_on_sign_in"
case .privacyProSubscriptionCookieMissingCookieOnSignOut: return "m_privacy-pro_subscription-cookie-missing_cookie_on_sign_out"
case .privacyProSubscriptionCookieRefreshedWithAccessToken: return "m_privacy-pro_subscription-cookie-refreshed_with_access_token"
case .privacyProSubscriptionCookieRefreshedWithEmptyValue: return "m_privacy-pro_subscription-cookie-refreshed_with_empty_value"
case .privacyProSubscriptionCookieFailedToSetSubscriptionCookie: return "m_privacy-pro_subscription-cookie-failed_to_set_subscription_cookie"

// MARK: Pixel Experiment
case .pixelExperimentEnrollment: return "pixel_experiment_enrollment"
Expand Down Expand Up @@ -1609,6 +1620,10 @@ extension Pixel.Event {
case .duckPlayerViewFromOther: return "duckplayer_view-from_other"
case .duckPlayerSettingAlwaysSettings: return "duckplayer_setting_always_settings"
case .duckPlayerSettingAlwaysDuckPlayer: return "duckplayer_setting_always_duck-player"
case .duckPlayerSettingsAlwaysOverlaySERP: return "duckplayer_setting_always_overlay_serp"
case .duckPlayerSettingsAlwaysOverlayYoutube: return "duckplayer_setting_always_overlay_youtube"
case .duckPlayerSettingsNeverOverlaySERP: return "duckplayer_setting_never_overlay_serp"
case .duckPlayerSettingsNeverOverlayYoutube: return "duckplayer_setting_never_overlay_youtube"
case .duckPlayerOverlayYoutubeImpressions: return "duckplayer_overlay_youtube_impressions"
case .duckPlayerOverlayYoutubeWatchHere: return "duckplayer_overlay_youtube_watch_here"
case .duckPlayerSettingNeverSettings: return "duckplayer_setting_never_settings"
Expand Down Expand Up @@ -1642,13 +1657,11 @@ extension Pixel.Event {
case .pproFeedbackSubmitScreenShow: return "m_ppro_feedback_submit-screen_show"
case .pproFeedbackSubmitScreenFAQClick: return "m_ppro_feedback_submit-screen-faq_click"

// MARK: Duckplayer experiment
case .duckplayerExperimentCohortAssign: return "duckplayer_experiment_cohort_assign_v2"
case .duckplayerExperimentSearch: return "duckplayer_experiment_search_v2"
case .duckplayerExperimentDailySearch: return "duckplayer_experiment_daily_search_v2"
case .duckplayerExperimentWeeklySearch: return "duckplayer_experiment_weekly_search_v2"
case .duckplayerExperimentYoutubePageView: return "duckplayer_experiment_youtube_page_view_v2"

// MARK: - WebView Error Page shown
case .webViewErrorPageShown: return "m_errorpageshown"

// MARK: - DuckPlayer FE Application Telemetry
case .duckPlayerLandscapeLayoutImpressions: return "duckplayer_landscape_layout_impressions"
}
}
}
Expand Down
9 changes: 9 additions & 0 deletions Core/SchemeHandler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public class SchemeHandler {
}

public enum SchemeType: Equatable {
case allow
case navigational
case external(Action)
case blob
Expand All @@ -51,6 +52,7 @@ public class SchemeHandler {
case shortcuts
case shortcutsProduction = "shortcuts-production"
case workflow
case marketplaceKit = "marketplace-kit"
}

private enum BlockedScheme: String {
Expand All @@ -74,6 +76,13 @@ public class SchemeHandler {
}

switch PlatformScheme(rawValue: schemeString) {
case .marketplaceKit:
// marketplaceKit urls have to be allowed through without interference
if #available(iOS 17.4, *) {
return .allow
} else {
return .unknown
}
case .sms, .mailto, .itms, .itmss, .itunes, .itmsApps, .itmsAppss, .shortcuts, .shortcutsProduction, .workflow:
return .external(.askForConfirmation)
case .none:
Expand Down
7 changes: 5 additions & 2 deletions Core/UserDefaultsPropertyWrapper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,8 @@ public struct UserDefaultsWrapper<T> {
// Debug keys
case debugNewTabPageSectionsEnabledKey = "com.duckduckgo.ios.debug.newTabPageSectionsEnabled"
case debugOnboardingHighlightsEnabledKey = "com.duckduckgo.ios.debug.onboardingHighlightsEnabled"

case debugOnboardingAddToDockEnabledKey = "com.duckduckgo.ios.debug.onboardingAddToDockEnabled"

// Duck Player Pixel Experiment
case duckPlayerPixelExperimentInstalled = "com.duckduckgo.ios.duckplayer.pixel.experiment.installed.v2"
case duckPlayerPixelExperimentCohort = "com.duckduckgo.ios.duckplayer.pixel.experiment.cohort.v2"
Expand All @@ -180,7 +181,9 @@ public struct UserDefaultsWrapper<T> {
case duckPlayerPixelExperimentLastDayPixelFired = "com.duckduckgo.ios.duckplayer.pixel.experiment.last.day.pixel.fired.v2"
case duckPlayerPixelExperimentLastVideoIDRendered = "com.duckduckgo.ios.duckplayer.pixel.experiment.last.videoID.rendered.v2"
case duckPlayerPixelExperimentOverride = "com.duckduckgo.ios.duckplayer.pixel.experiment.override.v2"


// TipKit
case resetTipKitOnNextLaunch = "com.duckduckgo.ios.tipKit.resetOnNextLaunch"
}

private let key: Key
Expand Down
57 changes: 48 additions & 9 deletions Core/ios-config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"readme": "https://github.com/duckduckgo/privacy-configuration",
"version": 1729265730687,
"version": 1730109523334,
"features": {
"adClickAttribution": {
"readme": "https://help.duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#3rd-party-tracker-loading-protection",
Expand Down Expand Up @@ -360,6 +360,9 @@
{
"domain": "speedweek.com"
},
{
"domain": "la-becanerie.com"
},
{
"domain": "marvel.com"
},
Expand Down Expand Up @@ -404,7 +407,7 @@
}
}
},
"hash": "fba0eeeda60051f6354cf5d26c1e1a63"
"hash": "8392e127a3bcaee5c2913df355a7d254"
},
"autofillBreakageReporter": {
"state": "enabled",
Expand Down Expand Up @@ -499,12 +502,15 @@
"steps": [
{
"percent": 10
},
{
"percent": 50
}
]
}
}
},
"hash": "75ff21cf9a4181783c06965edd6fe746"
"hash": "9de8e4b066aa23f7c20ca638ee0d9f1a"
},
"bookmarks": {
"state": "enabled",
Expand Down Expand Up @@ -1333,14 +1339,22 @@
{
"domain": "flexmls.com"
},
{
"domain": "humana.com"
},
{
"domain": "instructure.com"
},
{
"domain": "centerwellpharmacy.com"
}
],
"hash": "b4eff737bff7f262ceb567b735e1cc41"
"hash": "980bf875526f3cc7892c001a7d2e5a74"
},
"contextualOnboarding": {
"exceptions": [],
"state": "disabled",
"hash": "728493ef7a1488e4781656d3f9db84aa"
},
"cookie": {
"settings": {
Expand Down Expand Up @@ -1428,6 +1442,10 @@
{
"domain": "xfinity.com",
"reason": "https://github.com/duckduckgo/privacy-configuration/pull/2149"
},
{
"domain": "ihg.com",
"reason": "https://github.com/duckduckgo/privacy-configuration/pull/2383"
}
],
"ddgDefaultSites": [
Expand All @@ -1448,13 +1466,16 @@
},
{
"domain": "xfinity.com"
},
{
"domain": "ihg.com"
}
],
"omitVersionSites": []
},
"exceptions": [],
"state": "enabled",
"hash": "2ed8c3ccd40db2d9dca1e7ecc4231045"
"hash": "e577ccb473bdb7ada49c4d3c6e79cf01"
},
"dbp": {
"state": "disabled",
Expand Down Expand Up @@ -1482,7 +1503,7 @@
"state": "disabled"
},
"openInNewTab": {
"state": "disabled"
"state": "internal"
},
"enableDuckPlayer": {
"state": "enabled",
Expand Down Expand Up @@ -1575,7 +1596,7 @@
]
},
"state": "enabled",
"hash": "7f82d68f07b3e2aaac1b89725c1d379e"
"hash": "c21895584fc5a38e4290c7941ec7d5f8"
},
"elementHiding": {
"exceptions": [
Expand Down Expand Up @@ -5324,6 +5345,9 @@
{
"domain": "dollargeneral.com"
},
{
"domain": "milesplit.live"
},
{
"domain": "monsterenergy.com"
},
Expand Down Expand Up @@ -5361,7 +5385,7 @@
"privacy-test-pages.site"
]
},
"hash": "be142a65e913cf958af67e2cd5dd8cc4"
"hash": "37630ab090682ee7d004120a42031281"
},
"harmfulApis": {
"settings": {
Expand Down Expand Up @@ -8844,6 +8868,16 @@
}
]
},
"svonm.com": {
"rules": [
{
"rule": "hgc-cf-cache-1.svonm.com",
"domains": [
"t-online.de"
]
}
]
},
"taboola.com": {
"rules": [
{
Expand Down Expand Up @@ -9334,7 +9368,7 @@
"domain": "centerwellpharmacy.com"
}
],
"hash": "e61f68717bcb4a465182a7ddb7d5cc4d"
"hash": "434130223ee6493827d477d0171521da"
},
"trackingCookies1p": {
"settings": {
Expand Down Expand Up @@ -9605,6 +9639,11 @@
"state": "disabled",
"hash": "728493ef7a1488e4781656d3f9db84aa"
},
"windowsNewTabPageExperiment": {
"state": "disabled",
"exceptions": [],
"hash": "c292bb627849854515cebbded288ef5a"
},
"windowsPermissionUsage": {
"exceptions": [],
"state": "disabled",
Expand Down
Loading
Loading