Skip to content

Conversation

@pikonha
Copy link
Member

@pikonha pikonha commented Dec 19, 2025

Note

Introduces richer analytics and URL-driven state across Holders & Delegates, plus Storybook theming and API filter enhancements.

  • Adds token-holder balance history (graph + table) and new "Top Interactions" (pie + table) with ENS, copy, pagination, CSV, and robust loading/error states
  • Refactors delegates and token-holders tables to persist sorting/filters/drawer state in the URL (nuqs); improves columns, copy-to-clipboard, and skeleton loading
  • Revamps drawer: tab state in URL, filter cleanup on tab/close, and reorganized component structure/paths
  • Updates voting power variation to use a shared time-period switcher with URL state; adds tooltip animations and provider
  • New/updated hooks: useBalanceHistory, useBalanceHistoryGraph, useDelegateDelegationHistory (from/to filters), useDelegationHistory, useAccountInteractionsData; minor API changes in useDelegates/useTokenHolders
  • GraphQL: extend votingPowers query with fromAddresses/toAddresses
  • Storybook: dark theme + branding, custom favicon, and icon color overrides

Written by Cursor Bugbot for commit bb8e702. This will update automatically on new commits. Configure here.

brunod-e and others added 30 commits November 10, 2025 16:47
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is being reviewed by Cursor Bugbot

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

/>
<div className="flex items-center opacity-0 transition-opacity [tr:hover_&]:opacity-100">
<CopyAndPasteButton
textToCopy={address as `0x${string}`}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy button copies wrong address in table rows

The CopyAndPasteButton component uses the address prop (which is the parent component's address parameter) instead of addressValue (the row's actual address from row.getValue("address")). This causes users to copy the wrong address - they'll always copy the main account address rather than the address displayed in each table row.

Additional Locations (2)

Fix in Cursor Fix in Web


setIsFilterActive(
!!(filterVariables?.minDelta || filterVariables?.maxDelta),
);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Filter active state uses stale values

The setIsFilterActive call checks filterVariables state values that were just updated with setFilterVariables. Since React state updates are asynchronous, filterVariables still contains the previous values at this point. The check references the old filter state instead of the new values being applied (from filterState.minAmount/filterState.maxAmount), causing isFilterActive to be out of sync with the actual filter state.

Additional Locations (2)

Fix in Cursor Fix in Web

});
});

if (othersValue > BigInt(0)) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comparing number to BigInt is inconsistent

The variable othersValue is a regular JavaScript number (calculated from subtraction of two numbers on line 155), but it's being compared to BigInt(0). While JavaScript allows mixed comparisons, this is inconsistent with the data types in use and could lead to unexpected behavior. The comparison othersValue > 0 would be more appropriate here.

Fix in Cursor Fix in Web

label: displayLabel,
value:
token === "ERC20"
? Number(BigInt(delegator.rawBalance) / BigInt(10 ** 18))
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hardcoded decimals inconsistent with dynamic decimals usage

The pie chart data for individual delegators uses a hardcoded 10 ** 18 divisor, but the "Others" slice on line 157 correctly uses the decimals variable from the DAO config. This inconsistency means the delegator values in the pie chart will be incorrectly calculated for tokens with non-18 decimals, while the "Others" value will be correct, causing the chart to display mismatched proportions.

Fix in Cursor Fix in Web

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.

6 participants