Skip to content

feat(releases): rework overview and detail pages - #440

Merged
choffmann merged 5 commits into
mainfrom
feat/releases-rework
Aug 19, 2026
Merged

feat(releases): rework overview and detail pages#440
choffmann merged 5 commits into
mainfrom
feat/releases-rework

Conversation

@choffmann

Copy link
Copy Markdown
Member

No description provided.

Draw the timeline axis once per year group so it runs through without
gaps, and put the latest release on it instead of pulling it out. Cards
now show a change summary derived from the changelog frontmatter and a
badge for maintenance-only releases, replacing the sentence-length
highlight chips. Drops the grid overlay, blur blobs and pulsing dot from
the featured card, and the dead animationDelay from ReleaseCard.
Extract the markdown renderers, the changelog terminal and a new sticky
table of contents into components, and replace the two 170-line if-chains
for section icons and colours with a lookup table. Section headings now
use lucide icons in a single brand colour instead of emoji plus nine
unrelated palettes.

Fixes three rendering bugs on the way: internal note links went through
target=_blank and forced a full page reload, a single image per paragraph
put a figure inside a p element, and remark-gfm was missing so tables and
strikethrough never rendered. Release metadata now also sets description
and Open Graph tags.
The highlights of the last three releases had grown into full sentences
and up to six entries, which does not work in a chip layout. Cut them
down to at most four short labels, matching the earlier releases.
The onResolved subscriber scrolled to the top of the page on every
resolved navigation, including a change of the hash alone. In-page anchor
links therefore raced the browser's own scroll to the target, and which
one won depended on timing, so links appeared to work sometimes and jump
back to the top otherwise. Only reset the scroll when the path changes.
…hors

Four defects, all in the table of contents added with the detail page
rework:

Anchor ids were handed out from a counter advanced during render. React
renders a component more than once, so the counter ran ahead and ids
landed on the wrong headings or ran out entirely. Ids are now keyed by
the heading's line in the markdown source, which does not depend on how
often a heading renders.

The sticky navigation had no room to move because align-items: start kept
the aside at the height of its content instead of the row, and the main
element's overflow: hidden made it the scroll container. The aside now
stretches and main clips on the x axis only.

Anchors landed 272px down because scroll-mt-28 added to the scroll-padding
of 160px that the html element already carries. Dropped the extra margin.

The active entry was derived from a narrow observation band, which a jump
longer than the band skips. It is now derived from scroll position.
@choffmann choffmann self-assigned this Aug 19, 2026
@choffmann
choffmann merged commit c93c55b into main Aug 19, 2026
6 checks passed
@choffmann
choffmann deleted the feat/releases-rework branch August 19, 2026 08:19
@green-ecolution green-ecolution Bot mentioned this pull request Aug 19, 2026
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