fix: validator stats categories and count accuracy#40
Closed
Cordtus wants to merge 177 commits into
Closed
Conversation
Handles HTTP 300 (function overload during schema cache reload), 502, 503, 504 with exponential backoff (3 retries, 500ms base delay).
fix: add retry logic for transient PostgREST errors
fix: Select empty value error on governance page
feat: add governance proposal details to transaction view
- Fix Collapsible/Dialog onOpenChange type mismatch with Ark UI - Fix Checkbox id prop and onCheckedChange callback types - Fix Button cloneElement type issue for asChild prop - Add styled-system path alias to vite.config.ts - Remove unused tailwind.config.ts and react-router.config.ts - Migrate remaining Tailwind classes in EVMTransactionCard, EVMLogsCard, MessageDetails, JsonViewer, and AddressChip to Panda CSS - Ignore styled-system folder in ESLint config - Remove plan file
- Fix gas_usage_distribution field name (gas_range not range) - Remove non-existent get_active_addresses_daily RPC - Remove non-existent compute_proposal_tally RPC - Add getDenomMetadata endpoint for denomination resolution - Add requestEvmDecode RPC for EVM transaction decoding - Update ActiveAddressesChart to use chain_stats instead of non-existent RPC
- Add API methods for evm_contracts, evm_tokens, evm_token_transfers, validators, and ibc_channels endpoints - Create EVM Contracts page with empty state handling - Create EVM Tokens page with token type formatting - Add EVM sub-navigation component for switching between pages - Add EVM routes to main.tsx - Add EVM link to header navigation
- Replace Vite with Bun HTML bundler for dev/build - Replace ESLint with Biome for linting - Add runtime config system (src/lib/env.ts) replacing env vars - Fix Panda CSS generation with cssgen for utility classes - Update package.json scripts for Bun - Remove yarn.lock, add bun.lock
- Fix PostCSS config to use Panda CSS plugin - Fix Select component state management for dropdown - Fix grid template columns in analytics and home pages - Fix route links to match router paths - Update CSS import path in main.tsx
- Add build.ts for production builds with Bun.build() - Add dev.ts for dev server with file watching - Use programmatic PostCSS for CSS processing - Remove Vite and related dependencies - Simplify package.json scripts
fix: MsgUnjail field name, remove raw fee display
Enhance DetailRow to detect bech32/EVM addresses and render them as
clickable links to /addr/{address}. Add copy-to-clipboard visual
feedback (CheckCircle icon swap) matching AddressChip pattern.
Replace inline address Links with AddressChip in validator detail
delegator table, compute jobs/benchmarks tables, EVM contracts
table, and EVM tokens table.
feat: address links and copy feedback across all pages
- Use useQuery for chain info to properly load denom before rendering - Replace synchronous getChainBaseDenom/getChainDisplayDenom with query-derived baseDenom/displayDenom to fix "UNKNOWN" token issue - Rename "Chain Info" to "Validator History" (more accurate naming) - Only show Validator History section when there's data to display
* fix: validator detail denom display and empty section handling - Use useQuery for chain info to properly load denom before rendering - Replace synchronous getChainBaseDenom/getChainDisplayDenom with query-derived baseDenom/displayDenom to fix "UNKNOWN" token issue - Rename "Chain Info" to "Validator History" (more accurate naming) - Only show Validator History section when there's data to display * feat: sort validators by status (active first) then moniker alphabetically - Active validators always appear first in the list - Within each status group, validators are sorted by moniker descending (Z-A) - Users can still click column headers to re-sort by other fields - Reduces tendency to delegate to "top" validators based on power ranking
* fix: validator detail denom display and empty section handling - Use useQuery for chain info to properly load denom before rendering - Replace synchronous getChainBaseDenom/getChainDisplayDenom with query-derived baseDenom/displayDenom to fix "UNKNOWN" token issue - Rename "Chain Info" to "Validator History" (more accurate naming) - Only show Validator History section when there's data to display * feat: sort validators by status (active first) then moniker alphabetically - Active validators always appear first in the list - Within each status group, validators are sorted by moniker descending (Z-A) - Users can still click column headers to re-sort by other fields - Reduces tendency to delegate to "top" validators based on power ranking
The analytics page was counting all block signatures including ABSENT validators. Now only counts BLOCK_ID_FLAG_COMMIT signatures for accurate active validator count.
- Add JailingEvent and ValidatorJailingEvent types to API - Add getValidatorJailingEvents and getRecentValidatorEvents methods - Add Jailing Events tab to validators list page - Add Jailing History card to validator detail page - Graceful error handling when block results not available
- Add wallet connection support for Keplr (Cosmos) and EVM wallets - Create unified useStaking hook that routes transactions based on wallet type - Add EVM staking precompile interface for delegate/undelegate/redelegate - Add Cosmos SDK staking transaction builders for Keplr - Create DelegationsPage to view and manage user delegations - Add staking modals: Delegate, Undelegate, Redelegate, ClaimRewards, SetWithdrawAddress - Add staking actions to validator detail page - Update navigation with "My Staking" link - Add delegator API methods for fetching user staking data
The useWallet hook requires WalletProvider, and WalletProvider uses wagmi hooks which require AppKitProvider (WagmiProvider).
- Create SafeWalletProvider that dynamically loads wallet providers - Add WalletErrorBoundary for component-level error handling - Make useWallet return a safe default when provider is unavailable - This allows the app to work even when AppKit dynamic imports fail
AppKit uses dynamic imports that Bun doesn't bundle correctly. This replaces it with a simple wagmi setup using only the injected connector (MetaMask, etc.), which has no dynamic imports. - Create WagmiContext with simple injected connector - Update WalletContext to use wagmi connect directly - Remove AppKit dependency from ConnectWalletModal - Reduces bundle from 310 to 184 JS files
- Add margin between nav and search bar to prevent crowding - Change connect wallet button from bright green to subtle outline style - Fix modal positioning to stay on screen with proper overflow handling
…byte lookup - Add ContractDetails component showing creator, creation tx, bytecode hash - Add function call statistics showing most called functions - Add recent contract calls table with decoded function names - Add 4byte.ts utility for function signature lookup - Add API functions for contract details, calls, and function stats
- Remove wagmi and wallet SDK dependencies causing Bun bundler issues - Implement direct window.ethereum access with viem WalletClient - Disable code splitting to fix path resolution problems - Reduce bundle from 823 to 465 packages
- Add publicClient for reading chain data - Fetch balance on wallet connect and expose via context - Display available balance in DelegateModal with Max button - Auto-refresh balance when modal opens
- Add middleware endpoint to chain config - Route account info and tx broadcast through middleware - Fixes CORS issues with direct REST API calls
- Update middleware URL to yaci-explorer-apis.fly.dev - Use /chain/auth/account/:address for account info - Use /chain/tx/broadcast for transaction broadcast - Remove REST API usage
* feat: redesign analytics page and add validator metrics Analytics page redesign: - Add hero stats section with key network metrics - Add validator leaderboard with top 10 validators - Add recent validator events feed (slashing, jailing) - Add hourly rewards chart with rewards/commission breakdown - Add network health indicator bar - Modern dark theme with republicGreen accent Validator page enhancements: - Add Performance card showing uptime, blocks signed, ranks - Add Lifetime Earnings card with total rewards and commission Other changes: - Remove "My Staking" page entirely (delegations.tsx) - Update navigation to remove My Staking link - Add analytics API types and client methods * feat: enhance wallet dropdown with balance and delegations - Add balance display showing available and staked amounts - Add collapsible delegations section listing all validators - Show delegation amount per validator with link to validator page - Add loading states for balance and delegation data - Wider dropdown with improved visual hierarchy * fix: resolve lint errors - Use template literals instead of string concatenation - Use `import type` for type-only imports - Remove unused imports and variables - Fix non-null assertions with proper guards - Add a11y attributes to modal components * feat: enable block results indexing in yaci Add --enable-block-results flag to yaci indexer command. This enables indexing of finalize_block_events which contain: - Slashing events - Jailing/liveness events - Validator power updates - Rewards and commission events Required for accurate validator performance metrics.
- Add uptime column to validators list with color-coded percentages - Add live signing info and signing history chart to validator detail page - Rename "Jailing Events" to "Liveness Events" with improved detail display - Add transaction action summaries to transaction history list - Fix wallet balance display with EVM RPC fallback when API unavailable - Fix copy button event propagation on address detail page
* feat: add validator signing metrics and wallet balance fallback - Add uptime column to validators list with color-coded percentages - Add live signing info and signing history chart to validator detail page - Rename "Jailing Events" to "Liveness Events" with improved detail display - Add transaction action summaries to transaction history list - Fix wallet balance display with EVM RPC fallback when API unavailable - Fix copy button event propagation on address detail page * refactor: remove validator leaderboard and events feed from analytics page
Enhance analytics page and wallet balance display
Inactive validators include unbonded, unbonding, and jailed validators. The previous "Jailed" label was misleading since not all inactive validators are jailed. Now shows total - active count with muted styling.
- Add inactive_validators field to ValidatorStats interface - Update validators page to show Inactive (unbonded/unbonding, not jailed) and Jailed (jailed=true) as separate categories - Jailed is a secondary condition on top of unbonded status
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.
Summary
Changes