GitHub Viewer
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.9.7] - 2026-08-17
### Fixed
- Fix tree view toggle icon to use `rhMicrons.caretRight` instead of `rhMicrons.caretDown`, matching PatternFly's right-pointing chevron that rotates on expand
## [0.9.6] - 2026-08-17
### Added
- Add `PageHeader` component with icon, header, description, and label support
- Add convenience methods to accept `Alert` directly in `Form`, wrapping it in a `FormAlert` automatically
### Changed
- Add class-level Javadoc to all sub-component classes and fix section structure, constructor visibility, and formatting across all 51 components
- Migrate J2CL annotation processors from `org.kie.j2cl.tools` to `org.treblereel.j2cl.processors`
- Reduce J2CL Closure Compiler warnings from 284 to 38 by fixing Popper externs and using `JsPropertyMap` for `SVGElement.dataset` access
### Fixed
- Add missing elemento-flow dependency to apidoc module
### Security
- Fix Dependabot security alerts by adding pnpm overrides for vulnerable transitive dependencies
- Clean up stale pnpm overrides, GHSA ignores, and release age excludes
### Upgrades
- Upgrade Elemento from 2.5.4 to 2.5.6
- Upgrade PatternFly from 6.6.0 to 6.6.1
- Upgrade JUnit from 6.1.1 to 6.1.3
## [0.9.5] - 2026-07-11
### Fixed
- Fix popover close button propagating click events, which could trigger unintended parent handlers
## [0.9.4] - 2026-07-08
### Added
- Add `HTMLContainerBuilder` factory methods to `ExpandableSectionToggle` for custom wrapper elements
### Fixed
- Fix `ExpandableSection` to only apply `expandTop` modifier when not truncating
- Fix `FormFieldGroup` to use expandable parameter instead of hardcoded `false`
- Fix duplicate CSS class on `ExpandableSectionToggle` button
- Fix toggle icons across expandable components to use `rhMicrons.caretDown` instead of `rhUi.caretRight`, matching PatternFly's `RhMicronsCaretDownIcon` (alert, card, data list, expandable section, form field group, jump links, overflow tab, tabs toggle)
- Fix close icons across all components to use `rhMicrons.close` instead of `rhUi.close`, matching PatternFly's `RhMicronsCloseIcon` (alert, drawer, label, label group, modal, notification drawer, popover, search input, tab, wizard)
- Fix breadcrumb divider icon to use `rhMicrons.caretRight` instead of `rhUi.caretRight`
### Upgrades
- Upgrade PatternFly from 6.5.2 to 6.6.0
## [0.9.3] - 2026-07-05
### Added
- Add `audit:fix` script to automate suppression of security advisories from `@patternfly/documentation-framework` transitive dependencies
### Changed
- Replace supplier fields with abstract methods in `Severity`, `ValidationStatus`, `ContentType`, and `ProgressStepVariant` enums
- Change `PredefinedIcon.predefinedIcon(String)` to return a circle-question fallback icon with `pf-m-unknown` styling instead of throwing `IllegalArgumentException` for unknown icon names
- Migrate renamed FontAwesome 6 icons and update SVG paths to latest upstream versions
### Fixed
- Resolve pf-lint violations across 51 components (Javadoc, section order, naming conventions)
### Security
- Add pnpm overrides for vulnerable transitive dependencies (`dompurify`, `js-yaml`, `@babel/core`, `webpack-dev-server`) pulled in by `@patternfly/documentation-framework`
### Upgrades
- Upgrade Elemento from 2.5.2 to 2.5.4
- Upgrade J2CL tools BOM from 0.5 to 0.6
- Upgrade GWT from 2.13.0 to 2.13.1
- Upgrade J2CL Maven plugin from 0.23.7 to 0.23.8
## [0.9.2] - 2026-06-10
### Added
- Add finder path restoration with `Finder.select(String)` and `Finder.select(FinderPath)` for async column loading and programmatic path selection
- Add `Finder.activePath()` method returning the selection path up to the currently active column, useful for URL synchronisation during arrow-left keyboard navigation
### Changed
- Change `Finder.select(FinderPath)` to fire select and preview events only for the deepest resolved item instead of every intermediate segment during path restoration
- Fire `SelectHandler` on ArrowLeft keyboard navigation so consumers are notified when focus moves back to a previously selected item
- Upgrade Elemento from 2.4.11 to 2.5.2
### Fixed
- Improve finder path selection resilience by stopping on missing columns or items instead of continuing with stale state
- Fix code review findings across `org.patternfly.component` package
- Fix markdown directory tree copy in publish-docs workflow
## [0.9.1] - 2026-06-08
### Added
- Add manifest-driven markdown documentation system with nested directory structure, Node-based remark/rehype pipeline with Shiki highlighting, and showcase pages for API design, icons, tokens, building, CI/CD, and releasing
- Add Navigation `docked()` modifier and `ariaLabel()` on NavigationGroup and NavigationItem
- Add showcase demos for button, card, drawer, tabs, banner, panel, progress, breadcrumb, truncate, and navigation
- Add template component package (`org.patternfly.component.template`) as a blueprint for new components
- Add project skills: `/pf-lint`, `/pf-update`, `/pf-status`, `/pf-dev-env`
- Add `CardSubtitle` sub-component with `addSubtitle()` on `CardTitle`
- Add `Secondary` modifier interface to Card
- Add animated button variants: `hamburger()`, `favorite()`/`favorited()`, and `settings()` with SVG-based animations
- Add `clicked()`, `ariaExpanded()`, `ariaDisabled()`, and `ariaLabel()` methods to Button
- Add build-time validation for inline JavaDoc code snippets via `snippet-tests` module
- Add `secondary()`, `pill()`, and `scrollableAutoHeight()` methods to Panel
### Changed
- Migrate showcase from Java-generated pages to manifest-driven Node markdown pipeline with YAML frontmatter, Shiki highlighting, and `_meta.yaml` navigation groups, replacing `doc.java`, boilerplate page classes, highlight.js, and link-list index pages
- Refactor navigation internals: wrap expandable group text in `span.pf-v6-c-nav__link-text`, switch to `ElementTextDelegate`, lazy text element creation
- Move formatting, linting, and enforcer plugins to opt-in Maven profiles (`format`, `check`)
- Import PatternFly.org styles from npm package instead of stale local copies
- Replace JBang code generation with Node scripts (`version.mjs`, `code.mjs`) using maven-frontend-plugin
- Slim down README from 385 to ~40 lines, linking to showcase for detailed documentation
- Upgrade pnpm from 11.3.0 to 11.5.2
- Upgrade Jackson from 2.x to 3.x in test dependencies
### Fixed
- Fix `Button.iconAndText()` dropping `pf-m-start`/`pf-m-end` icon position modifiers due to `removeIcon()` cycle
- Fix `PageSidebar` missing `sidebar-main` wrapper for glass contrast mode
- Fix accordion alignment: correct toggle icon, wrap button in `
`/``, add `pf-m-toggle-start`, `pf-m-bordered`, and `role="region"`
- Fix navigation alignment: correct expandable group icon, add `inert` on collapsed subnav, add `id`/`aria-labelledby` to sections, remove extra dividers
- Fix icon usage across components: switch button close/copy and scroll button icons to correct rhMicrons/rhUi sets
- Fix component conventions: add missing Javadoc on ~110 sub-components, fix duplicate `SUB_COMPONENT_ID` values and `FormSelectOption` constructor visibility
- Fix `-Dquickly` not skipping J2CL compilation when combined with `-P showcase`
- Fix charts/npm lockfile out of sync with package.json
- Fix stale markdown version bump path in `versionBump.sh`
- Add `aria-label` attributes to icon-only buttons across showcase demos
- Add Closure Compiler externs for markdown JsInterop types
## [0.9.0] - 2026-05-28
### Added
- Add `/pf-align` skill for implementing missing variations and fixing DOM/CSS differences identified by `/pf-compare`
- Add `/pf-compare` skill for comparing PatternFly components against their PatternFly Java implementations using Chrome DevTools MCP browser automation
- Add Red Hat brand icon sets (rhUi, rhMicrons, rhStandard) with 1,136 new icons alongside existing FontAwesome icons
- Add `rhIcons.mjs` adapter script for RH icon generation with multi-path SVG flattening
- Add dynamic lookup support for `rhUi`, `rhMicrons`, and `rhStandard` prefixes in `PredefinedIcon.predefinedIcon(String)`
- Add Project Felt theme support with `Theme` enum and `ThemeManager`
- Add Glass contrast mode with `Contrast.GLASS` mapping to `pf-v6-theme-glass`
- Add `Glass` and `NoPlainOnGlass` modifier interfaces to `Modifiers`
- Add `glass` and `noPlainOnGlass` CSS constants to `Classes`
- Add `Circle` and `Pill` modifier interfaces to `Modifiers` with `circle` and `pill` CSS constants
- Add `Circle` modifier to Button
- Add `Vertical` modifier to ActionList
- Add `Plain` modifier to Table, DataList, DrawerSection, Wizard
- Add `NoPlainOnGlass` modifier to DataList
- Add `Pill` modifier to Drawer, Banner
- Add `Glass` and `NoPlainOnGlass` modifiers to DrawerPanel
- Add `Plain` and `NoPlainOnGlass` modifiers to Accordion
- Add `FullWidth` modifier to ToggleGroup
- Add `Glass` modifier to Card
- Add `Plain` modifier to NotificationBadge
- Add `ariaDescribedBy(String)` to Radio and Checkbox
- Add `hideStatusIcon()` to Progress
- Add `ariaLabel(String)` to ExpandableSection
- Add `Glass` modifier to PageSection for sticky glass sections
- Add `add()` variant to Label for `.pf-m-add` modifier
- Add `form()` styling to MenuToggle for form context usage
- Add `nav()` variant to Tabs for navigation-style tabs
- Add `tabListAriaLabel(String)` to Tabs for inner tab list accessibility
- Add `moreText(String)`, `lessText(String)`, `hideIcon()`, `showIcon()`, and `icon(Element)` to ExpandableSectionToggle
- Add `stickyHeader()` to Table with `stickyHeader` CSS constant
- Add `heights(String)` and `heights(Breakpoints)` to Toolbar for responsive height support
### Changed
- Migrate showcase and charts build tooling from Parcel to Vite, removing LightningCSS workarounds for `@container anchored()` rules and relative `url()` in CSS custom properties
- Standardize pnpm 11.3.0 as the package manager across all npm packages, replacing a dev pre-release version in charts, core, and finder
- Split `IconSpecs` into separate top-level enum classes per icon set with automatic chunking (configurable via `node generate.mjs `) to fix J2CL static initializer exceeding the 64KB bytecode limit
- Improve `/pf-compare` and `/pf-align` skills with progressive disclosure, extracted JS scripts and templates to references/, added example reports, enriched trigger phrases, and standardized tool naming
- Replace FontAwesome icons with Red Hat brand icons across all components (close, carets, status icons, utility icons)
- Migrate showcase icon references from FontAwesome 5 to Red Hat brand icon sets (rhUi)
- Update `Severity` and `ValidationStatus` enums to use rhUi status icons
- Update `@patternfly/react-icons` from 6.2.2 to 6.5.1 and `@patternfly/patternfly` from 6.2.3 to 6.5.2
- Update `@patternfly/react-tokens` from 6.2.2 to 6.5.1 adding 58 new design tokens (1,014 → 1,072)
- Update PatternFly CSS version from 6.4.0 to 6.5.2 in pom.xml
- Upgrade FontAwesome icons from 5.x to 7.2.0, adding 533 new icons (2,888 → 3,421 total)
- Update showcase dev dependencies (basic-ftp, puppeteer, wait-on, pnpm)
- Refactor `ThemeManager` to support multi-class value mapping via `Function`
- Rebuild `ThemeSelector` with three toggle groups (Theme, Color scheme, Contrast mode) matching PatternFly website
- Expand `Contrast` enum from 3 values (System/On/Off) to 4 values (System/Default/High contrast/Glass)
- Graduate high contrast mode from beta to full release
### Fixed
- Fix Progress danger status icon using wrong icon (`closeCircle` → `errorFill`)
- Fix Drawer panel missing `inert` attribute when collapsed for accessibility
- Fix Form required asterisk orphaning by keeping asterisk inside label text span
- Fix Vite production build warnings by loading J2CL script dynamically and raising chunk size limit
## [0.8.3] - 2026-05-20
### Fixed
- Fix `Tuples.tuples()` calls in showcase components to use explicit `tuple()` pairs
## [0.8.2] - 2026-05-20
### Fixed
- Fix release workflow
## [0.8.1] - 2026-05-20
### Changed
- Use OIDC to publish NPM packages in release workflow
## [0.8.0] - 2026-05-20
### Added
- Add `OuiaSupport` interface in `core` module for custom components to participate in OUIA without extending PatternFly Java base classes; `BaseComponent`, `SubComponent`, `ComponentDelegate`, `BaseLayout`, and `BaseChart` now implement this interface
- Replace direct `Ouia` static method calls with `OuiaSupport` default methods in `Button`, `Icon`, `Skeleton`, `Drawer`, `PageSidebar`, and `ExpandableSection`
- Add Javadoc to all public methods in `Ouia`
## [0.7.8] - 2026-05-19
### Added
- Add OUIA support to all sub-components: every sub-component now renders `data-ouia-component-type` (e.g., `PF6/Component/Card/CardHeader`) and `data-ouia-safe="true"`, with an `ouiaId(String)` method for setting `data-ouia-component-id`
## [0.7.7] - 2026-05-19
### Changed
- Remove `since` and `forRemoval` attributes from `@Deprecated` annotations on Popper.js-based classes and components for J2CL compatibility (deprecation info remains in Javadoc `@deprecated` tags)
## [0.7.6] - 2026-05-19
### Added
- Add `ouiaSafe(HTMLElement, boolean)`, `ouiaSafe(SVGElement, boolean)`, and `ouiaTransition(HTMLElement)` methods to `Ouia` for dynamic `data-ouia-safe` state tracking
### Changed
- Change `Spinner` and `Skeleton` to always set `data-ouia-safe="false"` (loading/placeholder components are never safe)
- Change `Button` and `Icon` to toggle `data-ouia-safe` based on progress state
- Change `Expandable` static helpers and self-managed expandable components (`Drawer`, `ExpandableSection`, `PageSidebar`) to set `data-ouia-safe="false"` during transitions and restore it via `transitionend` with a 300ms fallback timeout
## [0.7.5] - 2026-05-19
### Added
- Add `ouiaId(String)` method to `BaseComponent`, `BaseComponentSVG`, and `ComponentDelegate` for setting stable, deterministic OUIA component IDs
### Changed
- Add `since` and `forRemoval` attributes to all `@Deprecated` annotations on Popper.js-based classes and components
- Improve null safety, reduce code duplication, and address code review findings in core module
### Fixed
- Fix OUIA attribute names to match the spec (`data-ouia-component-type` and `data-ouia-component-id` instead of `data-ouia-type` and `data-ouia-id`)
- Fix OUIA component ID no longer set to the shared `ComponentType.id` — `data-ouia-component-id` is now only set when explicitly provided via `ouiaId(String)`
- Fix format string bug, variable assignment bug, and null guard in core module
## [0.7.4] - 2026-05-10
### Added
- Add `Menu.load()` method to load async menu items
### Changed
- Change `Menu.reload()` return type from `void` to `Promise` for async support
- Bump `j2cl-maven-plugin` from 0.23.6 to 0.23.7
- Bump `jackson-databind` from 2.21.2 to 2.21.3
- Bump `jboss-parent` from 52 to 53
### Fixed
- Fix NPM vulnerabilities
- Fix Javadoc format issues
- Fix showcase CI jobs
## [0.7.3] - 2026-04-02
### Removed
- Remove the `@Deprecated` annotation from the `org.patternfly.popper` package (J2CL doesn't like annotations on a package).
## [0.7.2] - 2026-04-02
> [!WARNING]
> Not an official release. Please don't use!
## [0.7.1] - 2026-04-02
### Fixed
- Fix vulnerabilities in the NPM dependencies of the charts module.
## [0.7.0] - 2026-04-02
> [!IMPORTANT]
> This release deprecates components based on PopperJS and adds alternatives using the [popover API](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API) and [CSS anchor positioning](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Anchor_positioning). The PopperJS based components have been renamed to `PopperJS` and reimplemented `` components are the replacements. This might break existing code!
- `org.patternfly.component.popover.PopperPopover` → `org.patternfly.component.popover.Popover`
- `org.patternfly.component.tooltip.PopperTooltip` → `org.patternfly.component.tooltip.Tooltip`
- `org.patternfly.component.menu.PopperDropdown` → `org.patternfly.component.menu.Dropdown`
- `org.patternfly.component.menu.PopperMultiSelect` → `org.patternfly.component.menu.MultiSelect`
- `org.patternfly.component.menu.PopperMultiTypeahead` → `org.patternfly.component.menu.MultiTypeahead`
- `org.patternfly.component.menu.PopperSingleSelect` → `org.patternfly.component.menu.SingleSelect`
- `org.patternfly.component.menu.PopperSingleTypeahead` → `org.patternfly.component.menu.SingleTypeahead`
If the browser does not support [CSS anchor positioning](https://caniuse.com/css-anchor-positioning) or [anchor-based container queries](https://caniuse.com/wf-container-anchor-position-queries), the placement of the popover is calculated using the new `Overlay` class. The only requirement is that the browser supports the [popover API](https://caniuse.com/wf-popover), which is available now in all major browsers.
### Added
- Add native alternatives for dropdown, single and multi-select, and single and multi-type-ahead components
- Deprecate components based on PopperJS
- Add new `Overlay` class replacing the deprecated `PopperBuilder`
## [0.6.16] - 2026-03-26
### Added
- Add native popover and tooltip components based on the [popover API](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API) and [CSS anchor positioning](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Anchor_positioning).
### Fixed
- Fix loading finder items
## [0.6.15] - 2026-03-25
### Added
- Make the finder column and preview responsive using container queries
## [0.6.14] - 2026-03-24
### Added
- Add `FinderColumn.showSearchThreshold(int)`
### Changed
- Add padding to the finder preview matching the padding of the finder columns and items
## [0.6.13] - 2026-03-24
> [!WARNING]
> Not an official release. Please don't use!
## [0.6.12] - 2026-03-24
> [!WARNING]
> Not an official release. Please don't use!
## [0.6.11] - 2026-03-24
> [!WARNING]
> Not an official release. Please don't use!
## [0.6.10] - 2026-03-24
### Added
- Add `FinderColumn.finderColumn(String identifier, String header)`
- Add `FinderColumn.defaultSearch(String)`
- Add `FinderColumn.toggleSearch(Predicate)`
### Fixed
- Hide item actions in inactive columns
### Removed
- Remove `FinderItem.nextColumn(FinderColumn column)`. Next columns can only be added lazily using
`FinderItem.nextColumn(Supplier column)` (otherwise the component lookup of finder columns won't work).
## [0.6.9] - 2026-03-23
> [!WARNING]
> Not an official release. Please don't use!
## [0.6.8] - 2026-03-23
### Added
- Add `FinderPath` and `FinderSegment` with `FinderPath` implementing `Iterable`
- Add `FinderPath Finder.path()`
- Add getters for the finder and finder column:
- `FinderColumn FinderItem.column()`
- `Finder FinderItem.finder()`
- `Finder FinderColumn.finder()`
### Fixed
- Fix selection of already selected finder items
## [0.6.7] - 2026-03-22
### Added
- Add support for `BiPredicate` in `FinderColumnSearch`
### Fixed
- Fix finder item icons
- Fix colors for finder item actions
- Fix finder preview handlers
## [0.6.6] - 2026-03-20
### Added
- Add support for finder item actions
- Add `Finder.bordered(boolean)`
- Add `Finder.pinnable(boolean)`
## [0.6.5] - 2026-03-20
### Fixed
- Fix showcase externs
## [0.6.4] - 2026-03-20
### Fixed
- Fix NPM publishing
## [0.6.3] - 2026-03-20
### Added
- Add missing J2CL externs for the showcase
### Fixed
- Fix NPM publishing
## [0.6.2] - 2026-03-19
### Added
- Add support for async items to the finder component
### Fixed
- Fix finder column header heights
## [0.6.1] - 2026-03-19
### Added
- Add [finder extension](https://patternfly-java.github.io/extensions/finder) (#371)
- Add
`HasAsyncItems