Commit Graph
76075 Commits
Author SHA1 Message Date
Aleksei Seren e4adbdc310 Store SERP metrics in profile attributes (#34399)
The PR moves SERP metrics from profile prefs
to profile attributes to add multi-profile support.
2026-03-04 19:43:01 +00:00
Kyle Hickinson 362f3810d0 [iOS] Remove page-metadata-parser dep and simplify extraction script (#34405)
A majority of the metadata pulled from this script is unused and so remaining bits do not require the need of a separate library to extract.
2026-03-04 14:31:52 -05:00
Kyle Hickinson e00b92a376 [iOS] Find active element through iframes for force paste (#34438)
This fixes a bug where Force Paste didn't work if you attempted to force paste into an iframe that had nested iframes. It also moves the script from being injected into all frames to only be injected in the main frame since thats the only frame we execute the JavaScript on.
2026-03-04 14:26:38 -05:00
Kyle Hickinson e297fca56b [iOS] Dont always pass in WebKit configuration in popup tab creation (#34436)
Follow-up fix for #34329 where a WebKit configuration was being passed in when creating popup tabs since `tab.configuration` will be the underlying `WKWebView`'s configuration
2026-03-04 13:46:37 -05:00
Christian Mazakas cf955b242c [Polkadot] [Wallet] update transactions to store extrinsic metadata (#34375)
Resolves brave/brave-browser#53298

Update the PolkadotTxMeta to store a "extrinsic_metadata" field which is
populated with relevant information used for implementing block tracking
required to find extrinsic submission status.

We update the PolkadotWalletService to now forward a data structure instead of
just the signed extrinsic bytes.
2026-03-04 10:22:43 -08:00
Aubrey Keus f7d5b68cc9 [AI Chat] Add deep research event parsing and UI rendering (#34082)
* [AI Chat] Add deep research event parsing and UI rendering

  Parse 12 deep research streaming event types from OAI response deltas
  (queries, analyzing, thinking, answer, progress, blindspots, complete,
  error, search/fetch/analysis status, iteration complete) and render them
  in the assistant response as an animated single-line progress indicator
  with elapsed timer, culminating in a final answer with inline citation
  links and a sources section.

Implements: https://github.com/brave/brave-browser/issues/53022

* [AI Chat] Address review feedback (#34082)

  - Move deep research parsing out of oai_parsing.cc into its own file,
    using the brave-chat.deepResearch.* custom object pattern
  - Add unit tests for all deep research event parsing
  - Consolidate deep research event types into a single mojom union
  - Use mojom enums for status fields instead of raw strings
  - Use uint32 with _count suffixes for count fields
  - Add DeepResearchUrlInfo struct for url/favicon pairs
  - Use constexpr key constants instead of inline string literals
  - Pass model_key by value instead of const optional ref
  - Extract frontend deep research logic into deep_research_utils.ts
  - Add Storybook stories for the deep research component
  - Add localized UI strings
  - Fix copyright year in new files

* [AI Chat] Address second round of review feedback (#34082)

  - Remove model_key parameter from ParseDeepResearchEvent; return
    mojom::ConversationEntryEventPtr directly and wrap at call site so
    model_key remains available for tool call handling
  - Replace static_cast<uint32_t> with base::saturated_cast<uint32_t> to
    clamp negative server values instead of wrapping
  - Match "started" status explicitly in ParseSearchStatusEvent and
    ParseAnalysisStatusEvent; return nullopt with VLOG(1) for unrecognized
    values instead of silently defaulting to kStarted
  - Fix alphabetical ordering of deep_research_parsing entries in BUILD.gn
  - Revert unrelated cosmetic changes in oai_parsing.cc
  - Add JSDoc to exported interfaces in deep_research_utils.ts
  - Add unit tests for unknown status rejection

* [AI Chat] Address third round of review feedback (#34082)

  - Remove disableLinkRestrictions bypass for deep research; use the same
    allowedLinks-based link validation as regular search since
    WebSourcesContentBlock is already emitted and extracted for deep
    research tools
  - Scope deep research event extraction to events after the last deep
    research ToolUseEvent to handle multiple runs in a single response
  - Memoize extractDeepResearchEvents with React.useMemo
  - Remove redundant nonDeepResearchEvents filter since AssistantEvent
    returns null for unhandled types
  - Use {...props} spread for DeepResearchProgressLine
  - Rename ambiguous `e` variables to descriptive names (search, analysis,
    thinking, etc.)
  - Fix stale "Memoize" comment

* [AI Chat] Return nullptr instead of nullopt from ParseDeepResearchEvent

  mojom::ConversationEntryEventPtr is already nullable, so wrapping it
  in std::optional is redundant. Return nullptr for parse failures instead.

* [AI Chat] Add missing deepResearchEvent to event templates

* Presubmit code formatting fix

* [AI Chat] Fix deep research progress hiding too early

  The deep research progress panel was hidden as soon as the
  completeEvent arrived, but the synthesis answer hasn't started
  streaming yet at that point. Track whether a completionEvent
  (the synthesis answer) has arrived after the tool call and use
  that to decide when to hide the progress panel instead.

* [AI Chat] Address review feedback (#34082)

  - Add GURL::is_valid() checks for parsed URLs in deep_research_parsing.cc
  - Remove duplicate mojom include already present in header
  - Pass deepResearch as single prop instead of 10 individual props
  - Simplify startTimeRef useEffect logic per reviewer suggestion
  - Type-safe iconName using IconName from @brave/leo/icons/meta
  - Replace hardcoded spacing/radius/font values with design system
    variables (--leo-spacing-*, --leo-radius-*, --leo-font-*)
  - Add TODO for elapsed timer inaccuracy on re-render
  - Add unit tests for extractDeepResearchEvents (21 tests)
  - Add unit tests for DeepResearchEvent component (8 tests)
  - Add DynamicProgress story with timed event sequence for animation

* [AI Chat] Recalibrate elapsed timer on progressEvent updates (#34082)

  Recalibrate startTimeRef on every progressEvent instead of only on
  first render, so the timer stays accurate when the UI re-mounts
  mid-research (e.g. sidebar toggle, move to new tab).

* [AI Chat] Simplify elapsed timer to count from component mount (#34082)

  Replace progressEvent-based time calibration with a simple counter
  that starts from when DeepResearchProgressLine mounts. Removes the
  startTimeRef recalibration logic and progressEvent dependency from
  ElapsedTimeCounter.
2026-03-04 11:56:04 -05:00
Stephen O'Farrell 1173abdef7 [Leo] Remove tool support from new models (#34357)
* [Leo] Remove tool support from new models
2026-03-04 08:39:12 -08:00
brave-builds cb9c71104d 1.89.102 2026-03-04 16:02:49 +00:00
Emerick Rogul e352c25a98 Disable the upstream Captcha Provider component (#34392)
Disable the upstream Captcha Provider component.

Note: due to what looks like a naming mistake upstream, this component
erroneously identifies itself as "Probabilistic Reveal Tokens" in
brave://components. It is a different component with its own unique component
ID, however.

Chromium changes:
https://source.chromium.org/chromium/chromium/src/+/8cd9c51cde3520cc70c09553bb5fb72c75e04a37

commit 8cd9c51cde3520cc70c09553bb5fb72c75e04a37
Author: Ryan Kalla <ryankalla@google.com>
Date:   Tue Jan 20 14:59:58 2026 -0800

    Add UMA metrics to track CAPTCHA frame loads and interactions

    We are interested in measuring CAPTCHA frame loads and interactions with
    UMA/UKM metrics to see how CAPTCHA challenge rates are changing over
    time. Additionally, we would like to measure if CAPTCHA challenge rates
    are different when an AI agent (in this case the Glic agent, Bluedog) is
    active on the tab.

    This is implemented with a new PageLoadMetricsObserver, which will
    determine CAPTCHA frames based on the frame URL. The list of tracked
    CAPTCHA URLs is provided via the Component Updater.

    Bug: 473517428

    Chrome privacy consultation can be found at b/470068830.

    Bug: 473517428
    Change-Id: I37054eb55f2f817c4482763e386e054df5a71c1c
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7396984
    Reviewed-by: Ian Clelland <iclelland@chromium.org>
    Reviewed-by: Tommy Nyquist <nyquist@chromium.org>
    Commit-Queue: Ryan Kalla <ryankalla@google.com>
    Cr-Commit-Position: refs/heads/main@{#1571908}
2026-03-04 09:20:57 -05:00
brave-builds c15aee8d51 1.89.101 2026-03-04 13:36:12 +00:00
Simone Arpe d81a0e484e (Wallet) Fix edit fee dialog styles (#34388)
* Switch from `getActivity()` in favor of `requireContext()`

* Improve Edit Fee dialog styles

* Fix window leaked upon config changes

* Fix presubmit warning
2026-03-04 13:22:38 +00:00
Simone Arpe aebf44f653 Fix private tab layout and RTL support (#34401) 2026-03-04 14:20:06 +01:00
Terry Mancey 93ccdfce42 [CodeHealth] Remove obsolete Brave Ads codeowners (#34429) 2026-03-04 13:17:22 +00:00
NetzenbotandClaude Opus 4.6 01f6d7a871 Disable flaky DevToolsProcessPerSiteTest.PausedDebuggerFocus on Linux (#34425)
The test intermittently times out due to a race condition in the
DevTools frontend async chain (DebuggerPaused → SourcesPanel module
loading → bringToFront IPC). Already disabled upstream on Windows ASAN
(crbug.com/337141755) with 0.2% flake rate per LUCI Analysis. No
Brave-specific code affects this path.

Resolves https://github.com/brave/brave-browser/issues/53358

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 08:14:19 -05:00
brave-builds 39c205d7d1 1.89.100 2026-03-04 12:03:25 +00:00
Emerick Rogul a1ff3c79f1 Disable upstream features per security audit for CR146 (#34398) 2026-03-04 06:55:28 -05:00
Terry Mancey e137cca00c SERP metrics should support extensions (#34394)
SERP metrics should be supported for browser extensions to ensure
analytics are consistent. Currently, extension traffic isn’t being
reported.
2026-03-04 11:41:19 +00:00
cypt4 25b0b3e1d0 [Polkadot] Present Polkadot import keyring (#34209)
* [Polkadot] Present Polkadot import keyring
Polkadot import keyring required to store polkadot imported accounts.
This PR also moves encoding\decoding methods to polkadot_utils to reuse them.
2026-03-04 15:12:33 +04:00
Simone Arpe 3ea61f5823 (Wallet) Add padding to avoid focus ring cut off (#34389)
Add padding to avoid focus ring cut off
2026-03-04 10:35:59 +00:00
vadims f13eac71f2 Global Shred site's data preference is not available in settings under Brave Shields & privacy (#34391)
Fixed global auto-shred settings to be displayed in Settings under
Brave Shields & Privacy when the Shred feature is enabled.

Resolves: https://github.com/brave/brave-browser/issues/53295
---------

Signed-off-by: Vadym Struts <vstruts@brave.com>
2026-03-04 11:01:13 +01:00
Kevin SmithandPete Miller cb456fbe37 [NTP Next] Add AI chat inputbox (#30472)
* [NTP Next] Add AI chat inputbox

ensures we don't load any AI Chat code if AI Chat build flag is disabled
default pref to `true`
Introduces a feature flag, defaulted to enable

---------

Co-authored-by: Pete Miller <miller.pete@gmail.com>
2026-03-04 09:25:10 +00:00
Jay Harris 54e4922184 [dependencies]: Bump eslint-plugin-licenses (#34416)
bump eslint
2026-03-04 09:02:16 +00:00
Douglas Daniel 814df8fec0 [Wallet]: Fix Zcash Block Explorer for Address (#34409)
Fixes a bug where clicking on View on Explorer for an Address would route to Transaction explorer for Zcash accounts.
2026-03-04 00:35:06 -06:00
Anton Paymyshev 297eb1c5de Refactor SyncState for zcash tests (#33971) 2026-03-04 05:54:57 +00:00
brave-buildsandbrave-builds-ro fe9f3fa488 Roll perf profiles update (update-perf-profile-2026-03-03-16-16) (#34400)
* Update perf profile brave-typical-android using v1.89.81
* Update perf profile chrome-typical-android using v1.89.81
* Update perf profile brave-typical-win using v1.89.83
* Update perf profile chrome-typical-win using v1.89.83
* Update perf profile brave-typical-mac using v1.89.93
* Update perf profile chrome-typical-mac using v1.89.93

---------

Co-authored-by: brave-builds-ro <devops+robuilds@brave.com>
2026-03-04 12:02:35 +07:00
Francois Marier d4354a2e5e Remove Salesforce trackers from URLs (#34420) 2026-03-04 04:47:17 +00:00
Aleksei Seren b2fbe6e500 Profile attributes support for TimePeriodStorage (#34273)
The PR adds ability to store TimePeriodStorage
values for SERP metrics in profile attributes.
2026-03-03 21:28:34 -05:00
Anthony Tseng 92324d65ae Add NotifyPassageEmbedderIdle Mojo method for BackgroundWebContents lifecycle (part 1.5) (#34054)
Add NotifyPassageEmbedderIdle Mojo method for BackgroundWebContents lifecycle
2026-03-04 01:35:58 +00:00
Kyle Hickinson c2e61ad4a2 [iOS] [AI Chat] Always show Leo in standalone mode (#34410) 2026-03-04 01:31:01 +00:00
Jay Harris 42985537f0 [AI Chat]: Display inline searches properly in the Progress panel (#34381) 2026-03-04 14:14:38 +13:00
Kyle Hickinson ae7efb6848 [iOS] Add ios directories to the typescript lint config (#34412)
This is required to run presubmit on TypeScript added in iOS subdirectories
2026-03-04 01:11:59 +00:00
Darnell Andries fb0f01a0de Re-enable wallet usage metrics, add Tor usage metric (#34335) 2026-03-03 16:39:34 -08:00
Darnell Andries 178f095466 Add Media Session metric (#34334)
* Add "is default" metric attribute

* Address PR feedback

* Use `static_library` for `default_browser_monitor`

* Address PR feedback

* Add Media Session metric
2026-03-03 16:38:47 -08:00
Nuo Xu f678924c4e [iOS][Wallet] Start managing dapp account permission for cardano coin type (#34384)
* start manage dapp account permission for cardano coin type

1. start manage dapp account permission for cardano coin type
2. refactor SiteConnection with a list of BraveWallet.AccountInfo instead of account addresses

* fix unit tests

* fix typo

1. fix typo in comments
2. fix typo in data model attribute name and use renaming id to automatically map from the old to new
2026-03-03 19:31:44 -05:00
Serg 7246781c90 [Android] Use Leo design tokens for icons in Brave Origin settings (#34411)
Migrate Origin settings icons from custom drawables with hardcoded fill
colors to Leo design token equivalents that use @color/icon_default for
proper dark theme support. Remove manual icon tinting code that was
working around the hardcoded colors.

Resolves: https://github.com/brave/brave-browser/issues/53334
2026-03-04 01:20:01 +01:00
Jocelyn Liu e940655d44 [AI Chat] Fix Mojo deserialization error when saving custom Leo models (#34404)
The cr146 commit (a31fb1f6bc) updated the reading side of
endpoint from .endpoint.url to .endpoint to match the new
url.mojom.Url -> string typemap, but on the writing side it
changed `endpoint: mojomUrl` to `endpoint: mojomUrl.toString()`
instead of removing the { url: '' } wrapper object. This
caused toString() to produce "[object Object]" instead of
the actual URL string, breaking Mojo deserialization when
adding or editing custom models in Leo settings.

Fix by removing the mojomUrl wrapper and passing
this.endpointUrl directly, consistent with how the reading
side already works.
2026-03-04 00:11:12 +00:00
brave-builds 84d35a6517 1.89.99 2026-03-04 00:03:09 +00:00
Jocelyn Liu acf20dfedb [AI Chat] Allow users to select Leo or custom models for tab focus (#34333)
* Add pref and backend support for tab organization model key

Introduce kBraveAIChatTabOrganizationModelKey pref (default:
"chat-automatic") to allow users to choose which model is used
for tab organization. Update CreateTabOrganizationEngineIfNeeded
to read from this pref with fallback to "chat-automatic". Add
unit test for the invalid key fallback path.

* Add tab organization model selector in settings UI

Extract shared LeoModelSelector Lit component from personalization
page. Add tab organization model dropdown that appears when the tab
organization feature flag and pref are both enabled. Gate the tab
organization toggle behind the feature flag. Add localized string
for the model selector label.

* Improve tab focus prompts

When testing local model, found gemma tends to reply topics like
"['📰 News', '💻 Web Development', ... ]" which is failed to be parsed
because of the usage of single quotes on strings.
Improve tab focus prompts to mention valid JSON array and examples for
model to follow.
2026-03-04 00:59:09 +01:00
Jocelyn Liu 1aff3a28ed [AI Chat] [Conversation API V2] Ignore empty favicon string in WebSource (#34402)
[AI Chat] [Conversation API V2] Ignore empty favicon string

Treat empty favicon strings the same as missing ones.
2026-03-04 00:46:30 +01:00
samartnik 5fce4013bc [Code Health][Android] Clean up code for brave_xml_preprocessor template (#34406) 2026-03-03 23:01:03 +00:00
Eli Hini e374bfc6fe [iOS]Fix Unlock and Cancel buttons not shown when creating new private tab (#34382)
Fix Unlock and Cancel buttons not shown when creating new private tab with lock enabled

When "Require Touch ID/Face ID" was enabled for private tabs, the Unlock and Cancel buttons were hidden when creating a new private tab via the + button and cancelling the biometric prompt.

- Always show Unlock button when auth fails so user can retry
- Set isCancellable=true for non-external view types to show Cancel button

Signed-off-by: Eli Hini <8249954+EliHini@users.noreply.github.com>
2026-03-03 14:13:06 -08:00
Sangwoo Ko 263959fa7f [Containers] Show PageActionView for partitioned storage tab in location bar (#34248)
* Show PageActionView for partitioned storage tab in location bar

When the current tab uses a Brave container (partitioned storage), show the
page action in the location bar with the container's icon, name, and
background color from ContainerModel.

- Register kPartitionedStorageActionIconType and enable it in the location
    bar only when ENABLE_CONTAINERS and the Containers feature are on.
- Add PartitionedStoragePageActionController that resolves the tab's
    container via GetContainerIdForWebContents and ContainerModel, and drives
    the generic PageActionView (Show/Hide, OverrideImage/Text, etc.); the
    action is hidden when the tab has no container.
2026-03-04 06:49:08 +09:00
Serg 8c0ed68c2e [Android] Gate email aliases preference behind kEmailAliases feature flag (#34403)
The email aliases toggle in Brave Origin settings was always visible
regardless of whether the feature flag is enabled. Since the feature is
disabled by default, users would see a non-functional toggle.

Expose kEmailAliases to Java via ChromeFeatureList and hide the
preference when the flag is disabled.

Resolves: https://github.com/brave/brave-browser/issues/53323
2026-03-03 21:36:30 +00:00
Jay Harris 5b27bedcaa [AI Chat]: Limit results displayed in attachments menu (#34350) 2026-03-04 10:02:21 +13:00
Kyle Hickinson 70bb0664dd [iOS] Add package.json to control module type in iOS (#34363)
* [iOS] Add package.json to control module type in iOS

This adds a new `package.json` in `//brave/ios` to ensure that usages of the iOS JS tooling `optimize_ts`/`compile_ts` use the correct module type (`nodenext`). This is a prerequisite to building Brave JavaScriptFeature's with TypeScript

* Migrate iOS webpack.config.js to ESM syntax
2026-03-03 21:12:21 +01:00
Agustín RuizandSimon Hong 1fd45449a4 Update to sidebar header styles for upcoming wallet as sidepanel (#34354)
* Update to styles for upcoming wallet as sidepanel

effort to standadrize panels in desktop so the future wallet as a sidebar item can work correctly https://www.figma.com/design/Fbtxfv2ATGlfH7nPXiWAbR/%F0%9F%92%BB-Browser-Sidebar?node-id=1749-34459

* remove hardcoded background color that was messing up theming

* update backgrounds in panels so now they're themable

* update theme selector and toolbar customizer to be responsive.

Bonus, but it's very badly needed to have a properly responsive panel

* Address feedback

Address feedback from @fallaciousreasoning

* Delete unnecessary image files

* Formatting

---------

Co-authored-by: Simon Hong <shong@brave.com>
2026-03-04 09:01:46 +13:00
Darnell Andries 23fe5d1991 Add "is default" metric attribute (#33851)
* Add "is default" metric attribute

* Address PR feedback

* Use `static_library` for `default_browser_monitor`

* Address PR feedback
2026-03-03 10:51:22 -08:00
brave-builds 6d3a46264d 1.89.98 2026-03-03 16:35:33 +00:00
Jakub Wądołowski 22ed791e75 fix(script/uplift): Handle empty cherry-pick errors gracefully (#33142)
* fix(script/uplift): Handle empty cherry-picks

* fix(script/uplift): Skip commit squashing for empty change sets
2026-03-03 16:58:01 +01:00
Anton Paymyshev f39f0bebb0 Fix send max amount regression for Cardano (#34385) 2026-03-03 15:38:43 +00:00