Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
4874 commits
Select commit Hold shift + click to select a range
2534557
Update content scope scripts to version 11.27.0 (#6822)
daxmobile Sep 20, 2025
62f2c45
Update content scope scripts to version 11.28.0 (#6824)
daxmobile Sep 22, 2025
d36d81a
ADS: Re-enable ADS Preview (#6819)
malmstein Sep 22, 2025
c17b34e
Further simplify video matching on YouTube (#6825)
CrisBarreiro Sep 22, 2025
19ff2d3
Logo animation on Input Screen (#6821)
joshliebe Sep 23, 2025
59a1417
Add feature flag for importing bookmarks using Google Takeout (#6706)
CDRussell Sep 23, 2025
7adfe77
try-catch startForeground inside notifyVpnStart (#6833)
aitorvs Sep 23, 2025
91899c6
VPN menu item in New Tab Page (#6832)
nalcalag Sep 23, 2025
f3d2f9c
fixes an issue where Dax icon wasn't in sync when transitioning from …
LukasPaczos Sep 23, 2025
c3b2c4a
Add ability to parse a Takeout zip file and extract+import bookmarks …
CDRussell Sep 23, 2025
8a26253
Remove dead code related to old omnibar (#6818)
aitorvs Sep 23, 2025
fba2cda
Add New Address Bar Option cancelled pixel (#6831)
joshliebe Sep 24, 2025
8bb12d0
Remove onboarding design experiment in local privacy configuration (#…
mikescamell Sep 24, 2025
cad4ca9
Improve some Polish translations (#6585)
nalcalag Sep 24, 2025
2c8ca23
Updated version number for new release - 5.250.0
github-actions[bot] Sep 24, 2025
5c9123b
Merge branch 'release/5.250.0'
github-actions[bot] Sep 24, 2025
7110b28
Merge branch 'release/5.250.0' into develop
github-actions[bot] Sep 24, 2025
ec6e5e5
Fix IllegalStateException when closing Duck.ai (#6839)
joshliebe Sep 24, 2025
0d8fc73
Remove dead code from the ReactivateUsersExperiment (#6817)
anikiki Sep 24, 2025
1893993
Add feature toggle for address bar trackers animation (#6842)
mikescamell Sep 24, 2025
bbb32ba
Jetpack Compose - Add stock dependencies (#6694)
mikescamell Sep 25, 2025
cb2e819
[Android] The latest Android 16 update broke the update for the Searc…
anikiki Sep 25, 2025
c3714d0
Cleanup: Highlights Onboarding Strings (#6840)
nalcalag Sep 25, 2025
d5093c9
Use Spotless for Kotlin formatting (#6420)
mikescamell Sep 25, 2025
4ae34fa
Quick Win: Android: Sharing from Google Discover Feed to DDG Browser …
anikiki Sep 25, 2025
ddb18f9
Fix an issue with inaccessible Duck.ai fragment (#6850)
LukasPaczos Sep 26, 2025
3aecb8f
Updated release notes and version number for new release - 5.250.1
karlenDimla Sep 26, 2025
ca6c461
Fix IllegalStateException when closing Duck.ai (#6839)
joshliebe Sep 24, 2025
28a629a
Fix an issue with inaccessible Duck.ai fragment (#6850)
LukasPaczos Sep 26, 2025
6166001
Merge branch 'hotfix/5.250.1'
karlenDimla Sep 26, 2025
465359c
Merge branch 'hotfix/5.250.1' into develop
karlenDimla Sep 26, 2025
f8afe22
Add new onboarding design experiment for Oct25 (#6851)
mikescamell Sep 26, 2025
171070e
RMF: Translation Fallback (#6779)
nalcalag Sep 26, 2025
110512a
Create Browser-UI module, move Autocomplete (#6844)
malmstein Sep 26, 2025
159a8aa
Update content scope scripts to version 11.29.0 (#6856)
daxmobile Sep 27, 2025
e65e1d1
Update content scope scripts to version 11.30.0 (#6857)
daxmobile Sep 29, 2025
6eb06df
Update content scope scripts to version 11.31.0 (#6858)
daxmobile Sep 29, 2025
e246a67
Add WideEventClient implementation (#6838)
lmac012 Sep 30, 2025
f20b17e
Hide Return floating button in Duck.ai when input is empty (#6860)
joshliebe Sep 30, 2025
6e7a874
Address UI feedback for the Dax Prompt. (#6861)
anikiki Sep 30, 2025
4e50395
Hide keyboard in unfocussed state when Input Screen enabled (#6862)
joshliebe Sep 30, 2025
d6fd524
Support Bottom Address Bar in the Input Screen (#6849)
LukasPaczos Oct 1, 2025
48b6103
Apply lifecycle checks and fixes to addDocumentStartJavaScript (#6863)
CrisBarreiro Oct 1, 2025
54ba711
Implement custom tab handling for app links in BrowserTabViewModel. (…
anikiki Oct 1, 2025
21107e0
add bottom conf. Input Screen tests and move to release tests (#6869)
LukasPaczos Oct 1, 2025
14be2ac
Add webflow for importing bookmarks from Google (#6707)
CDRussell Oct 1, 2025
9a6b40b
Rollback Ktlint update (#6865)
mikescamell Oct 1, 2025
384e6a2
Adjust VPN menu item dismiss behavior (#6854)
nalcalag Oct 2, 2025
c1444fa
FF not removing/adding script on page finished, only protection statu…
CrisBarreiro Oct 2, 2025
e6ff7bd
Add subscription purchase wide event (#6859)
lmac012 Oct 2, 2025
1b65037
update return icon (#6874)
LukasPaczos Oct 2, 2025
cd3cda2
Updated version number for new release - 5.251.0
github-actions[bot] Oct 2, 2025
21b93a8
Merge branch 'release/5.251.0'
github-actions[bot] Oct 2, 2025
b66f27c
Merge branch 'release/5.251.0' into develop
github-actions[bot] Oct 2, 2025
64ecddb
PR: Support decoupled email confirmation part 1 (#6835)
karlenDimla Oct 2, 2025
e7be3ff
Ensure evaluated JSON doesn't cause a parsing error in GHA release te…
CDRussell Oct 2, 2025
686949c
Fix unit tests with subscriptions staging patch (#6868)
lmac012 Oct 2, 2025
957d8a1
Add .vscode folder to .gitignore (#6880)
lmac012 Oct 3, 2025
7732532
Fix: ANR in the Tab switcher (#6872)
0nko Oct 3, 2025
1ed8896
Revert "[Android] The latest Android 16 update broke the update for t…
CDRussell Oct 3, 2025
a45ebc9
Updated release notes and version number for new release - 5.251.1
CDRussell Oct 3, 2025
21b4361
Revert "[Android] The latest Android 16 update broke the update for t…
CDRussell Oct 3, 2025
89ba56e
Merge branch 'hotfix/5.251.1' into develop
CDRussell Oct 3, 2025
4d4ed8d
Merge branch 'hotfix/5.251.1'
CDRussell Oct 3, 2025
3136daf
Duck.ai: Open keyboard (#6855)
malmstein Oct 3, 2025
ae5fa3f
Run problematic Duck Player tests with androidViewHierarchy: devtools…
CrisBarreiro Oct 3, 2025
663849c
Subscriptions dev setting: Switch plan (#6877)
nalcalag Oct 3, 2025
3424f58
Update content scope scripts to version 11.32.0 (#6889)
daxmobile Oct 6, 2025
9a30390
PIR: Add support for storing edited profiles (#6879)
landomen Oct 6, 2025
7ab8105
Update autofill to 18.4.0 (#6884)
daxmobile Oct 6, 2025
043fa13
Add new label to AI Features / Search & Duck.ai (#6881)
joshliebe Oct 6, 2025
945d206
Add single line item with new pill to ADS preview (#6894)
joshliebe Oct 6, 2025
3061070
Make auth v2 feature flags enabled by default (#6896)
lmac012 Oct 6, 2025
7b058c0
Fix BadTokenException when showing NewAddressBarOptionBottomSheetDial…
joshliebe Oct 6, 2025
3a91465
PIR: Implement resume emailConfirmation (#6895)
karlenDimla Oct 7, 2025
0196052
Updated version number for new release - 5.252.0
github-actions[bot] Oct 7, 2025
a3dabd2
Merge branch 'release/5.252.0'
github-actions[bot] Oct 7, 2025
91ebda1
Merge branch 'release/5.252.0' into develop
github-actions[bot] Oct 7, 2025
dfb371d
Update Search & Duck.ai description (#6888)
joshliebe Oct 7, 2025
9bbcfa6
Update Input Screen landscape behavior (#6898)
joshliebe Oct 7, 2025
2a859bd
Update content scope scripts to version 11.33.0 (#6903)
daxmobile Oct 8, 2025
39eb56d
Save and Exit: Add FF and update links (#6852)
0nko Oct 8, 2025
98cd8ea
Save and Exit: Add CSS handler (#6853)
0nko Oct 8, 2025
b90aca4
Save and Exit: Unit tests (#6871)
0nko Oct 8, 2025
010155a
Save and Exit: Query params (#6891)
0nko Oct 8, 2025
b853bf6
Switch plan: Migrate purchaseHistory to queryPurchasesAsync() (#6900)
nalcalag Oct 8, 2025
1ff382e
FF updating script on protections changed (#6906)
CrisBarreiro Oct 9, 2025
aa5392d
Add pixel for VPN menu item (#6908)
nalcalag Oct 9, 2025
3649b32
Update AndroidX Compose BOM version to 2025.10.00 (#6915)
mikescamell Oct 9, 2025
8893be2
Move local storage cleanup off the main thread (#6905)
malmstein Oct 9, 2025
86b1504
Add address bar trackers animation (#6904)
mikescamell Oct 10, 2025
fe66b85
Duck.ai: Fire Button chat message copy translations (#6902)
malmstein Oct 10, 2025
56abb59
Cache autoconsent settings in singleton (#6910)
sammacbeth Oct 10, 2025
b3f2b3a
Remove fireproofedWebLocalStorage subfeature (#6919)
joshliebe Oct 10, 2025
c265978
PIR: Add pixels for decouple email flow (#6911)
karlenDimla Oct 10, 2025
eb4070a
Update content scope scripts to version 11.34.0 (#6918)
daxmobile Oct 10, 2025
e39b690
Handle onRenderProcessGone events in the password import flow (#6917)
CDRussell Oct 10, 2025
98e3b0c
Final switch integration after BE check (#6913)
nalcalag Oct 12, 2025
403a1c2
Update content scope scripts to version 11.35.0 (#6924)
daxmobile Oct 13, 2025
1c6d3eb
Rebranding: Remove AI Features FF and old copy (#6923)
nalcalag Oct 13, 2025
eb94077
Filter CPM rules in native before sending to JS (#6922)
sammacbeth Oct 13, 2025
d34d121
enable Anvil's "trackSourceFiles" param (#6928)
LukasPaczos Oct 13, 2025
62d3918
Update autoconsent to v14.30.0 (#6929)
daxmobile Oct 13, 2025
fa4247b
PIR: Add android pixels and event logs for decoupled email (#6926)
karlenDimla Oct 14, 2025
c70679e
Add a DuckDuckGo Compose Theme (#6753)
mikescamell Oct 14, 2025
d04b8c7
PIR: Handle jobs after profile edit (#6914)
landomen Oct 14, 2025
4012f49
PIR: Add and update tests for profile edit (#6925)
landomen Oct 14, 2025
97adca2
Duck.ai: 3 buttons hp (#6912)
malmstein Oct 14, 2025
316d2db
Update content scope scripts to version 11.36.0 (#6934)
daxmobile Oct 15, 2025
a98a617
Fix: Hint ANR (#6936)
0nko Oct 15, 2025
331ef11
Add AppInstall interface to expose installationTimestamp (#6937)
cmonfortep Oct 15, 2025
9055392
Call stop loading before start/remove on protections changed (#6932)
CrisBarreiro Oct 15, 2025
5a927ca
FF flag adding bundle with adsjs but no WebMessageListener (#6920)
CrisBarreiro Oct 15, 2025
cd84f7b
Initial support for pixel registry (#6878)
ladamski Oct 15, 2025
98505e3
Instrument auth v2 token refresh with wide event (#6927)
lmac012 Oct 16, 2025
b7e02c8
Fix: Uninitialized omnibar error (#6941)
0nko Oct 16, 2025
e54ed46
Remove formatKotlin from pre-commit hoook (#6944)
marcosholgado Oct 16, 2025
f3a8a44
Use correct separators in wide event pixel names (#6938)
lmac012 Oct 16, 2025
08658f1
Add prefix to custom wide event parameters when sending them via pixe…
lmac012 Oct 16, 2025
115ce5c
Send wide event steps as metadata (#6947)
lmac012 Oct 16, 2025
86bfd0d
Fix api manipulation config ANR by prefetching it (#6945)
CrisBarreiro Oct 16, 2025
7a53aab
Add WebView specs to native crash pixel (#6935)
CrisBarreiro Oct 16, 2025
8f5a986
Updated version number for new release - 5.253.0
github-actions[bot] Oct 16, 2025
519a13f
Merge branch 'release/5.253.0'
github-actions[bot] Oct 16, 2025
9bd3cf2
Merge branch 'release/5.253.0' into develop
github-actions[bot] Oct 16, 2025
f8dfd8b
Create DaxText Composable (#6943)
mikescamell Oct 16, 2025
001199d
open Input Screen from widgets, when enabled (#6931)
LukasPaczos Oct 16, 2025
08cc6ab
PIR: Update UserAgent for the PIR Web UI (#6953)
landomen Oct 17, 2025
372aadc
Rebranding: Remove Privacy Pro old copy (#6930)
nalcalag Oct 17, 2025
63209e7
Update content scope scripts to version 11.37.0 (#6951)
daxmobile Oct 17, 2025
7dc3264
Update reference tests to version 1760787856 (#6959)
daxmobile Oct 20, 2025
46f3973
Update content scope scripts to version 11.38.0 (#6957)
daxmobile Oct 20, 2025
cfa8487
Fix ADS Maestro test (#6952)
mikescamell Oct 20, 2025
adc5544
Remove DaxExpandableMenu (#6954)
mikescamell Oct 20, 2025
e33382b
Increase timeouts for ADS maestro tests (#6961)
mikescamell Oct 20, 2025
655aa1a
Disable onboarding design experiment Oct25 (#6966)
mikescamell Oct 21, 2025
840464e
Android: Implement subscription Feedback Field Change (#6967)
karlenDimla Oct 21, 2025
53444b3
Fix: Dialog buttons overflow (#6939)
0nko Oct 21, 2025
29e289a
Measure concurrent load requests (#6190)
0nko Oct 21, 2025
108f9f2
Fix: Make omnibar position dialog cancelable (#6942)
0nko Oct 21, 2025
fdc8642
Fix ADS tests after removing DaxExpandableMenu component (#6972)
lmac012 Oct 22, 2025
45d1d2e
Switch plan: Added Feature Flag check (#6969)
nalcalag Oct 22, 2025
e6660a6
disable browser buttons when Input Screen opened from widgets (#6949)
LukasPaczos Oct 22, 2025
d7252ad
add device apps search to autocomplete suggestions and enable when la…
LukasPaczos Oct 22, 2025
e355592
ADS: Add Theme Preview as internal (#6974)
malmstein Oct 22, 2025
3f10fb2
launch and submit voice search automatically from widgets (#6933)
LukasPaczos Oct 22, 2025
a04ecd5
Updated release notes and version number for new release - 5.253.1
CrisBarreiro Oct 22, 2025
3fc6b39
ADS: Add Theme Preview as internal (#6974)
malmstein Oct 22, 2025
93d2707
Merge branch 'hotfix/5.253.1' into develop
CrisBarreiro Oct 22, 2025
d737dd0
Merge branch 'hotfix/5.253.1'
CrisBarreiro Oct 22, 2025
90e4872
do not show search/Duck.ai toggle when launched from search-only widg…
LukasPaczos Oct 22, 2025
e246673
do not show Duck.ai button in the address bar when launched from sear…
LukasPaczos Oct 22, 2025
2638b2b
Fix for fire button highlight (#6977)
nalcalag Oct 22, 2025
48ee5ed
Implement CPM performance pixels (#6948)
joshliebe Oct 22, 2025
6919190
UI for bookmarks import flow (#6836)
CDRussell Oct 22, 2025
64855ae
Add web message listener for js call from bookmark import (#6837)
CDRussell Oct 22, 2025
3f0f14f
Wire bookmarks import dialog / flow into BookmarksActivity (#6909)
CDRussell Oct 22, 2025
cdc7cb1
RMF: Add daysSinceDuckAIUsed matching attribute (#6965)
nalcalag Oct 23, 2025
72ee7b2
Update content scope scripts to version 11.41.0 (#6986)
daxmobile Oct 23, 2025
1183b6b
Update autoconsent to v14.33.0 (#6987)
daxmobile Oct 23, 2025
5378c6b
Remove experiment cohorts in feedback form code (#6989)
mikescamell Oct 23, 2025
d2d4182
send a pixel when installed app suggestion clicked (#6980)
LukasPaczos Oct 23, 2025
66b6ac5
update SystemSearchActivity to reuse installed apps suggestions (#6968)
LukasPaczos Oct 23, 2025
5ad5811
enabled Search/Duck.ai toggle in widgets (#6981)
LukasPaczos Oct 23, 2025
4fdeb94
add `search_suggestion_index` pixel param to search suggestion click …
LukasPaczos Oct 23, 2025
42e9ab4
Fix JS selector (#6992)
malmstein Oct 23, 2025
3a45dda
Tweak icon size of the import bookmark result screen (#6994)
CDRussell Oct 23, 2025
886783d
Reduce frequency of file download progress updates (#6984)
lmac012 Oct 23, 2025
ce43905
Updated version number for new release - 5.254.0
github-actions[bot] Oct 23, 2025
44b4566
Merge branch 'release/5.254.0'
github-actions[bot] Oct 23, 2025
1fdb8a2
Merge branch 'release/5.254.0' into develop
github-actions[bot] Oct 23, 2025
45c4a17
Add workflow for privacy review trigger (#6985)
nshuba Oct 23, 2025
4a3ba92
Fix CSS API manipulation config cache (#6976)
lmac012 Oct 24, 2025
5bcf025
Add settings option to hide AI-generated images in search results (#6…
mikescamell Oct 24, 2025
f84b053
Move DataClearerForegroundAppRestartPixel.firePendingPixels to corout…
joshliebe Oct 24, 2025
a0b84ff
Update content scope scripts to version 11.44.0 (#7000)
daxmobile Oct 24, 2025
d6c8847
Updated release notes and version number for new release - 5.254.1
0nko Oct 24, 2025
df70269
Fix CSS API manipulation config cache (#6976)
lmac012 Oct 24, 2025
d63ed19
Merge branch 'hotfix/5.254.1'
0nko Oct 24, 2025
1330512
Merge tag '5.254.1' into develop
0nko Oct 24, 2025
438dc7e
Fix ANR when checking if vpnItem isEnabled (#7001)
cmonfortep Oct 24, 2025
0b72ff2
Add feature flag for SERP settings synchronization (#6990)
mikescamell Oct 27, 2025
0f6b724
Add Notification Prompt Experiment Manager and integrate with onboard…
anikiki Oct 27, 2025
38e84b4
Internal Tooling: Fix ModuleCreator to be compatible with configurati…
landomen Oct 27, 2025
7decc9c
Enable autoconsent heuristic detection (#7005)
joshliebe Oct 27, 2025
6834083
Translate contact support string (#6973)
karlenDimla Oct 27, 2025
e5364a3
Enable contact support via link by default (#7006)
karlenDimla Oct 27, 2025
e5c47d9
Update Search & AI choice screen (#6970)
joshliebe Oct 27, 2025
d15b95b
Fix: Toolbar navigation button not centered (#7008)
0nko Oct 28, 2025
0941155
Split Omnibar: Omnibar layout refactoring (#6983)
0nko Oct 28, 2025
eab5c06
Update autoconsent to v14.34.0 (#7015)
daxmobile Oct 28, 2025
8e18447
resolve stack overflow when showing/hiding omnibar (#7023)
LukasPaczos Oct 29, 2025
d31091d
SERP Settings Sync: Remove KBG flag if feature enabled (#7014)
mikescamell Oct 29, 2025
c88fe3c
Handle null widget manager that can crash (#7022)
cmonfortep Oct 29, 2025
8579787
Update content scope scripts to version 11.45.0 (#7021)
daxmobile Oct 29, 2025
ba87b34
Update content scope scripts to version 11.46.0 (#7033)
daxmobile Oct 30, 2025
f9de3fb
SERP Settings Sync: Add initial js message handlers (#7013)
mikescamell Oct 30, 2025
a8d8e67
SERP Settings Sync: Update hide ai generated icon (#7027)
mikescamell Oct 30, 2025
398ea2d
Update autoconsent to v14.34.1 (#7035)
daxmobile Oct 30, 2025
121cb77
Prevent initial SpeechRecognizer timeout (#7020)
joshliebe Oct 30, 2025
abe79c5
Bookmark import flow observability (#7007)
CDRussell Oct 30, 2025
f8a8c1b
Check WebView capabilities when determining if bookmark import possib…
CDRussell Oct 30, 2025
436abfe
Remove calls to adsjs for C-S-S (#7017)
CrisBarreiro Oct 31, 2025
8ce9307
Split Omnibar: Data type & storage update (#6991)
0nko Oct 31, 2025
205204e
Translations for importing bookmarks from Google (#7016)
CDRussell Oct 31, 2025
fec516c
Implement pm.safeGetInstalledApplications to avoid binder crash when …
aitorvs Oct 31, 2025
25f843a
Updated version number for new release - 5.255.0
github-actions[bot] Oct 31, 2025
522c71b
Merge branch 'release/5.255.0' into develop
github-actions[bot] Oct 31, 2025
9617eca
Remove old screen title for unsupported Email Protection screen (#7039)
CDRussell Oct 31, 2025
e6c1300
PIR: Add support for Condition css action (#6993)
karlenDimla Nov 3, 2025
d33b17c
Android/PIR: Add missing captchaType in GetCaptchaInfo and SolveCaptc…
karlenDimla Nov 3, 2025
d962ad3
PIR: Add database encryption (#7010)
landomen Nov 3, 2025
53709fc
PIR: Add dev setting to export db (#7011)
landomen Nov 3, 2025
d985d52
Split Omnibar: Settings screen (#7002)
0nko Nov 3, 2025
2a633d3
SERP Settings Sync: Add DataStore implementation (#7038)
mikescamell Nov 3, 2025
f33abf2
Split Omnibar: Bottom navigation (#7032)
0nko Nov 3, 2025
c1d9f57
Onboarding: Update site suggestion for UK and Ireland (#7031)
nalcalag Nov 4, 2025
c06a4fc
Add base script for de-risking new WebViewCompat APIs (#7034)
CrisBarreiro Nov 4, 2025
1566341
Configure script based on remote config (#7036)
CrisBarreiro Nov 4, 2025
78bcac7
Intercept duck.ai domain before redirect (#7048)
joshliebe Nov 4, 2025
0bf5603
SERP Settings Sync: Hide search section in AI Features (#7041)
mikescamell Nov 4, 2025
44cec09
Split Omnibar: Translations (#7018)
0nko Nov 4, 2025
8c1554b
Switch plan feature for users (#7040)
nalcalag Nov 4, 2025
74ddd12
Remove JobInfoSchedulerService from manifest (#7050)
joshliebe Nov 4, 2025
0973926
Split Omnibar: Address bar integration (#7042)
0nko Nov 5, 2025
5a5234f
Split Omnibar: Remove old feature flag (#7045)
0nko Nov 5, 2025
7efc550
ADS: Move all ADS modules under the same folder (#6975)
malmstein Nov 5, 2025
0770edf
[PIR] Handle DB encryption related errors (#7054)
landomen Nov 5, 2025
52448d0
Add native flags (#7047)
CrisBarreiro Nov 5, 2025
09d88a4
report WebView support for `MULTI_PROFILE` and `DELETE_BROWSING_DATA`…
LukasPaczos Nov 5, 2025
90de230
Set a fixed locale in RealSubscriptionsManagerTest (#7064)
lmac012 Nov 5, 2025
9d09622
Duck.ai: Fullscreen mode FF (#7055)
malmstein Nov 6, 2025
da235e2
SERP Settings Sync: Add event when Duck Ai setting changed (#7052)
mikescamell Nov 6, 2025
fa62d9b
Updated version number for new release - 5.256.0
github-actions[bot] Nov 6, 2025
0970c87
Merge branch 'release/5.256.0' into develop
github-actions[bot] Nov 6, 2025
23b42d0
Remove web tracking protections grid feature flag (#7068)
landomen Nov 7, 2025
90f0386
Move InputModeTabLayout to browser-ui (#7057)
joshliebe Nov 7, 2025
8ec3dcc
Add Input Mode toggle to voice search (#7059)
joshliebe Nov 7, 2025
9f2a792
Add voice search toggle pixels (#7075)
joshliebe Nov 7, 2025
3698fdb
Keyboard display behavior change on NTP (#7078)
0nko Nov 7, 2025
21894a2
Update content scope scripts to version 12.0.0 (#7058)
daxmobile Nov 7, 2025
ec07123
Attributed metrics module and skeleton (#6887)
cmonfortep Nov 7, 2025
acfee4c
Ensure FF check happens on io for 1st party cookie expiry work schedu…
CDRussell Nov 7, 2025
8fcba4f
Remove rebranding banner and FF (#7069)
nalcalag Nov 7, 2025
9773e3c
Dynamic yearly savings % translations (#7086)
nalcalag Nov 7, 2025
e7c6d56
Switch option: calculate yearly savings dynamically (#7060)
nalcalag Nov 7, 2025
4fbeb8f
Add pictogram ripple effect to AI settings (#7077)
0nko Nov 7, 2025
b47b6c3
Duck.ai: Omnibar (#7065)
malmstein Nov 7, 2025
f4a73c4
Move FF checks to io for checking if to wait for privacy config (#7080)
CDRussell Nov 8, 2025
d91ffc3
Delete unnecessary SafeWebViewFeature (#7091)
CrisBarreiro Nov 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
8 changes: 8 additions & 0 deletions .cursor/mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"doc-bot": {
"command": "npx",
"args": ["@afterxleep/doc-bot@latest", "--docs", "./.rules", "--watch"]
}
}
}
131 changes: 131 additions & 0 deletions .cursor/rules/doc-bot.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
---
alwaysApply: true
---
## PHASE 1: ENVIRONMENT DETECTION

```
IF (
(filesystem_contains("doc-bot/") AND
(mcp_server_available("doc-bot") OR mcp_server_available("@afterxleep/doc-bot"))
) THEN {
ACTIVATE: doc_bot_enforcement_protocol()
SET: project_documentation_authority = TRUE
SET: general_knowledge_override = DISABLED
}
```

## PHASE 2: REQUEST CLASSIFICATION ENGINE

### CLASSIFICATION MATRIX:

**CLASS A: CODE_GENERATION**
```
Trigger Pattern: /\b(write|create|implement|build|add|code|function|class|component|method|develop|generate|make|refactor|modify|update|fix|debug)\b/i
Required Action: MANDATORY_CALL(check_project_rules, extract_task_description())
Blocking: TRUE (cannot proceed without tool response)
Timeout: 30s
```

**CLASS B: PROJECT_INQUIRY**
```
Trigger Pattern: /\b(how|what|why|architecture|approach|pattern|feature|authentication|database|api|testing)\b/i
Context Pattern: /\b(this project|this codebase|here|our|current project)\b/i
Required Action: MANDATORY_CALL(search_documentation, extract_keywords())
Blocking: TRUE
Timeout: 30s
```

**CLASS C: DOCUMENTATION_DISCOVERY**
```
Trigger Pattern: /\b(documentation|available|capabilities|help|rules|standards|what exists|docs|guide)\b/i
Required Action: MANDATORY_CALL(get_global_rules)
Blocking: TRUE
Timeout: 30s
```

**CLASS D: DOCUMENT_ACCESS**
```
Trigger Pattern: /\b(read|show|get content|full document|complete|entire)\b/i
Previous Context: search_results_present()
Required Action: MANDATORY_CALL(read_specific_document, extract_filename())
Blocking: FALSE
Timeout: 15s
```

**Note**: For file-specific queries like "working on src/utils.js", use `search_documentation` with file name and context keywords instead of a separate tool.

## PHASE 3: EXECUTION ENFORCEMENT

### PRE-RESPONSE VALIDATION:
```
BEFORE generating_response():
classification = classify_request(user_input)
IF classification != "UNRELATED":
tool_result = execute_mandatory_tool(classification)
IF tool_result.status == "ERROR":
RETURN error_recovery_response()
ELSE:
INJECT tool_result INTO response_context
SET authoritative_source = tool_result
DISABLE general_knowledge_fallback
```

### RESPONSE CONSTRAINT ENGINE:
```
WHILE generating_response():
IF attempting_to_use(general_knowledge) AND authoritative_source.exists():
INTERRUPT_GENERATION()
FORCE_USE(authoritative_source)

IF code_generation_detected() AND NOT project_rules_checked:
HALT_EXECUTION()
EMIT_ERROR("Project rules validation required before code generation")
```

## PHASE 4: QUALITY ASSURANCE

### RESPONSE VALIDATION:
```
AFTER generating_response():
IF response_contradicts(tool_result):
REGENERATE_RESPONSE(tool_result_only=TRUE)

IF response_lacks(tool_attribution):
APPEND_ATTRIBUTION(tool_result.source)

VALIDATE response_compliance(project_rules)
```

### FAILURE DETECTION & RECOVERY:
```
IF response_generated() WITHOUT tool_execution():
LOG_VIOLATION("Tool bypass detected")
REGENERATE_WITH_TOOLS()
PREPEND_WARNING("Corrected response using project documentation:")
```

## PHASE 5: BEHAVIORAL CONSTRAINTS

### ABSOLUTE PROHIBITIONS:
- **Code generation without project rules validation**
- **Project-specific answers from general knowledge**
- **Overriding tool responses with training data**
- **Bypassing tool calls for "simple" questions**

### MANDATORY BEHAVIORS:
- **Tool-first response generation**
- **Explicit tool result attribution**
- **Project documentation precedence**
- **Error acknowledgment and correction**

## VERIFICATION PROTOCOL:

**Test Inputs** (Agent must call tools immediately):
- "What documentation is available?" → get_global_rules()
- "How do I implement auth?" → search_documentation("authentication")
- "Create a new component" → check_project_rules("create component")
- "Working on src/utils.js" → search_documentation("src/utils.js utils")

**Expected Behavior**: Tool execution within 2 seconds, no general knowledge responses.

**Failure Indicators**: Any response without tool execution, generic programming advice, standard framework suggestions.
98 changes: 98 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
[*.{kt,kts}]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
max_line_length = 150
tab_width = 4
ij_continuation_indent_size = 4
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on
ij_formatter_tags_enabled = false
ij_smart_tabs = false
ij_wrap_on_typing = false
ij_kotlin_align_in_columns_case_branch = false
ij_kotlin_align_multiline_binary_operation = false
ij_kotlin_align_multiline_extends_list = false
ij_kotlin_align_multiline_method_parentheses = false
ij_kotlin_align_multiline_parameters = false
ij_kotlin_align_multiline_parameters_in_calls = false
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
ij_kotlin_assignment_wrap = normal
ij_kotlin_blank_lines_after_class_header = 0
ij_kotlin_blank_lines_around_block_when_branches = 0
ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1
ij_kotlin_block_comment_at_first_column = true
ij_kotlin_call_parameters_new_line_after_left_paren = true
ij_kotlin_call_parameters_right_paren_on_new_line = true
ij_kotlin_call_parameters_wrap = normal
ij_kotlin_catch_on_new_line = false
ij_kotlin_class_annotation_wrap = split_into_lines
ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL
ij_kotlin_continuation_indent_for_chained_calls = true
ij_kotlin_continuation_indent_for_expression_bodies = false
ij_kotlin_continuation_indent_in_argument_lists = true
ij_kotlin_continuation_indent_in_elvis = true
ij_kotlin_continuation_indent_in_if_conditions = true
ij_kotlin_continuation_indent_in_parameter_lists = false
ij_kotlin_continuation_indent_in_supertype_lists = true
ij_kotlin_else_on_new_line = false
ij_kotlin_enum_constants_wrap = split_into_lines
ij_kotlin_extends_list_wrap = on_every_item
ij_kotlin_field_annotation_wrap = normal
ij_kotlin_finally_on_new_line = false
ij_kotlin_if_rparen_on_new_line = true
ij_kotlin_import_nested_classes = true
ij_kotlin_imports_layout=*,java.**,javax.**,kotlin.**,^
ij_kotlin_insert_whitespaces_in_simple_one_line_method = true
ij_kotlin_keep_blank_lines_before_right_brace = 0
ij_kotlin_keep_blank_lines_in_code = 1
ij_kotlin_keep_blank_lines_in_declarations = 1
ij_kotlin_keep_first_column_comment = true
ij_kotlin_keep_indents_on_empty_lines = false
ij_kotlin_keep_line_breaks = true
ij_kotlin_lbrace_on_next_line = false
ij_kotlin_line_comment_add_space = true
ij_kotlin_line_comment_at_first_column = false
ij_kotlin_method_annotation_wrap = normal
ij_kotlin_method_call_chain_wrap = on_every_item
ij_kotlin_method_parameters_new_line_after_left_paren = true
ij_kotlin_method_parameters_right_paren_on_new_line = true
ij_kotlin_method_parameters_wrap = split_into_lines
ij_kotlin_name_count_to_use_star_import = 999
ij_kotlin_name_count_to_use_star_import_for_members = 999
ij_kotlin_parameter_annotation_wrap = off
ij_kotlin_space_after_comma = true
ij_kotlin_space_after_extend_colon = true
ij_kotlin_space_after_type_colon = true
ij_kotlin_space_before_catch_parentheses = true
ij_kotlin_space_before_comma = false
ij_kotlin_space_before_extend_colon = true
ij_kotlin_space_before_for_parentheses = true
ij_kotlin_space_before_if_parentheses = true
ij_kotlin_space_before_lambda_arrow = true
ij_kotlin_space_before_type_colon = false
ij_kotlin_space_before_when_parentheses = true
ij_kotlin_space_before_while_parentheses = true
ij_kotlin_spaces_around_additive_operators = true
ij_kotlin_spaces_around_assignment_operators = true
ij_kotlin_spaces_around_equality_operators = true
ij_kotlin_spaces_around_function_type_arrow = true
ij_kotlin_spaces_around_logical_operators = true
ij_kotlin_spaces_around_multiplicative_operators = true
ij_kotlin_spaces_around_range = false
ij_kotlin_spaces_around_relational_operators = true
ij_kotlin_spaces_around_unary_operator = false
ij_kotlin_spaces_around_when_arrow = true
ij_kotlin_variable_annotation_wrap = off
ij_kotlin_while_on_new_line = false
ij_kotlin_wrap_elvis_expressions = 1
ij_kotlin_wrap_expression_body_functions = 1
ij_kotlin_wrap_first_method_in_call_chain = false
ktlint_standard_no-wildcard-imports = disabled
ktlint_standard_filename = disabled
ktlint_standard_package-name = disabled
ktlint_standard_annotation = disabled
ktlint_standard_kdoc-wrapping = disabled
16 changes: 13 additions & 3 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
./gradlew spotlessApply
git add `git diff --name-only`
exit 0
#!/bin/bash
echo "Running spotless check"
./gradlew spotlessApply

echo "Running PixelDefinitions lint fix (npm run lint.fix)"
pushd PixelDefinitions >/dev/null
npm install
# Auto fix pixel-schema lint issues
npm run lint.fix
popd >/dev/null

git add `git diff --name-only --cached`
exit 0
1 change: 1 addition & 0 deletions .github/.java-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
17
6 changes: 6 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# This is the module where the Android Design System resides
# Any changes to the source files of this module require approval from @malmstein or @nalcalag.
/android-design-system/design-system/ @malmstein @mikescamell
/android-design-system/design-system-internal/ @malmstein @mikescamell
/saved-sites/ @malmstein
/example-feature/ @cdrussell
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: false
24 changes: 9 additions & 15 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,14 @@
<!--
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.
-->

Task/Issue URL:
Tech Design URL:
CC:

**Description**:

### Description

**Steps to test this PR**:
1.
1.
### Steps to test this PR

_Feature 1_
- [ ]
- [ ]

---
###### Internal references:
[Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552)
[Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943)
### UI changes
| Before | After |
| ------ | ----- |
!(Upload before screenshot)|(Upload after screenshot)|
4 changes: 4 additions & 0 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
self-hosted-runner:
labels:
# Stops incorrect warning of android-large-runner being used
- android-large-runner
Loading