Skip to content

feat(changelogs): prototype changelog card UI with supply chain and c…#682

Merged
castrojo merged 4 commits intoprojectbluefin:mainfrom
castrojo:feature/changelog-card-ui
Mar 31, 2026
Merged

feat(changelogs): prototype changelog card UI with supply chain and c…#682
castrojo merged 4 commits intoprojectbluefin:mainfrom
castrojo:feature/changelog-card-ui

Conversation

@castrojo
Copy link
Copy Markdown
Contributor

…ontributor avatars

  • FeedItems: add release summary stats, Heads Up major version bumps block, Supply Chain section (always rendered), contributor avatar circles, card background dinosaur artwork (Achillobator for LTS, Bluefin for stable)
  • CommunityFeeds: replace verbose intro with concise overviewPanel, remove Community Discussions/Announcements columns
  • Add Achillobator and Bluefin character webp assets for card backgrounds
  • Justfile: add just dev (fast hot-reload, skips fetch-data) as default rule; just serve still runs full fetch-data + start
  • docs/reports.md: add supply chain notes section
  • AGENTS.md: minor branch naming wording fix

Assisted-by: Claude Sonnet 4.6 via GitHub Copilot

…ontributor avatars

- FeedItems: add release summary stats, Heads Up major version bumps block,
  Supply Chain section (always rendered), contributor avatar circles,
  card background dinosaur artwork (Achillobator for LTS, Bluefin for stable)
- CommunityFeeds: replace verbose intro with concise overviewPanel,
  remove Community Discussions/Announcements columns
- Add Achillobator and Bluefin character webp assets for card backgrounds
- Justfile: add `just dev` (fast hot-reload, skips fetch-data) as default rule;
  `just serve` still runs full fetch-data + start
- docs/reports.md: add supply chain notes section
- AGENTS.md: minor branch naming wording fix

Assisted-by: Claude Sonnet 4.6 via GitHub Copilot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

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

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 introduces a significant UI/UX overhaul for the Bluefin changelogs and feeds. Key enhancements include the addition of release summaries, contributor avatars, major version bump highlights, and supply chain integrity signals (SBOM/attestations) directly within the feed cards. The documentation and workflow guides have also been updated to reflect new branch naming conventions and supply chain features. Feedback was provided regarding potential performance issues caused by multiple regex-based scans of large HTML descriptions within the render loop, suggesting a more efficient single-pass extraction or memoization strategy.

Comment thread src/components/FeedItems.tsx Outdated
Comment on lines +715 to +734
const commits =
isReleaseFeed(item._feedId) && itemDescription
? extractCommits(itemDescription)
: [];
const supplyChainHighlights = extractSupplyChainHighlights(commits);
const displayTitle = formatReleaseTitle(item.title, item._feedId);
const supplyChainLinks = getSupplyChainLinks(displayTitle);
const majorVersionBumps =
isReleaseFeed(item._feedId) && itemDescription
? extractMajorVersionBumps(itemDescription)
: [];
const contributors = getReleaseContributors(commits);
const visibleContributors = contributors.slice(0, 8);
const overflowContributors = Math.max(contributors.length - 8, 0);
const releaseSummary = extractReleaseSummary(
itemDescription || "",
commits,
supplyChainHighlights,
majorVersionBumps,
);
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.

high

The itemDescription is being scanned multiple times using expensive regular expressions (extractCommits, extractMajorVersionBumps, and extractReleaseSummary which calls countMatches three times). Since changelog descriptions can be quite large, performing five full-string scans per item within the render loop can lead to significant performance degradation, especially when rendering up to 20 items on mobile devices.

Consider refactoring these extraction functions to share a single pass over the HTML content or memoizing the results if the component re-renders frequently.

castrojo and others added 3 commits March 30, 2026 19:59
Removed the overview lead paragraph from the Community Feeds component.
Five regex scans per item (extractCommits, extractMajorVersionBumps,
three countMatches inside extractReleaseSummary) were running on every
render inside the map loop. Pre-compute all derived data with useMemo
keyed on item IDs so scans run once per feed update rather than every
render cycle. Addresses Gemini code review feedback on PR 682.

Assisted-by: Claude Sonnet 4.6 via GitHub Copilot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@castrojo castrojo merged commit fe9fc52 into projectbluefin:main Mar 31, 2026
2 checks passed
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