From 1338d7b47ae8855b81a3b88f87f59a567c7a3021 Mon Sep 17 00:00:00 2001
From: Adam <2363879+adamdotdevin@users.noreply.github.com>
Date: Sun, 14 Jun 2026 21:00:35 -0500
Subject: [PATCH] fix(stats): rank model pages by week
---
.../stats/app/src/routes/[lab]/[model].tsx | 18 +++++++++-------
packages/stats/core/src/domain/home.ts | 21 ++++++++++++-------
2 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx
index 1754539b2..2accce529 100644
--- a/packages/stats/app/src/routes/[lab]/[model].tsx
+++ b/packages/stats/app/src/routes/[lab]/[model].tsx
@@ -262,8 +262,10 @@ function ModelHero(props: { data: StatsModelData | null; catalog: ModelCatalogEn
>
{(data) => (
- Ranked #{data().rank} across recent OpenCode token usage with {formatPercent(data().tokenShare)} of
- observed volume.
+ {data().rank === null
+ ? "Unranked across last week's OpenCode Go usage"
+ : `Ranked #${data().rank} across last week's OpenCode Go usage`}{" "}
+ with {formatPercent(data().tokenShare)} of observed 2M volume.
)}
@@ -278,9 +280,9 @@ function ModelHero(props: { data: StatsModelData | null; catalog: ModelCatalogEn
}>
{(data) => (
-
Current Rank
-
#{data().rank}
-
{formatRankMoveLabel(data().previousRank, data().rank)}
+
7D Rank
+
{data().rank === null ? "—" : `#${data().rank}`}
+
{formatModelRankMoveLabel(data())}
)}
@@ -810,8 +812,10 @@ function formatRankMove(previousRank: number, rank: number) {
return "Even"
}
-function formatRankMoveLabel(previousRank: number | null, rank: number) {
- return previousRank === null ? "New in window" : `${formatRankMove(previousRank, rank)} vs previous window`
+function formatModelRankMoveLabel(data: StatsModelData) {
+ if (data.rank === null) return "No usage last week"
+ if (data.previousRank === null) return "New this week"
+ return `${formatRankMove(data.previousRank, data.rank)} vs previous week`
}
function formatTokens(value: number) {
diff --git a/packages/stats/core/src/domain/home.ts b/packages/stats/core/src/domain/home.ts
index 6561aef91..a819bdb06 100644
--- a/packages/stats/core/src/domain/home.ts
+++ b/packages/stats/core/src/domain/home.ts
@@ -47,7 +47,7 @@ export type StatsModelData = {
slug: string
provider: string
author: string
- rank: number
+ rank: number | null
previousRank: number | null
totalModels: number
tokenShare: number
@@ -229,20 +229,27 @@ function buildStatsModelData(
const latest = Math.max(...normalized.map((row) => row.periodStart))
const latestUpdate = Math.max(...modelScopedRows.map((row) => row.updatedAt))
const window = getWindow("2M", earliest, latest)
+ const rankWindow = getWindow("1W", earliest, latest)
const currentRows = rowsForProduct(modelScopedRows, SITE_PRODUCT, window.start, window.end)
const previousRows = rowsForProduct(modelScopedRows, SITE_PRODUCT, window.previousStart, window.previousEnd)
const current = combineRowsForModel(model, currentRows)
const previous = combineRowsForModel(model, previousRows)
- const peers = aggregateByModelName(rowsForProduct(normalized, SITE_PRODUCT, window.start, window.end))
+ const rankPeers = aggregateByModelName(rowsForProduct(normalized, SITE_PRODUCT, rankWindow.start, rankWindow.end))
.filter((item) => item.totalTokens > 0)
.toSorted((a, b) => b.totalTokens - a.totalTokens || a.model.localeCompare(b.model))
- const previousPeers = aggregateByModelName(
- rowsForProduct(normalized, SITE_PRODUCT, window.previousStart, window.previousEnd),
+ const previousRankPeers = aggregateByModelName(
+ rowsForProduct(normalized, SITE_PRODUCT, rankWindow.previousStart, rankWindow.previousEnd),
)
.filter((item) => item.totalTokens > 0)
.toSorted((a, b) => b.totalTokens - a.totalTokens || a.model.localeCompare(b.model))
- const rank = Math.max(1, peers.findIndex((item) => item.model === model) + 1)
- const previousRankIndex = previousPeers.findIndex((item) => item.model === model)
+ const peers = aggregateByModelName(rowsForProduct(normalized, SITE_PRODUCT, window.start, window.end))
+ .filter((item) => item.totalTokens > 0)
+ .toSorted((a, b) => b.totalTokens - a.totalTokens || a.model.localeCompare(b.model))
+ const rankIndex = rankPeers.findIndex((item) => item.model === model)
+ const rank = rankIndex >= 0 ? rankIndex + 1 : null
+ const previousRankIndex = previousRankPeers.findIndex((item) => item.model === model)
+ const peerRankIndex = peers.findIndex((item) => item.model === model)
+ const peerRank = peerRankIndex >= 0 ? peerRankIndex + 1 : 1
const totalTokens = peers.reduce((sum, item) => sum + item.totalTokens, 0)
return {
@@ -273,7 +280,7 @@ function buildStatsModelData(
tokenMix: buildModelTokenMix(current),
productMix: buildModelProductMix(modelScopedRows, window, current),
country: createRangeRecord((range) => buildCountryStats(geo, getWindow(range, earliest, latest))),
- peers: buildModelPeers(peers, rank, totalTokens),
+ peers: buildModelPeers(peers, peerRank, totalTokens),
}
}