---
id: portfolio.ds.project-changelog-list
name: "Project Changelog List"
type: pattern
status: active
relations: [{"type":"composes","target":"portfolio.ds.project-changelog-entry"},{"type":"related_to","target":"portfolio.ds.project-changelog-page"}]
sources: ["apps/portfolio-site/src/design-system/docs/project-changelog-list.astro","apps/portfolio-site/src/lib/designSystemRegistry.ts","packages/design-system/src/components/ProjectChangelogEntry.astro","packages/design-system/src/components/ProjectChangelogList.astro"]
catalog: ["apps/portfolio-site/src/design-system/docs/project-changelog-list.astro"]
previews: ["apps/portfolio-site/src/design-system/docs/project-changelog-list.astro"]
---
# Project Changelog List

## Purpose

Render a simple latest-first sequence of public Project releases.

## Contract

- Receives already validated and latest-first release data.
- Composes one `Project Changelog Entry` per release.
- Preserves release order with semantic ordered-list markup.
- Uses no cards, filters, categories, comparison controls, or article decoration.
- Owns the list boundary but not outer page spacing or publication rules.

## Props

| Prop | Values | Purpose |
| --- | --- | --- |
| `entries` | changelog entry[] | Latest-first release sequence. |
| `ariaLabel` | string | Localized name for the release collection. |
| `labels` | object | Labels passed unchanged to every entry. |

## Use

- Inside `Project Changelog Page` with approved latest-first release data.

## Do Not Use

- As a general article list, release comparison tool, or roadmap.

## Accessibility

- Give the release collection a localized accessible name.
- Preserve ordered-list semantics for releases and unordered-list semantics for changes.

## Verification

- Verify entries with different change counts remain aligned and readable.
- Run `scripts/design-system-graph --check --no-write`.
