Skip to content

Fork sync#36

Open
mateumiralles wants to merge 954 commits into
dappnode:developfrom
lidofinance:develop
Open

Fork sync#36
mateumiralles wants to merge 954 commits into
dappnode:developfrom
lidofinance:develop

Conversation

@mateumiralles

Copy link
Copy Markdown

Fork sync

Mimidze and others added 30 commits March 16, 2026 13:29
Add matomo events and tests for monitoring  and dashboard links
Bumps [socket.io-parser](https://github.com/socketio/socket.io) from 4.2.5 to 4.2.6.
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.5...socket.io-parser@4.2.6)

---
updated-dependencies:
- dependency-name: socket.io-parser
  dependency-version: 4.2.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.1 to 3.4.2.
- [Commits](WebReflection/flatted@v3.3.1...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
* feat: setup wc wallet for speed up tests

* fix: update walletconnect dependencies to latest versions

* feat: add WC_PROJECT_ID to environment variables in workflow files

* fix: update @lidofinance dependencies to latest versions

* fix: update rpcUrlToMock format in prod and testnet config files

* fix: update rpcUrlToMock regex pattern in prod and testnet config files

* fix: clean up spacing in conditional for test jobs in CI workflow

* fix: update condition for test jobs to allow undefined inventory

* fix: update @lidofinance/browser-service and wallets-testing-wallets to latest versions

* fix: update @lidofinance/browser-service and wallets-testing-wallets to latest versions

* fix: update @lidofinance/browser-service and wallets-testing-wallets to latest versions

* fix: update @lidofinance/browser-service and wallets-testing-wallets to stable versions

* fix: update trace option in Playwright config to 'on-first-retry'
…471)

* feat: setup wc wallet for speed up tests

* fix: update walletconnect dependencies to latest versions

* feat: add WC_PROJECT_ID to environment variables in workflow files

* fix: update @lidofinance dependencies to latest versions

* fix: update rpcUrlToMock format in prod and testnet config files

* fix: update rpcUrlToMock regex pattern in prod and testnet config files

* fix: clean up spacing in conditional for test jobs in CI workflow

* fix: update condition for test jobs to allow undefined inventory

* fix: update @lidofinance/browser-service and wallets-testing-wallets to latest versions

* fix: update @lidofinance/browser-service and wallets-testing-wallets to latest versions

* fix: update @lidofinance/browser-service and wallets-testing-wallets to latest versions

* fix: update @lidofinance/browser-service and wallets-testing-wallets to stable versions

* fix: update trace option in Playwright config to 'on-first-retry'

* chore: update Playwright and related dependencies to latest versions

* chore: switch test base import from Playwright to playwright-qase-reporter

* chore: switch test base import from Playwright to playwright-qase-reporter

* feat: try to adding allure3

* feat: revert try to adding allure3

