Fork sync - #36
Open
mateumiralles wants to merge 1107 commits into
Open
Conversation
chore: build push harbor
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6 to 7. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](docker/build-push-action@v6...v7) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v4...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [docker/login-action](https://github.com/docker/login-action) from 3 to 4. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](docker/login-action@v3...v4) --- updated-dependencies: - dependency-name: docker/login-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
- restore curatedOperatorForm testid
- drop extra <div> wrapper in token-select, pass data-testid to <Note>
- widen Note props to allow data-testid override
- widen WeightChip, KeysItem, ParamSection, SummaryRow types
so data-testid is exposed in the public prop contract
- move default data-testid before {...props} in owner-chip
and icon-tooltip so callers can override
- use plain string literals (no template) in gate-card
- drop leftover fieldName arg in token-amount-input-hook-form
to match updated testableError signature
feat: added data attr for elements
Create eligibility is computed per module: a wallet that already runs a CSM operator can still create a CSM_02 one. The operator-type modal offers CSM_02 as a plain permissionless choice alongside the 0x01 entries, reworked per Figma. The submit-keys form resolves its target module from the requested operator type and routes every module-scoped read — curve, bond, share limit, status, deposit-data config — through that module rather than the active operator's. CSM_02 has no gates, so it always uses the module's single default curve.
CSM_02 keys carry both strikes (StrikesSDK is on the module) and a variable effective balance, so the table now derives column visibility from the active module instead of the IS_CSM/IS_CM gates. Comment-cell CSS re-anchored to :last-child so it survives a variable column count.
Deposit queue is now CSM-family-wide, not CSM-only: the graph takes an optional target module and falls back to the active operator's module. Data hooks (share limit, queue batches, curve id) are keyed by that module, so /create can render the queue for CSM_02 before any operator exists — with no active operator id leaking across modules. Adds a CSM_02 description covering the two-stage 32 ETH / 2048 ETH deposit flow.
Adds a secondary line under each key row in the View keys table reading "Top up in queue #N/total", gated to modules with a top-up queue (CSM_02). Position and total both come from a single getOperatorTopUpQueue call rather than pairing KeyWithStatus.topUpPosition with a separate queue-size read: reading them apart can straddle an allocateDeposits and render #13/12. The status-comment cell keeps its original DOM shape when a key has no queue position, so the existing `td:has(> span:empty)` row-collapse rule in styles.tsx keeps matching without a wrapper-aware selector. Bumps @lidofinance/lido-csm-sdk to 2.3.0-alpha.4 for the top-up queue API.
In CSM 0x02 an exhausted share limit starves the separate top-up queue rather than blocking initial activation, so the CSM wording no longer fits. Reuses the existing EXHAUSTED status until the SDK exposes top-up stake demand.
Depositable keys have no CL balance yet, so their stake is derived as count x MIN_EFFECTIVE_BALANCE rather than summed from effectiveBalance.
Aggregates come from the SDK's wei share-limit fields; key counts are scaled to wei once, in calculateAndSelectByOperator, so the graph geometry stays unit-agnostic and CSM keeps rendering key counts unchanged. Renames keysCount to amount across the graph data types: every value is a bigint, so the field name is the only guard against mixing denominations.
- SM Sentinel link shown for all modules, not CSM only - "View keys" action after key submit, switching operator when needed - navigate home after create in every branch - outlined Switch button in operator switch modal
* fix: stop CM widget from querying the surveys API useSurveysFilled resolved its id through useOperatorKey, which treats the argument as an override and falls back to the connected operator. Passing undefined therefore did not disable the query, so the IS_SURVEYS_ACTIVE gate in useSurveyEnabled (CSM-only) had no effect and CM requested /open/cm-0. Build the key from the explicit id instead. * fix: enable Reset Manager Address button The manager-reset flow prefills the address input with the connected wallet and locks it, so the form is never dirty and disableIfClean kept the submit button permanently disabled. * fix: no signature prompt on background survey reads Expired SIWE token surfaced during a render-driven GET re-ran the whole handshake, popping a signature modal on plain page visits. handleAuthError now takes an interactive flag: queries clear the stale token silently, mutations keep re-signing. * fix: reset change role form on form reset
Chip resolved to undefined in the switchers: shared/components is re-entered mid-initialization through shared/navigate, so the module-scope JSX ran before the chip re-export. Import it from its own module instead. ToastContainer: react-toastify@7 (pinned by lido-ui) declares static defaultProps, which React 18.3 warns about on mount.
…621) * feat: remove tag performTx and added tests for reset manager address * feat: add pending role method * refactor: improve IPFS path extraction logic in IpfsGatewayProxyService * test: mark reset manager address test as failed due to known issue CS-1205
Badges used --lido-color-foreground as a stand-in for white, but lido-ui overrides it per theme (#fff light, #34343d dark), so labels on the fixed gradients were near-invisible in dark mode. Use primaryContrast, which is theme-invariant #fff. CM variants painted --lido-color-text, which also flips, so they move to textDark to keep white text legible. Counter branches on the variant since its non-curve backgrounds are theme-reactive.
Cards get a 220px minimum width and wrap into balanced rows, so four types show as 4-across on wide screens and 2+2 instead of 3+1 when there is no room for a full row.
Validate the resolved gateway URL instead of the raw template, so {cid} in the host (https://{cid}.ipfs.dweb.link) passes — the is-url host char class has no '{'. Path-style templates only passed before because the regex is unanchored.
Proofs resolve against the pinned CSM SDK, so a CSM_02 active operator could be reported as eligible to claim.
The graph read depositData via getValues, a one-shot read with no subscription, so the submitting-keys legend only appeared once an unrelated re-render happened (hovering a legend). Bind useWatch to a detached control when no form is above, keeping the hook unconditional.
useSmSDK(m) returns undefined unless m is active, so the CSM default curve id went missing on /create while a CSM_02 operator was selected. Same reason the DKG section must classify curveId against targetModule: per-module curve maps do not overlap, so the active module would hide the field the flow expects.
Shown on non-production stands, gated by IS_TEST_ENV. Ports lidofinance/ethereum-staking-widget#1182. Restrict the webpack svg rule with `issuer` so svgr does not intercept the banner's CSS url() background, and offset LayoutStyle's min-height by the banner height to avoid a permanent 60px scroll on every page. Also fixes two pre-existing header issues the banner exposed: the banner was caught in the mobile nav overlay's backdrop-filter, and the header's opaque background sat on the inset HeaderStyle rather than the bleeding HeaderWrapper, leaking page content through ~20px side gutters on narrow viewports.
The create page treated the `?type=` query param as authorization rather than a preselection, so /create?type=0x02 bypassed the hasOperatorIn check and allowed duplicate operators. useRequestedOperatorType now validates against a new creatableTypes set and ignores anything not currently creatable, falling back to plain /create behaviour.
useInvites resolved its SDK through useSmSDK(), which follows the active module. A wallet with no operator falls back to the primary module, so invites belonging to a secondary one were never fetched — on the semi-unified CSM build a CSM_02 invite left the inbox empty, the nav counter at zero and HAS_INVITES false. It now fans out over deployedModules the way operator discovery already does. Invites are module-qualified as a consequence: getInviteId carries the module (the radio value must be unique, or onChange resolves the wrong invite), the row gained a CurveBadge so the modules are told apart, and accepting resolves confirmAddress against the invite own module instead of the active one. The e2e inbox locators match the value by suffix. useAppendOperator now takes the module on the payload — it varies per event, not per render.
Type-scoped curve ids only exist in the module that owns the type, but useCurveParameters/useCurveMetadata defaulted to the active operator's SDK — so ICS/IDVTC parameters never resolved for a CSM_02 operator, and cross-module curve id comparison could report a type as already claimed.
- share one fetchAcrossModules helper between operator and invite discovery - collapse the no-op target/active SDK ternary into useTargetSmSDK - parameterize useDefaultCurveId and drop the CSM_02 clone - use the SDK's module capability sets instead of hand-rolled family checks - memoize useCanCreateNodeOperator, precompute the parameters table
feat: add test env banner
…gets feat: one CSM widget serving two modules — CSM and CSM 0x02
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fork sync