Skip to content

feat(clusters): drop the unwired card metadata row and head the Clusters and Organizations pages with a plain title - #1771

Merged
dawsontoth merged 6 commits into
stagefrom
david/1770-cluster-card-page-heads
Sep 30, 2026
Merged

dawsontoth merged 6 commits into
stagefrom
david/1770-cluster-card-page-heads

Conversation

@DavidCockerill

@DavidCockerill DavidCockerill commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Cluster cards no longer show the Instances / Regions / Harper version row: the organization response the list is built from carries no instances, so the instance count and version cells could only ever show a dash. The Clusters and Organizations pages now open with one plain heading in the primary colour instead of a slogan-and-tagline hero box, so the first row of cards sits about 120px higher. These are the same commits already on epic/pricing-updates, landed on stage ahead of the epic.

Closes #1770

Before and after

Dark mode, 1440px, mocked API (the anon e2e fixtures). Light captures were taken too and look the same apart from the palette.

Clusters, before Clusters, after
Clusters page before: hero box with slogan and tagline, cards with an Instances / Regions / Harper version row Clusters page after: plain Clusters heading, cards without the metadata row
Organizations, before Organizations, after
Organizations page before: eyebrow, slogan and tagline Organizations page after: plain Organizations heading

For the human reviewer

  1. Regions left the card with the row. The review's one surviving finding: the Regions cell did show real data (plan region labels resolved through the region catalog), and the region filter and the search box still match on region, so a filtered card no longer shows the region it matched on. Chosen: remove the whole row, as on the epic, and correct the design note so it no longer claims the row was all dashes. Alternative: keep a single region line on the card next to the hosting line. Reversing is a line or two of JSX; the model still derives regions for the filter. Cost of a "no": one extra commit here and a matching change on the epic.
  2. Requirement. Removing the row is warranted: two of its three cells are a dash on every card today, and the central-manager endpoint that would populate them is not scheduled. The alternative is to leave the row until that endpoint exists, which keeps dashes in production for an unknown time.
  3. Plain headings instead of the hero copy. Chosen: one h1 per page, no slogan or tagline. Cheap to reverse apart from the three e2e locators. The copy goes for three reasons:
    • It is a landing-page device on a work page. A slogan and tagline suit someone arriving cold; people who reach the clusters list already know what it is and come back many times a day, paying the same 120px on every visit for nothing.
    • It takes space from the thing the page is for. On a laptop the hero plus the new filter bar pushes the first row of cards near the fold, and the cards are the content.
    • The words fade fast. "At a glance" and "in one place" read fine once; by the twentieth visit they are wallpaper. Information-free text trains people to stop reading the top of the page, which then hurts anything real put there later, such as the expiry banner.
  4. Verbatim cherry-picks, not a squash. Five commits are cherry-pick -x copies of the epic commits, byte-identical, so the epic's next rebase onto stage drops them by patch-id. Squashing would leave the epic five conflicting commits to resolve by hand. Cost of a "no": one squash commit here and a manual conflict pass on the epic later.
  5. Model fields kept. clusterListModel.ts still derives instanceCount and version although nothing renders them. Removing them would touch a file the epic also changes and would turn restoring the row into a model change. Cost of a "no": two unrendered fields and their tests until the row returns.

Changes

Verification

  • pnpm exec tsc -b, pnpm lint, dprint check: clean.
  • pnpm test:coverage: 381 files, 3522 tests passed, 11 skipped. ClusterCard.test.tsx no longer expects the region label or the two "Not reported" cells.
  • pnpm build: built.
  • End to end: the anon Playwright project run against this worktree's dev server, 48 passed, 1 skipped. clusters.anon.spec.ts, global-search.anon.spec.ts and organizations.anon.spec.ts assert the new Clusters and Organizations headings; the clusters spec still exercises the region filter and card navigation. Three failures in sign-in.anon.spec.ts and verifying.anon.spec.ts reproduce on a clean origin/stage checkout: getByLabel('Email') also matches the TanStack Router devtools button labelled /_authLayout/verify-email, which only renders on the pnpm dev server with VITE_DISABLE_DEVTOOLS unset. Not caused by this branch.
  • e2e is not part of verify-pr; the trusted lane runs these specs against the deployed dev app after the merge to stage.

Complexity: easy

Review-Coverage: authored=claude; ran=gemini,codex; adjudicated=domain; declined=cursor-grok,cursor-composer,cursor-kimi,cursor-muse; rounds=1; full=1 @ 27078c7

Human-Review-Need: 3 (decisions: drop-card-regions, keep-dead-model-fields, plain-page-headings) @ 22524e5

DavidCockerill and others added 5 commits September 30, 2026 14:14
…cluster card

The organization response the list is built from carries no instances,
so two of the three tiles could only ever show a dash.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 038425d)
…d a tagline

Neither line told a returning reader anything, and together with the
eyebrow they cost the first row of cards about 120px. One heading, same
size as the other page heads.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 016924d)
…and sits on the page margin

The hero box (gradient card, padding) inset the title; the plain header row
aligns it with the left margin like the organizations page, and the
Dashboard.css override that only neutralised that box goes with it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit a39db4c)
…matches Organizations

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 714b177)
…matching the clusters page

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit e5b246f)

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request simplifies the user interface by streamlining the headers on the Clusters and Organizations pages, removing the hero banners, sub-headings, and descriptions in favor of clean, direct titles. Additionally, it removes the Instances, Regions, and Harper version metadata fields from the ClusterCard component since the organization response does not provide instance data, preventing empty or placeholder values from being displayed. Corresponding updates have been made to the E2E tests, unit tests, CSS styles, and design documentation to reflect these changes. I have no feedback to provide as the changes are clean and consistent.

@github-actions

github-actions Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 66.43% 9854 / 14833
🔵 Statements 66.62% 10526 / 15799
🔵 Functions 59.67% 2534 / 4246
🔵 Branches 61.22% 7440 / 12152
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
src/features/clusters/ClustersList.tsx 96.66% 93.93% 93.33% 96.15% 128
src/features/clusters/components/ClusterCard.tsx 52.43% 82.35% 25.92% 53.16% 101-113, 117-118, 121, 124-155, 247-276, 351, 425-464
src/features/layouts/Dashboard.css 0% 0% 0% 0%
src/features/organizations/index.tsx 0% 0% 0% 0% 34-362
Generated in workflow #2037 for commit 27078c7 by the Vitest Coverage Report Action

…e count or version

The model keeps deriving both, so the row is cheap to restore once an
endpoint reports instances.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@DavidCockerill
DavidCockerill force-pushed the david/1770-cluster-card-page-heads branch from 22524e5 to 27078c7 Compare September 30, 2026 18:35
@DavidCockerill
DavidCockerill marked this pull request as ready for review September 30, 2026 18:51
@DavidCockerill
DavidCockerill requested a review from a team as a code owner September 30, 2026 18:51
@dawsontoth
dawsontoth added this pull request to the merge queue Sep 30, 2026
Merged via the queue into stage with commit 836a5a1 Sep 30, 2026
7 checks passed
@dawsontoth
dawsontoth deleted the david/1770-cluster-card-page-heads branch September 30, 2026 20:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cluster cards show dashes for instances and version; the Clusters and Organizations pages open with a slogan instead of a heading

2 participants