Skip to content

Conversation

@Jipperism
Copy link
Collaborator

@Jipperism Jipperism commented Dec 22, 2025

Description

Surface orchestrator governance activity so stakeholders can see how they vote over time and per proposal.

Type of Change

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation update
  • style: Code style/formatting changes
  • refactor: Code refactoring
  • perf: Performance improvement
  • test: Adding or updating tests
  • build: Build system or dependency changes
  • ci: CI/CD changes
  • chore: Other changes

Related Issue

Closes #310
Closes #464

xxx## Changes Made

Governance visibility (core of #310)

  • Orchestrator history: added governance vote events as standard history items (action + proposal link + For/Against/Abstain + timestamp).
  • Orchestrator profile: added a governance participation stat (voted/eligible) to quickly gauge engagement.
  • Treasury proposal pages: refreshed the voters list to show vote, voting power, and links back to orchestrator profiles.
  • Standardized For/Against/Abstain wording, icons, and badge styling across all views.

Voting Widget Formatting (fixes #464)

  • Improved visual hierarchy and spacing in Voting and Treasury Voting widgets.
  • Refined "Your vote" section with clearer typography (SectionLabel) and layout.
  • Updated button sizing and focus states for better usability.

Refactors

  • Split poll vs treasury vote types and extracted shared hooks.
  • Removed legacy voting history/orchestrator list components.
  • Removed Cube.js client and related query generator (replaced by subgraph queries).

Fixes

  • SWR key fix for missing proposal titles.
  • Address and transaction hash formatting.
  • Orchestrators page early return.

Testing

  • Tested locally
  • Added/updated tests
  • All tests passing

Screenshots (if applicable)

image image image

Checklist

  • My commits are signed (verified)
  • My commit messages follow Conventional Commits format
  • My branch name follows the naming convention
  • My code follows the project's code style
  • I have commented my code where necessary

- Introduced a new component to present a list of orchestrators with their voting statistics, including proposals voted on, votes casted, recent votes, and voting turnout.
- Added Cube.js client for data fetching with new utility functions for querying voting history.
- Introduced VotingHistoryView component to display voting statistics, including proposals voted on and voting turnout.
- Updated package.json and pnpm-lock.yaml to include Cube.js client dependencies.
- Exported VoterSummary type for better type management in voting components.
- Integrated VotingHistoryView into the account layout for displaying voting statistics.
- Added new VotingHistory page to handle routing and data fetching for user voting history.
- Updated account layout to include a new tab for voting history, improving user navigation.
- Implemented utility functions for processing and summarizing voting data from Cube.js.
- Added OrchestratorVotingList component to display voting data for orchestrators.
- Implemented tabbed interface for Yield Overview and Voting History sections.
- Integrated voter summary processing functions to aggregate voting data.
- Updated getStaticProps to fetch and pass initial voter data to the page.
- Adds treasury proposals voting overview
@Jipperism Jipperism linked an issue Dec 22, 2025 that may be closed by this pull request
@vercel
Copy link

vercel bot commented Dec 22, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
explorer-arbitrum-one Ready Ready Preview, Comment Jan 18, 2026 2:05pm

Request Review

- Changed the method of accessing raw data from Cube.js API to use a function call.
- Simplified response validation in getStaticProps by removing unnecessary checks and directly using the response for voter summaries.
- Fetches voting metrics (voted/eligible) from Cube.js using LivepeerVoteProposals
- Adds an interactive Stat card to OrchestratingView with a visual progress bar
- Displays participation rate percentage and integrated link to account history
- Adds  utility to the Cube query generator
…nology

- Moved to a friendlier "Sky & Tomato" color scheme to keep voting separate from our main green brand accent.
- Standardized labels to "For / Against / Abstain" everywhere, including the global transaction feed.
- Rebuilt the vote table using our core data table component for a consistent look.
- Made it easier to explore voter history with new dedicated buttons, better tooltips, and subtle animations.
- Cleaned up the layout by stripping out redundant titles and shrinking fonts where they were getting too loud.
- Polished the details: added specific styling for "No reason provided" and refined how voter profiles are we showing voter names and txn links.
- Eliminated the agent log useEffect that was posting debug information.
- Streamlined imports by removing unnecessary useEffect import.
…List

- Changed badge colors to use a "Sky & Tomato" color scheme for better visual distinction.
- Updated badge labels from "Yes/No" to "For/Against" to standardize terminology across the application.
…prove title trimming

Update variable names for treasury vote events for consistency and clarity. Enhance the rendering of event titles by trimming whitespace to improve presentation in the UI.
@Jipperism
Copy link
Collaborator Author

@Jipperism I noticed that for some reason votes are showing duplicate but with no title in the history tab. See https://explorer-arbitrum-one-git-310-showca-05d537-livepeer-foundation.vercel.app/accounts/0x5d98f8d269c94b746a5c3c2946634dcfc75e5e60/history.
Image

Addressed in 443921f

@thebeyondr thebeyondr changed the title 310 showcase orchestrator voting activity in the UI Showcase orchestrator voting activity in the UI Jan 13, 2026
…tors

Change text colors for For and Against labels to match their respective vote indicators. Update border radius for progress bars in the TreasuryVotingWidget and VotingWidget components to create a more modern, rounded appearance.
Copy link
Collaborator

@thebeyondr thebeyondr left a comment

Choose a reason for hiding this comment

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

send it

@adamsoffer
Copy link
Contributor

Great work! My main piece of feedback I have is that the votes section is too buried beneath the fold. Most users will likely not know it exists unless they scroll all the way down a lengthy proposal. My recommendation is to move it inside a tabbed interface like this:

CleanShot 2026-01-15 at 14 02 57@2x

The other thing I noticed is the "reason" text is too long for the table cell and has little padding so it's cramped against the cell borders and will be too tall and hard to scan with longer given reasons. We need a way to keep it compact but still accessible.

CleanShot 2026-01-15 at 14 03 48@2x

Truncation with expansion could work here. Show the first line or two of the reason with an ellipsis, then let users click to expand inline or open a popover. WDYT?

- Allow passing `votesTabHref` to TreasuryVotingWidget for better linking to the votes tab.
- Show "View votes" as a proper link when the href is provided, falling back to the anchor hash.
- Add horizontal scrolling for tabs on the proposal page.
- Clean up tab logic to show active states and vote counts more clearly.
- Polish layout and accessibility for proposal details.
Show vote reasons in a popover when they're longer than 50 chars.
Replace Tooltip with ExplorerTooltip in vote tables for consistency.
@thebeyondr
Copy link
Collaborator

thebeyondr commented Jan 16, 2026

Great work! My main piece of feedback I have is that the votes section is too buried beneath the fold. Most users will likely not know it exists unless they scroll all the way down a lengthy proposal. My recommendation is to move it inside a tabbed interface like this:

Addressed in a011063

The other thing I noticed is the "reason" text is too long for the table cell and has little padding so it's cramped against the cell borders and will be too tall and hard to scan with longer given reasons. We need a way to keep it compact but still accessible.

Addressed in 7eb8b56

@adamsoffer

image

@adamsoffer
Copy link
Contributor

Nice, looking good. A few more minor UI adjustments:

  1. Notification badge consistency - The notification badge component should match the one used in the navigation.
CleanShot 2026-01-16 at 14 39 26@2x
  1. Tab border gap - There's a small gap between the active border line in the tabbed interface that needs to be closed.
CleanShot 2026-01-16 at 14 40 01@2x
  1. Remove outer bordered container - The outer component with the border can be removed. We only need the inner component.
CleanShot 2026-01-16 at 14 40 27@2x
  1. Mobile: Reason column truncation - There's currently no way to expand and read the full reason column on mobile. Add functionality to view the complete text.

…ansion

- Update notification badge style to match navigation
- Fix tab border alignment and stacking context
- Remove redundant outer container from votes view
- Add click-to-expand functionality for vote reasons on mobile
@thebeyondr
Copy link
Collaborator

thebeyondr commented Jan 16, 2026

Nice, looking good. A few more minor UI adjustments:

  1. Notification badge consistency - The notification badge component should match the one used in the navigation.

  2. Tab border gap - There's a small gap between the active border line in the tabbed interface that needs to be closed.

  3. Remove outer bordered container - The outer component with the border can be removed. We only need the inner component.

  4. Mobile: Reason column truncation - There's currently no way to expand and read the full reason column on mobile. Add functionality to view the complete text.

Thanks for catching those @adamsoffer!
Addressed in bac8449

image

@adamsoffer
Copy link
Contributor

adamsoffer commented Jan 16, 2026

Awesome. Last thing...these tabs have a couple styling inconsistencies - they're using different border widths and the first one is still not flush with the bottom of the component like the other one. After that's fixed LGTM.
CleanShot 2026-01-16 at 15 25 04

@thebeyondr
Copy link
Collaborator

Awesome. Last thing...these tabs have a couple styling inconsistencies - they're using different border widths and the first one is still not flush with the bottom of the component like the other one. After that's fixed LGTM.

🫡🫡 fixed in 1114a71, pesky badge size was throwing off the spacing

@adamsoffer
Copy link
Contributor

Yeah it's the badge size causing the issue. I'm still seeing a discrepancy though. If you give this component a min-height: 33px that should fix the issue 👉1114a71#r174869639

@thebeyondr
Copy link
Collaborator

Yeah it's the badge size causing the issue. I'm still seeing a discrepancy though. If you give this component a min-height: 33px that should fix the issue 👉1114a71#r174869639

added in 590080f

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

Improve Voting widget formatting Showcase orchestrator voting activity in the UI

5 participants