From b92e5e9bec6d59a5fb28e3e46d3e6c58abcb3656 Mon Sep 17 00:00:00 2001 From: Michal Szorad Date: Tue, 11 Aug 2026 10:46:11 +0200 Subject: [PATCH 1/3] feat(perps-controller): add perps_mode analytics property for Lite/Pro UI Keep existing MODE as search intent so clients can attribute events by interface mode without colliding with discovery/intent/browse. --- packages/perps-controller/CHANGELOG.md | 4 ++++ packages/perps-controller/src/constants/eventNames.ts | 4 ++++ .../perps-controller/tests/src/constants/eventNames.test.ts | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/packages/perps-controller/CHANGELOG.md b/packages/perps-controller/CHANGELOG.md index 28b0a919bb..9763021dbb 100644 --- a/packages/perps-controller/CHANGELOG.md +++ b/packages/perps-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Add `PERPS_EVENT_PROPERTY.PERPS_MODE` (`perps_mode`) for Lite/Pro interface mode analytics (`'lite' | 'pro'`), distinct from existing `PERPS_EVENT_PROPERTY.MODE` (`mode`) which is search intent (`discovery` / `intent` / `browse`) + ## [11.0.0] ### Added diff --git a/packages/perps-controller/src/constants/eventNames.ts b/packages/perps-controller/src/constants/eventNames.ts index 05350a02dd..2908eaa19b 100644 --- a/packages/perps-controller/src/constants/eventNames.ts +++ b/packages/perps-controller/src/constants/eventNames.ts @@ -231,9 +231,13 @@ export const PERPS_EVENT_PROPERTY = { SEARCH_QUERY: 'search_query', RESULTS_COUNT: 'results_count', RESULT_RANK: 'result_rank', + // Search intent (`discovery` / `intent` / `browse`) — not Lite/Pro UI mode MODE: 'mode', CURRENT_TOKEN: 'current_token', + // Lite/Pro interface mode (`'lite' | 'pro'`) + PERPS_MODE: 'perps_mode', + // Sort / filter properties SORT_FIELD: 'sort_field', SORT_DIRECTION: 'sort_direction', diff --git a/packages/perps-controller/tests/src/constants/eventNames.test.ts b/packages/perps-controller/tests/src/constants/eventNames.test.ts index e2b4b7bcea..59c109b71a 100644 --- a/packages/perps-controller/tests/src/constants/eventNames.test.ts +++ b/packages/perps-controller/tests/src/constants/eventNames.test.ts @@ -85,10 +85,15 @@ describe('PERPS_EVENT_PROPERTY', () => { expect(PERPS_EVENT_PROPERTY.SEARCH_QUERY).toBe('search_query'); expect(PERPS_EVENT_PROPERTY.RESULTS_COUNT).toBe('results_count'); expect(PERPS_EVENT_PROPERTY.RESULT_RANK).toBe('result_rank'); + // Search intent — distinct from PERPS_MODE (Lite/Pro UI) expect(PERPS_EVENT_PROPERTY.MODE).toBe('mode'); expect(PERPS_EVENT_PROPERTY.CURRENT_TOKEN).toBe('current_token'); }); + it('exports PERPS_MODE for Lite/Pro interface mode', () => { + expect(PERPS_EVENT_PROPERTY.PERPS_MODE).toBe('perps_mode'); + }); + it('exports sort / filter and time-on-screen keys', () => { expect(PERPS_EVENT_PROPERTY.SORT_FIELD).toBe('sort_field'); expect(PERPS_EVENT_PROPERTY.SORT_DIRECTION).toBe('sort_direction'); From 67cf78ff4ec231a81681d0015894c81008bc931c Mon Sep 17 00:00:00 2001 From: Michal Szorad Date: Thu, 13 Aug 2026 11:40:52 +0200 Subject: [PATCH 2/3] fix: remove extra blank line in perps-controller changelog oxfmt and changelog validation both require a single blank line before the next version heading. --- packages/perps-controller/CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/perps-controller/CHANGELOG.md b/packages/perps-controller/CHANGELOG.md index 80d1b0f5c7..c801954b19 100644 --- a/packages/perps-controller/CHANGELOG.md +++ b/packages/perps-controller/CHANGELOG.md @@ -61,7 +61,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Reuse provider DEX discovery for subscriptions, and start account preloading independently from market preloading to reduce cold-start blocking ([#9815](https://github.com/MetaMask/core/pull/9815)). - Require a selected EVM address and the current Hyperliquid network/HIP-3/DEX identity before returning cached account data; legacy or mismatched entries now fail closed and refresh ([#9815](https://github.com/MetaMask/core/pull/9815)). - ## [11.0.0] ### Added From 34d59b6c264edc845750c29adbcb00a7e80f0add Mon Sep 17 00:00:00 2001 From: Michal Szorad Date: Thu, 13 Aug 2026 11:46:58 +0200 Subject: [PATCH 3/3] fix: link perps_mode changelog entry to the current PR The changelog check requires Unreleased entries to reference this PR number. --- packages/perps-controller/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/perps-controller/CHANGELOG.md b/packages/perps-controller/CHANGELOG.md index c801954b19..a22b5c8bfe 100644 --- a/packages/perps-controller/CHANGELOG.md +++ b/packages/perps-controller/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Add `PERPS_EVENT_PROPERTY.PERPS_MODE` (`perps_mode`) for Lite/Pro interface mode analytics (`'lite' | 'pro'`), distinct from existing `PERPS_EVENT_PROPERTY.MODE` (`mode`) which is search intent (`discovery` / `intent` / `browse`) +- Add `PERPS_EVENT_PROPERTY.PERPS_MODE` (`perps_mode`) for Lite/Pro interface mode analytics (`'lite' | 'pro'`), distinct from existing `PERPS_EVENT_PROPERTY.MODE` (`mode`) which is search intent (`discovery` / `intent` / `browse`) ([#9819](https://github.com/MetaMask/core/pull/9819)) - **BREAKING:** Add `positionsSideFilter`, `positionsSortField`, and `positionsSortDirection` to the flat `ProLayoutPreferences` object (defaults `'all'`, `'positionValue'`, `'desc'`) so Pro Positions/Orders panel sort and side-filter preferences persist across markets and app restarts via the existing `getProLayoutPreferences()` / `setProLayoutPreferences(patch)` API; export `ProPositionsSideFilter`, `ProPositionsSortField`, and `ProPositionsSortDirection` ([#9838](https://github.com/MetaMask/core/pull/9838)) - Consumers that construct a full `ProLayoutPreferences` object (instead of using `DEFAULT_PRO_LAYOUT_PREFERENCES`, the getter, or the patch setter) must include the new fields. Persisted state that predates them remains valid at runtime because the getter/selector merge over defaults. - **BREAKING:** Add strategy placement order types to `OrderType`: `twap`, `scale`, and `chase`, placeable through `placeOrder` alongside the existing `market`, `limit`, and trigger types ([#9832](https://github.com/MetaMask/core/pull/9832))