Changelog

Every release of @intentface/chat, newest first.

@intentface/chat

0.5.3

Patch Changes

  • ComposerFix Composer.Root losing its state under StrictMode or a hidden <Activity>, which drew the placeholder over a controlled value.
  • A composer embedded in a scrolling page no longer scrolls that page.

Programmatic text changes. clear(), setText() and the ask-user step changes used to nudge the page by a few pixels each time. Keeping the caret in view after a write now scrolls only the composer's own scroll areas, never past Composer.Root. A caret on an empty line, including an empty editor's, is measured by that line's break: on its own it has no box, and its all-zero rect read as "above the view". A trailing empty line in an overflowing composer now scrolls into view too.

Ask-user focus moves. Moving into the options, arrowing between them, and typing to answer move focus without the browser's focus-scroll. An option outside its own list's view is still brought into view within the question.

focus(options). The composer controller's focus now takes HTMLElement.focus()'s options, so a consumer can focus an on-screen composer with { preventScroll: true }. Called with no arguments, it behaves as before.

  • Remove the nanoid dependency; attachment ids are now the file's blob URL.
  • ComposerFix a hydration mismatch when Composer.Popover or an overlay Composer.Panel is server-rendered.
  • Render-safety and re-render fixes from a React Doctor review.

No ref writes during render. AskUser.Options and AskUser.Option mirror their latest values into refs in an insertion effect instead of during render, which React may discard. It runs before every layout effect, so options still seed the initial highlight from their own. Composer.Command's "this prefix is the one closing" flag is now state that flips only at open and close.

Stable context values. AskUser.Root, AskUser.Options, AskUser.Option, the shared collapsible behind Reasoning and Steps, and the anchored Tabs surface memoize their context values, so memoized consumers no longer redraw on every parent render.

0.5.2

Patch Changes

  • Add JSDoc to every part of Attachments, Chip, Message, Reasoning and Steps, so editors show the same reference as the docs.
  • Refresh the README to match the rewritten docs.

0.5.1

Patch Changes

  • ThreadFix losing the bottom while the container is resized.

0.5.0

Minor Changes

  • TabsFix dismissOnEscape closing the panel on an Escape another handler already prevented.
  • ComposerFix an Escape in one composer stopping generation in another.
  • ComposerBreakingEscape stops generation only from inside Composer.Root. To stop on any Escape, handle it on your chat container, such as Thread.Root.

0.4.0

Minor Changes

  • NavNew Nav.Toggle: a caret inside Nav.Trigger, so a branch row can also be a page.
  • NavAdd aria-current="page" to active Nav.Item and Nav.Trigger rows.
  • NavFix a disabled Nav.Trigger rendered as a link still navigating.
  • NavFix Space not following a link row.
  • TabsNew openOnHover, openDelay and closeDelay on Tabs.Trigger.
  • TabsAdd eventDetails to onValueChange and onItemsChange, with reason and cancel(), so a close can be cancelled.
  • TabsFix Escape from a floating Tabs.Popup dropping focus instead of returning it to its tab.
  • Breakingevent.preventBaseUIHandler() is now event.preventPrimitiveHandler(), and event.baseUIHandlerPrevented is now event.primitiveHandlerPrevented.

0.3.0

Minor Changes

  • ShellNew primitive: a collapsible, resizable sidebar with hover-peek.
  • NavNew primitive: a nav tree with roving focus, typeahead and a guide ladder.
  • TabsNew primitive: closable tabs whose panel renders in the layout or anchored to its tab.
  • ComposerFix a closing Composer.Panel staying mounted when there was nothing to animate.
  • Fix anchored surfaces animating in from before they were placed, and add --anchor-available-width.

0.2.1

Patch Changes

  • ThreadFix visibly scrolling to the bottom while the container animates open.
  • ThreadFix losing a few pixels of scroll position when the composer changes height.

0.2.0

Minor Changes

  • StepsReasoningFix the panel clipping content that grows after it opens.
  • StepsReasoningBreakingThe panel height variable --collapsible-panel-height is now --panel-height.
  • ThreadBreakingThread.Root no longer takes dockSelector. Put the composer in Thread.Composer and it is measured automatically.

Patch Changes

  • ComposerFix Composer.Textarea gaining phantom newlines during rapid editing.
  • Fix the npm registry listing exports paths the package doesn't ship. Installs were unaffected.
  • Point homepage and the README links at https://ui.intentface.com.

0.1.2

Patch Changes

  • Fix the package failing to load during server-side rendering.

0.1.1

Patch Changes

  • Fix a regex in parseChipSegments that could hang the browser on long messages.
  • ComposerFix a regex that could freeze the editor on large pasted text.

0.1.0

Minor Changes

  • Initial release: headless chat primitives for React. Composer, Thread, Message, Steps, Reasoning, Chip, Attachments and AskUser, plus the message types and utilities.