Skip to content

Fix landing card bars, alignment, and terminology - #174

Merged
DavidBakerEffendi merged 2 commits into
mainfrom
dave/landing-bar-scale-and-card-height
Aug 26, 2026
Merged

Fix landing card bars, alignment, and terminology#174
DavidBakerEffendi merged 2 commits into
mainfrom
dave/landing-bar-scale-and-card-height

Conversation

@DavidBakerEffendi

Copy link
Copy Markdown
Collaborator

Follow-up to #173 on two reported nits.

The bars were lying

Ruby LSP's 9/9 rendered at 56% width. The bars were scaled against the
widest card's denominator (16, the TypeScript server) rather than their own, so
a perfect 9 of 9 drew as 9/16 and read as a 56% score.

Each bar is now a share of its own card's shared denominator: 9/9 is full,
2/9 is 22.2%, 8/10 is 80%.

Cross-card bar lengths were never a valid comparison anyway — rivals answer
different populations, from 5 shared cases for gopls to 16 for the TypeScript
server — and the project's own guardrail is that those denominators are not
interchangeable. Per-card scaling now prevents that false read rather than
inviting it.

Uneven card heights

Two causes, both measured in the browser rather than guessed at:

  1. The rival's name sat in a fixed 5.5rem label column, so "Eclipse JDT LS",
    "TypeScript LS" and "rust-analyzer" wrapped to a second line. The two bar
    rows now share one grid, whose label column sizes to the longer of the pair
    and never wraps.
  2. Starlight's markdown flow puts margin: 16px 0 0 on every sibling after the
    first, so the first card was a different height from the rest inside the
    grid. The grid's own gap owns that spacing now.

Also swapped the per-card breakdown from a prose sentence to three fixed slots
— same height on every card, scannable down a column — and the third label
reads "Rival only" instead of repeating a server name the card title and bar
row already carry, which was truncating mid-phrase to "Eclipse JDT LS …".

Verified

In a browser against the real published scores, at 800px and 1400px:

  • all ten cards 206 × 350, one unique height, one unique width
  • zero truncated labels
  • bars 100% / 22.2% for Ruby LSP's 9 of 9 against 2 of 9
  • checked-in placeholder still renders the no-result state
  • astro check clean, links:check 22 routes

🤖 Generated with Claude Code

DavidBakerEffendi and others added 2 commits August 26, 2026 14:47
Two things were wrong on the landing cards.

The bars were scaled against the widest card's denominator rather than their
own, so Ruby LSP's 9 of 9 rendered at 56% -- 9/16, the TypeScript server's
population -- and read as a 56% score. Each bar is now a share of its own
card's shared denominator. Cross-card bar lengths were never a valid
comparison anyway: rivals answer different populations, from 5 shared cases
for gopls to 16 for the TypeScript server, and the project's own guardrail is
that those denominators are not interchangeable.

The cards also came out at two different heights. Two causes, both measured
rather than guessed. The rival's name sat in a fixed 5.5rem label column, so
the longer ones wrapped to a second line; the two bar rows now share one grid,
whose label column sizes to the longer of the pair and never wraps. And
Starlight's markdown flow puts a top margin on every sibling after the first,
which left the first card a different height from the rest inside the grid --
the grid's gap owns that spacing now.

While in there, the per-card breakdown moves from a sentence to three fixed
slots, so it is the same height on every card and scannable down a column, and
the third label reads "Rival only" rather than repeating a server name that
the card title and its own bar row already carry, which was being truncated
mid-phrase.

Verified in a browser against the real published scores: all ten cards 206px
by 350px with no truncated labels, bars at 100%/22.2% for 9 of 9 against 2 of
9, and the checked-in placeholder still renders the no-result state. astro
check clean, links:check 22 routes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The three-slot breakdown at the foot of each card was misaligned: the first
column's label and number sat 16px above its neighbours, and its column was
16px taller. Same cause as the uneven card heights fixed a commit ago --
Starlight's markdown flow puts a top margin on every sibling after the first,
so columns two and three were pushed down while column one was not. Measured
as margins of 0px, 16px, 16px across the three. Every grid in this component
owns its spacing through gap, so the reset now covers the cards, the breakdown
columns, and the bar rows rather than only the cards.

Also drop "rival" for "reference". That was my coinage; the project already
has a word for this and uses it everywhere else. The generated result page's
own column heading is "Reference only", the registry calls these reference
profiles, and the evidence map speaks of reference-found counts. The landing
page now matches its own source tables, and it reads less like a scoreboard
against opponents and more like what it is -- a comparison against established
implementations, on cases both sides answer.

Fixes a swallowed space that rendered "in7 of 10 comparisons".

Verified in a browser against the real published scores: no card has a
misaligned breakdown row, all ten are 190px by 332px, labels read Both exact,
Bifrost only, Reference only, and no label truncates. Placeholder still renders
the no-result state; astro check clean, links:check 22 routes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@DavidBakerEffendi DavidBakerEffendi changed the title Scale rival bars to their own denominator and even out the cards Fix landing card bars, alignment, and terminology Aug 26, 2026
@DavidBakerEffendi
DavidBakerEffendi merged commit 822f6b6 into main Aug 26, 2026
5 checks passed
@DavidBakerEffendi
DavidBakerEffendi deleted the dave/landing-bar-scale-and-card-height branch August 26, 2026 13:23
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.

1 participant