Releases: duckduckgo/apple-browsers
Releases · duckduckgo/apple-browsers
7.227.0-0+ios
What's Changed
- macOS: Add session-restored daily and count pixels by @diegoreymendez in #5479
- macOS: Simplify TabBarViewController's tab-bar delegate handlers by @diegoreymendez in #5022
- [macOS] Disables Tab Animations on Keyboard Event by @jleandroperez in #5446
- macOS: Keep passwords toolbar button anchored while onboarding popover is shown by @SabrinaTardio in #5500
- [macOS] Fix: Misplaced Close Button by @jleandroperez in #5472
- UTI: Adjusting Layout by @jleandroperez in #5474
- [macOS] Serialize favicon image cache store writes to fix duplicate rows by @ayoy in #5467
- iOS: Fix failing maestro Sync tests by @amddg44 in #5510
- Add Copy VPN Diagnostics action with anonymized metadata by @diegoreymendez in #5400
- Remove retry tracking params from PixelKit retry queue by @diegoreymendez in #5511
- Remove CodeQL by @samsymons in #5508
- Ask Duck.ai About Selected Content by @tomasstrba in #5273
- Fix VPN excluded-domain hostname matching by @diegoreymendez in #5514
- [iOS] Duck.ai tab grid: voice & transcript rich cards by @hassaanelgarem in #5513
- [macOS][Burn On Exit] Add pixels to instrument burn on exit feature by @alessandroboron in #5358
- Add missing channel and petal params to macOS pixel definitions by @miasma13 in #5519
- Rename duck.ai onboarding 'experiment' code references by @mallexxx in #5393
- [iOS] lazy instantiate js controller (alert, confirm, prompt) by @brindy in #5499
- [iOS] Duck.ai tab grid: empty-state cards by @hassaanelgarem in #5527
- Remove OS version parameter from new tab page loading time pixel by @tomasstrba in #5477
- [macOS] Fix tab & bookmarks bar favicon flicker on cache updates by @ayoy in #5534
- Fix: Tab Title Unexpected Animations by @jleandroperez in #5445
- [iOS/macOS] Fix a couple failure recovery handler bugs by @samsymons in #5307
- Fix pixel validation failures by @samsymons in #5493
- [macOS] Harden bookmarks bar favicon refresh against flicker by @ayoy in #5539
- Add new CPM settings view behind feature flag. by @sammacbeth in #5516
- Pass error to configuration fetch error pixel by @ayoy in #5550
- Remove iPadAIToggle feature flag by @Bunn in #5530
- [macOS] Fix bookmarks bar submenu closing on favicon cache update by @ayoy in #5547
- Extra CPM diagnostics in breakage reports by @muodov in #5486
- Update Dark Reader extension to 4.9.128 by @dus7 in #5402
- iOS site loading failure pixels: make them fire for cancellation to match macOS by @THISISDINOSAUR in #5538
- PIR: iOS: Remove tracker blocking feature flag by @THISISDINOSAUR in #5543
- [iOS] Duck.ai tab grid: crossfade transition into rich cards by @hassaanelgarem in #5544
- [CI] Additional Maestro improvements by @samsymons in #5564
- [iOS][Tailored Onboarding] Update subscription upsell dialog copy for Duck.ai tailored onboarding by @alessandroboron in #5512
- [iOS][macOS] Improve Malicious Site Protection instrumentation by @alessandroboron in #5548
- macOS: Remove aiChatOmnibarCluster feature flag by @Bunn in #5537
- Add Duck.ai model picker to the iPad address bar by @Bunn in #5523
- iOS: Update App Store description metadata by @aataraxiaa in #5568
- Remove minimalChromeInLandscape feature flag by @dus7 in #5551
- Fix invalid state of bottom address bar after rotation by @dus7 in #5552
- iOS: Remove iPadDuckaiOnTab feature flag by @Bunn in #5569
- Fix Duck.ai sidebar covering web content after navigation by @tomasstrba in #5572
- Show "Add Page Content" when navigating from NTP with sidebar open by @tomasstrba in #5554
- macOS: Add native controls to AI Features settings by @dus7 in #5522
- iOS: Add ntpAfterIdleState RMF matching attribute by @SabrinaTardio in #5536
- Add simplifiedSyncSetupV2 feature flag + V2 Sync & Backup screen (iOS) by @pballart in #5580
- iOS: Add native controls to AI Features settings by @dus7 in #5502
- iOS: Default aiChatTabSwitcherRichCard feature flag on by @hassaanelgarem in #5578
- Bump github.com/duckduckgo/content-scope-scripts from 15.3.0 to 15.7.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5562
- PIR: Add optOutRetryError96Hours feature flag by @quanganhdo in #5560
- Reduce usage of BrokerProfileQueryData by @quanganhdo in #5582
- [iOS] Duck.ai tab grid: ship review changes by @hassaanelgarem in #5575
- Remove autofill onboardingDismissExperiment code by @frosty in #5531
- [iOS] Sync camera scanning updates by @amddg44 in #5542
- [iOS] Fix embedded config unit tests by @samsymons in #5586
- Fix Xcode 27 compilation by @samsymons in #5566
- macOS|iOS: Don't report VPN start cancellations as start failures by @diegoreymendez in #5555
Full Changelog: 7.226.0-11+ios...7.227.0-0+ios
1.197.0-752+macos
What's Changed
- [iOS] Ship duck.ai onboarding query-selection flow permanently by @mallexxx in #5145
- macOS: Add session-restored daily and count pixels by @diegoreymendez in #5479
- macOS: Simplify TabBarViewController's tab-bar delegate handlers by @diegoreymendez in #5022
- [macOS] Disables Tab Animations on Keyboard Event by @jleandroperez in #5446
- iOS: Ship web-scroll-freeze observability to production by @aataraxiaa in #5491
- macOS: Keep passwords toolbar button anchored while onboarding popover is shown by @SabrinaTardio in #5500
- UTI: Adjusting Layout by @jleandroperez in #5474
- iOS: Stop deferring Duck.ai native-storage migration once it's done by @Bunn in #5501
- iOS Rebranding: Ship Review Amends II by @frosty in #5489
- iOS: Fix failing maestro Sync tests by @amddg44 in #5510
- Add Copy VPN Diagnostics action with anonymized metadata by @diegoreymendez in #5400
- Remove CodeQL by @samsymons in #5508
- Ask Duck.ai About Selected Content by @tomasstrba in #5273
- iOS: Localize Duck.ai chat-history strings, import translations, default flag on by @SabrinaTardio in #5481
- [iOS] Duck.ai tab grid: voice & transcript rich cards by @hassaanelgarem in #5513
- [Release PR] Update Duck.ai prompt wide event with additional delivery parameters by @samsymons in #5525
- [iOS][Set As Default] Update videos for app rebranding by @alessandroboron in #5526
- [macOS][Burn On Exit] Add pixels to instrument burn on exit feature by @alessandroboron in #5358
- Add missing channel and petal params to macOS pixel definitions by @miasma13 in #5519
- Rename duck.ai onboarding 'experiment' code references by @mallexxx in #5393
- [iOS] lazy instantiate js controller (alert, confirm, prompt) by @brindy in #5499
- iOS: Add forward-only new-user cutoff for Unified Toggle Input by @aataraxiaa in #5521
- [iOS] Duck.ai tab grid: empty-state cards by @hassaanelgarem in #5527
- iOS: web-scroll-freeze diagnostics — window-wide capture, transition log, gate-state pixels, gated scoped recovery by @aataraxiaa in #5506
- Remove OS version parameter from new tab page loading time pixel by @tomasstrba in #5477
- Fix: Tab Title Unexpected Animations by @jleandroperez in #5445
- [iOS/macOS] Fix a couple failure recovery handler bugs by @samsymons in #5307
- Fix pixel validation failures by @samsymons in #5493
- iOS: Fix favorites reorder double-applying move (favoritesListIndexNotMatchingBookmark spike) by @aataraxiaa in #5532
- Add new CPM settings view behind feature flag. by @sammacbeth in #5516
- Remove iPadAIToggle feature flag by @Bunn in #5530
- Extra CPM diagnostics in breakage reports by @muodov in #5486
- Update Dark Reader extension to 4.9.128 by @dus7 in #5402
- iOS site loading failure pixels: make them fire for cancellation to match macOS by @THISISDINOSAUR in #5538
- PIR: iOS: Remove tracker blocking feature flag by @THISISDINOSAUR in #5543
- [iOS] Duck.ai tab grid: crossfade transition into rich cards by @hassaanelgarem in #5544
- [CI] Additional Maestro improvements by @samsymons in #5564
- [iOS][Tailored Onboarding] Update subscription upsell dialog copy for Duck.ai tailored onboarding by @alessandroboron in #5512
- [iOS][macOS] Improve Malicious Site Protection instrumentation by @alessandroboron in #5548
- macOS: Remove aiChatOmnibarCluster feature flag by @Bunn in #5537
- Add Duck.ai model picker to the iPad address bar by @Bunn in #5523
- iOS: Update App Store description metadata by @aataraxiaa in #5568
- Remove minimalChromeInLandscape feature flag by @dus7 in #5551
- Fix invalid state of bottom address bar after rotation by @dus7 in #5552
- iOS: Remove iPadDuckaiOnTab feature flag by @Bunn in #5569
- Fix Duck.ai sidebar covering web content after navigation by @tomasstrba in #5572
- Show "Add Page Content" when navigating from NTP with sidebar open by @tomasstrba in #5554
- macOS: Add native controls to AI Features settings by @dus7 in #5522
- iOS: Add ntpAfterIdleState RMF matching attribute by @SabrinaTardio in #5536
- Add simplifiedSyncSetupV2 feature flag + V2 Sync & Backup screen (iOS) by @pballart in #5580
- iOS: Add native controls to AI Features settings by @dus7 in #5502
- iOS: Default aiChatTabSwitcherRichCard feature flag on by @hassaanelgarem in #5578
- Bump github.com/duckduckgo/content-scope-scripts from 15.3.0 to 15.7.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5562
- PIR: Add optOutRetryError96Hours feature flag by @quanganhdo in #5560
- Reduce usage of BrokerProfileQueryData by @quanganhdo in #5582
- [iOS] Duck.ai tab grid: ship review changes by @hassaanelgarem in #5575
- Remove autofill onboardingDismissExperiment code by @frosty in #5531
- [iOS] Sync camera scanning updates by @amddg44 in #5542
- [iOS] Fix embedded config unit tests by @samsymons in #5586
- Fix Xcode 27 compilation by @samsymons in #5566
- macOS|iOS: Don't report VPN start cancellations as start failures by @diegoreymendez in #5555
Full Changelog: 1.196.0-751+macos...1.197.0-752+macos
7.226.0-11+ios
What's Changed
- iOS: Fix navigation bar stuck hidden on error page by @dus7 in #5376
- macOS Updates: Verify we always keep 1.193.1 in appcast (last Big Sur version) by @diegoreymendez in #5398
- [macOS] Fix Next Step card UI tests by @samsymons in #5389
- Fix Duck.ai bubble tap target in search widget by @Bunn in #5391
- Fix off-main WKHTTPCookieStore access crashing AI Chat models fetch by @tomasstrba in #5396
- [macOS] Avoid using force try in the test suite by @samsymons in #5384
- iOS: Fix UTI card height expanding to fit long URL on omnibar tap by @aataraxiaa in #5373
- Fix data-export integrity bugs by @diegoreymendez in #5319
- iOS: Wire native chat-history pin into Sync by @SabrinaTardio in #5348
- Add "Delete All" to Duck.ai chat history sheet by @SabrinaTardio in #5392
- Add channel parameter to Privacy Pro toolbar popover pixel definitions by @jozsef-vesza in #5399
- [iOS] Duck.ai tab grid: text-chat rich card by @hassaanelgarem in #5383
- Update pixel definitions by @samsymons in #5417
- [CI] Fix the malware protection update workflow by @samsymons in #5380
- Update phishing protection datasets to 1742170 by @github-actions[bot] in #5197
- Update autoconsent to v14.95.0 by @daxmobile in #5394
- Bump github.com/duckduckgo/content-scope-scripts from 15.1.0 to 15.2.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5413
- Bump github.com/pointfreeco/swift-clocks from 1.0.6 to 1.1.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5339
- iOS Rebranding: Amends II by @frosty in #5324
- Only disable Duck Player for new users when rolling out ad-blocking by @miasma13 in #5406
- Fix Duck.ai native-storage error pixel validation failures by @Bunn in #5408
- Add lower text zoom levels (50%, 60%, 70%) by @edulpn in #5338
- Add support for applicationNameForUserAgent to PIR iOS by @quanganhdo in #4550
- macOS: Fix Duck.ai omnibar clicks falling through to the bookmarks bar by @jotaemepereira in #5335
- [macOS] Add missing channel param to dbp pixels by @quanganhdo in #5412
- Validate URL schemes and double extensions on file import by @pballart in #5226
- [macOS] NTP omnibar: attach open tabs and files to Duck.ai by @tomasstrba in #5175
- [macOS] Minor Sync v2 UX improvements by @amddg44 in #5424
- Add "View all Chats" entry to Duck.ai, opening native chat history by @SabrinaTardio in #5401
- [iOS] Duck.ai tab grid: image-chat rich card (feature-flagged) by @hassaanelgarem in #5422
- iOS [iPad]: model-driven omnibar suggestions popover + focus-behaviour parity by @jaceklyp in #5411
- [iOS][Dependencies] Bump SwiftSoup to 2.13.5 by @alessandroboron in #5423
- [iOS][UTI] Remove duplicate UTI URL expansion tests by @alessandroboron in #5436
- iOS: Keep model chip visible after switching models until submission by @pikorddg in #5427
- iOS: Fire a separate data-clearing pixel for single-tab burns by @hassaanelgarem in #5421
- Fix UTI bug where stale suggestions flash for new query by @hassaanelgarem in #5435
- Add aiFeaturesNativeControls feature flag (iOS + macOS) by @dus7 in #5443
- Set WireGuard persistent keepalive to 25s by @diegoreymendez in #5440
- iOS: Restore Customize Responses in UTI tools menu by @Bunn in #5375
- [macOS] Sync V2 device list support updated to include 3rd parties by @amddg44 in #5438
- [macOS] Improve the leak check tunnel interface lookup method by @samsymons in #5416
- Remove PIR token gating by @quanganhdo in #5281
- [iOS] Clean up the favicon cache more reliably by @samsymons in #5432
- Increase Maestro concurrency, and allow running individual suites. by @samsymons in #5452
- Fix a comment. by @samsymons in #5453
- Fixes a formatting bug in the iOS E2E tests by @samsymons in #5454
- [iOS/macOS][Dependencies] Downgrade Swift clocks from 1.1.0 to 1.0.6 by @alessandroboron in #5455
- [macOS][Fire Window] Add Pixel to measure fire window opened (standard and daily) by @alessandroboron in #5341
- iOS: Add Duck.ai chat-history screen pixels by @SabrinaTardio in #5425
- [iOS] Add pixels for the Duck.ai model recovery flow by @pikorddg in #5441
- Refresh Privacy Dashboard CPM state for background tabs by @muodov in #5410
- Handle focusChatInput message to focus Unified Toggle Input by @Bunn in #5451
- [macOS] Sync V2 pixels by @amddg44 in #5448
- Add web extension state monitor (macOS + iOS) by @miasma13 in #5426
- Update embedded extension to 2026.6.16 by @daxmobile in #5458
- [iOS] Maestro: temporarily disable flaky internal-mode e2e flows by @aataraxiaa in #5456
- macOS: Enforce Duck.ai attachment limits in the address-bar omnibar by @tomasstrba in #5222
- Remove "currently available on Mac & Windows" subtitle from PIR upsell row by @jozsef-vesza in #5462
- iOS: Animate search experience toggle in onboarding by @mallexxx in #5271
- Native sync for Search Assist & Hide AI Images Settings by @dus7 in #5459
- [macOS] Reduce favicon startup memory by @ayoy in #5403
- iOS: Add background to duck.ai onboarding "Try Visiting a Site" dialog by @mallexxx in #5246
- Hide Free Plan title and nav pills during duck.ai fire onboarding by @mallexxx in #5149
- [iPad] Refine tab sizing and align tabs bar buttons by @dus7 in #5428
- [macOS] Remove nextStepsListWidget feature flag and legacy Next Steps code by @rachelmcr in #5430
- iOS: Move focused-omnibar logo + fire empty-state to SwiftUI by @jaceklyp in #5465
- Add internal-only toggle to exclude CGNAT from the VPN by @diegoreymendez in #4960
- [iOS] Add vCard (.vcf) contact link support by @bkunat in #5379
- Add Strict routing VPN toggle by @diegoreymendez in #5166
- iOS Rebranding: Colour Updates by @frosty in #5415
- Add PR tasks to the Apple Team Code Reviews project by @samsymons in #5475
- Maestro reliability improvements by @samsymons in #5471
- [iOS][Tailored Onboarding] Prevent showing contextual dialogs if user does not dismiss manually final dialog by @alessandroboron in #5457
- [macOS] Update pixels to validate unclean exit detection volume by @rachelmcr in #5378
- Update iOS release notes for 7.225.0 by @miasma13 in #5478
- iOS: UTI - Single Line Entry for Toggle/Duck.ai Disabled by @aataraxiaa in #5461
- iOS: Duck.ai native chat-history sheet — design update, menu routing & glyphs by @SabrinaTardio in #5...
1.196.0-751+macos
What's Changed
- iOS: Fix navigation bar stuck hidden on error page by @dus7 in #5376
- macOS Updates: Verify we always keep 1.193.1 in appcast (last Big Sur version) by @diegoreymendez in #5398
- [macOS] Fix Next Step card UI tests by @samsymons in #5389
- Fix Duck.ai bubble tap target in search widget by @Bunn in #5391
- [macOS] Avoid using force try in the test suite by @samsymons in #5384
- iOS: Fix UTI card height expanding to fit long URL on omnibar tap by @aataraxiaa in #5373
- Fix data-export integrity bugs by @diegoreymendez in #5319
- iOS: Wire native chat-history pin into Sync by @SabrinaTardio in #5348
- Add "Delete All" to Duck.ai chat history sheet by @SabrinaTardio in #5392
- Add channel parameter to Privacy Pro toolbar popover pixel definitions by @jozsef-vesza in #5399
- [iOS] Sync v2 UX improvements by @amddg44 in #5395
- [iOS] Duck.ai tab grid: text-chat rich card by @hassaanelgarem in #5383
- Update pixel definitions by @samsymons in #5417
- [CI] Fix the malware protection update workflow by @samsymons in #5380
- Update phishing protection datasets to 1742170 by @github-actions[bot] in #5197
- Update autoconsent to v14.95.0 by @daxmobile in #5394
- Bump github.com/duckduckgo/content-scope-scripts from 15.1.0 to 15.2.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5413
- Bump github.com/pointfreeco/swift-clocks from 1.0.6 to 1.1.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5339
- iOS Rebranding: Amends II by @frosty in #5324
- Only disable Duck Player for new users when rolling out ad-blocking by @miasma13 in #5405
- Fix Duck.ai native-storage error pixel validation failures by @Bunn in #5408
- Add lower text zoom levels (50%, 60%, 70%) by @edulpn in #5338
- Add support for applicationNameForUserAgent to PIR iOS by @quanganhdo in #4550
- macOS: Fix Duck.ai omnibar clicks falling through to the bookmarks bar by @jotaemepereira in #5335
- [macOS] Add missing channel param to dbp pixels by @quanganhdo in #5412
- Validate URL schemes and double extensions on file import by @pballart in #5226
- [iOS] UTI: favorites on a pre-filled URL, no dismiss flash, long URL single-line by @aataraxiaa in #5429
- [macOS] NTP omnibar: attach open tabs and files to Duck.ai by @tomasstrba in #5175
- Add "View all Chats" entry to Duck.ai, opening native chat history by @SabrinaTardio in #5401
- [iOS] Duck.ai tab grid: image-chat rich card (feature-flagged) by @hassaanelgarem in #5422
- iOS [iPad]: model-driven omnibar suggestions popover + focus-behaviour parity by @jaceklyp in #5411
- [iOS][Dependencies] Bump SwiftSoup to 2.13.5 by @alessandroboron in #5423
- [iOS][UTI] Remove duplicate UTI URL expansion tests by @alessandroboron in #5436
- iOS: Keep model chip visible after switching models until submission by @pikorddg in #5427
- iOS: Fire a separate data-clearing pixel for single-tab burns by @hassaanelgarem in #5421
- Fix UTI bug where stale suggestions flash for new query by @hassaanelgarem in #5435
- [iOS][UTI] Restore multi-line expansion for long URLs so the end is editable by @aataraxiaa in #5444
- Add aiFeaturesNativeControls feature flag (iOS + macOS) by @dus7 in #5443
- Set WireGuard persistent keepalive to 25s by @diegoreymendez in #5440
- iOS: Restore Customize Responses in UTI tools menu by @Bunn in #5375
- [iOS] Sync V2 device list support updated to include 3rd parties by @amddg44 in #5439
- [macOS] Improve the leak check tunnel interface lookup method by @samsymons in #5416
- Remove PIR token gating by @quanganhdo in #5281
- [iOS] Clean up the favicon cache more reliably by @samsymons in #5432
- Increase Maestro concurrency, and allow running individual suites. by @samsymons in #5452
- Fix a comment. by @samsymons in #5453
- Fixes a formatting bug in the iOS E2E tests by @samsymons in #5454
- [iOS/macOS][Dependencies] Downgrade Swift clocks from 1.1.0 to 1.0.6 by @alessandroboron in #5455
- [macOS][Fire Window] Add Pixel to measure fire window opened (standard and daily) by @alessandroboron in #5341
- iOS: Add Duck.ai chat-history screen pixels by @SabrinaTardio in #5425
- [iOS] Add pixels for the Duck.ai model recovery flow by @pikorddg in #5441
- Refresh Privacy Dashboard CPM state for background tabs by @muodov in #5410
- Handle focusChatInput message to focus Unified Toggle Input by @Bunn in #5451
- Add web extension state monitor (macOS + iOS) by @miasma13 in #5426
- Update embedded extension to 2026.6.16 by @daxmobile in #5458
- [iOS] Maestro: temporarily disable flaky internal-mode e2e flows by @aataraxiaa in #5456
- [iOS] Sync V2 pixels by @amddg44 in #5449
- [iOS] Sync V2 translations by @amddg44 in #5460
- macOS: Enforce Duck.ai attachment limits in the address-bar omnibar by @tomasstrba in #5222
- Remove "currently available on Mac & Windows" subtitle from PIR upsell row by @jozsef-vesza in #5462
- iOS: Animate search experience toggle in onboarding by @mallexxx in #5271
- Native sync for Search Assist & Hide AI Images Settings by @dus7 in #5459
- [macOS] Reduce favicon startup memory by @ayoy in #5403
- iOS: Add background to duck.ai onboarding "Try Visiting a Site" dialog by @mallexxx in #5246
- Hide Free Plan title and nav pills during duck.ai fire onboarding by @mallexxx in #5149
- [iPad] Refine tab sizing and align tabs bar buttons by @dus7 in #5428
- [macOS] Remove nextStepsListWidget feature flag and legacy Next Steps code by @rachelmcr in #5430
- iOS: Move focused-omnibar logo + fire empty-state to SwiftUI by @jaceklyp in #5465
- Add internal-only toggle to exclude CGNAT from the VPN by @diegoreymendez in #4960
- [iOS] Add vCard (.vcf) contact link support by @bkunat in #5379
- Add Strict routing VPN toggle by @diegoreymendez in #5166
- [iOS] Revert VPN metrics measurement change by @samsymons in #5447
- iOS Rebranding: Colour Updates by @frosty in #5415
- Add PR tasks to the Apple Team Code Reviews project by @samsymons in #5475
- Maestro reliability improvements by @samsymons in #5471
- [iOS][Tailored Onboarding] Prevent showing contextual dialogs if user does not dismiss manually final dialog by @alessandroboron in #5457
- [macOS] Update pixels to validate unclean exit detection volume by @rachelmcr in #5378
- Update iOS release not...
1.196.0-750+macos
What's Changed
- iOS: Fix navigation bar stuck hidden on error page by @dus7 in #5376
- macOS Updates: Verify we always keep 1.193.1 in appcast (last Big Sur version) by @diegoreymendez in #5398
- [macOS] Fix Next Step card UI tests by @samsymons in #5389
- Fix Duck.ai bubble tap target in search widget by @Bunn in #5391
- [macOS] Avoid using force try in the test suite by @samsymons in #5384
- iOS: Fix UTI card height expanding to fit long URL on omnibar tap by @aataraxiaa in #5373
- Fix data-export integrity bugs by @diegoreymendez in #5319
- iOS: Wire native chat-history pin into Sync by @SabrinaTardio in #5348
- Add "Delete All" to Duck.ai chat history sheet by @SabrinaTardio in #5392
- Add channel parameter to Privacy Pro toolbar popover pixel definitions by @jozsef-vesza in #5399
- [iOS] Sync v2 UX improvements by @amddg44 in #5395
- [iOS] Duck.ai tab grid: text-chat rich card by @hassaanelgarem in #5383
- Update pixel definitions by @samsymons in #5417
- [CI] Fix the malware protection update workflow by @samsymons in #5380
- Update phishing protection datasets to 1742170 by @github-actions[bot] in #5197
- Update autoconsent to v14.95.0 by @daxmobile in #5394
- Bump github.com/duckduckgo/content-scope-scripts from 15.1.0 to 15.2.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5413
- Bump github.com/pointfreeco/swift-clocks from 1.0.6 to 1.1.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5339
- iOS Rebranding: Amends II by @frosty in #5324
- Only disable Duck Player for new users when rolling out ad-blocking by @miasma13 in #5405
- Fix Duck.ai native-storage error pixel validation failures by @Bunn in #5408
- Add lower text zoom levels (50%, 60%, 70%) by @edulpn in #5338
- Add support for applicationNameForUserAgent to PIR iOS by @quanganhdo in #4550
- macOS: Fix Duck.ai omnibar clicks falling through to the bookmarks bar by @jotaemepereira in #5335
- [macOS] Add missing channel param to dbp pixels by @quanganhdo in #5412
- Validate URL schemes and double extensions on file import by @pballart in #5226
- [iOS] UTI: favorites on a pre-filled URL, no dismiss flash, long URL single-line by @aataraxiaa in #5429
- [macOS] NTP omnibar: attach open tabs and files to Duck.ai by @tomasstrba in #5175
- Add "View all Chats" entry to Duck.ai, opening native chat history by @SabrinaTardio in #5401
- [iOS] Duck.ai tab grid: image-chat rich card (feature-flagged) by @hassaanelgarem in #5422
- iOS [iPad]: model-driven omnibar suggestions popover + focus-behaviour parity by @jaceklyp in #5411
- [iOS][Dependencies] Bump SwiftSoup to 2.13.5 by @alessandroboron in #5423
- [iOS][UTI] Remove duplicate UTI URL expansion tests by @alessandroboron in #5436
- iOS: Keep model chip visible after switching models until submission by @pikorddg in #5427
- iOS: Fire a separate data-clearing pixel for single-tab burns by @hassaanelgarem in #5421
- Fix UTI bug where stale suggestions flash for new query by @hassaanelgarem in #5435
- [iOS][UTI] Restore multi-line expansion for long URLs so the end is editable by @aataraxiaa in #5444
- Add aiFeaturesNativeControls feature flag (iOS + macOS) by @dus7 in #5443
- Set WireGuard persistent keepalive to 25s by @diegoreymendez in #5440
- iOS: Restore Customize Responses in UTI tools menu by @Bunn in #5375
- [iOS] Sync V2 device list support updated to include 3rd parties by @amddg44 in #5439
- [macOS] Improve the leak check tunnel interface lookup method by @samsymons in #5416
- Remove PIR token gating by @quanganhdo in #5281
- [iOS] Clean up the favicon cache more reliably by @samsymons in #5432
- Increase Maestro concurrency, and allow running individual suites. by @samsymons in #5452
- Fix a comment. by @samsymons in #5453
- Fixes a formatting bug in the iOS E2E tests by @samsymons in #5454
- [iOS/macOS][Dependencies] Downgrade Swift clocks from 1.1.0 to 1.0.6 by @alessandroboron in #5455
- [macOS][Fire Window] Add Pixel to measure fire window opened (standard and daily) by @alessandroboron in #5341
- iOS: Add Duck.ai chat-history screen pixels by @SabrinaTardio in #5425
- [iOS] Add pixels for the Duck.ai model recovery flow by @pikorddg in #5441
- Refresh Privacy Dashboard CPM state for background tabs by @muodov in #5410
- Handle focusChatInput message to focus Unified Toggle Input by @Bunn in #5451
- Add web extension state monitor (macOS + iOS) by @miasma13 in #5426
- Update embedded extension to 2026.6.16 by @daxmobile in #5458
- [iOS] Maestro: temporarily disable flaky internal-mode e2e flows by @aataraxiaa in #5456
- [iOS] Sync V2 pixels by @amddg44 in #5449
- [iOS] Sync V2 translations by @amddg44 in #5460
- macOS: Enforce Duck.ai attachment limits in the address-bar omnibar by @tomasstrba in #5222
- Remove "currently available on Mac & Windows" subtitle from PIR upsell row by @jozsef-vesza in #5462
- iOS: Animate search experience toggle in onboarding by @mallexxx in #5271
- Native sync for Search Assist & Hide AI Images Settings by @dus7 in #5459
- [macOS] Reduce favicon startup memory by @ayoy in #5403
- iOS: Add background to duck.ai onboarding "Try Visiting a Site" dialog by @mallexxx in #5246
- Hide Free Plan title and nav pills during duck.ai fire onboarding by @mallexxx in #5149
- [iPad] Refine tab sizing and align tabs bar buttons by @dus7 in #5428
- [macOS] Remove nextStepsListWidget feature flag and legacy Next Steps code by @rachelmcr in #5430
- iOS: Move focused-omnibar logo + fire empty-state to SwiftUI by @jaceklyp in #5465
- Add internal-only toggle to exclude CGNAT from the VPN by @diegoreymendez in #4960
- [iOS] Add vCard (.vcf) contact link support by @bkunat in #5379
- Add Strict routing VPN toggle by @diegoreymendez in #5166
- [iOS] Revert VPN metrics measurement change by @samsymons in #5447
- iOS Rebranding: Colour Updates by @frosty in #5415
- Add PR tasks to the Apple Team Code Reviews project by @samsymons in #5475
- Maestro reliability improvements by @samsymons in #5471
- [iOS][Tailored Onboarding] Prevent showing contextual dialogs if user does not dismiss manually final dialog by @alessandroboron in #5457
- [macOS] Update pixels to validate unclean exit detection volume by @rachelmcr in #5378
- Update iOS release not...
7.226.0-9+ios
What's Changed
- iOS: Fix navigation bar stuck hidden on error page by @dus7 in #5376
- macOS Updates: Verify we always keep 1.193.1 in appcast (last Big Sur version) by @diegoreymendez in #5398
- [macOS] Fix Next Step card UI tests by @samsymons in #5389
- Fix Duck.ai bubble tap target in search widget by @Bunn in #5391
- Fix off-main WKHTTPCookieStore access crashing AI Chat models fetch by @tomasstrba in #5396
- [macOS] Avoid using force try in the test suite by @samsymons in #5384
- iOS: Fix UTI card height expanding to fit long URL on omnibar tap by @aataraxiaa in #5373
- Fix data-export integrity bugs by @diegoreymendez in #5319
- iOS: Wire native chat-history pin into Sync by @SabrinaTardio in #5348
- Add "Delete All" to Duck.ai chat history sheet by @SabrinaTardio in #5392
- Add channel parameter to Privacy Pro toolbar popover pixel definitions by @jozsef-vesza in #5399
- [iOS] Duck.ai tab grid: text-chat rich card by @hassaanelgarem in #5383
- Update pixel definitions by @samsymons in #5417
- [CI] Fix the malware protection update workflow by @samsymons in #5380
- Update phishing protection datasets to 1742170 by @github-actions[bot] in #5197
- Update autoconsent to v14.95.0 by @daxmobile in #5394
- Bump github.com/duckduckgo/content-scope-scripts from 15.1.0 to 15.2.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5413
- Bump github.com/pointfreeco/swift-clocks from 1.0.6 to 1.1.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5339
- iOS Rebranding: Amends II by @frosty in #5324
- Only disable Duck Player for new users when rolling out ad-blocking by @miasma13 in #5406
- Fix Duck.ai native-storage error pixel validation failures by @Bunn in #5408
- Add lower text zoom levels (50%, 60%, 70%) by @edulpn in #5338
- Add support for applicationNameForUserAgent to PIR iOS by @quanganhdo in #4550
- macOS: Fix Duck.ai omnibar clicks falling through to the bookmarks bar by @jotaemepereira in #5335
- [macOS] Add missing channel param to dbp pixels by @quanganhdo in #5412
- Validate URL schemes and double extensions on file import by @pballart in #5226
- [macOS] NTP omnibar: attach open tabs and files to Duck.ai by @tomasstrba in #5175
- [macOS] Minor Sync v2 UX improvements by @amddg44 in #5424
- Add "View all Chats" entry to Duck.ai, opening native chat history by @SabrinaTardio in #5401
- [iOS] Duck.ai tab grid: image-chat rich card (feature-flagged) by @hassaanelgarem in #5422
- iOS [iPad]: model-driven omnibar suggestions popover + focus-behaviour parity by @jaceklyp in #5411
- [iOS][Dependencies] Bump SwiftSoup to 2.13.5 by @alessandroboron in #5423
- [iOS][UTI] Remove duplicate UTI URL expansion tests by @alessandroboron in #5436
- iOS: Keep model chip visible after switching models until submission by @pikorddg in #5427
- iOS: Fire a separate data-clearing pixel for single-tab burns by @hassaanelgarem in #5421
- Fix UTI bug where stale suggestions flash for new query by @hassaanelgarem in #5435
- Add aiFeaturesNativeControls feature flag (iOS + macOS) by @dus7 in #5443
- Set WireGuard persistent keepalive to 25s by @diegoreymendez in #5440
- iOS: Restore Customize Responses in UTI tools menu by @Bunn in #5375
- [macOS] Sync V2 device list support updated to include 3rd parties by @amddg44 in #5438
- [macOS] Improve the leak check tunnel interface lookup method by @samsymons in #5416
- Remove PIR token gating by @quanganhdo in #5281
- [iOS] Clean up the favicon cache more reliably by @samsymons in #5432
- Increase Maestro concurrency, and allow running individual suites. by @samsymons in #5452
- Fix a comment. by @samsymons in #5453
- Fixes a formatting bug in the iOS E2E tests by @samsymons in #5454
- [iOS/macOS][Dependencies] Downgrade Swift clocks from 1.1.0 to 1.0.6 by @alessandroboron in #5455
- [macOS][Fire Window] Add Pixel to measure fire window opened (standard and daily) by @alessandroboron in #5341
- iOS: Add Duck.ai chat-history screen pixels by @SabrinaTardio in #5425
- [iOS] Add pixels for the Duck.ai model recovery flow by @pikorddg in #5441
- Refresh Privacy Dashboard CPM state for background tabs by @muodov in #5410
- Handle focusChatInput message to focus Unified Toggle Input by @Bunn in #5451
- [macOS] Sync V2 pixels by @amddg44 in #5448
- Add web extension state monitor (macOS + iOS) by @miasma13 in #5426
- Update embedded extension to 2026.6.16 by @daxmobile in #5458
- [iOS] Maestro: temporarily disable flaky internal-mode e2e flows by @aataraxiaa in #5456
- macOS: Enforce Duck.ai attachment limits in the address-bar omnibar by @tomasstrba in #5222
- Remove "currently available on Mac & Windows" subtitle from PIR upsell row by @jozsef-vesza in #5462
- iOS: Animate search experience toggle in onboarding by @mallexxx in #5271
- Native sync for Search Assist & Hide AI Images Settings by @dus7 in #5459
- [macOS] Reduce favicon startup memory by @ayoy in #5403
- iOS: Add background to duck.ai onboarding "Try Visiting a Site" dialog by @mallexxx in #5246
- Hide Free Plan title and nav pills during duck.ai fire onboarding by @mallexxx in #5149
- [iPad] Refine tab sizing and align tabs bar buttons by @dus7 in #5428
- [macOS] Remove nextStepsListWidget feature flag and legacy Next Steps code by @rachelmcr in #5430
- iOS: Move focused-omnibar logo + fire empty-state to SwiftUI by @jaceklyp in #5465
- Add internal-only toggle to exclude CGNAT from the VPN by @diegoreymendez in #4960
- [iOS] Add vCard (.vcf) contact link support by @bkunat in #5379
- Add Strict routing VPN toggle by @diegoreymendez in #5166
- iOS Rebranding: Colour Updates by @frosty in #5415
- Add PR tasks to the Apple Team Code Reviews project by @samsymons in #5475
- Maestro reliability improvements by @samsymons in #5471
- [iOS][Tailored Onboarding] Prevent showing contextual dialogs if user does not dismiss manually final dialog by @alessandroboron in #5457
- [macOS] Update pixels to validate unclean exit detection volume by @rachelmcr in #5378
- Update iOS release notes for 7.225.0 by @miasma13 in #5478
- iOS: UTI - Single Line Entry for Toggle/Duck.ai Disabled by @aataraxiaa in #5461
- iOS: Duck.ai native chat-history sheet — design update, menu routing & glyphs by @SabrinaTardio in #5...
7.226.0-8+ios
What's Changed
- iOS: Fix navigation bar stuck hidden on error page by @dus7 in #5376
- macOS Updates: Verify we always keep 1.193.1 in appcast (last Big Sur version) by @diegoreymendez in #5398
- [macOS] Fix Next Step card UI tests by @samsymons in #5389
- Fix Duck.ai bubble tap target in search widget by @Bunn in #5391
- Fix off-main WKHTTPCookieStore access crashing AI Chat models fetch by @tomasstrba in #5396
- [macOS] Avoid using force try in the test suite by @samsymons in #5384
- iOS: Fix UTI card height expanding to fit long URL on omnibar tap by @aataraxiaa in #5373
- Fix data-export integrity bugs by @diegoreymendez in #5319
- iOS: Wire native chat-history pin into Sync by @SabrinaTardio in #5348
- Add "Delete All" to Duck.ai chat history sheet by @SabrinaTardio in #5392
- Add channel parameter to Privacy Pro toolbar popover pixel definitions by @jozsef-vesza in #5399
- [iOS] Duck.ai tab grid: text-chat rich card by @hassaanelgarem in #5383
- Update pixel definitions by @samsymons in #5417
- [CI] Fix the malware protection update workflow by @samsymons in #5380
- Update phishing protection datasets to 1742170 by @github-actions[bot] in #5197
- Update autoconsent to v14.95.0 by @daxmobile in #5394
- Bump github.com/duckduckgo/content-scope-scripts from 15.1.0 to 15.2.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5413
- Bump github.com/pointfreeco/swift-clocks from 1.0.6 to 1.1.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5339
- iOS Rebranding: Amends II by @frosty in #5324
- Only disable Duck Player for new users when rolling out ad-blocking by @miasma13 in #5406
- Fix Duck.ai native-storage error pixel validation failures by @Bunn in #5408
- Add lower text zoom levels (50%, 60%, 70%) by @edulpn in #5338
- Add support for applicationNameForUserAgent to PIR iOS by @quanganhdo in #4550
- macOS: Fix Duck.ai omnibar clicks falling through to the bookmarks bar by @jotaemepereira in #5335
- [macOS] Add missing channel param to dbp pixels by @quanganhdo in #5412
- Validate URL schemes and double extensions on file import by @pballart in #5226
- [macOS] NTP omnibar: attach open tabs and files to Duck.ai by @tomasstrba in #5175
- [macOS] Minor Sync v2 UX improvements by @amddg44 in #5424
- Add "View all Chats" entry to Duck.ai, opening native chat history by @SabrinaTardio in #5401
- [iOS] Duck.ai tab grid: image-chat rich card (feature-flagged) by @hassaanelgarem in #5422
- iOS [iPad]: model-driven omnibar suggestions popover + focus-behaviour parity by @jaceklyp in #5411
- [iOS][Dependencies] Bump SwiftSoup to 2.13.5 by @alessandroboron in #5423
- [iOS][UTI] Remove duplicate UTI URL expansion tests by @alessandroboron in #5436
- iOS: Keep model chip visible after switching models until submission by @pikorddg in #5427
- iOS: Fire a separate data-clearing pixel for single-tab burns by @hassaanelgarem in #5421
- Fix UTI bug where stale suggestions flash for new query by @hassaanelgarem in #5435
- Add aiFeaturesNativeControls feature flag (iOS + macOS) by @dus7 in #5443
- Set WireGuard persistent keepalive to 25s by @diegoreymendez in #5440
- iOS: Restore Customize Responses in UTI tools menu by @Bunn in #5375
- [macOS] Sync V2 device list support updated to include 3rd parties by @amddg44 in #5438
- [macOS] Improve the leak check tunnel interface lookup method by @samsymons in #5416
- Remove PIR token gating by @quanganhdo in #5281
- [iOS] Clean up the favicon cache more reliably by @samsymons in #5432
- Increase Maestro concurrency, and allow running individual suites. by @samsymons in #5452
- Fix a comment. by @samsymons in #5453
- Fixes a formatting bug in the iOS E2E tests by @samsymons in #5454
- [iOS/macOS][Dependencies] Downgrade Swift clocks from 1.1.0 to 1.0.6 by @alessandroboron in #5455
- [macOS][Fire Window] Add Pixel to measure fire window opened (standard and daily) by @alessandroboron in #5341
- iOS: Add Duck.ai chat-history screen pixels by @SabrinaTardio in #5425
- [iOS] Add pixels for the Duck.ai model recovery flow by @pikorddg in #5441
- Refresh Privacy Dashboard CPM state for background tabs by @muodov in #5410
- Handle focusChatInput message to focus Unified Toggle Input by @Bunn in #5451
- [macOS] Sync V2 pixels by @amddg44 in #5448
- Add web extension state monitor (macOS + iOS) by @miasma13 in #5426
- Update embedded extension to 2026.6.16 by @daxmobile in #5458
- [iOS] Maestro: temporarily disable flaky internal-mode e2e flows by @aataraxiaa in #5456
- macOS: Enforce Duck.ai attachment limits in the address-bar omnibar by @tomasstrba in #5222
- Remove "currently available on Mac & Windows" subtitle from PIR upsell row by @jozsef-vesza in #5462
- iOS: Animate search experience toggle in onboarding by @mallexxx in #5271
- Native sync for Search Assist & Hide AI Images Settings by @dus7 in #5459
- [macOS] Reduce favicon startup memory by @ayoy in #5403
- iOS: Add background to duck.ai onboarding "Try Visiting a Site" dialog by @mallexxx in #5246
- Hide Free Plan title and nav pills during duck.ai fire onboarding by @mallexxx in #5149
- [iPad] Refine tab sizing and align tabs bar buttons by @dus7 in #5428
- [macOS] Remove nextStepsListWidget feature flag and legacy Next Steps code by @rachelmcr in #5430
- iOS: Move focused-omnibar logo + fire empty-state to SwiftUI by @jaceklyp in #5465
- Add internal-only toggle to exclude CGNAT from the VPN by @diegoreymendez in #4960
- [iOS] Add vCard (.vcf) contact link support by @bkunat in #5379
- Add Strict routing VPN toggle by @diegoreymendez in #5166
- iOS Rebranding: Colour Updates by @frosty in #5415
- Add PR tasks to the Apple Team Code Reviews project by @samsymons in #5475
- Maestro reliability improvements by @samsymons in #5471
- [iOS][Tailored Onboarding] Prevent showing contextual dialogs if user does not dismiss manually final dialog by @alessandroboron in #5457
- [macOS] Update pixels to validate unclean exit detection volume by @rachelmcr in #5378
- Update iOS release notes for 7.225.0 by @miasma13 in #5478
- iOS: UTI - Single Line Entry for Toggle/Duck.ai Disabled by @aataraxiaa in #5461
- iOS: Duck.ai native chat-history sheet — design update, menu routing & glyphs by @SabrinaTardio in #5...
7.226.0-7+ios
What's Changed
- iOS: Fix navigation bar stuck hidden on error page by @dus7 in #5376
- macOS Updates: Verify we always keep 1.193.1 in appcast (last Big Sur version) by @diegoreymendez in #5398
- [macOS] Fix Next Step card UI tests by @samsymons in #5389
- Fix Duck.ai bubble tap target in search widget by @Bunn in #5391
- Fix off-main WKHTTPCookieStore access crashing AI Chat models fetch by @tomasstrba in #5396
- [macOS] Avoid using force try in the test suite by @samsymons in #5384
- iOS: Fix UTI card height expanding to fit long URL on omnibar tap by @aataraxiaa in #5373
- Fix data-export integrity bugs by @diegoreymendez in #5319
- iOS: Wire native chat-history pin into Sync by @SabrinaTardio in #5348
- Add "Delete All" to Duck.ai chat history sheet by @SabrinaTardio in #5392
- Add channel parameter to Privacy Pro toolbar popover pixel definitions by @jozsef-vesza in #5399
- [iOS] Duck.ai tab grid: text-chat rich card by @hassaanelgarem in #5383
- Update pixel definitions by @samsymons in #5417
- [CI] Fix the malware protection update workflow by @samsymons in #5380
- Update phishing protection datasets to 1742170 by @github-actions[bot] in #5197
- Update autoconsent to v14.95.0 by @daxmobile in #5394
- Bump github.com/duckduckgo/content-scope-scripts from 15.1.0 to 15.2.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5413
- Bump github.com/pointfreeco/swift-clocks from 1.0.6 to 1.1.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5339
- iOS Rebranding: Amends II by @frosty in #5324
- Only disable Duck Player for new users when rolling out ad-blocking by @miasma13 in #5406
- Fix Duck.ai native-storage error pixel validation failures by @Bunn in #5408
- Add lower text zoom levels (50%, 60%, 70%) by @edulpn in #5338
- Add support for applicationNameForUserAgent to PIR iOS by @quanganhdo in #4550
- macOS: Fix Duck.ai omnibar clicks falling through to the bookmarks bar by @jotaemepereira in #5335
- [macOS] Add missing channel param to dbp pixels by @quanganhdo in #5412
- Validate URL schemes and double extensions on file import by @pballart in #5226
- [macOS] NTP omnibar: attach open tabs and files to Duck.ai by @tomasstrba in #5175
- [macOS] Minor Sync v2 UX improvements by @amddg44 in #5424
- Add "View all Chats" entry to Duck.ai, opening native chat history by @SabrinaTardio in #5401
- [iOS] Duck.ai tab grid: image-chat rich card (feature-flagged) by @hassaanelgarem in #5422
- iOS [iPad]: model-driven omnibar suggestions popover + focus-behaviour parity by @jaceklyp in #5411
- [iOS][Dependencies] Bump SwiftSoup to 2.13.5 by @alessandroboron in #5423
- [iOS][UTI] Remove duplicate UTI URL expansion tests by @alessandroboron in #5436
- iOS: Keep model chip visible after switching models until submission by @pikorddg in #5427
- iOS: Fire a separate data-clearing pixel for single-tab burns by @hassaanelgarem in #5421
- Fix UTI bug where stale suggestions flash for new query by @hassaanelgarem in #5435
- Add aiFeaturesNativeControls feature flag (iOS + macOS) by @dus7 in #5443
- Set WireGuard persistent keepalive to 25s by @diegoreymendez in #5440
- iOS: Restore Customize Responses in UTI tools menu by @Bunn in #5375
- [macOS] Sync V2 device list support updated to include 3rd parties by @amddg44 in #5438
- [macOS] Improve the leak check tunnel interface lookup method by @samsymons in #5416
- Remove PIR token gating by @quanganhdo in #5281
- [iOS] Clean up the favicon cache more reliably by @samsymons in #5432
- Increase Maestro concurrency, and allow running individual suites. by @samsymons in #5452
- Fix a comment. by @samsymons in #5453
- Fixes a formatting bug in the iOS E2E tests by @samsymons in #5454
- [iOS/macOS][Dependencies] Downgrade Swift clocks from 1.1.0 to 1.0.6 by @alessandroboron in #5455
- [macOS][Fire Window] Add Pixel to measure fire window opened (standard and daily) by @alessandroboron in #5341
- iOS: Add Duck.ai chat-history screen pixels by @SabrinaTardio in #5425
- [iOS] Add pixels for the Duck.ai model recovery flow by @pikorddg in #5441
- Refresh Privacy Dashboard CPM state for background tabs by @muodov in #5410
- Handle focusChatInput message to focus Unified Toggle Input by @Bunn in #5451
- [macOS] Sync V2 pixels by @amddg44 in #5448
- Add web extension state monitor (macOS + iOS) by @miasma13 in #5426
- Update embedded extension to 2026.6.16 by @daxmobile in #5458
- [iOS] Maestro: temporarily disable flaky internal-mode e2e flows by @aataraxiaa in #5456
- macOS: Enforce Duck.ai attachment limits in the address-bar omnibar by @tomasstrba in #5222
- Remove "currently available on Mac & Windows" subtitle from PIR upsell row by @jozsef-vesza in #5462
- iOS: Animate search experience toggle in onboarding by @mallexxx in #5271
- Native sync for Search Assist & Hide AI Images Settings by @dus7 in #5459
- [macOS] Reduce favicon startup memory by @ayoy in #5403
- iOS: Add background to duck.ai onboarding "Try Visiting a Site" dialog by @mallexxx in #5246
- Hide Free Plan title and nav pills during duck.ai fire onboarding by @mallexxx in #5149
- [iPad] Refine tab sizing and align tabs bar buttons by @dus7 in #5428
- [macOS] Remove nextStepsListWidget feature flag and legacy Next Steps code by @rachelmcr in #5430
- iOS: Move focused-omnibar logo + fire empty-state to SwiftUI by @jaceklyp in #5465
- Add internal-only toggle to exclude CGNAT from the VPN by @diegoreymendez in #4960
- [iOS] Add vCard (.vcf) contact link support by @bkunat in #5379
- Add Strict routing VPN toggle by @diegoreymendez in #5166
- iOS Rebranding: Colour Updates by @frosty in #5415
- Add PR tasks to the Apple Team Code Reviews project by @samsymons in #5475
- Maestro reliability improvements by @samsymons in #5471
- [iOS][Tailored Onboarding] Prevent showing contextual dialogs if user does not dismiss manually final dialog by @alessandroboron in #5457
- [macOS] Update pixels to validate unclean exit detection volume by @rachelmcr in #5378
- Update iOS release notes for 7.225.0 by @miasma13 in #5478
- iOS: UTI - Single Line Entry for Toggle/Duck.ai Disabled by @aataraxiaa in #5461
- iOS: Duck.ai native chat-history sheet — design update, menu routing & glyphs by @SabrinaTardio in #5...
7.226.0-10+ios
What's Changed
- iOS: Fix navigation bar stuck hidden on error page by @dus7 in #5376
- macOS Updates: Verify we always keep 1.193.1 in appcast (last Big Sur version) by @diegoreymendez in #5398
- [macOS] Fix Next Step card UI tests by @samsymons in #5389
- Fix Duck.ai bubble tap target in search widget by @Bunn in #5391
- Fix off-main WKHTTPCookieStore access crashing AI Chat models fetch by @tomasstrba in #5396
- [macOS] Avoid using force try in the test suite by @samsymons in #5384
- iOS: Fix UTI card height expanding to fit long URL on omnibar tap by @aataraxiaa in #5373
- Fix data-export integrity bugs by @diegoreymendez in #5319
- iOS: Wire native chat-history pin into Sync by @SabrinaTardio in #5348
- Add "Delete All" to Duck.ai chat history sheet by @SabrinaTardio in #5392
- Add channel parameter to Privacy Pro toolbar popover pixel definitions by @jozsef-vesza in #5399
- [iOS] Duck.ai tab grid: text-chat rich card by @hassaanelgarem in #5383
- Update pixel definitions by @samsymons in #5417
- [CI] Fix the malware protection update workflow by @samsymons in #5380
- Update phishing protection datasets to 1742170 by @github-actions[bot] in #5197
- Update autoconsent to v14.95.0 by @daxmobile in #5394
- Bump github.com/duckduckgo/content-scope-scripts from 15.1.0 to 15.2.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5413
- Bump github.com/pointfreeco/swift-clocks from 1.0.6 to 1.1.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5339
- iOS Rebranding: Amends II by @frosty in #5324
- Only disable Duck Player for new users when rolling out ad-blocking by @miasma13 in #5406
- Fix Duck.ai native-storage error pixel validation failures by @Bunn in #5408
- Add lower text zoom levels (50%, 60%, 70%) by @edulpn in #5338
- Add support for applicationNameForUserAgent to PIR iOS by @quanganhdo in #4550
- macOS: Fix Duck.ai omnibar clicks falling through to the bookmarks bar by @jotaemepereira in #5335
- [macOS] Add missing channel param to dbp pixels by @quanganhdo in #5412
- Validate URL schemes and double extensions on file import by @pballart in #5226
- [macOS] NTP omnibar: attach open tabs and files to Duck.ai by @tomasstrba in #5175
- [macOS] Minor Sync v2 UX improvements by @amddg44 in #5424
- Add "View all Chats" entry to Duck.ai, opening native chat history by @SabrinaTardio in #5401
- [iOS] Duck.ai tab grid: image-chat rich card (feature-flagged) by @hassaanelgarem in #5422
- iOS [iPad]: model-driven omnibar suggestions popover + focus-behaviour parity by @jaceklyp in #5411
- [iOS][Dependencies] Bump SwiftSoup to 2.13.5 by @alessandroboron in #5423
- [iOS][UTI] Remove duplicate UTI URL expansion tests by @alessandroboron in #5436
- iOS: Keep model chip visible after switching models until submission by @pikorddg in #5427
- iOS: Fire a separate data-clearing pixel for single-tab burns by @hassaanelgarem in #5421
- Fix UTI bug where stale suggestions flash for new query by @hassaanelgarem in #5435
- Add aiFeaturesNativeControls feature flag (iOS + macOS) by @dus7 in #5443
- Set WireGuard persistent keepalive to 25s by @diegoreymendez in #5440
- iOS: Restore Customize Responses in UTI tools menu by @Bunn in #5375
- [macOS] Sync V2 device list support updated to include 3rd parties by @amddg44 in #5438
- [macOS] Improve the leak check tunnel interface lookup method by @samsymons in #5416
- Remove PIR token gating by @quanganhdo in #5281
- [iOS] Clean up the favicon cache more reliably by @samsymons in #5432
- Increase Maestro concurrency, and allow running individual suites. by @samsymons in #5452
- Fix a comment. by @samsymons in #5453
- Fixes a formatting bug in the iOS E2E tests by @samsymons in #5454
- [iOS/macOS][Dependencies] Downgrade Swift clocks from 1.1.0 to 1.0.6 by @alessandroboron in #5455
- [macOS][Fire Window] Add Pixel to measure fire window opened (standard and daily) by @alessandroboron in #5341
- iOS: Add Duck.ai chat-history screen pixels by @SabrinaTardio in #5425
- [iOS] Add pixels for the Duck.ai model recovery flow by @pikorddg in #5441
- Refresh Privacy Dashboard CPM state for background tabs by @muodov in #5410
- Handle focusChatInput message to focus Unified Toggle Input by @Bunn in #5451
- [macOS] Sync V2 pixels by @amddg44 in #5448
- Add web extension state monitor (macOS + iOS) by @miasma13 in #5426
- Update embedded extension to 2026.6.16 by @daxmobile in #5458
- [iOS] Maestro: temporarily disable flaky internal-mode e2e flows by @aataraxiaa in #5456
- macOS: Enforce Duck.ai attachment limits in the address-bar omnibar by @tomasstrba in #5222
- Remove "currently available on Mac & Windows" subtitle from PIR upsell row by @jozsef-vesza in #5462
- iOS: Animate search experience toggle in onboarding by @mallexxx in #5271
- Native sync for Search Assist & Hide AI Images Settings by @dus7 in #5459
- [macOS] Reduce favicon startup memory by @ayoy in #5403
- iOS: Add background to duck.ai onboarding "Try Visiting a Site" dialog by @mallexxx in #5246
- Hide Free Plan title and nav pills during duck.ai fire onboarding by @mallexxx in #5149
- [iPad] Refine tab sizing and align tabs bar buttons by @dus7 in #5428
- [macOS] Remove nextStepsListWidget feature flag and legacy Next Steps code by @rachelmcr in #5430
- iOS: Move focused-omnibar logo + fire empty-state to SwiftUI by @jaceklyp in #5465
- Add internal-only toggle to exclude CGNAT from the VPN by @diegoreymendez in #4960
- [iOS] Add vCard (.vcf) contact link support by @bkunat in #5379
- Add Strict routing VPN toggle by @diegoreymendez in #5166
- iOS Rebranding: Colour Updates by @frosty in #5415
- Add PR tasks to the Apple Team Code Reviews project by @samsymons in #5475
- Maestro reliability improvements by @samsymons in #5471
- [iOS][Tailored Onboarding] Prevent showing contextual dialogs if user does not dismiss manually final dialog by @alessandroboron in #5457
- [macOS] Update pixels to validate unclean exit detection volume by @rachelmcr in #5378
- Update iOS release notes for 7.225.0 by @miasma13 in #5478
- iOS: UTI - Single Line Entry for Toggle/Duck.ai Disabled by @aataraxiaa in #5461
- iOS: Duck.ai native chat-history sheet — design update, menu routing & glyphs by @SabrinaTardio in #5...
1.196.0-749+macos
What's Changed
- iOS: Fix navigation bar stuck hidden on error page by @dus7 in #5376
- macOS Updates: Verify we always keep 1.193.1 in appcast (last Big Sur version) by @diegoreymendez in #5398
- [macOS] Fix Next Step card UI tests by @samsymons in #5389
- Fix Duck.ai bubble tap target in search widget by @Bunn in #5391
- [macOS] Avoid using force try in the test suite by @samsymons in #5384
- iOS: Fix UTI card height expanding to fit long URL on omnibar tap by @aataraxiaa in #5373
- Fix data-export integrity bugs by @diegoreymendez in #5319
- iOS: Wire native chat-history pin into Sync by @SabrinaTardio in #5348
- Add "Delete All" to Duck.ai chat history sheet by @SabrinaTardio in #5392
- Add channel parameter to Privacy Pro toolbar popover pixel definitions by @jozsef-vesza in #5399
- [iOS] Sync v2 UX improvements by @amddg44 in #5395
- [iOS] Duck.ai tab grid: text-chat rich card by @hassaanelgarem in #5383
- Update pixel definitions by @samsymons in #5417
- [CI] Fix the malware protection update workflow by @samsymons in #5380
- Update phishing protection datasets to 1742170 by @github-actions[bot] in #5197
- Update autoconsent to v14.95.0 by @daxmobile in #5394
- Bump github.com/duckduckgo/content-scope-scripts from 15.1.0 to 15.2.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5413
- Bump github.com/pointfreeco/swift-clocks from 1.0.6 to 1.1.0 in /SharedPackages/BrowserServicesKit by @dependabot[bot] in #5339
- iOS Rebranding: Amends II by @frosty in #5324
- Only disable Duck Player for new users when rolling out ad-blocking by @miasma13 in #5405
- Fix Duck.ai native-storage error pixel validation failures by @Bunn in #5408
- Add lower text zoom levels (50%, 60%, 70%) by @edulpn in #5338
- Add support for applicationNameForUserAgent to PIR iOS by @quanganhdo in #4550
- macOS: Fix Duck.ai omnibar clicks falling through to the bookmarks bar by @jotaemepereira in #5335
- [macOS] Add missing channel param to dbp pixels by @quanganhdo in #5412
- Validate URL schemes and double extensions on file import by @pballart in #5226
- [iOS] UTI: favorites on a pre-filled URL, no dismiss flash, long URL single-line by @aataraxiaa in #5429
- [macOS] NTP omnibar: attach open tabs and files to Duck.ai by @tomasstrba in #5175
- Add "View all Chats" entry to Duck.ai, opening native chat history by @SabrinaTardio in #5401
- [iOS] Duck.ai tab grid: image-chat rich card (feature-flagged) by @hassaanelgarem in #5422
- iOS [iPad]: model-driven omnibar suggestions popover + focus-behaviour parity by @jaceklyp in #5411
- [iOS][Dependencies] Bump SwiftSoup to 2.13.5 by @alessandroboron in #5423
- [iOS][UTI] Remove duplicate UTI URL expansion tests by @alessandroboron in #5436
- iOS: Keep model chip visible after switching models until submission by @pikorddg in #5427
- iOS: Fire a separate data-clearing pixel for single-tab burns by @hassaanelgarem in #5421
- Fix UTI bug where stale suggestions flash for new query by @hassaanelgarem in #5435
- [iOS][UTI] Restore multi-line expansion for long URLs so the end is editable by @aataraxiaa in #5444
- Add aiFeaturesNativeControls feature flag (iOS + macOS) by @dus7 in #5443
- Set WireGuard persistent keepalive to 25s by @diegoreymendez in #5440
- iOS: Restore Customize Responses in UTI tools menu by @Bunn in #5375
- [iOS] Sync V2 device list support updated to include 3rd parties by @amddg44 in #5439
- [macOS] Improve the leak check tunnel interface lookup method by @samsymons in #5416
- Remove PIR token gating by @quanganhdo in #5281
- [iOS] Clean up the favicon cache more reliably by @samsymons in #5432
- Increase Maestro concurrency, and allow running individual suites. by @samsymons in #5452
- Fix a comment. by @samsymons in #5453
- Fixes a formatting bug in the iOS E2E tests by @samsymons in #5454
- [iOS/macOS][Dependencies] Downgrade Swift clocks from 1.1.0 to 1.0.6 by @alessandroboron in #5455
- [macOS][Fire Window] Add Pixel to measure fire window opened (standard and daily) by @alessandroboron in #5341
- iOS: Add Duck.ai chat-history screen pixels by @SabrinaTardio in #5425
- [iOS] Add pixels for the Duck.ai model recovery flow by @pikorddg in #5441
- Refresh Privacy Dashboard CPM state for background tabs by @muodov in #5410
- Handle focusChatInput message to focus Unified Toggle Input by @Bunn in #5451
- Add web extension state monitor (macOS + iOS) by @miasma13 in #5426
- Update embedded extension to 2026.6.16 by @daxmobile in #5458
- [iOS] Maestro: temporarily disable flaky internal-mode e2e flows by @aataraxiaa in #5456
- [iOS] Sync V2 pixels by @amddg44 in #5449
- [iOS] Sync V2 translations by @amddg44 in #5460
- macOS: Enforce Duck.ai attachment limits in the address-bar omnibar by @tomasstrba in #5222
- Remove "currently available on Mac & Windows" subtitle from PIR upsell row by @jozsef-vesza in #5462
- iOS: Animate search experience toggle in onboarding by @mallexxx in #5271
- Native sync for Search Assist & Hide AI Images Settings by @dus7 in #5459
- [macOS] Reduce favicon startup memory by @ayoy in #5403
- iOS: Add background to duck.ai onboarding "Try Visiting a Site" dialog by @mallexxx in #5246
- Hide Free Plan title and nav pills during duck.ai fire onboarding by @mallexxx in #5149
- [iPad] Refine tab sizing and align tabs bar buttons by @dus7 in #5428
- [macOS] Remove nextStepsListWidget feature flag and legacy Next Steps code by @rachelmcr in #5430
- iOS: Move focused-omnibar logo + fire empty-state to SwiftUI by @jaceklyp in #5465
- Add internal-only toggle to exclude CGNAT from the VPN by @diegoreymendez in #4960
- [iOS] Add vCard (.vcf) contact link support by @bkunat in #5379
- Add Strict routing VPN toggle by @diegoreymendez in #5166
- [iOS] Revert VPN metrics measurement change by @samsymons in #5447
- iOS Rebranding: Colour Updates by @frosty in #5415
- Add PR tasks to the Apple Team Code Reviews project by @samsymons in #5475
- Maestro reliability improvements by @samsymons in #5471
- [iOS][Tailored Onboarding] Prevent showing contextual dialogs if user does not dismiss manually final dialog by @alessandroboron in #5457
- [macOS] Update pixels to validate unclean exit detection volume by @rachelmcr in #5378
- Update iOS release not...