Update BUI changelog
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
This commit is contained in:
committed by
Patrik Oldsberg
parent
f196d9cb5f
commit
46a5818c4d
@@ -21,21 +21,53 @@ export function Changelog() {
|
||||
.map(version => {
|
||||
const entries = groupedChangelog[version];
|
||||
|
||||
// Group entries by bump type
|
||||
const groupedByBump = entries.reduce((acc, entry) => {
|
||||
const bumpType = entry.type || 'other';
|
||||
if (!acc[bumpType]) {
|
||||
acc[bumpType] = [];
|
||||
}
|
||||
acc[bumpType].push(entry);
|
||||
return acc;
|
||||
}, {} as Record<string, typeof entries>);
|
||||
|
||||
// Define the order of bump types
|
||||
const bumpOrder = ['breaking', 'new', 'fix', 'other'];
|
||||
|
||||
const bumpSections = bumpOrder
|
||||
.filter(bumpType => groupedByBump[bumpType]?.length > 0)
|
||||
.map(bumpType => {
|
||||
const bumpEntries = groupedByBump[bumpType];
|
||||
let sectionTitle = 'Other Changes';
|
||||
if (bumpType === 'breaking') {
|
||||
sectionTitle = 'Breaking Changes';
|
||||
} else if (bumpType === 'new') {
|
||||
sectionTitle = 'New Features';
|
||||
} else if (bumpType === 'fix') {
|
||||
sectionTitle = 'Bug Fixes';
|
||||
}
|
||||
|
||||
return `### ${sectionTitle}
|
||||
|
||||
${bumpEntries
|
||||
.map(e => {
|
||||
const prs =
|
||||
e.prs.length > 0 &&
|
||||
e.prs
|
||||
.map(
|
||||
pr =>
|
||||
`[#${pr}](https://github.com/backstage/backstage/pull/${pr})`,
|
||||
)
|
||||
.join(', ');
|
||||
return `- ${e.description} ${prs}`;
|
||||
})
|
||||
.join('\n')}`;
|
||||
})
|
||||
.join('\n\n');
|
||||
|
||||
return `## Version ${version}
|
||||
|
||||
${entries
|
||||
.map(e => {
|
||||
const prs =
|
||||
e.prs.length > 0 &&
|
||||
e.prs
|
||||
.map(
|
||||
pr =>
|
||||
`[#${pr}](https://github.com/backstage/backstage/pull/${pr})`,
|
||||
)
|
||||
.join(', ');
|
||||
return `- ${e.description} ${prs}`;
|
||||
})
|
||||
.join('\n')}`;
|
||||
${bumpSections}`;
|
||||
})
|
||||
.join('\n');
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
.li {
|
||||
color: var(--secondary);
|
||||
margin-bottom: 0.5rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.a {
|
||||
|
||||
+208
-57
@@ -2,6 +2,7 @@ export type Component =
|
||||
| 'avatar'
|
||||
| 'box'
|
||||
| 'button'
|
||||
| 'button-link'
|
||||
| 'heading'
|
||||
| 'text'
|
||||
| 'icon-button'
|
||||
@@ -18,7 +19,13 @@ export type Component =
|
||||
| 'tooltip'
|
||||
| 'scrollarea'
|
||||
| 'flex'
|
||||
| 'switch';
|
||||
| 'switch'
|
||||
| 'grid'
|
||||
| 'searchfield'
|
||||
| 'radio'
|
||||
| 'card'
|
||||
| 'skeleton'
|
||||
| 'header';
|
||||
|
||||
export type Version = `${number}.${number}.${number}`;
|
||||
|
||||
@@ -26,51 +33,227 @@ export interface ChangelogProps {
|
||||
components: Component[];
|
||||
description: string;
|
||||
version: Version;
|
||||
platform: 'oss' | 'portal';
|
||||
prs: string[];
|
||||
type?: 'breaking' | 'new' | 'fix';
|
||||
}
|
||||
|
||||
export const changelog: ChangelogProps[] = [
|
||||
{
|
||||
components: ['tooltip'],
|
||||
version: '0.6.0',
|
||||
description: 'New `Tooltip` component.',
|
||||
prs: ['30461'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['card'],
|
||||
version: '0.6.0',
|
||||
description: 'New `Card` component.',
|
||||
prs: ['30467'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['header'],
|
||||
version: '0.6.0',
|
||||
description: 'New `Header` component.',
|
||||
prs: ['30410', '30459', '30493'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['button', 'button-link', 'icon-button'],
|
||||
version: '0.6.0',
|
||||
description: 'Improve `Button`, `ButtonIcon` and `ButtonLink` styling.',
|
||||
prs: ['30448'],
|
||||
type: 'fix',
|
||||
},
|
||||
{
|
||||
components: ['text', 'heading'],
|
||||
version: '0.6.0',
|
||||
description:
|
||||
'Update return types for `Heading` & `Text` components for React 19.',
|
||||
prs: ['30440'],
|
||||
type: 'fix',
|
||||
},
|
||||
{
|
||||
components: ['button', 'button-link', 'icon-button'],
|
||||
version: '0.6.0',
|
||||
description:
|
||||
'New `tertiary` variant to `Button`, `ButtonIcon` and `ButtonLink`.',
|
||||
prs: ['30453'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['skeleton'],
|
||||
version: '0.6.0',
|
||||
description: 'New `Skeleton` component.',
|
||||
prs: ['30466'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['icon-button'],
|
||||
version: '0.6.0',
|
||||
description: 'Rename `IconButton` to `ButtonIcon`.',
|
||||
prs: ['30297'],
|
||||
type: 'breaking',
|
||||
},
|
||||
{
|
||||
components: ['button-link'],
|
||||
version: '0.6.0',
|
||||
description:
|
||||
'New `ButtonLink`, which replaces the previous render prop pattern on `Button` and `IconButton`.',
|
||||
prs: ['30297'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['button', 'button-link', 'icon-button'],
|
||||
version: '0.6.0',
|
||||
description: 'Remove the `render` prop from all button-related components.',
|
||||
prs: ['30297'],
|
||||
type: 'breaking',
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.6.0',
|
||||
description:
|
||||
'We are consolidating all css files into a single styles.css in Canon.',
|
||||
prs: ['30325'],
|
||||
type: 'fix',
|
||||
},
|
||||
{
|
||||
components: ['searchfield'],
|
||||
version: '0.6.0',
|
||||
description: 'New `SearchField` component.',
|
||||
prs: ['30357'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['radio'],
|
||||
version: '0.6.0',
|
||||
description: 'New `RadioGroup` + `Radio` component.',
|
||||
prs: ['30327'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['textfield'],
|
||||
version: '0.6.0',
|
||||
description: 'Added placeholder prop back to `TextField` component.',
|
||||
prs: ['30286'],
|
||||
type: 'fix',
|
||||
},
|
||||
{
|
||||
components: ['textfield'],
|
||||
version: '0.5.0',
|
||||
description: '`TextField` in Canon now has multiple label sizes.',
|
||||
prs: ['30249'],
|
||||
type: 'breaking',
|
||||
},
|
||||
{
|
||||
components: ['textfield'],
|
||||
version: '0.5.0',
|
||||
description:
|
||||
'`TextField` can now hide label and description while keeping them available for screen readers.',
|
||||
prs: ['30249'],
|
||||
type: 'breaking',
|
||||
},
|
||||
{
|
||||
components: ['textfield'],
|
||||
version: '0.5.0',
|
||||
description:
|
||||
'We are removing the `render` prop in favour of the `as` prop on `Heading` and `Text`.',
|
||||
prs: ['30291'],
|
||||
type: 'breaking',
|
||||
},
|
||||
{
|
||||
components: ['textfield'],
|
||||
version: '0.5.0',
|
||||
description: 'Move `TextField` component to use react Aria under the hood.',
|
||||
prs: ['30286'],
|
||||
type: 'breaking',
|
||||
},
|
||||
{
|
||||
components: ['button', 'button-link'],
|
||||
version: '0.5.0',
|
||||
description:
|
||||
'Added a render prop to the `Button` component to use it as a link.',
|
||||
prs: ['30165'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['heading'],
|
||||
version: '0.5.0',
|
||||
description: 'Fix styling for the title4 prop on the Heading component.',
|
||||
prs: ['30167'],
|
||||
type: 'fix',
|
||||
},
|
||||
{
|
||||
components: ['flex'],
|
||||
version: '0.5.0',
|
||||
description:
|
||||
'Add `min-width: 0;` by default on Flex components to support truncated text.',
|
||||
prs: ['30168'],
|
||||
type: 'fix',
|
||||
},
|
||||
{
|
||||
components: ['button', 'button-link', 'icon-button'],
|
||||
version: '0.5.0',
|
||||
description:
|
||||
'`Button`, `ButtonLink`, `ButtonIcon` now default to size `small` instead of `medium`',
|
||||
prs: ['30085', '30097'],
|
||||
type: 'breaking',
|
||||
},
|
||||
{
|
||||
components: ['grid'],
|
||||
version: '0.5.0',
|
||||
description: 'Rename Grid component to `<Grid.Root />`',
|
||||
prs: ['30013'],
|
||||
type: 'breaking',
|
||||
},
|
||||
{
|
||||
components: ['flex', 'container', 'grid', 'box'],
|
||||
version: '0.5.0',
|
||||
description: 'Fixes spacing props on layout components',
|
||||
prs: ['30013'],
|
||||
type: 'fix',
|
||||
},
|
||||
{
|
||||
components: ['switch'],
|
||||
version: '0.5.0',
|
||||
description: '✨ Add new `Switch` component',
|
||||
platform: 'portal',
|
||||
description: 'New `Switch` component',
|
||||
prs: ['30251'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['tabs'],
|
||||
version: '0.4.0',
|
||||
description: '✨ Add new `Tabs` component',
|
||||
platform: 'portal',
|
||||
description: 'New `Tabs` component',
|
||||
prs: ['29996'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['text', 'heading'],
|
||||
version: '0.4.0',
|
||||
description: '✨ Add `truncate` prop to `Text` and `Heading`',
|
||||
platform: 'portal',
|
||||
description: 'Add `truncate` prop to `Text` and `Heading`',
|
||||
prs: ['29988'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['menu'],
|
||||
version: '0.4.0',
|
||||
description: '✨ Add combobox option to `Menu`',
|
||||
platform: 'portal',
|
||||
description: 'Add combobox option to `Menu`',
|
||||
prs: ['29986'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['textfield'],
|
||||
version: '0.4.0',
|
||||
description: '✨ Add icon prop on `TextField`',
|
||||
platform: 'portal',
|
||||
description: 'Add icon prop on `TextField`',
|
||||
prs: ['29820'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['button', 'icon-button'],
|
||||
version: '0.4.0',
|
||||
description: 'Improve icon props on `Button` and `IconButton`',
|
||||
platform: 'portal',
|
||||
prs: ['29667'],
|
||||
},
|
||||
{
|
||||
@@ -78,309 +261,277 @@ export const changelog: ChangelogProps[] = [
|
||||
version: '0.4.0',
|
||||
description:
|
||||
'Improve the way we treat custom render on `Text` and `Heading`',
|
||||
platform: 'portal',
|
||||
prs: ['29989'],
|
||||
},
|
||||
{
|
||||
components: ['menu'],
|
||||
version: '0.4.0',
|
||||
description: 'Improve `Menu` styles',
|
||||
platform: 'portal',
|
||||
prs: ['29986'],
|
||||
},
|
||||
{
|
||||
components: ['textfield'],
|
||||
version: '0.4.0',
|
||||
description: 'Improve `TextField` styles',
|
||||
platform: 'portal',
|
||||
prs: ['29974'],
|
||||
},
|
||||
{
|
||||
components: ['textfield'],
|
||||
version: '0.4.0',
|
||||
description: 'Improve clear button on `TextField`',
|
||||
platform: 'portal',
|
||||
prs: ['29878'],
|
||||
},
|
||||
{
|
||||
components: ['flex'],
|
||||
version: '0.4.0',
|
||||
description: 'Fix spacing props on all layout components',
|
||||
platform: 'portal',
|
||||
prs: ['30013'],
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.4.0',
|
||||
description: 'Fix - Pin Base UI version',
|
||||
platform: 'portal',
|
||||
prs: ['29782'],
|
||||
},
|
||||
{
|
||||
components: ['select'],
|
||||
version: '0.4.0',
|
||||
description: 'Fix - Clicking `Select` label moves focus to trigger',
|
||||
platform: 'portal',
|
||||
prs: ['29755'],
|
||||
},
|
||||
{
|
||||
components: ['datatable'],
|
||||
version: '0.4.0',
|
||||
description: 'Fix `DataTable.Pagination` count issue',
|
||||
platform: 'portal',
|
||||
prs: ['29688'],
|
||||
},
|
||||
{
|
||||
components: ['datatable'],
|
||||
version: '0.3.0',
|
||||
description: 'Add `DataTable` component',
|
||||
platform: 'portal',
|
||||
prs: ['29484', '29603'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['select'],
|
||||
version: '0.3.0',
|
||||
description: 'Add `Select` component',
|
||||
platform: 'portal',
|
||||
prs: ['29440'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['avatar'],
|
||||
version: '0.3.0',
|
||||
description: 'Add `Avatar` component',
|
||||
platform: 'portal',
|
||||
prs: ['29594'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['collapsible'],
|
||||
version: '0.3.0',
|
||||
description: 'Add `Collapsible` component',
|
||||
platform: 'portal',
|
||||
prs: ['29617'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['textfield'],
|
||||
version: '0.3.0',
|
||||
description: 'Add `TextField` component instead of `Field` + `Input`',
|
||||
platform: 'portal',
|
||||
prs: ['29364'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['datatable'],
|
||||
version: '0.3.0',
|
||||
description: 'Add `TableCellProfile`',
|
||||
platform: 'portal',
|
||||
prs: ['29600'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.3.0',
|
||||
description: 'Add breakpoint hooks - `up()` and `down()`',
|
||||
platform: 'portal',
|
||||
prs: ['29564'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.3.0',
|
||||
description: 'Add gray scale css tokens',
|
||||
platform: 'portal',
|
||||
prs: ['29543'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.3.0',
|
||||
description:
|
||||
'Update CSS styling API using `[data-___]` instead of class names for props',
|
||||
platform: 'portal',
|
||||
prs: ['29560'],
|
||||
},
|
||||
{
|
||||
components: ['checkbox'],
|
||||
version: '0.3.0',
|
||||
description: 'Update `Checkbox` dark mode',
|
||||
platform: 'portal',
|
||||
prs: ['29544'],
|
||||
},
|
||||
{
|
||||
components: ['container'],
|
||||
version: '0.3.0',
|
||||
description: 'Update `Container` styles',
|
||||
platform: 'portal',
|
||||
prs: ['29475'],
|
||||
},
|
||||
{
|
||||
components: ['menu'],
|
||||
version: '0.3.0',
|
||||
description: 'Update `Menu` styles',
|
||||
platform: 'portal',
|
||||
prs: ['29351'],
|
||||
},
|
||||
{
|
||||
components: ['select'],
|
||||
version: '0.3.0',
|
||||
description: 'Fix `Select` styles on small sizes + with long option names',
|
||||
platform: 'portal',
|
||||
prs: ['29545'],
|
||||
},
|
||||
{
|
||||
components: ['link'],
|
||||
version: '0.3.0',
|
||||
description: 'Fix render prop on `Link`',
|
||||
platform: 'portal',
|
||||
prs: ['29247'],
|
||||
},
|
||||
{
|
||||
components: ['textfield', 'select'],
|
||||
version: '0.3.0',
|
||||
description: 'Remove `Field` from `TextField` + `Select`',
|
||||
platform: 'portal',
|
||||
prs: ['29482'],
|
||||
},
|
||||
{
|
||||
components: ['text', 'heading'],
|
||||
version: '0.3.0',
|
||||
description: 'Update `textDecoration` to `none` on `Text` / `Heading`',
|
||||
platform: 'portal',
|
||||
prs: ['29357'],
|
||||
},
|
||||
{
|
||||
components: ['text', 'heading'],
|
||||
version: '0.3.0',
|
||||
description: 'Update `textDecoration` to `none` on `Text` / `Heading`',
|
||||
platform: 'portal',
|
||||
prs: ['29357'],
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.3.0',
|
||||
description: 'Docs - Use stories from Storybook for all examples in Nextjs',
|
||||
platform: 'portal',
|
||||
prs: ['29306'],
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.3.0',
|
||||
description: 'Docs - Add release page (this one 🤗)',
|
||||
platform: 'portal',
|
||||
prs: ['29461'],
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.3.0',
|
||||
description: 'Docs - Add docs for Menu, Link',
|
||||
platform: 'portal',
|
||||
prs: ['29576'],
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.3.0',
|
||||
description: 'Fix CSS watch mode',
|
||||
platform: 'portal',
|
||||
prs: ['29352'],
|
||||
},
|
||||
{
|
||||
components: ['menu'],
|
||||
version: '0.2.0',
|
||||
description: 'New `Menu` component',
|
||||
platform: 'portal',
|
||||
prs: ['29151'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['icon-button'],
|
||||
version: '0.2.0',
|
||||
description: 'New `IconButton` component',
|
||||
platform: 'portal',
|
||||
prs: ['29239'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['scrollarea'],
|
||||
version: '0.2.0',
|
||||
description: 'New `ScrollArea` component',
|
||||
platform: 'portal',
|
||||
prs: ['29240'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: ['button', 'checkbox'],
|
||||
version: '0.2.0',
|
||||
description: 'Improve `Button` & `Checkbox` styles',
|
||||
platform: 'portal',
|
||||
prs: ['29127', '28789'],
|
||||
},
|
||||
{
|
||||
components: ['text'],
|
||||
version: '0.2.0',
|
||||
description: 'Improve `Text` styles',
|
||||
platform: 'portal',
|
||||
prs: ['29200'],
|
||||
},
|
||||
{
|
||||
components: ['icon'],
|
||||
version: '0.2.0',
|
||||
description: 'Renamed `CanonProvider` to `IconProvider`',
|
||||
platform: 'portal',
|
||||
prs: ['29002'],
|
||||
},
|
||||
{
|
||||
components: ['icon'],
|
||||
version: '0.2.0',
|
||||
description: 'Added about 40+ new icons',
|
||||
platform: 'portal',
|
||||
prs: ['29264'],
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.2.0',
|
||||
description: 'Simplified styling into a unique styles.css file',
|
||||
platform: 'portal',
|
||||
prs: ['29199'],
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.2.0',
|
||||
description: 'Added Canon styles to Backstage',
|
||||
platform: 'portal',
|
||||
prs: ['29137'],
|
||||
type: 'new',
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.2.0',
|
||||
description: 'Update global CSS tokens',
|
||||
platform: 'portal',
|
||||
prs: ['28804'],
|
||||
},
|
||||
{
|
||||
components: ['flex'],
|
||||
version: '0.2.0',
|
||||
description: 'Merge Stack + Inline into Flex',
|
||||
platform: 'portal',
|
||||
prs: ['28634'],
|
||||
},
|
||||
{
|
||||
components: ['button'],
|
||||
version: '0.2.0',
|
||||
description: 'Improve `Button` types',
|
||||
platform: 'portal',
|
||||
prs: ['29205'],
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.2.0',
|
||||
description: 'Move font weight and family back to each components',
|
||||
platform: 'portal',
|
||||
prs: ['28972'],
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.2.0',
|
||||
description: 'Fix custom values in spacing props',
|
||||
platform: 'portal',
|
||||
prs: ['28770'],
|
||||
},
|
||||
{
|
||||
components: [],
|
||||
version: '0.2.0',
|
||||
description: 'Multiple updates on the Canon Docs site',
|
||||
platform: 'portal',
|
||||
prs: ['28760'],
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user