Skip to content

fix(coins): remove all-time volume stat from coin UI - #14542

Merged
rickyrombo merged 2 commits into
mainfrom
mjp-remove-coin-total-volume
Aug 3, 2026
Merged

fix(coins): remove all-time volume stat from coin UI#14542
rickyrombo merged 2 commits into
mainfrom
mjp-remove-coin-total-volume

Conversation

@rickyrombo

Copy link
Copy Markdown
Contributor

What

Removes the "Volume (All-Time)" metric from:

  • the coin details insights (createCoinMetrics)
  • the fan-clubs launchpad table (column + sort + responsive hide rules)

Why

The all-time volume figure is an unreliable, unverifiable stat:

  • No other aggregator reports it. DexScreener has no pairs for these Meteora DBC coins, GeckoTerminal exposes only rolling-window volume (h24/h6/…) and doesn't index most of them, and Jupiter marks them not-tradable. There's no consensus number to validate against.
  • The source value (Birdeye's all-time total_volume_usd) is a black-box figure we can't reproduce on-chain — repricing the exact same trades at trade-time brackets but doesn't match it, and for multi-market coins it aggregates pools we don't track.

Rather than display a number we can't stand behind, we remove it. (Price, market cap, holders, and graduation progress are unchanged; the AUDIO 24h volume shown via CoinGecko is unaffected.)

Test

FanClubDetailPage.test.tsx updated (dropped the volume-row assertion); suite passes.

🤖 Generated with Claude Code

Drop the "Volume (All-Time)" metric from the coin details insights and the
launchpad table. It's an unreliable, unverifiable figure: no other aggregator
(DexScreener, GeckoTerminal, Jupiter) even reports an all-time cumulative
volume for these coins, and the source value can't be reproduced or validated.
Removing it rather than showing a number we can't stand behind.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: db9fd64

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Removing 'totalVolumeUSD' shortened the arrays enough that prettier wants
them on a single line.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
rickyrombo added a commit to AudiusProject/api that referenced this pull request Aug 3, 2026
## What
Removes the volume accumulator from `CoinStatsOnchainJob`:
- deletes `updateVolumeAccumulator` / `readVolumeAccumulator` and stops
writing `total_volume` / `total_volume_usd` in the
`artist_coin_stats_onchain` upsert
- drops the now-unused `artist_coin_volume_accumulator` table (migration
`0234`) and its seed base row

## Why
The all-time volume stat this fed is being removed from the product
(AudiusProject/apps#14542). It's an unverifiable figure — no other
aggregator (DexScreener, GeckoTerminal, Jupiter) even reports an
all-time cumulative volume for these coins, the source value can't be
reproduced on-chain, and for multi-market coins it aggregates pools we
don't index. Rather than maintain data we won't display, we drop it.

Price, holders, market cap, liquidity, and 24h price change are
unaffected. The `artist_coin_stats_onchain.total_volume*` columns remain
(mirrored from `artist_coin_stats`) but are simply left NULL.

## Test
`go test ./jobs/ ./database/` pass; schema loads with the table removed;
build/vet clean. (Schema dump edited to drop only the accumulator table
— the unrelated churn from `make test-schema` reflects pre-existing
drift on main and is left out.)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@rickyrombo
rickyrombo merged commit 5b15142 into main Aug 3, 2026
17 checks passed
@rickyrombo
rickyrombo deleted the mjp-remove-coin-total-volume branch August 3, 2026 22:49
rickyrombo added a commit to AudiusProject/api that referenced this pull request Aug 3, 2026
## What
Removes `totalVolumeUSD` from the `/v1/coins` response — the Go `coin`
response struct field, its `SELECT` column, and the `coin` schema in the
embedded swagger.

## Why
The all-time volume stat was removed from the product
(AudiusProject/apps#14542) as an unverifiable figure no other aggregator
reports. Stop returning a value we don't stand behind.

## Notes
- **Breaking change** to the public `/v1/coins` response. Because the
SDK is generated from the live `/v1/swagger.yaml`, the **generated
`Coin` model must be regenerated after this deploys** (separate SDK PR).
- The `artist_coin_stats.total_volume_usd` column is untouched (still
written by the Birdeye `CoinStatsJob`), so the existing `volume` sort
still functions — it orders by the joined column.
- `coin_insights` still exposes the field: its handler uses `SELECT
artist_coin_stats.*` + `RowToStructByName`, so removing it there means
dropping/renaming the column or changing the query, and the column is
still populated by Birdeye. Left for a separate change once
`CoinStatsJob` is retired.

## Test
`go build ./api/...` and `go test -run Coins ./api/` pass; swagger
validates as YAML.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
rickyrombo added a commit that referenced this pull request Aug 4, 2026
## What
Regenerates the SDK `Coin` model after AudiusProject/api#1004 removed
`totalVolumeUSD` from the `/v1/coins` response — dropping the field from
the interface, `CoinFromJSONTyped`, and `CoinToJSON`.

## How
Ran `gen:prod` (openapi-generator against the deployed prod swagger).
Verified the change is live on prod first (`/v1/coins` no longer returns
the field). Scoped to `Coin.ts` only — the generator also surfaced
unrelated drift in `Event`/`TrackCollaboratorNotification*` models (the
committed SDK was behind prod there), which I reverted to keep this PR
focused.

## Safety
Backward-compatible. The field was optional and its generated
deserializer already handled absence (`!exists(json, 'totalVolumeUSD') ?
undefined`), so old SDK builds tolerate the missing field. The client
display usage was already removed in #14542 (merged), so no source
references the field.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant