# Changelog

Track notable changes to Astro Components.

import { Badge } from '@prosefly/astro-components';

This changelog covers user-facing changes to `@prosefly/astro-components`,
including components, markdown transforms, integration behavior, styling tokens,
and documentation.

## 0.9.0

<Badge color="accent" variant="subtle">October 19, 2026</Badge>

- Image galleries, callout directives, package-manager tabs, and video-figure
  conversion now work in both `.md` and `.mdx` files. Automatic transforms
  generate HTML directly while preserving Markdown image handling, code
  highlighting, and authored video attributes, sources, tracks, and captions.
- The `proseflyComponents()` integration now loads shared styles and browser
  runtimes for enabled transforms. Explicit Astro components remain available
  and use the same styles as automatically generated markup.
- Added `overflow="visible"` to `ImageGallery` and
  `markdown.imageGallery: { overflow: 'visible' }` to the integration. The image
  strip extends to both viewport edges without widening the page, while
  retaining scrolling, navigation arrows, captions, and content-column alignment.
  Overflow bounds update on resize; the default remains `overflow="auto"`.
- Updated dependencies and the development toolchain to Astro 7.4.0.

## 0.8.4

<Badge color="accent" variant="subtle">October 13, 2026</Badge>

- Added `not-prose` boundaries to component-owned UI while retaining Markdown
  typography in content slots, captions, and single-image figures. Multi-image
  galleries now scope their image styles to injected markup explicitly.
- Refactored `Tabs` and `Accordions` to light-DOM custom elements with instance
  setup and cleanup on insertion, removal, and Astro page transitions. Removed
  global page-load initialization; existing props and native accordion markup
  remain unchanged.
- Nested tabs and accordions now isolate their controls. Tabs retain keyboard
  navigation, persisted selection, synchronized groups, and code copying, while
  removal clears copy timers and ignores stale clipboard promises. Accordion
  reconnection preserves open state and cleans up hash listeners.

## 0.8.3

<Badge color="accent" variant="subtle">October 12, 2026</Badge>

- The shared integration now enables MDX video-figure conversion by default,
  including when registered by Lotus or Dahlia. Set `markdown.videoPlayer` to
  `false` to disable it; custom duration thresholds and labels remain supported.

## 0.8.2

<Badge color="accent" variant="subtle">October 12, 2026</Badge>

- Image galleries now show the current image's alt text at the bottom left,
  updating during navigation and scrolling. Empty alt text clears the description;
  image sizing, horizontal previews, and single-image figures are unchanged.
- Moved navigation to the bottom right with smaller left/right arrow buttons.
  Buttons use a theme-aware disabled color and cannot be clicked at scroll
  boundaries; their states also update after manual scrolling and resizing.
- Removed position indicators and the `--pf-image-gallery-indicator-color` and
  `--pf-image-gallery-indicator-current-color` custom properties.

## 0.8.1

<Badge color="accent" variant="subtle">October 10, 2026</Badge>

- Workspace entry points now use source files for hot reload; pnpm packing and
  publishing switch exports and types to `dist`. Client scripts use Astro's
  compiler, and package tests verify the packed manifest and entry points.
- Unified icon preloading and on-demand rendering caches, including overlapping
  requests. Successful icon data persists for 7 days across restarts and builds;
  failed requests are evicted for retry. Dynamic icons inherit the integration's
  API endpoint unless explicitly overridden.

## 0.8.0

<Badge color="accent" variant="subtle">October 10, 2026</Badge>

- Fixed multiline `Badge` labels in MDX to render like inline labels, without
  inheriting paragraph margins or typography.
- Refactored multi-image galleries to a light-DOM custom element that manages
  navigation, indicators, and sizing without global page-load handlers. Removal
  cleans up listeners and observers, including pending image loads; single-image
  figures and no-JavaScript scrolling remain unchanged.
- Refactored `AudioPlayer` to a light-DOM custom element, with automatic setup
  and cleanup on insertion, removal, and Astro page transitions. Existing props,
  styles, and native audio fallback remain unchanged; scrubbing previews stay
  responsive while browser seek events catch up.
- Added `VideoPlayer` for visibility-aware, muted looping of short clips, with
  white circular Lucide play/pause and sound controls. Long videos retain native
  controls; reduced motion requires manual playback and manual pauses persist.
- Added opt-in `rehypeVideoPlayer` and the integration's `markdown.videoPlayer`
  option for HTML video figures in MDX. Original attributes, sources, tracks,
  and rich captions are preserved; ordinary Markdown and mixed figures stay
  unchanged. Duration thresholds and action labels are configurable.
- Audio tracks are detected at runtime without build-time media fetching.
  Confirmed silent clips hide sound controls, while unknown audio and captioned
  videos retain native controls.
- Added real MDX compilation and playback-behavior tests, VideoPlayer examples,
  plugin setup instructions, and styling-token documentation.
- Refreshed locked dependencies and updated the development toolchain to Astro
  7.3.5.

## 0.7.1

<Badge color="accent" variant="subtle">September 12, 2026</Badge>

- FileTree's default Lucide icon set now distinguishes code, configuration,
  style, image, text, and generic files by both icon shape and color.
- Fixed package-manager tab generation inside MDX components such as `Steps`,
  while leaving commands inside manual `Tabs` and `TabItem` components unchanged
  to avoid nested tabs.
- Added position indicators to multi-image galleries. The current image uses the
  accent color, with inactive and current colors customizable through
  `--pf-image-gallery-indicator-color` and
  `--pf-image-gallery-indicator-current-color`.

## 0.7.0

<Badge color="accent" variant="subtle">September 10, 2026</Badge>

- Added `AudioPlayer`, a themed audio surface with artwork and metadata,
  playback-speed controls, seeking, mute, native-audio fallback, and Media
  Session integration.
- Added `Embed` for explicit metadata and URL-based embeds. URL resolution
  supports selected oEmbed and Schema.org providers before falling back to
  OpenGraph, with normalized provider HTML and persistent metadata caching.
- Added build-time Mermaid rendering through `rehypeMermaid`. Fenced `mermaid`
  code blocks now become responsive, themed SVG diagrams in Markdown and MDX
  without a browser Mermaid runtime.
- Image-only paragraphs are now transformed by the `remarkImageGallery` MDX-only
  plugin into the public `ImageGallery` component. Gallery CSS and runtime are
  bundled only on pages that use the component; ordinary `.md` pages are not
  transformed.
- **Breaking:** Removed the former `rehypeImageGallery` export and the
  `markdown/image-gallery.css` and `markdown/image-gallery.js` subpaths. Use
  `remarkImageGallery` or the public `ImageGallery` component instead; both own
  their required styles and runtime.

## 0.6.2

<Badge color="accent" variant="subtle">September 2, 2026</Badge>

- Inject image gallery css when astro build.

## 0.6.1

<Badge color="accent" variant="subtle">August 30, 2026</Badge>

- Package builds no longer include external JavaScript or declaration sourcemaps
  that point to unpublished source files, avoiding Vite missing-source warnings.

## 0.6.0

<Badge color="accent" variant="subtle">August 30, 2026</Badge>

- Added the `@prosefly/astro-components/integration` integration to own shared icon preloading,
  Markdown transforms, and image-gallery assets.
- Package-manager tabs now preserve syntax-highlighted generated code while avoiding
  duplicate Expressive Code frame chrome inside tab panels.
- Simplified the Expressive Code public API: use the
  `@prosefly/astro-components/expressive-code` entry for
  `expressiveCodeHeaderIcons` and `ExpressiveCodeHeaderIconsOptions`; internal
  icon and label helpers are no longer public exports, making that entry the
  unique public Expressive Code API.
- Updated the installation, integration, Expressive Code, and package-manager tabs
  documentation for the shared integration and its independent plugin entry.

## 0.5.1

<Badge color="accent" variant="subtle">August 24, 2026</Badge>

- Expanded Expressive Code language labels from common aliases such as `ts`,
  `py`, and `md` to `typescript`, `python`, and `markdown`.
- Clarified internal utility module names and centralized shared language-label
  and Iconify helpers.

## 0.5.0

<Badge color="accent" variant="subtle">July 25, 2026</Badge>

- Moved component state styling hooks from modifier classes to `data-*`
  attributes while keeping BEM classes for structure.
- Added an Expressive Code header icon plugin that can display file-type icons
  for code frames.
- Added language labels for Expressive Code frames without titles.
- Skipped Expressive Code terminal frames because their frame already indicates
  terminal context.

## 0.4.1

<Badge color="accent" variant="subtle">July 20, 2026</Badge>

- Added `--pf-badge-radius` so `Badge` corner radius can be customized
  independently from the global pill radius.

## 0.4.0

<Badge color="accent" variant="subtle">July 20, 2026</Badge>

- Renamed the component CSS, data attribute, and custom property namespace from
  `pl` to `pf`.
- Added default light/dark token fallbacks for standalone component styles.

## 0.3.0

<Badge color="accent" variant="subtle">July 19, 2026</Badge>

- Added `remarkCalloutDirectives` for writing callouts, also known as
  admonitions, with Markdown directive syntax.
- Changed `Card` titles to render as non-heading text so cards do not affect
  page heading hierarchy.
- Exposed callouts as `role="note"` instead of complementary landmarks.
- Added unit tests for the markdown transforms.
- Updated markdown setup examples to use Astro's `unified()` processor API.

## 0.2.1

<Badge color="accent" variant="subtle">July 18, 2026</Badge>

- Fixed the `@prosefly/astro-components/icon` ESM entry by moving the FileTree
  icon helper into the icon module and using explicit `.js` imports.

## 0.2.0

<Badge color="accent" variant="subtle">July 18, 2026</Badge>

- `FileTree` now supports `iconSet="vscode-icons"` for richer file-type icons.
- Semantic badge colors for `info`, `success`, `warning`, and `danger`.
- Shared semantic CSS tokens for status-oriented components.
- Callout colors now use the shared semantic token palette, with type-specific
  callout override tokens still available.

## 0.1.0

<Badge color="accent" variant="subtle">July 17, 2026</Badge>

- MDX components for callouts, cards, tabs, accordions, file trees, steps,
  badges, and icons.
- Iconify preload integration for projects that need icons without the full
  [Lotus](https://astro-theme-lotus.prosefly.dev/) theme.
- Markdown transforms for package-manager tabs and image galleries.
- CSS custom properties for shared typography, color, radius, and component
  styling.
