Changelog

Consumer-facing changes to the stable raft-ui package surface.

GitHub
v0.5.11

v0.5.1

Latest
Compare

Fixed

  • Removed the duplicate inset outline from Elegant dark ThreadPanelContent on large screens, leaving the header/content seam with a single visual owner. (#213)

v0.5.0

Compare

Breaking Changes

  • Brutal `SidebarItem` active styling is neutral by default. Active items now use a white surface instead of pink. Pass variant="accent" to preserve the previous pink treatment, or variant="primary" for yellow. (#207)
  • Elegant `PanelHeaderIcon` now owns its container treatment. It renders as a 36px rounded muted surface instead of a bare auto-sized slot. Remove redundant consumer wrappers and update layouts that relied on the previous intrinsic size. (#208)

Added

  • Graduated the composable ActivityInbox shell, sidebar, selection toolbar, and standalone InboxItem parts to the stable package entry point. (#209)
  • Graduated the Search shell and entity, message, and thread result primitives to the stable package entry point. (#210)
  • Graduated PickerTriggerButton for compact Select and Combobox filter triggers. (#208, 0fef4c1)
  • Added beam={false} to LiveAgentActivityBar to disable the Elegant animated border and glow while preserving enter and exit transitions. (#211)

Changed

  • Icon-only MessageFooterSavedIndicator controls now receive dedicated compact sizing and theme interaction styling. (#209)

v0.4.0

Compare

Breaking Changes

  • Layer tokens renamed. --layer-page and --color-layer-page are removed in favor of --layer-canvas / --layer-canvas-muted (plus new --color-layer-canvas and --color-layer-canvas-muted). Update any custom CSS or utility classes that referenced layer-page. (2b9b5b2)
  • Invalid-state styling now keys off `data-invalid` instead of `aria-invalid`. Input, Textarea, and form controls style the error visual from data-invalid and mirror it to aria-invalid; passing aria-invalid alone no longer shows the error style. Update callers to pass data-invalid. (b3786da)
  • `CopyableCodeAction` label props removed. ariaLabel and copiedAriaLabel are gone; use the standard aria-label prop instead. The default label still swaps between "Copy code" and "Copied code". (b3786da)
  • `PanelHeaderIcon` no longer sizes its icon. The slot dropped the [&_svg] sizing (brutal 18px / elegant 14px stroke 2.5); consumers must now size icons themselves, e.g. with a size-* class or the size attribute. (0295c2e)

Changed

  • AppShell no longer draws column dividers. AppShellRailSlot and AppShellSidebarSlot dropped their border classes in both themes. The rail|sidebar divider now lives on AppRailRoot (brutal); seam borders the shell used to own (e.g. sidebar|main with an inset main panel) must be added by the caller. (e219fd8)
  • Button press feedback unified. Buttons now always apply the active press scale, including when they act as popup triggers; size variants use a consistent rounded-sm corner radius. Select, Combobox, and DropdownMenu share the same press model. (7295b34)
  • Brutal polish: the active AppRail item received its hard shadow (eedc270) and the inline thread replies surface was aligned with the source app's wash style (4974cfc).

Fixed

  • Switch dark mode. The unchecked thumb resolved to near-white in dark scope (--ink is "white ink" there) and is now a mid-dark warm gray; disabled thumbs are desaturated versions of their normal-state colors in both light and dark; the dark disabled track uses a black ring instead of the bright --line-muted hairline. (7c81bd3)

v0.3.0

Compare

Breaking Changes

  • Replaced the previous surface, line, state, shadow, and motion CSS names with the semantic token contract used by the completed Elegant dark theme. Migrate layer-muted/layer-strong to fill-muted/fill-strong, line-subtle to line-muted, lighter borders to line-hairline, state-<tone>-* to the corresponding semantic tone family, shadow-* to shadow-raft-*, and ease-sheet to ease-slide. The safe-top, safe-bottom, safe-left, and safe-right utilities are no longer provided. (#178)
  • Renamed PanelHeaderFrame to PanelHeaderRoot and updated the corresponding type and data-slot from panel-header-frame to panel-header-root. Panel header parts remain available from the package root and are now owned by the shared Panel vocabulary. (#175)
  • Renamed MessageForwardedBundleToggle to MessageForwardedBundleFooterAction, including its props type and data-slot. (#189)

Added

  • Completed Elegant dark mode across the component library, with dark-aware page, panel, inset, card, popover, backdrop, and HUD surfaces; semantic text, border, state, and interaction colors; elevated shadows; native color-scheme integration; and correct nested theme-scope behavior. Dialogs, menus, form controls, messages, task surfaces, navigation, search, activity, and multi-panel layouts now adapt consistently when rendered in dark mode. (#178, #180, #181, #195, #196, #204)
  • Added the composable Card component with default and inset variants and the final CardHeader, CardLeading, CardTitle, CardDescription, CardTrailing, CardContent, and CardFooter parts. (#184, #202)
  • Graduated ProfilePanel and ToggleGroup to the stable package entry point. (#197)
  • Added AppShellPanelSlot and AppShellOverlaySlot, overlay-aware main slots, attached/inset Panel edges, and the shared PanelActivity header part for composable multi-panel layouts. (#175, #198, #199)
  • Included the raft-ui guide and critique agent skills in the published package. (#127, #193)

Changed

  • Aligned existing components with the new semantic theme contract so surfaces, text hierarchy, borders, focus treatments, state colors, and elevation remain consistent across Brutal, Elegant light, and Elegant dark themes. (#178)
  • Upgraded the Base UI runtime dependency from 1.6 to 1.7. (3a76bec)

Fixed

  • Normalized Button sizing and focus treatments and restored the Brutal danger-outline lift interaction. (#174, #183)
  • Restored component-owned Combobox input styling and corrected Select, Combobox, Input, Textarea, RadioGroup, and Switch interaction states across light and dark themes. (679de8a, ef814f9, #179, #186)
  • Preserved message attachment order and spacing and improved reference and avatar alignment in message rows. (c9118b7, #194)
  • Restored App Rail state contrast, opaque Avatar group rings, panel resizing behavior, and Toast dismiss styling. (#180, #188, #196, fcf0d14)

v0.2.1

Compare

Fixed

  • Restored the Brutal Toast action and close button treatment. (#173)

v0.2.0

Compare

Breaking Changes

  • Renamed the stable ChatSidebar* compound API to Sidebar*. Replace each ChatSidebar-prefixed component and prop type with its Sidebar counterpart, and update selectors from chat-sidebar-* to sidebar-*. (#167)
  • Generalized panel chrome: replace PanelHeader with PanelHeaderFrame, and replace ConversationPanelActions, ConversationPanelHeader*, ConversationPanelHeading, ConversationPanelMeta, ConversationPanelSectionHeader, ConversationPanelStatus, and ConversationPanelTitle with their Panel* counterparts. Update selectors targeting the renamed data-slot values. (#169)
  • Renamed task status values from in_progress and in_review to in-progress and in-review. (#159)

Added

  • Added stable CodeBlock* and semantic Markdown* compound primitives. (#132, #133)
  • Added the stable message core: MessageItem*, reactions, references, selection toolbars, quoted previews, reply previews, and system messages. (#143, #150, #156, #160, #161, #163)
  • Graduated the remaining message surfaces to the stable entry: action cards, attachments and media previews, embeds, forwarded bundles, translation parts, and message lists. (3bf4790)
  • Graduated DescriptionList, Files panel primitives, and LiveAgentActivityBar to the stable entry. DescriptionList includes horizontal layout support. (#120, #131, #168)
  • Added TaskChip, named task-status icon exports, and PanelSection. (#159, #169)

Changed

  • Added consistent data-slot attributes to the retained core Panel parts. (#169)
  • Elegant badges now preserve caller-provided casing when uppercase is set; Brutal badges continue to render uppercase. (#156)

Fixed

  • Fixed conditional-hook rendering in AppShellSidebarTrigger and LegacyTaskPanelRoot, and corrected sortable Composer drag-overlay mapping. (#128)
  • Aligned the AppRail attention indicator. (#165)

v0.1.0

Compare

Breaking Changes

  • Flattened CopyableCode: the preset and CopyableCode.Code compound API are removed. Compose CopyableCodeRoot, CopyableCode, and CopyableCodeAction; CopyableCodeCodeProps is gone and data-slots were renamed. (#76)
  • Removed public shadow CSS tokens/utilities: shadow-soft-popover, shadow-brutal-sm, shadow-brutal, and shadow-brutal-lg. Use theme shadows (shadow-smshadow-xl) or inline values. (#98, #104)

Added

  • Graduated AppRail, AppShell (with sidebar collapse trigger), ChatSidebar, Composer (including sortable attachments), and Resizable* to the stable entry. (#55, #68, #88)
  • Added ConversationPanel, ThreadPanel, Panel, ScrollArea, FilePreview, RaftLogo / lockup / wordmark, and MobileNav.
  • Added the task board / card / dnd / list / panel suite and LegacyTaskPanel. (#99, #100, #101, #102, #103, #115)
  • Extended Lightbox with thumbnail strip and related chrome parts; added ComboboxTriggerCount and ContextMenuPopup. (#73, #89)
  • Added safe-area utilities: safe-top, safe-bottom, safe-left, and safe-right.

Changed

  • Unified elegant focus rings across inputs and controls. (#114)
  • AvatarBadge is a useRender shell for custom indicators; the default dot still inherits parent size. (#94, #107)
  • Input invalid styling is driven by data-invalid (still mirrored from aria-invalid). (#82, #105)
  • Banner status surfaces and action layout refined. (#77, #106)
  • Elegant menu item presentation tuned. (#90)
  • cn now merges classes with tailwind-merge (theme shadow-aware). Package dependencies dropped border-beam and added tailwind-merge.

Fixed

  • Tooltip leading icon aligns with content. (#109)
  • Avatar badge inherits size from the parent avatar. (#107)
  • Banner action height follows content. (#106)
  • Thread panel search chrome alignment. (#71)

v0.0.22

Compare

Changed

  • Let elegant dropdown menu triggers inherit hover and focus styling from their rendered button instead of applying menu-specific overrides. (#44)

Fixed

  • Fixed stacked toasts losing hover state while the pointer crosses gaps between visible toasts. (#43)

v0.0.21

Compare

Added

  • Added LiveAgentActivityBar compound parts (Row, Avatar, Status, Content, Text) for composable live agent activity status. (#38)
  • Added generic ResizableGroup, ResizableHandle, and ResizablePanel primitives for resizable panel layouts. (#37)

Changed

  • Extracted AppShell, AppRail, and AppPanelStack out of chat-shell into standalone components, with sidebar resizing now built on the generic resizable primitives. (#37)
  • Refined drawer snap point interactions and drove drawer styling through recipe variants. (#39, #40)

Removed

  • Removed DrawerSwipeHandle and the showSwipeHandle prop; the swipe handle now renders automatically when snap points are set. (#39)
  • Removed AppShellMobileBar, AppPanelResizeHandle, and ChatSidebarResizeGroup/ChatSidebarResizeHandle/ChatSidebarResizePanel in favor of the shared resizable primitives. (#37)

v0.0.20

Compare

Added

  • Added ContextMenuItemLabel, ContextMenuFooter, DropdownMenuItemLabel, and DropdownMenuFooter for truncatable menu labels and structured footer content. (#30)
  • Added opt-in selected, emphasized, and signal/accent interaction styling for brutal dropdown menu items. (#30)

Changed

  • Improved elegant combobox, context-menu, dropdown-menu, and select presentation with roomier variable-height items and consistent label spacing, and removed visible focus rings from combobox, dropdown-menu, and select triggers. (#26)
  • Enhanced drawers with directional nested stacking and faster, swipe-aware motion while preserving the existing component API. (#32)
  • Refined sortable-tab cursor feedback and elegant underline-tab spacing, and simplified elegant attention-status styling. (#30)

Fixed

  • Fixed stacked toasts so top placements animate and swipe from the correct edge and right placements stay right-aligned. (#31)
  • Fixed theme-family and explicit light/dark propagation across portaled dialogs, drawers, menus, comboboxes, selects, lightboxes, notifications, popovers, preview cards, toasts, and tooltips. (#36)

v0.0.19

Compare

Features

  • chat-shell: make elegant panel header title inline (d941a18)
  • chat-shell: polish elegant chat sidebar and playground (e8150cb)
  • chat-shell: polish elegant dm demos and notif trigger (6a272c4)
  • chat-shell: refine elegant workspace experience (bd358d0)
  • drawer: add responsive placement and mobile full width (dedfa89)
  • status: add elegant attention prop with pulse compose (8d3769e)
  • status: polish attention and document trigger glow (cc7dba8)
  • theme: add theme-only rendering helpers (#3) (0363ae0)
  • ui: add chat main and thread panel parts (db63532)
  • ui: add chat page secondary surfaces (08459d1)
  • ui: add chat shell app shell parts (eb597a3)
  • ui: add message timeline and thread parent parts (cce48c6)
  • ui: add resizable chat sidebar (1324892)
  • ui: add sortable chat sidebar list primitives (929186e)
  • ui: align playground chat, tasks, and files with source (#11) (0b8c9ee)
  • ui: refine chat app shell docs parity (a3f808a)

Bug Fixes

  • badge: tune soft badge colors (00db53e)
  • chat-shell: remove elegant sidebar badge outline (7a15242)
  • chat-shell: stabilize elegant sidebar item height (2dc935e)
  • doc: scope preview themes and fix source css collisions (55d5f02)
  • docs: unblock rsc deploy (d3cb663)
  • doc: tighten inline code and lead line height (20dc9ba)
  • ui: align message item states with source (ff88cc6)
  • ui: align tooltip icons and tidy doc previews (61dfeb9)
  • ui: brutal sidebar selected item keeps medium weight to match source (ec0fbe4)
  • ui: close 1px seam at resizable sidebar/main divider (01d90f6)
  • ui: handle empty tv recipes (#7) (3ee3307)
  • ui: import composer data attributes correctly (7f591b7)
  • ui: move body↔composer separator from footer to body slot so the composer is self-contained (brutal, visual-identical) (685b3bc)
  • ui: refine elegant focus rings (c5b8733)
  • ui: restore input focus rings (4c57774)
  • ui: scope dark: variant to elegant theme context (a5070b4)
  • ui: share composer and align thread footer (8e5d758)
  • ui: stable useId dnd context id for SortableTabsList to fix SSR hydration mismatch (9673b22)