* fix: revert allure
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](micromatch/picomatch@2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
jake4take and others added 12 commits June 15, 2026 12:34
* feat: use SecGuardReporter to hide sensetive env in pw report

* fix: fixed sensetive env array
# Conflicts:
#	tests/csm-widget/tests/operatorWithValidator/dashboard/bondRewards/latestRewardDistibution.spec.ts
* feat: add e2e test workflows and setup actions for CSM/CM modules

* feat: allow running workflows from the feature branch tests/add-cm-schedule

* fix: update navigation paths for inbox, manager, and rewards address tabs

* feat: allow running workflows from the feature branch tests/add-cm-schedule

* fix: update claim option descriptions to ensure proper punctuation

* feat: implement reusable E2E test workflow and refactor existing test workflows

* fix: update claim option descriptions for consistency and clarity

* fix: update cwd path for WalletStateService and ForkActionsService to use './staking-modules'
@tropibot

tropibot Bot commented Jun 23, 2026

Copy link
Copy Markdown

⏳ Building package for commit 3c934f8...

A build has been triggered. The install link will appear here when ready.

(by tropibot/build)

exromany and others added 17 commits June 23, 2026 16:59
Survey API now requires a server-issued nonce embedded in the SIWE
message. Fetch it via GET /auth/nonce before signing, otherwise the
hardened backend rejects the client-generated nonce.
…oint

chore: replace Harbor registry endpoint
* fix: update button names and improve test timeout handling

* fix: remove trailing period from tooltip text in stake columns
Update tests in welcome page and latest Reward Distibution files
fix: survey API auth (siwe nonce handshake + lido.tools domains)
* feat: dvt form

* fix: validation get/set nested errors

* fix: update dvt form status

* feat: validate member is in ICS list

* fix: form titles size

* fix: update faq idvtc type

* fix: link, date, events

* fix: disabled submit button for incomplete form

* feat: show actual status/button for type cards

* feat: unified siwe auth

* feat: schedule ICS round 6 on June 8

* feat(ics): add SSV VO to Proof-of-Humanity and broaden High Signal

- Add new SSV Verified operators row to Proof-of-Humanity (3 pts) backed
  by new `ssvHumanity` field in IcsScoresDto
- Rename Proof-of-Engagement row to "High Signal score" and update copy
  to cover both Lido and SSV High Signal spaces (higher score wins)
- Sync mock response type/defaults and Playwright expected labels

* feat: dvt form

* fix: validation get/set nested errors

* fix: update dvt form status

* feat: claim IDVTC

* feat: parameters table with 3 columns

* feat: update select-operator-type-create modal

* fix: pass operator type to create page

* fix: file path

* feat: surveys-sdk

* feat: validate member is in ICS list

* fix: form titles size

* fix: update faq idvtc type

* fix: link, date, events

* fix: disabled submit button for incomplete form

* feat: show actual status/button for type cards

* feat: unified auth to surveys api

* fix: break footer circular import via matomo-link barrel

* feat: add tooltip explaining Main address selection in IDVTC apply form

* fix(ics): split High Signal link into Lido and SSV

* feat: siwe nonce handshake for surveys api auth

Survey API now requires a server-issued nonce embedded in the SIWE
message. Fetch it via GET /auth/nonce before signing, otherwise the
hardened backend rejects the client-generated nonce.

Encapsulate the surveys-api wiring behind SurveysAuthProvider so the
surveys/ICS/DVT mount sites no longer hand-wire signin/getNonce.

* feat: status-aware type buttons, page switchers, gated back button

- DvtApplyButton/IdvtcTypeCard reflect ISSUED/CLAIMED type status
- split IcsPageSwitcher from TypePageSwitcher, add Parameters/Claim tabs
- hide Back button on /type/* pages when ICS_APPLY_ENABLED is off
- gate survey banners by IS_SURVEYS_ACTIVE

* feat: split type parameters into per-type compare pages

* feat: feature flag toggles on qa-config page

* fix: survey back button

* fix: style

* fix: show create operator CTA for ICS/IDVTC type without active operator

* fix: keep address input error highlight without message

* fix: surface validation errors on hook-form inputs holding values

Error highlights were gated on isTouched, so fields restored from
storage on reload (e.g. IDVTC/ICS apply forms) kept their errors in
form state and disabled submit, but showed no highlight or message.

Gate on (isTouched || hasFieldValue || rules?.required) consistently
across address/text/number/percent/token controls via a shared
hasFieldValue helper (respects 0/0n), and normalize number-input's
errorMessage to match the other controls.

* fix: create-operator data proof

* feat: preselect operator type/curve on create page from apply buttons

* fix: make only checkbox clickable in DVT confirmations

* feat: add Surveys API URL override to qa-config page

Add a Surveys API URL field to the QA config form, persisted in the
shared lido-user-config localStorage. The surveys transport resolves
its base URL as: localStorage override -> SURVEYS_API_URL env ->
per-chain default.

Extract the storage key, SavedUserConfig shape, and an SSR-safe
readSavedUserConfig() reader into config/user-config/saved-config.ts so
the non-React surveys module and the React context share one source.

* feat: siwe nonce handshake for surveys api auth

Survey API now requires a server-issued nonce embedded in the SIWE
message. Fetch it via GET /auth/nonce before signing, otherwise the
hardened backend rejects the client-generated nonce.

* fix: migrate survey API to lido.tools domains

* fix: await full eligibility data before create-page gate

GateLoaded on /create only awaited proofs/gates, so CAN_CREATE could
evaluate on partial data (curve-ids/paused still pending) and Navigate
to / before the real values arrived.

Expose isPending from useCanCreateNodeOperator covering every query the
result reads, branched by module to avoid a disabled-query deadlock, and
feed it into the page gate.

---------

Co-authored-by: Miranda <54739810+Mimidze@users.noreply.github.com>
* feat: dvt form

* fix: validation get/set nested errors

* fix: update dvt form status

* feat: validate member is in ICS list

* fix: form titles size

* fix: update faq idvtc type

* fix: link, date, events

* fix: disabled submit button for incomplete form

* feat: show actual status/button for type cards

* feat: unified siwe auth

* feat: schedule ICS round 6 on June 8

* feat(ics): add SSV VO to Proof-of-Humanity and broaden High Signal

- Add new SSV Verified operators row to Proof-of-Humanity (3 pts) backed
  by new `ssvHumanity` field in IcsScoresDto
- Rename Proof-of-Engagement row to "High Signal score" and update copy
  to cover both Lido and SSV High Signal spaces (higher score wins)
- Sync mock response type/defaults and Playwright expected labels

* feat: dvt form

* fix: validation get/set nested errors

* fix: update dvt form status

* feat: claim IDVTC

* feat: parameters table with 3 columns

* feat: update select-operator-type-create modal

* fix: pass operator type to create page

* fix: file path

* feat: surveys-sdk

* feat: validate member is in ICS list

* fix: form titles size

* fix: update faq idvtc type

* fix: link, date, events

* fix: disabled submit button for incomplete form

* feat: show actual status/button for type cards

* feat: unified auth to surveys api

* fix: break footer circular import via matomo-link barrel

* feat: add tooltip explaining Main address selection in IDVTC apply form

* fix(ics): split High Signal link into Lido and SSV

* feat: siwe nonce handshake for surveys api auth

Survey API now requires a server-issued nonce embedded in the SIWE
message. Fetch it via GET /auth/nonce before signing, otherwise the
hardened backend rejects the client-generated nonce.

Encapsulate the surveys-api wiring behind SurveysAuthProvider so the
surveys/ICS/DVT mount sites no longer hand-wire signin/getNonce.

* feat: status-aware type buttons, page switchers, gated back button

- DvtApplyButton/IdvtcTypeCard reflect ISSUED/CLAIMED type status
- split IcsPageSwitcher from TypePageSwitcher, add Parameters/Claim tabs
- hide Back button on /type/* pages when ICS_APPLY_ENABLED is off
- gate survey banners by IS_SURVEYS_ACTIVE

* feat: split type parameters into per-type compare pages

* feat: feature flag toggles on qa-config page

* fix: survey back button

* fix: style

* fix: show create operator CTA for ICS/IDVTC type without active operator

* fix: keep address input error highlight without message

* fix: surface validation errors on hook-form inputs holding values

Error highlights were gated on isTouched, so fields restored from
storage on reload (e.g. IDVTC/ICS apply forms) kept their errors in
form state and disabled submit, but showed no highlight or message.

Gate on (isTouched || hasFieldValue || rules?.required) consistently
across address/text/number/percent/token controls via a shared
hasFieldValue helper (respects 0/0n), and normalize number-input's
errorMessage to match the other controls.

* fix: create-operator data proof

* feat: preselect operator type/curve on create page from apply buttons

* fix: make only checkbox clickable in DVT confirmations

* feat: add Surveys API URL override to qa-config page

Add a Surveys API URL field to the QA config form, persisted in the
shared lido-user-config localStorage. The surveys transport resolves
its base URL as: localStorage override -> SURVEYS_API_URL env ->
per-chain default.

Extract the storage key, SavedUserConfig shape, and an SSR-safe
readSavedUserConfig() reader into config/user-config/saved-config.ts so
the non-React surveys module and the React context share one source.

* feat: siwe nonce handshake for surveys api auth

Survey API now requires a server-issued nonce embedded in the SIWE
message. Fetch it via GET /auth/nonce before signing, otherwise the
hardened backend rejects the client-generated nonce.

* fix: migrate survey API to lido.tools domains

* feat: add data-testid attribute to OptionCard in TypeCard component

* feat: add tests for sign and modal

* feat: add tests for sign

* feat: add tests for socials

* feat: add tests with mocks for application:

* feat: add smoke tag for IDVTC tests

* feat: add appearance tests for IDVTC application form

* feat: add tests

* feat: improve tests

* feat: improve tests

* feat: added tests for modal with parameters

* feat: added tests for claim idvtc

* feat: added tests for claim idvtc

* fix: await full eligibility data before create-page gate

GateLoaded on /create only awaited proofs/gates, so CAN_CREATE could
evaluate on partial data (curve-ids/paused still pending) and Navigate
to / before the real values arrived.

Expose isPending from useCanCreateNodeOperator covering every query the
result reads, branched by module to avoid a disabled-query deadlock, and
feed it into the page gate.

* feat: add more tests

* fix: update staking_modules_ref and adjust Playwright config settings

* fix: update deploy_config path in tests-fork.yml

* fix: update deploy_config path in tests-fork.yml

* feat: add verification step for Pinata credentials in e2e tests

* fix: update token naming in sign.spec.ts for consistency

* fix: added qase ids

* fix: revert execJust func

---------

Co-authored-by: exromany <exromany@lido.fi>
Co-authored-by: Miranda <54739810+Mimidze@users.noreply.github.com>
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.3.0 to 4.2.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](docker/setup-buildx-action@v3.3.0...v4.2.0)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
…x spelling (#550)

- give each /settings/* sub-page its own page event (were all «Settings»)
- split shared TypeIcs (system/apply) and TypeDvt (description/apply) events
- rename mislabeled /type/parameters event TypeParametersIcs -> TypeParameters
- fix spelling in event descriptions, keys and enum members
* fix: add trailing dots to multi-sentence UI copy

* fix: make terminal tx-modal stages closable on Ledger by construction

Closability on Ledger was an explicit `{ isClosableOnLedger: true }` flag
repeated at every terminal call site, so it was easy to forget — surveys,
SIWE and ICS success/error modals trapped Ledger users with no way to close.

Derive it from the rendered stage instead: terminal components
(TxStageSuccess, TxStageFail, TxStageSuccessMultisig and the composed
TxStageOperationSucceedBalanceShown) self-declare `isClosableOnLedger`, and
TransactionModal reads it off `children.type`. Signing/pending stages stay
locked while a signature is in flight.

Removes 37 call-site flags across 26 files; new stages are correct by default.

* fix(claim-bond): show compensate copy when rewards don't cover insufficient bond

* test(claim-bond): add mock test stand covering realistic states

* fix(add-bond): label info amount as Excess bond instead of Bond balance

* feat(add-keys): re-enable keys-available hint with client-side curve calc

Reconstructs the bond curve client-side (utils/bond-curve) from bondConfig
instead of the contract reads dropped during the SDK migration. Fixes the
old off-by-one (1-based intervals, matching findKeyInterval), derives
nonWithdrawnKeys from operatorInfo, and corrects the TOKENS.ETH enum bug.
Covers both add-keys and create-operator (submit-keys).

* fix(add-keys): disable confirm checkbox when deposit data invalid

Tie the 'I confirm that:' checkbox to deposit-data validity via a shared
useDepositDataValid hook (keys present and no validation error) in both the
add-keys and create-operator submit forms. Enable the e2e assertions that
already encoded this bug.

* fix(deposit-data): disable spellcheck on key input fields

* fix(deposit-data): fallback to placeholder for empty pubkey

* refactor(change-role): merge rewards and repropose confirm modals into one

* chore(deps): bump lido-csm-sdk to 2.0.0-alpha.68 and lido-ethereum-sdk to 4.8.0

* feat: add visual-verify skill for connected-app screenshots

Opens the running CSM/CM widget connected as a given wallet/operator (or
disconnected), navigates any route, and captures a screenshot plus page
health (console/network errors).

- --theme, --viewport, --selector, --no-connect flags and --json output
- seeds wallet connection to skip the connect modal
- retries initial navigation with an app-readiness wait
- speeds up first run via npm pack; failure screenshots on error

* test: align deposit-data and add-bond assertions with updated sdk/ui copy

- keys: rename deposit-data validation messages to csm-sdk alpha.66 wording
  (BLS verification, hex string, 32 ETH, network_name, a validator on CL,
  cache -> already submitted)
- keys: restructure cm omit-field tests to assert the parser-level
  'missing required field' error, since the parser now rejects missing
  required fields before validation
- add-bond: assert 'Excess bond' title after the Bond balance relabel

* fix(delayed-penalty): gate pages behind connected wallet check

* test(deposit-data): cover Parsed-tab availability and error counter

- assert Parsed/Parameters tabs disabled on unparseable json (CM parity + new malformed-json case)
- assert Parsed tab enabled with error counter on invalid deposit data
- add multi-key test: counter reflects only invalid keys, per-row Yes/No
- add depositDataErrorsCounter testid to Counter; expose tab/counter locators on SubmitPage

* fix(rewards): use module-aware name in "Why?" no-rewards modal

The 'Why didn't I get rewards?' modal hardcoded 'CSM', so the CM widget
showed the wrong module name. Use moduleMeta.shortName for the copy so it
reads 'CSM'/'CM' per active module. The Performance Oracle link still
points to the CSM operator portal temporarily (see TODO) until a CM
portal link exists.

* fix(claim-bond): suppress compensate copy for sub-threshold bond deficit

Gate the amount-input note and the ALL_TO_RA/REWARDS_TO_BOND option copy on
STETH_ROUNDING_THRESHOLD, matching the DataTable row. A dust deficit (<=10 wei)
that the SDK clamps to Excess Bond 0.0 no longer renders Compensate the
Insufficient Bond copy.

* test(claim-bond): add sub-threshold deficit scenario

makeBond now mirrors the SDK STETH_ROUNDING_THRESHOLD delta clamp (via a
deficitWei knob) so a few-wei forKeys deficit renders Excess Bond 0.0 like the
real calcBondBalance. Adds a Repro scenario guarding that no compensate copy
leaks through when there is nothing to compensate.

* fix(dvt): check ICS approval before marking cluster member verified

Trigger the address field's own validator (which runs the ICS proof
check) before verifying the signature, instead of duplicating the
check via a separate hook call.

* fix(keys): respect curve keys limit on upload forms

- cap per-token "Keys available to upload" by the curve keysLimit
- explain the limit in deposit-data validation errors
- warn on add-keys and create-operator forms when at or near the limit
- fix "Keys limit" tooltip: limit is on non-withdrawn keys, not active
- ignore all .env* files except .env.example

* fix(dvt): invalidate stale apply-form draft against server submission

Draft is stamped with savedAt and only restored when newer than the
latest server submission (updatedAt/createdAt), so a rejected attempt's
cache no longer resurfaces on "Apply again". Guard the persister after
clear() to prevent the debounced writer from re-saving post-submit.

* fix(tooltip): keep modal open when clicking tooltip popover

lido-ui renders the tooltip popover into a portal (a DOM sibling of the
modal), yet React events bubble through the React tree. A click on the
popover reached the Modal outside-click handler, whose DOM contains()
check treated it as an outside click and closed the modal.

Add a shared Tooltip wrapper that stops click propagation on the popover
and route IconTooltip and all direct lido-ui Tooltip usages through it.

* chore(deps): refresh dependencies, patch security advisories, bump CI actions

- resolutions: form-data ^4.0.6, hono ^4.12.27, js-yaml ^4.3.0,
  @babel/core ^7.26.10 (clears 4 open Dependabot alerts)
- pin @types/react ^18.3.31 / @types/react-dom ^18.3.0 to keep the
  tree on React 18 types (yarn upgrade otherwise pulls @types/react 19)
- yarn upgrade: refresh in-range deps (react-query, axios, eslint
  plugins, types, etc.)
- ci: actions/checkout v6->v7, actions/cache v5->v6

* chore(deps): upgrade @lidofinance warehouse to 0.59 and reef-knot to 8.1.1

- warehouse runtime deps 0.47.0 -> ^0.59.0 (api-*, eth-*, next-*, rpc,
  satanizer, analytics-matomo)
- dev: eslint-config 0.43 -> ^0.59, wallets-testing pkgs to latest
- reef-knot 8.1.0 -> 8.1.1

* chore(deps): upgrade dev tooling majors

- @commitlint/* 20 -> 21
- @types/node 18 -> 24 (align with node engine >=24)
- lint-staged 13 -> 17
- @scure/bip39 2.0.1 -> 2.2.0, @playwright/test 1.60.0 -> 1.61.1

* chore(deps): upgrade safe majors (jest 30, prom-client 15, tooling)

- jest 29 -> 30, @types/jest 28 -> 30, ts-jest 29.4 (jest-30 compatible)
- prom-client 14 -> 15 (all usage already on config-object API)
- eslint-config-prettier 9 -> 10
- @types/ms 0.7 -> 2, @types/memory-cache 0.2.2 -> 0.2.6

* chore(deps): migrate husky to 9

- husky 7 -> 9
- postinstall: "husky install" -> "husky" (install cmd deprecated in v9)
- drop deprecated shebang + _/husky.sh sourcing from hooks (removed in v9)

* docs: refresh CLAUDE.md/README stale data and bump .nvmrc to 24

* fix: show per-key deposit data errors on first paste

DepositDataParsed read errors off useFormContext().formState, which is not
reactive in a child. The row could stay stale after async validation, showing
'No' while the errors counter (subscribed via useFormState) showed a detected
error. Subscribe to errors via useFormState so the row tracks them reliably.

* feat(operator-type): show custom-curve type for non-gate curve ids

Bring the gate-scoped operator-type work over as one change: the
chain/module hook refactor, the alpha.70 SDK bump, and the custom-curve UI.

- refactor: OPERATOR_TYPE_METADATA keeps pure UI copy only; curve ids are
  always derived from the SDK. getCurveMetadata is param-injected
  (chainId, moduleName, curveId) for non-reactive contexts, and new
  shared/hooks/use-operator-type-metadata.ts resolves defaultChain +
  module via useConfig() (useModuleOperatorType, useCurveMetadata,
  useCurveMetadataGetter, useOperatorTypeCurveId).
- deps: update @lidofinance/lido-csm-sdk to alpha.70.
- feat: curve ids without a matching gate render as a custom-curve type
  (curve badge + type button) instead of an unknown fallback.

* fix(config): validate defaultChain against supported chains
…cker/setup-buildx-action-4.2.0

chore(deps): bump docker/setup-buildx-action from 3.3.0 to 4.2.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants