Changelog

View Source

All notable changes to Aurora UI are documented here. The format follows Keep a Changelog and the project uses Semantic Versioning.

Aurora UI's public API is the set of documented AuroraUI.Components.* function components, their attributes/slots, the --aui-* CSS custom-property contract, and the registered JavaScript hook names/DOM contract. Internal modules (AuroraUI.Internal) may change without notice.

Unreleased

0.1.2 — 2026-07-11

A second visual/interaction QA pass of the component lab. All are backward compatible (the public component API, --aui-* contract, and hook names are unchanged; only internal styling and one internal hook data-attribute moved).

Fixed

  • Field controls show a single focus ring. The bordered field control now owns the ring on :focus-within (and the inner input's own outline is suppressed). Previously the input drew its base outline inset inside the padded box, so a focused input/textarea rendered two concentric rings.
  • Horizontal steps no longer strike through their labels. The connector ran at the marker's vertical centre, straight across the inline label. The horizontal stepper now stacks the marker over a centred label, with the connector running between markers only. (Vertical steps are unchanged.)
  • icon_button at the default md size is square. It was 40×44 because the width used --aui-control-md while the shared md min-height is the 44px touch target; the width now matches at 44px.
  • toast exit animation plays. The CSS matched [data-aui-leaving="true"] but the hook sets the attribute with an empty value; it now matches on presence, so dismissed/expired toasts animate out (and fade out under reduced motion) instead of popping.
  • Code-block copy button reads “Copied”. The success state appended "ied" to the Copy label, producing “Copyied”; it now swaps the whole word.
  • Interactive card shows a visible focus ring. The stretched link's outline was painted outside the card's padding box and clipped by the card's overflow: hidden. The ring now renders on the card itself (its own outline is not clipped) and the link's clipped outline is suppressed.
  • Command-palette backdrop dims in both themes. The scrim was keyed to --aui-text, which inverted to a near-white veil in dark mode; it now uses the same fixed dark scrim as the dialog/drawer backdrops.
  • tilt works again. The CSS read --aui-rx/--aui-ry under a [data-aui-tilt-active] state and the markup emitted data-aui-max-deg, but the hook publishes --aui-tilt-x/-y/-scale and reads data-aui-tilt-max. The stylesheet and markup now match the hook contract.
  • Top/bottom drawer content scrolls inside. The box was capped only on the dialog, not the box, so tall content spilled past the 85dvh band; the box now carries max-block-size: 85dvh and its body scrolls.
  • Combobox query text stays clear of the loading spinner. While loading, the input reserves extra trailing space so a long query can't render beneath the spinner that sits inboard of the clear button.

0.1.1 — 2026-07-11

Interaction and layout fixes found in a full visual/interaction QA pass of the component lab. All are backward compatible.

Fixed

  • Overlays now open from a trigger. dialog, alert_dialog, and drawer are opened by toggling data-aui-open with Phoenix.LiveView.JS.set_attribute — a client-side change that never fires the hook's updated(). The hooks now observe the attribute (MutationObserver), so triggers work. The drawer also calls the native show()/showModal() so the <dialog> actually renders (and a modal drawer regains its backdrop, top layer, and inert background).
  • Dialog is centered. Consumer resets (e.g. Tailwind Preflight's dialog { margin: 0 }) clobbered the UA's centering and pinned the modal to the top-left; .aui-dialog now owns margin: auto.
  • Tooltip renders. The AuroraTooltip hook was mounted on the tooltip root wrapper and hid it (trigger included). The hook now lives on the bubble, so the trigger stays visible and the bubble shows on hover/focus.
  • Popover opens. The panel carries the native popover attribute (CSS shows it via :popover-open), but the hook toggled hidden and never called showPopover(). It now uses the native popover API (popover="manual", hook owns dismissal).
  • Command palette opens from its button. mountCommandPalette never wired the visible trigger's click (only the ⌘K shortcut). It now does. The listbox gained the data-aui-command-list marker the hook queries for.
  • Combobox hook activates. phx-hook="AuroraCombobox" moved from the <input> to the root container (where mountCombobox looks for the input and list); added the data-aui-combobox-input/-list markers.
  • Gallery is a grid again. gallery claims inline-size: 100% so its auto-fill grid gets real column space inside flex/inline parents instead of collapsing to one column.

0.1.0 — 2026-07-11

Initial public release.

Added

  • 15 component families as Phoenix.Component function components: Actions, Field, Choices, Selection, Navigation, Tabs & disclosure, Overlays, Floating UI, Feedback, Data display, Data navigation, Loading/progress, Search/command, Media/content, and Experience.
  • Semantic token system (assets/css/aurora_ui.css): brand-neutral --aui-* custom properties for color, spacing, type, radii, elevation, layering, and motion, with independent hand-authored light and dark themes and a contrast test.
  • Core JavaScript hooks (aurora_ui entry) plus lazily-imported command, motion, and three entry points that stay out of consumer bundles until their component is rendered.
  • Fully-implemented Three.js scene host with static/semantic fallbacks, capability detection, pause/resize/context-recovery/disposal.
  • Docs + component lab (demo/) and an example application proving the install story end to end.
  • Accessibility, browser, bundle, and visual-regression evidence under docs/evidence/.
  • Governance: MIT license, security policy, contribution guide, code of conduct, support/compatibility policy, third-party notices, and architecture decision records.