fix(templates): Rename dashboard page templates to pattern slugs - #5927
Merged
Conversation
The template naming convention asks a slug to name the reusable UI pattern, not the data or the task it happens to ship, so that a neighbouring request matches it. Five dashboards named the fixture: dashboard-data -> dashboard-comparison dashboard-executive-summary -> dashboard-scorecard dashboard-portfolio -> dashboard-composition dashboard-project-status -> dashboard-progress dashboard-service-monitoring -> dashboard-alert-rail `dashboard` and `dashboard-cohort-funnel` already comply and are untouched: the bare head is the family default, as with table/ and login/, and funnel and cohort are chart archetypes rather than domains. Two categories move with their slugs. dashboard-comparison takes 'Dashboard - Comparison' -- it previously shared 'Dashboard - Analytics' verbatim with the dashboard template, so neither owned its strongest keyword -- and dashboard-scorecard takes 'Dashboard - Scorecard'. Both join the TemplateCategory union; the superseded values stay reserved. Domain vocabulary is untouched in every description, which is where retrieval reads it from. Also fixes "Executive Summary Dashoard". Breaking: template resolution is exact-match on the directory name with no alias mechanism, so the old slugs stop resolving.
kentonquatman
requested review from
cixzhang,
imdreamrunner and
josephfarina
as code owners
September 2, 2026 16:04
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
PR Analysis Report📚 Storybook PreviewView Storybook for this PR 🧪 Sandbox PreviewView Sandbox for this PR No new or modified components detected. Bundle Size SummaryNo component packages changed. Accessibility AuditStatus: No accessibility violations detected. Generated by PR Enrichment workflow | Storybook | Sandbox | View full report |
josephfarina
approved these changes
Sep 2, 2026
kentonquatman
deleted the
rename-dashboard-templates-to-pattern-slugs
branch
September 2, 2026 18:55
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.
Rename dashboard page templates to pattern slugs
Applies the template naming convention to the dashboard family. The convention asks a slug to name the reusable UI pattern, not the data or the task it happens to ship — a slug built on the fixture under-serves every neighbouring request.
Five of the seven dashboards named the fixture:
dashboard-datadashboard-comparisondashboard-executive-summarydashboard-scorecarddashboard-portfoliodashboard-compositiondashboard-project-statusdashboard-progressdashboard-service-monitoringdashboard-alert-railmonitor-kpisexampleEach new slug is the template's actual dominant structure, taken from the page itself: comparison tiles with period-over-period deltas; a "Scorecards" band with attainment bars and a commentary rail; composition-over-time closing on ranked contributors; a completion donut, milestone timeline and burndown; and an independently scrolling alert rail beside the charts.
Left alone deliberately
dashboardanddashboard-cohort-funnelalready comply.dashboardis the guide's own exemplar, and a bare family head is the roster's established convention —table,login,documentation,settingsandai-chatall do the same. It is also the family's only reliable front door:scoreCandidateinpackages/cli/api/search/search.mjsonly substring-matches when the shorter string covers ≥50% of the longer, so the query word "dashboard" scores an exact 100 againstdashboardbut would fall to 47% — below the threshold — against a suffixeddashboard-analytics.dashboard-cohort-funnelreads as domain vocabulary but funnel and cohort are chart archetypes, making it a legitimate{pattern}-{pattern}hybrid.Categories
Two categories move with their slugs, and both new values join the
TemplateCategoryunion:dashboard-comparison→Dashboard - Comparison. It previously declaredDashboard - Analyticsverbatim identical to thedashboardtemplate, so neither owned what the guide calls "the strongest keyword signal a page has".dashboard-scorecard→Dashboard - Scorecard, so the pattern slot holds a pattern.Superseded values stay reserved in the union, per the taxonomy's documented behaviour.
dashboard-alert-railkeepsDashboard - Monitoring— category is exactly where domain vocabulary belongs.Retrieval impact: none expected
Every domain noun dropped from a slug is already carried in that template's
description, which is written to the four-slot structural shape. The guide's own measurement found the name axis inert for natural-language retrieval — ablatingnamechanged 0 of 36 battery results — so this is a legibility and self-retrieval change, not a ranking change.Also in this PR
Fixes a typo in the scorecard template's
namefield: "Executive Summary Dashoard".displayNamewas already correct, so it only surfaced wherenameis read.Breaking
Template resolution is exact-match on the directory name with no alias mechanism, so the five old slugs stop resolving.
astryx template dashboard-portfolioand friends will fail after this lands. Tagged[breaking]in the changeset, which the validator maps to a minor bump while 0.x.Two of the five (
dashboard-data,dashboard-service-monitoring) areisReady: falseand carry no settled consumers.Verification
pnpm check:repo— all 12 checks pass, includingcheck:changesetsandcheck:knowledgepnpm vitest run packages/cli/api/template packages/cli/authoring …— 120 tests, 15 files, all passtsc --noEmitagainsttsconfig.template-docs.jsonandtsconfig.authoring-contract.json— clean (these are what typecheck the doc files againstTemplateCategory)node scripts/sync-templates.js— regenerates cleanly; no checked-in generated files changeastryx template --list --type pagelists all seven dashboards under the new slugspage.tsxcontent is byte-identical in every caseReviewer notes
apps/docsite/src/components/templateComponents.tswas the only code reference to any of these slugs;dashboard-portfolio→dashboard-compositionis updated there.packages/cli/CHANGELOG.mdmentions the old slugs. Left untouched — it is a record of what shipped.name/displayName) are unchanged, e.g.dashboard-compositionstill displays as "Portfolio Dashboard". The convention explicitly keeps domain vocabulary in the human-facing name, and it is not scored. "Data Dashboard" ondashboard-comparisonis the weakest of them and may be worth a follow-up, but renaming display names is an editorial call separate from this convention fix.table-pagestill carries the-pagestopword suffix and duplicatestable'sTable - Basiccategory — the clearest remaining naming violation in the roster.