fix(chain-aliases): apply matchesChainSlug across all 9 sites - #724
Merged
Conversation
Follow-up to #708 / #711. The alias system was added but only applied to getBenchmarksForChain + ChainHeadingsSummary + overlayEditorial. Every other place that did a strict-equality chain-slug match still 404'd or rendered wrong when called with the canonical slug ('gram') while the YAML dimension / result row still held the legacy slug ('ton'). The user hit /benchmarks/wallet-labels-coverage/gram and got a 404. This PR pushes matchesChainSlug into every site that does a slug === match on a chain. New helper in src/lib/chain-aliases.ts: - matchesChainSlug(a, b) — both args optional, case-insensitive, resolves both sides through canonicalChainSlug. Replaces every '=== chain' on a chain-slug. - chainSlugSiblings(slug) — returns the set { canonical, ...legacy } for use as a filter Set. Patched 9 surfaces: - src/app/benchmarks/[slug]/[chain]/page.tsx — perChainExplainer lookup, results.find (row shape), dimensions.find (dimension shape), region variant fetch. /benchmarks/wallet-labels-coverage/gram now resolves. - src/app/api/badge/[slug]/[provider]/route.ts — chainLabel + cell param resolution. Badge endpoint accepts ?chain=gram. - src/app/api/bench/[slug]/variant/route.ts — variant filter validation. ?chain=gram no longer returns 'unknown chain'. - src/app/benchmarks/[slug]/share-card/route.tsx — OG share card chain pill resolution. - src/components/benchmark-body.tsx — client-side initial tab selection from ?chain= URL param. - src/app/chains/[slug]/page.tsx — per-bench dimension/result/route detection on the chain hub. - src/app/benchmarks/[slug]/opengraph-image.tsx — chain label on OG image. - src/app/benchmarks/[slug]/twitter-image.tsx — same for Twitter cards. - src/app/sitemap.ts — emits canonical slug URLs (/gram) instead of legacy (/ton) so crawlers don't waste budget on 308s. Per-chain explainer filter uses canonical comparison. What is NOT in this PR (deliberately): - Schema change to dimensions (value/prom_value/aliases) — too much surface, deferred to a separate refactor once harness rotates. - Harness Go code update (chain='ton' → 'gram' label) — separate Railway redeploy. - middleware-level URL canonicalization — next.config.ts redirects already cover the legacy /ton URLs; middleware adds nothing right now.
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.
Fixes the 404 on /benchmarks/wallet-labels-coverage/gram (and 8 other places) reported by the user. Follow-up to #708 / #711 — the alias system existed but was only applied to 3 sites. Every other strict
=== chaincomparison still missed.New helper
matchesChainSlug(a, b)in chain-aliases.ts — case-insensitive, both args nullable, resolves both sides through canonicalChainSlug.Patched
Test plan