@assistant-ui/store#
0.3.22#
Patch Changes#
-
#9108
ed0d969- Track selectors that read through a forwarding client when its target changes. (@rupic-app) -
#9776
32a1b79-useAuiStateandaui.composer.getState()now see composer text as soon assetTextreturns, so an input that keeps its own state, such as react-mentions, no longer moves the caret to the end. (@okisdev) -
#9772
1808265- Notify child handles after their derived scopes catch up with parent changes. (@okisdev) -
#9865
727a02d- preserve reading position when earlier messages load and support held follow and content inset updates (@okisdev) -
#9771
0c049eb- Keep Vue and Svelte viewport footer insets in the shared store controller. (@okisdev)
0.3.21#
Patch Changes#
- #9790
d2f04ca- fix: a client accessor called throughcall,applyorbindresolves its client like a direct call, so an optional call such asclientRef.current?.threads?.()no longer throws_b.call is not a functiononce a bundler lowers optional chaining (Vite 6's default build target does). Scope methods namedcall,apply, orbindare rejected by type validation because those names are reserved for invoking the accessor. (@bgeils)
0.3.20#
Patch Changes#
- #9338
a12da09- fix: run layout effects throughuseIsomorphicLayoutEffectso React 18 server renders stop warning, while Ink keeps its layout phase (@okisdev)
0.3.19#
Patch Changes#
- #9093
96fd2a2- fix(store): cancel a queued bottom scroll on wheel and touch, matching React (@rupic-app)
0.3.18#
Patch Changes#
-
#9094
3ad209c- perf(store): wake only the selectors whose clients changed, so a token in a long thread no longer re-runs every message and part selector (@okisdev) -
#8869
9125e30- ForwardExternalThreadmodel-context changes throughthread.modelContextUpdate. (@rupic-app) -
#8865
4ac25b9- return the registered model context fromExternalThread'sgetModelContextinstead of an empty one (@okisdev) -
#9003
116424f- Keep thread viewport observers stable and preserve scheduled scroll behavior. (@rupic-app) -
#9135
f306b40- fix(store): cancel a queued bottom scroll when Enter, Space or a navigation key is pressed outside text entry, matching React (@okisdev) -
#8909
0d72f48- move the Vue thread viewport's auto scroll into a framework-neutralcreateThreadViewportAutoScrollin@assistant-ui/store/client(@okisdev) -
#8903
df2ab0a- the thread viewport follows content that grows without a DOM change (an expanding collapsible, a loading image, an autosizing textarea) and updatesisAtBottomso the scroll-to-bottom button shows; the React viewport now sharesobserveContentResizewith Vue and Svelte (@kr1shna-exe) -
#8915
8831c76- cancel a queued scroll to bottom when the user scrolls up in the shared thread viewport auto scroll, as a pointer gesture already does (@okisdev) -
#8956
7a3e496- pause thread bottom-follow when a message disclosure expands (@rupic-app)
0.3.17#
Patch Changes#
0.3.16#
Patch Changes#
-
#7825
2e066e2- fix: deliver scoped events from remote thread clients (@rupic-app) -
#8597
ce5b7ed- fix: remove runtime import cycles from development bundles (@rupic-app) -
#8518
e73db99- fix: runtime hooks keep their clients, runs, streams, queued sends and pending history copies across a fast refresh or a StrictMode replay instead of rebuilding or tearing them down (@okisdev) -
#8590
c980b36- fix: runuseInsertionEffectcleanups only when a resource is released for good, as React does, letcreateTapRoot().unmount()release amountOnSubscriberoot instead of throwing, and havedestroy()release an assistant client's resources for good (@okisdev)
0.3.15#
Patch Changes#
-
#7871
21f8bdf- fix: stop a nesteduseChatRuntimechat when its own component unmounts, stop registeringAISDKThreadscloud threads on the client destroy signal, and stop fast refresh from aborting the destroy signal ofuseAui(config)hosts (@okisdev) -
#7749
8e1508a- perf: keep a thread update off every message client (@okisdev)A streamed token no longer re-runs every message client in an external-store thread, cutting per-token cost by about 60% at 1000 messages.
0.3.14#
Patch Changes#
-
#7338
11969a2- docs: teachAuiConfigand the providerconfigprop instead of the deprecateduseAui({...})overload in docblocks and the agent skill (@L4XB)
0.3.13#
Patch Changes#
-
#6872
96f011a- fix: preserve client list order for numeric string keys (@ephraimduncan) -
#6883
f044254- fix: add and retrieve client resources with prototype-named keys (@ephraimduncan) -
#6957
71c5416- fix: expire falsy values in the last-valid cache and preserve cached null and undefined during the stale window. (@ephraimduncan) -
#7027
6c85699- fix(core): cancel a thread's in-flight request when its runtime is torn down (@okisdev)each thread the remote thread list hosts now owns a destroy signal that aborts when its runtime is stopped or restarted, and
useChatRuntimestops the chat on it. deleting or detaching a thread, replacing the thread list with one that drops it, or restarting its runtime now cancels the request that thread had in flight instead of leaving it streaming into a runtime nothing reads. hiding a thread under<Activity mode="hidden">is a soft unmount and keeps streaming. -
#7033
40f0978- fix(store): cancel in-flight work when the React host that owns it unmounts (@okisdev)a React-hosted client now carries a permanent teardown signal, so unmounting an
AuiProvider, auseAui(config)host, or auseRemoteThreadListRuntimehost cancels the requests it owned instead of leaving them streaming into a deleted tree. a hidden<Activity>, a Strict Mode replay, and a re-suspended boundary are soft and keep streaming. -
#6521
928c580- fix: commit hosted tap resources before descendant layout effects (@rupic-app)AuiProvider mounts the tap host's commit in the layout phase instead of the passive phase, so a descendant layout effect that calls a client action runs against the render it was mounted with. Previously a
RemoteThreadListconsumer reloading from a layout effect reached the previously committed adapter. The commit now runs before paint; directuseTapHostconsumers that do not mounteffectsthemselves keep the passive fallback. -
#6955
56f13b5- fix: detect values that replace empty positions in sparse arrays during shallow comparison (@ephraimduncan) -
#6891
08088b4- fix: keep replacement event listeners after a stale unsubscribe call. (@ephraimduncan) -
#6272
b2d12e7- fix: log event listener errors instead of raising uncatchable exceptions (@Kinfe123)
0.3.12#
Patch Changes#
-
#6547
6bd1570- fix: drop zustand from core (@okisdev)core declared zustand as an optional peer while importing
createanduseShallowunconditionally. pnpm keys a package instance on its resolved peers, so two dependency branches landing on different zustand patches (5.0.14 under one, 5.0.15 under the other) produced two physical copies of core. React context is per copy, so aRuntimeAdapterProviderrendered by one copy was invisible to a runtime hook imported from the other:unstable_Providersupplied ahistoryadapter,useAISDKRuntimereadundefined,withFormat()never fired, and every thread loaded with no messages and no error.core no longer uses zustand at all, so the peer is gone rather than reclassified. the four internal stores now use
WritableSubscribable, a mutable cell built on the existingBaseSubscribableand read throughuseSubscribable. the twouseShallowcall sites wrapped selectors passed touseAuiState, aui's own store, so they now useuseShallowSelectorfrom@assistant-ui/store/internal, which memoizes a selector against theshallowEqualthat already lived there.WritableSubscribablereports a server snapshot anduseSubscribableforwards one when the subscribable offers it, so the components reading these stores render under SSR the way the zustand hook did. Subscribables without one, including every existing runtime client, keep their current behaviour.@assistant-ui/react-nativeand@assistant-ui/react-inkdeclared zustand only to satisfy core's optional peer and never imported it, so they no longer declare it.@assistant-ui/reactand@assistant-ui/uikeep theirs because they import it directly, and@assistant-ui/reactadditionally exposesStoreApithroughReadonlyStorein its published types. -
#6586
9f08bdc- chore: deduplicate the internal development flag (@okisdev) -
#6688
8135d16- fix: peer ranges on the packages this workspace releases now track the release train (@okisdev)changesets rewrites a peer range only when the new version falls outside it, so the hand-written floors had drifted below the code they describe. core declared
@assistant-ui/store: ^0.3.0while importing@assistant-ui/store/internal, a subpath store did not export until 0.3.10, and react-lexical declared*. these peers are nowworkspace:^, which publishes as the version released alongside them. -
#6495
fa9c0dc- feat: allow string ids in the stale scope reporter (@okisdev) -
#6498
65d449b- feat: export useAssistantContextValue from the client entry (@okisdev)The framework-neutral client subpath now carries the ambient-client read, so store entries can stay off the React-coupled barrel.
-
#6348
49e727b- chore: expose shallowEqual from the internal entry (@rupic-app) -
#6563
8206d8f- feat: accept a content inset in the shared viewport scroll helpers (@okisdev)
0.3.11#
Patch Changes#
0.3.10#
Patch Changes#
-
#6068
ac0c836- fix: stabilizeunstable_useAdaptersresults on both adapter faces and warn on an unkeyed history factory. the React host's synthesized provider now absorbs a fresh but shallow-equal adapters bag the same way theRemoteThreadListstore entry does, reusing the store'suseShallowStableprimitive through its internal entry, and the store entry warns in development when a history adapter arrives while the thread factory is unkeyed, since switching threads would silently keep the first thread's history. (@okisdev) -
#5831
2b0fec7- feat:aui.optional.<scope>resolves an unavailable scope toundefinedinstead of a throwing accessor, mirrorings.optionalon the state side; the documented availability check moves offsource != null(@okisdev) -
#5998
f44163f- fix: stop active chats only when their standalone client is destroyed (@Kinfe123) -
#5834
d80e988- fix: model-context registrations follow the committed scope across structural replacements. The newuseAssistantScopeEffect(scope, effect, deps)re-runs a registration when the scope's bound client is replaced (cleaning up against the old one first) while ignoring value updates, and the toolkit, runtime-adapter, interactables, and MCP registration sites now use it instead of registering once against a stable client ref. (@okisdev) -
#5897
74dca03- fix: cache live config source reads between notifications so getConfig satisfies the useSyncExternalStore getSnapshot contract (@Yonom) -
#5913
1b9c33d- feat: hoist the shared binding utilities to the client entry. createClientFacade (stable client facade over a source) and createLastValidCache/createStaleReporter (by-index shrink guard with an injectable expiry scheduler) were duplicated per framework bridge; they now live on @assistant-ui/store/client so bridges cannot drift. (@okisdev) -
#5618
82e2bde- refactor: the config path rides React's scheduler instead of a self-scheduled tap root (@Yonom) -
#5889
52df42d- feat: subscription-owned lifecycle for createAssistantClient. the handle now rides tap's mountOnSubscribe: scopes render lazily on first read, mount when the first subscriber attaches, and soft unmount one task after the last subscriber releases (effects clean up, state is retained, a later subscriber remounts the same scopes). state updates before the first subscriber throw; an imperative consumer without a reactive framework holds a no-op subscription. destroy() remains the permanent teardown: synchronous while subscribers are attached; after the last release it defers to the soft unmount that release already scheduled. requires @assistant-ui/tap ^0.9.12. (@okisdev) -
#5928
6c9e7dd- feat: hoist the viewport scroll math to the client entry. isViewportAtBottom, viewportOverflows, isUserScrollUp, and observeContentResize were vue-local; they now live on @assistant-ui/store/client so the svelte viewport consumes the same implementation. (@okisdev) -
#6014
7748e15- feat: host remote thread runtimeHooks as keyed tap resources on the list hook.useRemoteThreadListRuntimemounts oneuseResourceshost after each thread'sunstable_Provider, so the firstruntimeHookcall already sees Provider adapters. AdapterSink only publishes those adapters.@assistant-ui/store/clientexportsuseConfiguredAuianduseAssistantContextProviderso that host can extend and provide a client the same wayAuiProviderdoes in React. (@okisdev) -
#5914
0d2e23f- feat: newthreads.selectionChangedevent carryingthreadIdandpreviousThreadId; deprecatethreadListItem.switchedTo/switchedAwayin its favor. Un-deprecate the semantically meaningful events (thread.runStart,thread.runEnd,thread.initialize,composer.send,composer.attachmentAdd). (@Yonom)The new event fires in situations where the deprecated pair did not, so the selection-driven defaults (
scrollToBottomOnThreadSwitch,unstable_focusOnThreadSwitched) now engage there too:InMemoryThreadListemits on selection changes (it previously emitted no switch events at all),switchToNewThread()emits for the newly created thread, and runtimes that resolve a deep-linkedthreadId/initialThreadIdafter mount (useRemoteThreadListRuntime) emit when the deep link resolves, with the initial placeholder thread aspreviousThreadId.
0.3.9#
Patch Changes#
-
#5829
4b75b8f- fix: scoped event listeners under a derived-only provider filter against the child's own bindings instead of the parent's, in both directions and through scope-less intermediate hosts (@okisdev) -
#5795
00a630a- fix: publish hosted scope rebinds before descendant layout effects (@Gujiassh) -
#5769
f59d24b- fix: deliverthreadListItem.switchedToto default-scope listeners (#5699). the thread list item client now emits the switch from its own observed selection transition, after the flush that rebinds the derived scopes, instead of relaying the runtime's synchronous notification. scoped listeners now resolve their scope against the host's current client at delivery time, so a listener subscribed before a structural swap follows the scope's present binding; the notification manager re-reads the listener set at flush time per the documented live-set semantics. listeners that need a pinned instance subscribe on an id-scoped client instead. (@okisdev)
0.3.8#
Patch Changes#
0.3.7#
Patch Changes#
-
#5677
4e99deb- feat: createAssistantClient accepts an AssistantConfigSource, re-read in the root render so bindings can deliver config changes (updated element args, added or removed scopes) without remounting surviving scopes (@okisdev) -
#5707
2af514c- fix: answer Vue reactivity introspection probes (__v_raw,__v_isRef,__v_isReactive,__v_isReadonly,__v_isShallow,__v_skip) on client proxies with undefined instead of an error accessor, so Vue's toRaw/isRef checks and its dev warning formatter no longer throw when a client crosses a Vue boundary (@okisdev)
0.3.6#
Patch Changes#
- Republish of 0.3.5 (registry staged-version conflict blocked the original publish; contents identical).
0.3.5#
Patch Changes#
- #5668
bd4c0ad- feat: expose the scope-author surface (attachTransformScopes, useAssistantClientRef, useClientLookup, and the client schema types) from the client entry, and seed the client ref during the standalone root render (@okisdev)
0.3.4#
Patch Changes#
-
#5430
dcacd9b- feat: AuiProvider extends/config grammar.config={AuiConfig({...})}alone creates a top-level root client; nested providers must passextends— a client to extend, ornullto isolate (dev-enforced). An empty config creates a client extending theextendsclient;refexposes the resulting client. Theconfigprop only accepts configs built withAuiConfig(...)(branded type). AssistantRuntimeProvider gains an optionalconfigprop whose scopes are provided alongside the runtime scope. TheuseAui({...})extension overload and the AuiProvidervalueprop are deprecated;value={client}now exposes a client extending the given one (same scopes, new identity) rather than the exact instance.useAui({})with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client.useAuiStatestate enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matchingin-operator behavior. Clients derived from a hand-built parent (a plain object withsubscribe/on) forward scopedon(...)listeners to the parent'soninstead of throwing for scopes the parent does not expose. (@Yonom) -
#5660
aa302ee- feat: add a framework-neutral client entry with createAssistantClient over a standalone tap root (@okisdev) -
#5660
aa302ee- feat: make the react peer optional; react-less consumers alias react to @assistant-ui/tap/standalone-shim instead (@okisdev)
0.3.3#
Patch Changes#
- #5411
90b3003- fix: prevent Composer updates from being lost under React StrictMode (@nyl199310)
0.3.2#
Patch Changes#
-
#5364
d2e7a4a- AuiIf: trim JSDoc and add a mount/unmount contract test (@Yonom) -
#5367
ecd7c87- feat: AuiProvider accepts value={null} as an isolation boundary; useAui runs a fixed hook count per overload and deprecates the explicit-parent config (@Yonom) -
#5385
2daf2d5- perf: simplify useAui notification and effect plumbing (@Yonom) -
#5354
a5bdbed- useClientList: clear initial-data handles on commit instead of during render so discarded renders can replay (@Yonom) -
#5361
fb993c3- useClientLookup: derive the key-to-index map from the validated element keys and drop the redundant keys memo (@Yonom) -
#5355
1c5266c- useAuiState: derive the assistant state proxy from the client via a WeakMap so hand-built clients no longer yield an undefined selector argument (@Yonom) -
#5353
cdcdbd0- fix: report proxy properties as configurable soObject.keys, spread, andObject.getOwnPropertyDescriptoron clients and the proxied assistant state no longer throw the proxy invariant TypeError (@Yonom) -
#5360
42dbc69- useAui: memoize scope meta via shallow equality on the query object instead of a spread deps array, so query key-count changes are detected reliably (@Yonom) -
#5356
25f1e4f- Share a single InferClientState type across useClientResource, useClientLookup, and useClientList (@Yonom) -
#5380
d16e62d- refactor: inline single-call-site useAui helper hooks (@Yonom) -
#5368
60d049e- refactor(store): local useShallowStable helper replaces tap useMemoCache; drop useMemoCache from tap's public entrypoint (@Yonom) -
#5312
2eca438- refactor: importuseEffectEventfrom React directly for latest-client reads and drop theuse-effect-eventponyfill dependency (@Yonom) -
#5362
23ee5db- ValidateClient: restructure into independent per-facet checks; createErrorClientAccessor now requires the scope name (@Yonom)
0.3.1#
Patch Changes#
- #5297
3a762ed- feat: optional state view —s.optional.<scope>resolves toundefinedwhen the scope is unavailable instead of throwing, souseAuiState((s) => s.optional.threadListItem?.remoteId)works outside a thread list item. The base state stays non-optional and keeps throwing on unavailable scopes. (@Yonom)
0.3.0#
Minor Changes#
- #5275
9a7e776- feat: property API for aui — nullary scope accessors are now properties (aui.thread.getState()instead ofaui.thread().getState()); calling them still works but is deprecated. Accessors keepsource/query/nameselection metadata as properties; these are reserved names for scope methods. An unavailable scope's accessor no longer throws at selection time:aui.threadalways succeeds and is always truthy,.sourceis null, and any other property read (or a call) throws — check availability viaaui.thread.source != null. Accessor identity is binding-keyed: stable across renders without structural change, new on structural change — memoization keyed on an accessor now invalidates exactly when its binding changes. (@Yonom)
Patch Changes#
-
#5282
ae5f831- feat:getClientId(client)returns an opaque, WeakMap-legal identity for a bound client — the same object regardless of accessor wrapping depth. The cloud message persistence cache is now keyed on it instead of the per-mount accessor proxy. RemovesunwrapClientAccessorandgetBoundClient(introduced and replaced pre-release, never published). (@Yonom) -
#5270
dcc41bb- feat: render-bound immutable aui instances — derived scopes resolve to client instances during render and are frozen into the returned client; structural swaps produce a new client through React while value updates never change client identity. Removes the PartByIndexProvider lastPartRef guards and the useClientLookup stale-index clamp. (@Yonom)
0.2.22#
Patch Changes#
-
#5250
d4bdf2c- Warn instead of throw on recoverable inconsistencies: duplicate same-priority tool registrations merge with the latest registration taking precedence, duplicate message ids skip linking, stale client lookup indices are clamped, and null tool names in tool result messages are tolerated. (@Yonom) -
#5208
a0ddc86- AdopterasableSyntaxOnly; public enums are nowas constobjects. (@Yonom)
0.2.21#
Patch Changes#
-
#5190
5412099- refactor:ResourceElement<Result>drops its args type parameter — elements are opaque descriptors;Resource<Result, Args>keeps the callable typing andContravariantResourceis removed (@Yonom)
0.2.20#
Patch Changes#
0.2.19#
Patch Changes#
0.2.18#
Patch Changes#
-
#4392
4cc7eaa- chore: update peer and dependency ranges for @assistant-ui/tap 0.9 (@Yonom) -
#4392
4cc7eaa- fix: preserve tap context across nested tap root rerenders and mark tap context as supported (@Yonom)
0.2.17#
Patch Changes#
- #4385
ae59baf- feat: precompile packages with React Compiler (@Yonom)- aui-build runs React Compiler over packages that depend on tap and remaps
react/compiler-runtimeto the tap shim subpath, so compiled hooks and components work both in React components and inside tap resource renders @assistant-ui/tap/react-shimexportsuseMemoCache(tap inside a resource render,React.__COMPILER_RUNTIME.cotherwise, with a React 18 polyfill); new@assistant-ui/tap/react-shim/compiler-runtimesubpath mirrorsreact/compiler-runtime'scexport- tap implements
useSyncExternalStoreand a no-opuseDebugValue;useSubscribablenow builds onuseSyncExternalStoreso its store reads stay visible to the compiler AssistantProviderBaseopts out via"use no memo"because the runtime receives options through an effect inside a re-rendered child element
- aui-build runs React Compiler over packages that depend on tap and remaps
0.2.16#
Patch Changes#
-
#4366
3e58253- feat: host the assistant client with useTapHost so the tap commit runs in the passive phase (no paint blocking); AuiProvider mounts the host's commit effects ahead of its children's effects (@Yonom) -
#4325
5a4f20e- chore: update @assistant-ui/tap dependency ranges to ^0.7.0 (@Yonom)
0.2.15#
Patch Changes#
-
#4318
1b6a0d6- feat(tap): resources carry all hook arguments; elements are{ hook, args }(@Yonom)A
ResourceElementis now{ hook, args }(was{ type, props }): the underlying hook plus the full tuple of arguments to call it with. This lets a resource take multiple positional arguments, exactly like a hook, and makes hosting justhook(...args):const usePair = (a: number, b: string) => ({ a, b }); const Pair = resource(usePair); const element = Pair(1, "hi"); // { hook: usePair, args: [1, "hi"] }The single-object case is unchanged ergonomically (
Counter({ initialValue: 0 })still works; itsargsis just[{ initialValue: 0 }]), so existing resources and call sites are unaffected.resource()'s overloads collapse into one variadic signature, and thefnSymbol/callResourceFnindirection is gone (the element holds the hook directly;renderResourceFibercallsfiber.hook(...args)).Breaking (internal/advanced):
- The second type parameter of
Resource/ResourceElement/ContravariantResourcenow means the argument tupleA extends readonly unknown[]rather than a single payloadP. Explicit two-arg annotations must wrap the payload in a tuple (e.g.ResourceElement<R, [Props]>). - A resource's identity is now its hook. Reading
element.propsbecomeselement.args[0]; readingelement.typebecomeselement.hook.attachTransformScopesis now keyed by (and called with) the hook rather than the factory. useResource(element, deps)'s second arg is unchanged in behavior (renamedargsDeps).
- The second type parameter of
-
#4318
1b6a0d6- refactor: adopt the extracted-hook convention for resources (@Yonom)A resource body is a hook, so resources are now authored as a
use-prefixed hook
wrapped withresource():const useCounter = () => { ... }; const Counter = resource(useCounter);resource()turns a hook into a Resource;useResource(Counter(props))turns it
back into a hook call. Extracting the body to ause-prefixed hook lets React's
stock rules-of-hooks and exhaustive-deps lint resource bodies directly. No
public API or runtime behavior changes. -
#4318
1b6a0d6- refactor: rename the root APIs touseTapRoot/createTapRootand make them callback-based (@Yonom)useResourceRoot(element)is nowuseTapRoot(fn)andcreateResourceRoot().render(element)is nowcreateTapRoot(fn). Both take a render callback instead of a pre-built resource element, so you no longer have to wrap a hook inresource()just to host it as a root. The callback must be a named function expression (so React's rules-of-hooks lints the body):// before const root = createResourceRoot(); const handle = root.render(Counter()); handle.getValue(); // after const root = createTapRoot(function CounterRoot() { return useResource(Counter()); }); root.getValue();createTapRootreturns{ getValue, subscribe, unmount }directly (no separate.renderstep).flushResourcesSyncis also renamed toflushTapSync, to match thetapnaming of the root APIs (and to stay distinct from react-dom'sflushSync).
0.2.14#
Patch Changes#
-
#4282
01cf957- refactor: rename the client composition and event hooks to theuse*convention to match the tap resource API:tapClientResource->useClientResource,tapClientLookup->useClientLookup,tapClientList->useClientList,tapAssistantClientRef->useAssistantClientRef,tapAssistantEmit->useAssistantEmit. (@Yonom)
0.2.13#
Patch Changes#
-
#4151
299d448- chore: drop stalebiome-ignorepragmas now that the repo lints with oxlint (@okisdev) -
Updated dependencies [
299d448]:- @assistant-ui/tap@0.5.14
0.2.12#
Patch Changes#
-
#4097
1e21076- build(x-buildutils): migrateaui-buildfromts.createProgramtotsdownwithunbundle: true(@Yonom)Tsdown drives both JS and
.d.tsemission. Reference-directive restoration is preserved (tsdown/oxc drop/// <reference>lines, so we re-inject them in abuild:donehook).deps.skipNodeModulesBundle: truekeeps the old "never bundle anything fromnode_modules" behavior — devDependencies stay external instead of getting inlined intodist.Side fixes the new strict dts pipeline surfaced:
@assistant-ui/tap: dropped thefnSymbolbrand from the publicResourceElementtype. It referenced an@internalsymbol thatstripInternalremoved from emit, leaving the published.d.tswith a dangling reference.@assistant-ui/store: un-markedClientSchemaas@internal. It was already re-exported from the public package index; treating the re-export as authoritative.
-
Updated dependencies [
01244a5,1e21076]:- @assistant-ui/tap@0.5.12
0.2.11#
Patch Changes#
-
#4069
db721df- fix(store): keyDerivedscopes by{source, query}so a meta change produces a new client function in the same render pass. Previously aDerivedwhosequerychanged (e.g.MessageByIndexProviderwhoseindexprop changed across renders) kept its underlying resource fiber, and thegetclosure was updated viatapEffectEvent— which lags one commit. During the in-flight render after a meta change, child consumers reading through the derived scope could resolve through the previous closure and read an index the underlying store no longer had. Hashing the meta into thetapResourceskey forces the fiber to be replaced when meta changes, so the newclientFunction(and the newget) propagates through React context immediately. Also drops the unused dynamic-meta variant (Derived({ getMeta })); use staticsource/query. (@Yonom) -
#4023
94548fa- docs: add JSDoc foruseAui,useAuiState,useAuiEvent,AuiIf, andAuiProvider(@AVGVSTVS96) -
Updated dependencies []:
- @assistant-ui/tap@0.5.11
0.2.10#
Patch Changes#
-
#3937
5fdf17e- fix:RenderChildrenWithAccessorno longer misses re-renders when state updates after access (@Yonom)The accessor previously reused a single ref as both an "accessed" sentinel and the cached snapshot. A
useSyncExternalStorepost-commit consistency call could repopulate that cache with the current state, causing later real updates (e.g.message.composer.isEditingflipping) to be masked. Access is now tracked with a dedicated flag so children that read item state via the render prop re-render correctly when the underlying state changes. -
Updated dependencies [
b090acb]:- @assistant-ui/tap@0.5.11
0.2.9#
Patch Changes#
-
Updated dependencies [
005f83f]:- @assistant-ui/tap@0.5.10
0.2.8#
Patch Changes#
-
Updated dependencies [
ce865bc,055dda5,d53ff4f]:- @assistant-ui/tap@0.5.9
0.2.7#
Patch Changes#
- c988db8: chore: update dependencies
- Updated dependencies [c988db8]
- @assistant-ui/tap@0.5.8
0.2.6#
Patch Changes#
- bdce66f: chore: update dependencies
- 209ae81: chore: remove aui-source export condition from package.json exports
- 2dd0c9f: feat: add forwardTransformScopes utility
- Updated dependencies [bdce66f]
- Updated dependencies [209ae81]
- @assistant-ui/tap@0.5.6
0.2.5#
Patch Changes#
- 52403c3: chore: update dependencies
- Updated dependencies [52403c3]
- @assistant-ui/tap@0.5.5
0.2.4#
Patch Changes#
- 28a987a: feat: SingleThreadList resource
refactor: attachTransformScopes should mutate the scopes instead of cloning it - 736344c: chore: update dependencies
- c71cb58: chore: update dependencies
- Updated dependencies [736344c]
- Updated dependencies [c71cb58]
- @assistant-ui/tap@0.5.4
0.2.3#
Patch Changes#
- 349f3c7: chore: update deps
- Updated dependencies [349f3c7]
- @assistant-ui/tap@0.5.3
0.2.2#
Patch Changes#
- a845911: chore: update dependencies
- Updated dependencies [a845911]
- @assistant-ui/tap@0.5.2
0.2.1#
Patch Changes#
- 36ef3a2: chore: update dependencies
- fc98475: feat(store): move
@assistant-ui/coreand@assistant-ui/tapto peerDependencies to fix npm deduplication - a638f05: refactor(store): make store independent of core, add ScopeRegistry module augmentation support
- Updated dependencies [36ef3a2]
- @assistant-ui/tap@0.5.1
0.2.0#
Minor Changes#
- b65428e: refactor: only allow functions in scope methods
Patch Changes#
- b65428e: refactor: replace peerScopes with transformScopes API
- 6e97999: feat(core): move store tap infrastructure to @assistant-ui/core/store
- 93910bd: Rename .tsx files to .ts where no JSX syntax is used
- b65428e: refactor: rename ClientRegistry to ScopeRegistry
- Updated dependencies [b65428e]
- Updated dependencies [546c053]
- Updated dependencies [a7039e3]
- Updated dependencies [16c10fd]
- Updated dependencies [40a67b6]
- Updated dependencies [b65428e]
- Updated dependencies [b181803]
- Updated dependencies [b65428e]
- Updated dependencies [6bd6419]
- Updated dependencies [b65428e]
- Updated dependencies [4d7f712]
- Updated dependencies [ecc29ec]
- Updated dependencies [6e97999]
- Updated dependencies [b65428e]
- Updated dependencies [60bbe53]
- Updated dependencies [b65428e]
- @assistant-ui/tap@0.5.0
- @assistant-ui/core@0.1.0
0.1.6#
Patch Changes#
- a088518: chore: update dependencies
- Updated dependencies [a088518]
- @assistant-ui/tap@0.4.5
0.1.5#
Patch Changes#
- 9ef966a: fix(store): memoize the aui client instance
- Updated dependencies [77af8c3]
- @assistant-ui/tap@0.4.4
0.1.4#
Patch Changes#
- d45b893: chore: update dependencies
- fe71bfc: feat: use enhanced tapSubscribableResource hook
- Updated dependencies [d45b893]
- Updated dependencies [fe71bfc]
- @assistant-ui/tap@0.4.3
0.1.3#
Patch Changes#
- 3bbe318: fix: allow destructuring proxy methods (e.g.
addToolResult,resumeToolCall)
0.1.2#
Patch Changes#
- 07d1c65: fix: nesting assistant providers
- 0371d72: feat: AssistantRuntimeProvider aui prop
- Updated dependencies [5ab3690]
- @assistant-ui/tap@0.4.2
0.1.1#
Patch Changes#
- 2e088eb: fix: restore React 18 compatibility by using use-effect-event polyfill
- a8be364: feat: log individual errors when throwing AggregateError
- 605d825: chore: update dependencies
- Updated dependencies [8cbf686]
- Updated dependencies [a8be364]
- Updated dependencies [605d825]
- Updated dependencies [fe15232]
- @assistant-ui/tap@0.4.1
0.1.0#
Minor Changes#
- 11625b5: feat: store v0.1
0.0.6#
Patch Changes#
- 3719567: chore: update deps
- Updated dependencies [3719567]
- @assistant-ui/tap@0.3.6
0.0.5#
Patch Changes#
- 57bd207: chore: update dependencies
- cce009d: chore: use tsc for building packages
- Updated dependencies [57bd207]
- Updated dependencies [cce009d]
- @assistant-ui/tap@0.3.5
0.0.4#
Patch Changes#
- Updated dependencies
- @assistant-ui/tap@0.3.4
0.0.3#
Patch Changes#
- bae3aa2: feat: overhaul store implementation
- e8ea57b: chore: update deps
- Updated dependencies [bae3aa2]
- Updated dependencies [bae3aa2]
- Updated dependencies [bae3aa2]
- Updated dependencies [bae3aa2]
- Updated dependencies [bae3aa2]
- Updated dependencies [bae3aa2]
- Updated dependencies [e8ea57b]
- Updated dependencies [bae3aa2]
- @assistant-ui/tap@0.3.3
0.0.2#
Patch Changes#
- 01c31fe: chore: update dependencies
- Updated dependencies [01c31fe]
- @assistant-ui/tap@0.3.2
0.0.1#
Patch Changes#
- ec662cd: chore: update dependencies
- Updated dependencies [ec662cd]
- @assistant-ui/tap@0.3.1