@object-ui/plugin-chatbot 17.5.0 → 17.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,2421 @@
1
1
  # @object-ui/plugin-chatbot
2
2
 
3
+ ## 17.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b46c58f: BREAKING (`@object-ui/types`, `@object-ui/plugin-chatbot`): the authoring `ChatToolInvocation.state` union sheds the AI SDK's three runtime-only approval states — `approval-requested`, `approval-responded` and `output-denied` — so a schema-authored tool invocation can no longer claim an approval the runtime has nothing to back (objectui#10018, the residual clause of the objectui#8426 ruling, decision batch #86).
8
+
9
+ (The bump is `minor` by this repo's release model — objectui's major is pinned to the `@objectstack` family major, and its own breaking changes ship as `minor` with the breaking semantics stated here.)
10
+
11
+ **Break 1 — authored approval states are refused.** `ChatToolInvocation.state` (and so `ChatMessage.toolInvocations[].state` and `ChatbotSchema.messages`) no longer admits the three approval states, and the Zod mirror `ChatToolInvocationSchema` refuses them as an `invalid_value` at `state`. The refusal holds with or without an `approval` envelope: the envelope does not make a runtime-only state authorable. A chat runtime still produces these states — from the SDK's approval envelope, or promoted from an ObjectStack pending-action result — and still renders them; only the authoring face stops declaring them. Migration: author the state the tool call is actually in (`input-streaming`, `input-available`, `output-available`, `output-error`, or a legacy `partial-call` / `call` / `result`), and leave approval states to the runtime.
12
+
13
+ **Break 2 — `onSend` handlers typed against the authoring `ChatMessage[]`.** The messages a chat runtime hands back can carry those three states, so they are no longer a subtype of the authoring `ChatMessage`. `ChatbotSchema.onSend`'s `messages` is now typed as the authoring message widened by exactly those states, and `useObjectChat`'s `ObjectChatMessage` is no longer assignable to the authoring `ChatMessage`. A handler that declares its parameter as the authoring `ChatMessage[]` stops type-checking. Migration: let the parameter be inferred from the slot, or declare it as `ObjectChatMessage[]` from `@object-ui/plugin-chatbot` when passing `onSend` to `useObjectChat`.
14
+
15
+ Not breaking: `UseObjectChatOptions.initialMessages`, `SeamToolInvocation` and `toRuntimeToolState` now take the seam's state vocabulary (authoring plus runtime), which is the same set of values they accepted before, so every existing caller still compiles. `UseObjectChatOptions.initialMessages` also moves from the authoring `ChatMessage` to the exported `SeamChatMessage`, so nine optional runtime-only keys are now declared on that option: `buildProgress`, `blueprintProgress` and `charts` on a message, and `pendingActionId`, `draftReview`, `proposedPlan`, `proposedChanges`, `builderHandoff` and `replayOutcome` on each tool invocation. Nothing changes at runtime, because the hook's two builders behave exactly as before: local mode's `normalizeMessages` forwards `toolInvocations` whole (so the six tool-invocation keys survive) but copies only the base message fields (so `buildProgress`, `blueprintProgress` and `charts` are dropped), and API mode's `aiInitialMessages` rebuilds each message as SDK parts that carry none of the nine. Each key was already declared on `SeamChatMessage`; what changes is that a host passing one in an object literal is no longer told it is an excess property. No new name is exported: the three runtime-only states are named only by a non-exported alias in `@object-ui/types`, pinned equal to `ChatbotEnhanced`'s runtime union by `chat-message-contract.test.ts`. The effect on out-of-repo authors and hosts was not measured.
16
+ - e6203d7: An incremental edit is no longer read as a whole-app build. An `apply_edit` result says `kind: 'edit'` on its envelope, and its `drafted[]` may list the `app` artifact the edit re-staged, because an `add_object` op re-stages it for the nav merge. An `apply_blueprint` build carries no `kind`. The chat now takes the producer's field as the only thing that separates the two, instead of guessing a build from which artifact types were staged (objectui#10109):
17
+
18
+ - `detectBuiltAppPackage` returns `undefined` for an envelope that says `kind: 'edit'`, in both the drafted and the auto-publish (`status: 'published'`) postures.
19
+ - `DraftReview` has a new optional `kind?: 'edit'`, and `detectDraftResult` fills it from the envelope. The edit still gets its draft card, its items and its `packageId`, so one-click publish still works.
20
+ - `ChatbotEnhancedToolInvocation['draftReview']` (`ChatToolInvocation.draftReview`) is now typed as `DraftReview` instead of an inline copy of its fields, so it declares `kind` too. The two were field-identical before this change, and the published tool-invocation type now describes exactly what the chat mapper puts on it.
21
+ - `buildProgressFromDraftReview` builds no finished "Built X" panel for a draft review whose `kind` is `'edit'`, so a reloaded edit shows the same thing it showed live.
22
+
23
+ An envelope without `kind` behaves as before. `DraftReview.kind` declares only the value these readers act on, and an envelope that says anything else leaves it unset.
24
+ - 64dae8e: Six user-visible fixes across the maker surface, the assistant rail and the
25
+ dataset captions.
26
+
27
+ **The maker's start chips now promise only what ADR-0112 v1 builds
28
+ (cloud#1984).** Two of the five asked for automation the first version has no
29
+ flows or actions for — the ticket chip said 「状态流转」, the inventory chip said
30
+ 「低库存预警」 — and the measured behaviour was not a refusal but a silent
31
+ degrade: a status kanban and a low-stock view. The chip promised an alert and
32
+ delivered a page. All five are reworded in all ten packs (and in the call-site
33
+ `defaultValue` fallbacks, which are a second copy of the same strings) to ask
34
+ for objects, fields, views, pages, dashboards and sample data, keeping each a
35
+ real business scenario — the ticket chip now asks for a status field and a board
36
+ grouped by it, the inventory chip for a view that filters below the reorder
37
+ point. A note beside the keys says to revert when v2 re-adds flows.
38
+
39
+ **Five newer AI tools get their step labels (objectui#7481).** A zh conversation
40
+ read `✓ Get authoring rules 已完成` between 「读取元数据结构」 and 「列出对象」:
41
+ `get_authoring_rules` (cloud#1837), plus `load_tools`, `open_record`,
42
+ `test_flow` and `toggle_flow`, are registered by the cloud AI runtime but are
43
+ newer than the pinned spec's tool registry, so they had no `chatbot.tool.*`
44
+ entry in any pack and fell through to the English title-caser.
45
+
46
+ **The assistant rail follows the thread when you send (objectui#7480).** The
47
+ rail and the full-page maker are the same component; what differs is width. A
48
+ reply that still ends on screen in the wide column runs two or three times
49
+ taller in a ~360px rail, so `StickToBottom`'s lock is escaped by the time the
50
+ user types and the new bubble, the tool steps and the streaming answer all land
51
+ below the fold. Every send path now re-arms the lock — including the plan-card
52
+ "Build it" and 确认修改 approvals, whose own code comments already named this
53
+ miss. Message APPENDS deliberately do not, so a user reading back through the
54
+ thread mid-answer is never yanked to the bottom.
55
+
56
+ **Console toasts move off the assistant composer (objectui#7482).** 「客户更新
57
+ 成功」 sat on the ChatDock composer's send button and stayed there. One defect,
58
+ two symptoms: `apps/console` pinned the toaster to `bottom-right` — an override
59
+ that predates ADR-0057 P3a — so a toast both covered the button and, because
60
+ sonner pauses a toast's dismiss timer while the pointer is inside the toaster
61
+ region, never got to run its 4s timer with a pointer resting on the composer
62
+ underneath. The override is gone; the console takes `ConsoleToaster`'s own
63
+ documented top-right anchor, and the 4s success duration is now pinned.
64
+
65
+ **Built-in aggregate captions follow the locale everywhere (objectui#7534).**
66
+ objectui#7258 taught `buildChartSeries()` to resolve a server-minted default
67
+ measure through the locale map, so a chart legend read `计数` while the table
68
+ beneath it, the KPI caption, the pivot header and the dataset preview still
69
+ printed the server's hard-coded English `Count`. `buildDatasetFieldHelpers()`
70
+ takes the same optional `builtinAggregateLabels`, resolving through the one
71
+ `resolveMeasureLabel` order, and the five call sites pass it. Omitting the
72
+ argument reproduces the previous output byte for byte, and an author-declared
73
+ measure still keeps its own label verbatim (objectui#4106).
74
+
75
+ **The activity feed stops asking for an object the environment does not have
76
+ (objectui#7476).** A tenant environment has no `sys_activity`, so every page
77
+ load issued a request that 404'd. Everything downstream was already correct —
78
+ the adapter memoizes the missing collection, its logger demotes the failure, the
79
+ feed retires as an ANSWER and the panel renders its earned empty state — so what
80
+ is left is the request itself, and `data-objectstack` states the rule for it:
81
+ the cure for a doomed request is not issuing it. New `useObjectPresence` reads
82
+ the object registry the shell loads for the nav anyway; only a registry that has
83
+ ANSWERED and lists other objects without this one skips the read. Every
84
+ uncertainty — no provider, empty registry, still loading, errored — reads as
85
+ before, because a wrong skip would cost a real deployment its feed.
86
+ - 95bad12: feat(plugin-chatbot)!: `useObjectChat` drops the never-honoured `maxToolRoundtrips` option (objectui#5605)
87
+
88
+ **BREAKING (authoring).** `UseObjectChatOptions.maxToolRoundtrips` is removed, so a host
89
+ that passes it to `useObjectChat` no longer type-checks. The three chat registrations
90
+ (`chatbot`, `chatbot-enhanced`, `chatbot-floating`) no longer forward the key, and the
91
+ one-time console notice that authoring it used to log is gone. The authored key is now
92
+ refused by name in `@object-ui/types` (see that package's entry). The notice's reset
93
+ helper was never exported from the package entry, so no other export moves.
94
+
95
+ **Migration:** remove `maxToolRoundtrips`; cap tool loops on the agent
96
+ (`planning.maxIterations`).
97
+
98
+ The option never capped anything. The hook gives `useChat` no client tool loop, so every
99
+ tool round-trip of a turn runs on the server agent inside one streamed response, and the
100
+ value reached neither `useChat` nor the request body.
101
+
102
+ The stage-one deprecation (`.changeset/max-tool-roundtrips-deprecate-5605.md`) never
103
+ shipped: that changeset is still pending, and no `CHANGELOG.md` in this repository
104
+ mentions the key's deprecation.
105
+ - 52a43de: `ChatbotSchema` names the `chatbot` node's local-display and legacy
106
+ auto-response keys — a new, additive published surface (objectui#6169, the
107
+ #6172 family ruling: every component node has exactly one named, importable
108
+ authoring-face type).
109
+
110
+ `ChatbotSchema` (`@object-ui/types`) now declares ten keys that previously
111
+ existed ONLY inside an anonymous inline intersection local to
112
+ `packages/plugin-chatbot/src/renderer.tsx`'s `chatbot` registration, invisible
113
+ to anything outside that one file:
114
+
115
+ - `showTimestamp`, `userAvatarUrl`, `userAvatarFallback`, `assistantAvatarUrl`,
116
+ `assistantAvatarFallback`, `maxHeight` — display fields.
117
+ - `autoResponse`, `autoResponseText`, `autoResponseDelay` — the local
118
+ auto-response (demo/playground) fields, already live via a real consumer
119
+ (`packages/app-shell/src/console/ai/AiChatPage.tsx`).
120
+ - `onSend` — the send-callback, now typed on the published authoring face
121
+ rather than against the plugin's internal runtime message type. Its
122
+ `messages` element is the authoring `ChatMessage` widened by the three
123
+ runtime-only approval states a chat runtime hands back (objectui#10018).
124
+
125
+ Each was read-site-censused before being declared (renderer.tsx and/or
126
+ `useObjectChat.ts` reads every one); none were dead, so none took the
127
+ ADR-0049 retirement route. `disabled` — also present in the original
128
+ intersection — is NOT redeclared: it is already `BaseSchema.disabled`
129
+ (`boolean | string`), read generically for every node type, and redeclaring
130
+ it here would have narrowed away the inherited expression-string case.
131
+
132
+ **What an external consumer can now do that they could not before:** import
133
+ `ChatbotSchema` from `@object-ui/types` and get these ten keys with real,
134
+ checked types — previously any reference to them required either duplicating
135
+ the anonymous type by hand or falling back to `any`. The Zod mirror
136
+ (`@object-ui/types/zod`) gained the same ten keys in lockstep, so a `chatbot`
137
+ node parsed through it is now validated on these keys rather than silently
138
+ passed through unchecked (`BaseSchema`'s Zod mirror is `.passthrough()`).
139
+
140
+ `packages/plugin-chatbot`'s `chatbot` registration (`renderer.tsx`) now types
141
+ its `schema` prop as `ChatbotSchema` directly, dropping the anonymous
142
+ intersection. No behavior change: `renderer.tsx:87`'s
143
+ `body: schema.requestBody` forwarding — the subject of the already-merged
144
+ #6193 — is untouched, and the render function reads the exact same keys it
145
+ already read.
146
+
147
+ This is additive (new optional keys on an interface that already carried a
148
+ `[key: string]: any` index signature, and a new Zod-validated subset of
149
+ previously-passthrough keys), so it ships as `minor` even though it changes
150
+ published type surface: objectui's major is pinned to `@objectstack`'s
151
+ (`scripts/check-changeset-no-major.mjs`), and objectui's own breaking changes
152
+ ship as `minor` with the break spelled out — there is no break here to spell
153
+ out, only a widening from anonymous-and-unchecked to named-and-validated.
154
+
155
+ Out of scope, deliberately: the `chatbot-enhanced` and `chatbot-floating`
156
+ registrations' own anonymous intersections (different key sets, a decision
157
+ for a separate card in the same family), and the `surface` row on
158
+ `content/docs/plugins/plugin-chatbot.mdx`'s Properties table, which names a
159
+ key no registration in this package currently reads (filed separately).
160
+ - 7d8e546: `surface` becomes authorable on the `chatbot-enhanced` node, so the capability the docs
161
+ have been documenting is one an author can actually reach (objectui#6687, maintainer
162
+ ruling 2026-08-29).
163
+
164
+ `content/docs/plugins/plugin-chatbot.mdx`'s `Properties` table listed `surface`
165
+ (`'card' | 'plain'`, "bordered panel or a frameless full-page workspace"), but the key had
166
+ **zero read points**: none of the three `ComponentRegistry.register('chatbot*', ...)` sites
167
+ in `renderer.tsx` forwarded it, and `ChatbotSchema` did not declare it. `surface` was real
168
+ only as a prop of the React component — `ChatbotEnhanced.tsx` defines `ChatbotSurface`,
169
+ defaults it to `'card'`, and branches six layout decisions off `isPlainSurface` — so it was
170
+ reachable by a hand-written React host and by nobody writing metadata. An author who wrote
171
+ `surface: 'plain'` got the `'card'` default, with no error and no signal.
172
+
173
+ Measured on both declaration faces before the fix, each with a control that had to hit:
174
+ `schema.surface` appeared 0 times in `renderer.tsx` against `schema.placeholder` at 3 (one
175
+ per registration) and `schema.processVisibility` at 1; and `ChatbotSchema`
176
+ (`packages/types/src/complex.ts`) declared 34 keys, not this one. Two faces agreeing is
177
+ what made the zero a reading rather than a bad query.
178
+
179
+ The ruling adopted **wiring it** over deleting the row — the row names a real, shipped
180
+ capability, and hiding it back inside the component would withdraw it from authors. It also
181
+ matches this page's two existing resolutions of the same defect class, neither of which
182
+ deleted a row: `requestBody` (objectui#6193) kept its row and documented the seam, and
183
+ `maxToolRoundtrips` (objectui#5605) kept its row, marked it inert, and warns once at runtime.
184
+
185
+ - `chatbot-enhanced` declares `surface?: ChatbotSurface` on its inline schema-extension
186
+ type and forwards `schema.surface` to `<ChatbotEnhanced>`. The union is **imported** from
187
+ `ChatbotEnhanced.tsx` rather than re-spelled, so there is one contract rather than two
188
+ dialects that can drift (AGENTS.md #0.1).
189
+ - The key joins the registration's `inputs` (designer + autocomplete surface) with
190
+ `defaultValue: 'card'`, and deliberately **not** its `defaultProps` — mirroring
191
+ `processVisibility`, so nothing materializes the key onto new nodes.
192
+ - **The absent case is unchanged**: an unauthored `surface` is forwarded as `undefined`, so
193
+ `<ChatbotEnhanced>`'s own `surface = 'card'` default still applies. This is pinned as
194
+ hard as the authored direction, because it is what a careless
195
+ `schema.surface ?? 'plain'` or a `defaultProps` entry would silently regress for every
196
+ existing document.
197
+ - `chatbot` and `chatbot-floating` do **not** gain the key: they render `<Chatbot>` and
198
+ `<FloatingChatbot>`, which have no such chrome to switch. The docs row is therefore
199
+ scoped to say the key applies to the enhanced registration — the table never again claims
200
+ more than the registrations deliver.
201
+
202
+ `renderer.surface.test.tsx` pins all of it through the real SDUI host rather than a bare
203
+ component render, and asserts the rendered chrome rather than the forwarded prop, so a
204
+ regression where the key is forwarded but no longer acted on is still red.
205
+
206
+ ⚠️ **Dated note, 2026-09-27 — `maxToolRoundtrips` no longer keeps its row — objectui#5605.**
207
+ Later in this same release `maxToolRoundtrips` is retired behind a tombstone: its props-table
208
+ row is gone, it no longer warns at runtime, and authoring it on any chat node is refused by
209
+ name with the agent's `planning.maxIterations` as the remedy. The sentence above that says it
210
+ "kept its row, marked it inert, and warns once at runtime" is kept as the reading of this
211
+ change; the objectui#5605 retirement entry states what an author gets now.
212
+ - d3499b3: `chatbot-floating` now fences its `<FloatingChatbot>` spread the same way its
213
+ two sibling registrations (`chatbot`, `chatbot-enhanced`) already do —
214
+ `{...toDomProps(props)}`, at the head of the element, instead of a raw
215
+ `{...props}` spread at the end. This is a deliberate,
216
+ user-visible behavior change, not a refactor:
217
+
218
+ - **A message sent through a floating chatbot now actually renders.**
219
+ Previously the authored `messages` seed (whatever array was on the node
220
+ when it was authored) silently overrode the live runtime messages on every
221
+ render, because the raw spread landed AFTER `messages={runtimeMessages}`.
222
+ Neither the user's own message nor an `autoResponse` reply ever appeared —
223
+ the identical send on `chatbot-enhanced` worked correctly. Fixed.
224
+ - **`displayMode`, `systemPrompt` and `model` stop leaking as DOM attributes**
225
+ on the panel's root element (`systemPrompt` / `model` are still read
226
+ normally, by name, for the request they configure — only the second,
227
+ unfiltered forward is gone). Closes objectui#4425's leak class on the one
228
+ `plugin-chatbot` registration that had not closed it yet.
229
+ - **Three undeclared keys go dark on `chatbot-floating` nodes:**
230
+ `processVisibility`, `surface` and `showAvatars` reached the panel's
231
+ `ChatbotEnhanced` through the raw spread even though `ChatbotFloatingSchema`
232
+ never declared them. `ChatbotFloatingSchema` documents this explicitly and
233
+ always has — the face never promised these keys — so this closes an
234
+ accidental channel rather than removing declared behavior. A document that
235
+ relied on any of the three to affect a floating node loses that effect;
236
+ author them on a `chatbot-enhanced` node instead, where they are part of
237
+ the declared, tested contract.
238
+
239
+ `@object-ui/types`: `ChatbotFloatingSchema`'s doc comment is updated to match
240
+ — no type-shape change, so nothing that imports the type needs to change.
241
+ - 0ea7054: Remove 37 runtime dependencies that no file in the declaring package consumes, and gate
242
+ the direction so the next one cannot land (objectui#8198).
243
+
244
+ `check:phantom-deps` judges imports that are not declared; nothing judged the reverse,
245
+ so a declaration could outlive its last consumer indefinitely. That is what happened to
246
+ `recharts` in `@object-ui/components` after objectui#7397 deleted its only importer — it
247
+ was removed by hand on objectui#7625, and nothing would have reported the next one. The
248
+ new `pnpm check:unused-deps` asks the reverse question over `dependencies` and
249
+ `optionalDependencies` of every released package.
250
+
251
+ **Potentially breaking, for consumers relying on hoisting.** Nothing these packages ship
252
+ changes: their Vite `external` predicates are path-based and never read `dependencies`,
253
+ so no built artifact moves. What changes is the install graph — a project that imports
254
+ one of the removed packages while depending only on the ObjectUI package that used to
255
+ drag it in will no longer resolve it. Declare it directly; that is the correct
256
+ dependency edge in either case. The removals, by package:
257
+
258
+ - `@object-ui/plugin-designer`: `@dnd-kit/core`, `@dnd-kit/sortable`, `@dnd-kit/utilities`, `@object-ui/fields`
259
+ - `@object-ui/plugin-chatbot`: `react-markdown`, `react-syntax-highlighter`, `remark-gfm` (and the orphaned `@types/react-syntax-highlighter`)
260
+ - `@object-ui/plugin-report`: `@object-ui/plugin-grid`, `clsx`, `react-i18next`, `tailwind-merge`
261
+ - `@object-ui/plugin-map`: `@objectstack/spec`, `lucide-react`, `zod`
262
+ - `@object-ui/runner`: `class-variance-authority`, `clsx`, `tailwind-merge`
263
+ - `@object-ui/core`: `lodash`, `zod`
264
+ - `@object-ui/layout`: `clsx`, `tailwind-merge`, and `react-dom` — which it pinned at an exact version in `dependencies` while also declaring it as a peer range, i.e. a library hard-depending on the renderer it asks its host to supply
265
+ - `@object-ui/plugin-dashboard`: `clsx`, `tailwind-merge`, and the same `react-dom` defect
266
+ - `@object-ui/plugin-ai`: `@object-ui/react`, `clsx`, `tailwind-merge`
267
+ - `@object-ui/fields`: `clsx`, `tailwind-merge`
268
+ - `@object-ui/console`: `@object-ui/react-runtime`, `sucrase`
269
+ - `@object-ui/auth`: `@object-ui/types`
270
+ - `@object-ui/plugin-calendar`: `@object-ui/fields`
271
+ - `@object-ui/plugin-editor`, `@object-ui/plugin-markdown`: `@object-ui/react`
272
+ - `@object-ui/react`: `react-hook-form`
273
+
274
+ Every one was verified by a whole-package grep before removal — the name appeared nowhere
275
+ under the package but its own manifest and CHANGELOG — and the whole workspace builds,
276
+ type-checks and tests green afterwards.
277
+ - 411a132: `uiMessagesToChatMessages` / `uiMessageToChatMessage` now accept `@ai-sdk/react`'s
278
+ `UIMessage[]` — the exact input the exported mappers are documented for
279
+ (objectui#8214).
280
+
281
+ **Not breaking.** The parameter type only got looser: every argument that compiled
282
+ before still compiles. `minor` rather than `patch` because a published signature
283
+ accepts input it refused before, which is a capability a consumer can newly rely on.
284
+
285
+ `mapMessages.ts`'s local `AnyPart` is written to absorb whatever a producer hands the
286
+ mapper — every other member is `string` / `unknown` — but `state` was typed against the
287
+ OUTPUT contract (`ChatToolInvocation['state']`, the tool-invocation lifecycle). The AI
288
+ SDK's own text and reasoning parts carry `state: 'streaming' | 'done'`, which is not in
289
+ that union, so the deliberately-permissive input interface was on that one property
290
+ STRICTER than the union it exists to absorb and the whole `UIMessage[]` assignment was
291
+ refused (TS2345). An app that followed the README and drove `useChat()` itself had to
292
+ add an `as never` / `as any` of its own, permanently disabling checking on that seam.
293
+
294
+ `AnyPart.state` is now `string`, and the one read site narrows through an `isToolState`
295
+ guard whose table is a `Record` over `ChatToolInvocation['state']` — so the output stays
296
+ exactly as checked as before, and the table cannot drift from the union it guards.
297
+
298
+ Small behaviour fix that falls out of the guard: a part carrying an unrecognized state
299
+ string (an AI SDK v4 snapshot's `'result'`, say) used to pass through verbatim into
300
+ `ChatToolInvocation.state`, fall past every branch in `getToolState`, and render a
301
+ finished call as "Running" forever. It now normalizes to `undefined`, which is the
302
+ documented "infer from `errorText` / `result`" case.
303
+ - 69a6fc1: feat(plugin-chatbot): `ChatbotEnhanced` takes an optional `surfaceContextTitle`, the tooltip of the surface-context chip
304
+
305
+ The chip that `surfaceContextLabel` renders above the composer now accepts an
306
+ optional `surfaceContextTitle`, rendered as the chip's `title`. A host can show
307
+ a readable label on the chip and keep an internal identifier reachable on hover.
308
+ The prop is additive: a caller that does not pass it renders the chip exactly
309
+ as before, with no `title`.
310
+ - 4dbab84: Build the chat runtime's discriminated tool parts at the PRODUCER, and delete the last
311
+ `as any` on the `useChat` call (objectui#8426; director seat, decision batch #86,
312
+ 2026-09-08, option A — contract-first).
313
+
314
+ `useObjectChat`'s API-mode builder declared its part array as
315
+ `Array<Record<string, unknown>>` and pushed plain objects into it. That is not the
316
+ store's part union, and the mismatch was absorbed by a cast on the `messages` option
317
+ rather than reported. Measured 2x2 on this branch, each leg mutated on disk with hash
318
+ proof: with both that cast and the blanket one objectui#8378 removed gone, both
319
+ type-check programs turn red with one `TS2322` each — `Record<string, unknown>` is not
320
+ assignable to the store's part type. The builder now CONSTRUCTS each part, so the
321
+ option is checked and the cast is gone.
322
+
323
+ **Breaking, deliberately — `UseObjectChatOptions.initialMessages`.** A message's
324
+ optional `parts` member is now declared as the store's own part array instead of
325
+ `Array<Record<string, unknown>>`. Nothing in this repository sets it (the schema
326
+ renderer passes `schema.messages`; app-shell passes the output of
327
+ `hydratedMessagesToChatMessages`, whose literal declares no `parts`), so this is
328
+ visible only to a host that hands `useObjectChat` pre-built parts — which is exactly
329
+ the population the cast was hiding the mismatch from. Per this repo's version policy a
330
+ breaking change ships as `minor`; migration is to build real parts (or drop `parts` and
331
+ let the builder synthesize them from `content` / `toolInvocations`).
332
+
333
+ Three behaviour changes ride with it, each measured rather than assumed:
334
+
335
+ - **The three approval states are now reachable.** `approval-requested`,
336
+ `approval-responded` and `output-denied` require the runtime's `approval` envelope
337
+ alongside them; `ChatToolInvocation` gained that envelope in objectui#9229, and the
338
+ builder now constructs those arms from it. Before this, such an invocation was
339
+ emitted as an untyped object the store could not hold.
340
+ - **The legacy authoring states are folded, not passed through.** `partial-call`,
341
+ `call` and `result` are not runtime states; passing them through left the round-trip
342
+ reader refusing them, so the invocation came back with no state at all. They now fold
343
+ onto `input-streaming` / `input-available` / `output-available`.
344
+ - **The dead `toolName` member is no longer written onto a `tool-*` part.** Only the
345
+ dynamic-tool arm declares one, and the round-trip reader derives the name off the
346
+ part's `type`, so dropping it is behaviour-preserving.
347
+
348
+ An invocation that claims an approval state with no envelope to back it is not
349
+ constructible, and no envelope is invented for it: the state is derived from the data
350
+ the invocation does carry and the producer is told once, by name. An ObjectStack HITL
351
+ approval (`pendingActionId` plus a `pending_approval` result) is deliberately NOT
352
+ reported — it is carried by that id, and the mapper re-promotes the state from the
353
+ result on the way back out.
354
+
355
+ Also lifts the `approval` envelope in `mapMessages`' tool-invocation extraction, which
356
+ closes the disagreement objectui#9229 left behind: the hydrated path carried the
357
+ envelope while the live path dropped it. The lift lands in the same round as its first
358
+ reader, rather than earlier as a declared-but-unread key.
359
+ - 3a43a15: `ChatToolInvocation` gains an optional `approval` envelope, and the Console's
360
+ hydration mapper stops dropping it — together with `pendingActionId`
361
+ (objectui#8442).
362
+
363
+ Three AI SDK `state` values — `approval-requested`, `approval-responded` and
364
+ `output-denied` — are states the SDK's own tool-part union cannot express
365
+ WITHOUT an `{ id, approved?, reason?, isAutomatic?, signature? }` envelope.
366
+ `hydratedMessagesToChatMessages` built each invocation
367
+ from six fields and neither the envelope nor `pendingActionId` was one of them,
368
+ so a rehydrated pending approval arrived carrying a state that says "a human must
369
+ decide" and nothing a decision could be made with: `useHitlInChat` keys its index
370
+ on `pendingActionId` and skips any invocation without one.
371
+
372
+ The two halves arrive from different places and are lifted separately. The SDK
373
+ envelope is persisted ON THE PART and is narrowed to its declared shape rather
374
+ than cast (an `approval` with no usable `id` is refused, not passed through).
375
+ `pendingActionId` is never a part key — in rehydrated history it exists only
376
+ inside the tool RESULT — so it is derived with `detectPendingApproval`, the same
377
+ parse the live mapper uses, now exported from `@object-ui/plugin-chatbot` so the
378
+ two paths cannot disagree about one envelope rather than growing a second
379
+ dialect of it.
380
+
381
+ **`minor`, on the repo's written precedent — PM ruling, overriding the `patch`
382
+ this was drafted at.** The lane's runtime test answers no: the member is optional,
383
+ every value that parsed before still parses, and no chip, card or affordance
384
+ changes for data that carries no envelope. But that test is about stored data,
385
+ and what lands here is published SURFACE — two capabilities a consumer can newly
386
+ rely on: the `ChatToolInvocation.approval` member, and the `detectPendingApproval`
387
+ export. `.changeset/8214-chatbot-anypart-state-widen.md` settles that case in this
388
+ repo in those words: *"`minor` rather than `patch` because a published signature
389
+ accepts input it refused before, which is a capability a consumer can newly rely
390
+ on."*
391
+
392
+ The sequencing argument for `patch` was that objectui#8426's `minor` + `**BREAKING**`
393
+ carrier should not be spent early. ⛔ It does not hold, for two measured reasons.
394
+ **First, the level was never the signal.** This repo ships a breaking change AS
395
+ `minor`, so what distinguishes objectui#8426's half is the `**BREAKING**` carrier,
396
+ not the number beside the package — and that carrier is untouched by this
397
+ declaration. **Second, `.changeset/config.json` puts every package in ONE `fixed`
398
+ group**, so the released level is the maximum across all pending changesets
399
+ regardless of what this file says. Declaring `patch` here therefore buys no
400
+ smaller release and no preserved signal; it only makes the changelog line
401
+ under-describe what shipped. ⇒ the accurate declaration is the cheap one.
402
+
403
+ ⛔ Nothing is narrowed here. The envelope stays optional on purpose, and this
404
+ card does not pair it with the approval states. That narrowing — the residual
405
+ clause of the objectui#8426 ruling — ships under its own name and its own
406
+ BREAKING banner: objectui#10018 sheds the three approval states from the
407
+ authoring `state` union, so an AUTHORED invocation cannot declare one at all,
408
+ with or without an envelope. On the runtime `ChatbotEnhanced.ChatToolInvocation`
409
+ an approval state may still arrive with no envelope — an ObjectStack
410
+ pending-action approval is carried by `pendingActionId` instead — and the
411
+ envelope stays optional there too.
412
+ - 270f282: Six hand-rolled em-dash placeholders now draw the shared `EmptyValue` from
413
+ `@object-ui/components` (objectui#8504), closing the *no accessible name* half
414
+ of the class objectui#8491 / PR #8503 opened.
415
+
416
+ **The accessibility defect.** Each site built its own `<span>` holding a bare em
417
+ dash. `EmptyValue` carries three things none of them had: a `data-slot` of
418
+ `empty-value`, an `aria-label` resolved through the i18n label hook, and
419
+ `select-none` / `no-underline` / `pointer-events-none`. So a screen-reader user
420
+ reaching one of these cells heard a naked punctuation mark, while a neighbouring
421
+ cell drawn by a type-aware renderer was announced as "No value". Two of the
422
+ sites make the inconsistency reachable inside one surface: the metadata list
423
+ renders column 0's placeholder *inside the row's `<Link>`*, where the
424
+ hand-rolled span inherited the link colour and stayed selectable, and the
425
+ dashboard record drawer sits next to renderers that already returned the shared
426
+ component.
427
+
428
+ The six: the metadata list's `defaultCell` and the Audit tab's lock column
429
+ (`@object-ui/app-shell`), the dashboard record drawer's empty `<dd>`
430
+ (`@object-ui/plugin-dashboard`), the import wizard's saved-mapping transform
431
+ cell (`@object-ui/plugin-grid`), the AI-approvals `JsonBlock`
432
+ (`@object-ui/plugin-chatbot`), and the Public Forms object column
433
+ (`@object-ui/console`).
434
+
435
+ **A deliberate visual change, not a no-op.** Five sites drop
436
+ `text-muted-foreground` (or `/60`) for the shared `text-muted-foreground/50`, so
437
+ every placeholder in the workspace is now one colour. The glyph is unchanged
438
+ everywhere. The sixth, `JsonBlock`, keeps its `text-xs` through `className`
439
+ because it stands where a `text-xs <pre>` would and has no shared neighbour to
440
+ match — its delta is the accessible name and the three affordances only.
441
+
442
+ **Two adjacent lines in the same file, taken deliberately.** The AI-approvals
443
+ drawer's `proposed_by` / `decided_by` fields fell back to a bare `'—'` text node
444
+ inside a plain `<div>` — a different source spelling of the same rendered
445
+ defect, individually verified on the card rather than swept up. They are
446
+ converted too. `formatRelative`'s `if (!s) return '—'` is not: that helper is
447
+ declared `: string`, so its fallback is not a node.
448
+
449
+ Filled values are untouched in every path.
450
+ - 6ce89da: The 确认修改 (confirm changes) card now carries a UI-owned terminal state after approval (#5695): `detectReplayOutcome` lifts the confirm-replay envelope (`replay_*` tool results) into 应用中 / 已生效 / 已暂存为草稿(含内联发布)/ 未生效(含 publishError 首行), rendered on the original card across the live, hydration/share, and localStorage-cache converters. A failed in-turn publish no longer rehydrates as an ordinary draft card with a live Publish button — the UI-rendered refusal is the layer a model cannot narrate over. New `console.ai.changesApplying/Applied/Drafted/Failed` keys in all ten locale packs.
451
+ - 63b4e0e: Fix the three breaks at the AI paywall moment (#7253), measured on a free plan's
452
+ second build iteration when the cloud guardrail refuses "Confirm changes" with a
453
+ 429 `AI_DESIGN_QUOTA_EXHAUSTED`.
454
+
455
+ - **The upgrade CTA no longer opens a 404.** It used to open a client-composed
456
+ `${cloudBase}/apps/cloud-control/sys_environment`, which guessed the control
457
+ plane's console mount, app slug and route — all three wrong — and landed on
458
+ the API's `ENDPOINT_NOT_FOUND` JSON. `cloudInstallDeepLink` /
459
+ `cloudPricingDeepLink` are replaced by `cloudConsoleUrl()`, the
460
+ runtime-supplied cloud origin with no path appended; the control plane's own
461
+ root redirect decides the landing page. The former
462
+ `|| 'https://cloud.objectos.app'` default is gone: a runtime with no upstream
463
+ cloud now renders no upgrade link at all rather than pointing a self-hosted
464
+ user at the vendor's SaaS.
465
+ - **The confirm card gets an explicit failure state.** A quota refusal parks the
466
+ card on "not applied" with the server's own next step (reset tomorrow /
467
+ upgrade) plus the upgrade action, instead of silently rolling back to
468
+ "Confirm / Adjust" as though the click had never happened. Transient failures
469
+ (offline, per-minute rate limit) still roll back, because retrying is the
470
+ right next step there.
471
+ - **The composer is no longer refilled with an already-delivered message.**
472
+ Only text typed into the composer is restorable now; card-driven sends
473
+ (confirm, approve, suggestion chips) send canned text the user never typed and
474
+ no longer leave the previous prompt staged as if it needed resending.
475
+ - b842035: `useObjectChat().setMessages` now keeps the promise its declaration makes, and the
476
+ `chatResult as any` that was hiding the gap is gone (objectui#8342).
477
+
478
+ The member is declared `(messages: unknown[]) => void` and the hook returned
479
+ `@ai-sdk/react`'s own `setMessages`, which accepts only its `UIMessage[]`.
480
+ Parameters are contravariant, so that assignment is unsound — `tsc` reported it as
481
+ a TS2322 the moment the cast came off, and the declared type was telling every
482
+ consumer they could hand over an arbitrary array when the function underneath
483
+ could not take one. Nothing broke only because no caller had yet taken the type at
484
+ its word; one who did got a runtime failure the compiler had blessed.
485
+
486
+ The parameter stays `unknown[]`. This package does not republish the SDK's pinned
487
+ `UIMessage` on its own surface — the same call objectui#8214 made one file over
488
+ for `AnyPart.state`, and typing this member against the SDK would re-break it on
489
+ the next dependency bump. Instead the hook now wraps the SDK function and checks
490
+ every element first: an object with a string `id`, a `'user' | 'assistant' |
491
+ 'system'` role, and a `parts` array — exactly the three members `UIMessage`
492
+ requires. `parts` is checked for array-ness only, because the part union is open
493
+ (a `data-*` part carries an author-defined payload) and restating it is the
494
+ coupling this change exists to avoid.
495
+
496
+ **Behaviour change, and the reason this is not a patch.** A value that is not a
497
+ chat message is now REFUSED, not filtered and not passed on: the call throws a
498
+ `TypeError` naming the offending index, and the SDK's store is left untouched
499
+ because the whole array is validated before anything is written. Filtering was
500
+ rejected deliberately — this is a re-hydration path where the caller's statement
501
+ is "the thread is now exactly these messages", so dropping the failures would
502
+ install a shorter thread that the `void` return makes undetectable. The declared
503
+ TYPE does not move, so nothing that compiled stops compiling; what narrows is the
504
+ set of values a consumer can successfully pass at runtime, which is the opposite
505
+ direction from objectui#8214's widen.
506
+
507
+ `@object-ui/app-shell`'s `useReconcileOnError` is the one in-repo consumer. Its
508
+ payload comes from `toUIMessages`, which emits exactly `id` / `role` / `parts`, so
509
+ it passes the check unchanged; and it already calls through a `try`/`catch` that
510
+ falls back to the ordinary error banner, so a future malformed server payload
511
+ degrades to "show the error" rather than to a quietly-truncated transcript.
512
+ - f157423: Studio workbench and AI tool cards speak the author's language (objectui#7254)
513
+
514
+ - The Interfaces breadcrumb, canvas caption and navigation rail show the
515
+ metadata label plus a translated kind; the internal `type · name` pair moves
516
+ to the tooltip. An unlabelled nav leaf now falls back to its object name
517
+ instead of rendering an empty row.
518
+ - The Studio top-bar package switcher reads the package's human name from
519
+ either position the packages endpoint serves it in, instead of degrading a
520
+ registry-shaped entry to its reverse-domain id.
521
+ - The dashboard property panel is localized: the spec's authoring form is
522
+ overlaid through the platform's own `metadataForms.<type>` convention, so
523
+ section headings, field labels, hints and the `header` composite's sub-fields
524
+ render in Chinese (developer vocabulary such as "Tailwind units" is replaced
525
+ with something an author can act on, not transliterated).
526
+ - AI tool cards: tool titles resolve through `chatbot.tool.<name>` (all thirty
527
+ platform-provided tools, ten locale packs), the header status badge is
528
+ localized, and the plan count strip is a real plural family instead of an
529
+ English `+ "s"` concatenation.
530
+ - The tool card's header badge and its body badge now come from one producer:
531
+ a proposal that has been confirmed, built or published no longer keeps a
532
+ header reading "Awaiting Approval".
533
+
534
+ ### Patch Changes
535
+
536
+ - ac15833: fix(plugin-chatbot): a reloaded multi-step build no longer shows an empty 「执行过程」 block under every step (objectui#10899)
537
+
538
+ The conversation store persists each step of an agent turn as its own assistant
539
+ row whose only text is a `(called …)` placeholder, so a reloaded build (the
540
+ in-app dock, the Studio copilot) hydrates into one message per step. Each one
541
+ rendered its tool row, then the italic 执行过程 note, then the message action
542
+ bar — invisible until hover but full height — so every step read as an empty
543
+ block with a large gap.
544
+
545
+ - The 执行过程 note is now only the fallback for a placeholder turn that shows
546
+ nothing else. A turn whose tool row, build panel or design panel is on screen
547
+ does not repeat it.
548
+ - The copy / regenerate bar renders only for a turn with visible prose. A
549
+ prose-less step has nothing to copy, and Copy used to copy the internal
550
+ placeholder.
551
+ - 7d82957: fix(plugin-chatbot): the proposed-plan card's actions wait until no turn is in flight
552
+
553
+ The proposed-plan card renders as soon as `propose_blueprint` returns, but the
554
+ turn that proposed it keeps streaming after that, and the server stores each of
555
+ its remaining steps as it goes. Build it, Adjust and the one-click answer chips
556
+ were live the whole time. In a cloud E2E run the user clicked Build it inside
557
+ that window. The next turn was sent while the previous one was still being
558
+ stored, and the stored history interleaved the two turns.
559
+
560
+ These actions are now disabled while `isLoading` is true, on the structured plan
561
+ card and on the fallback confirm card alike. `isLoading` is the signal that
562
+ already turns the composer's send into a stop button. The actions come back once
563
+ the response stream has been read to its end, and the buttons carry the native
564
+ `disabled` attribute while they wait. The gate also covers two windows that a
565
+ message's own `streaming` flag misses: a request that is out but has no reply
566
+ yet, and a newer turn streaming below an older plan card.
567
+
568
+ Ordering replayed history by turn in the conversation store is a separate
569
+ server-side fix.
570
+ - be66b56: fix(plugin-chatbot): the confirm-changes card's actions wait until no turn is in flight
571
+
572
+ The confirm-changes card renders as soon as a tool such as `update_metadata`
573
+ returns `changes_proposed`, but the turn that proposed the change keeps
574
+ streaming after that. Confirm and Adjust were live the whole time, and Confirm
575
+ sends its confirmation straight away, so a click in that window sent the next
576
+ turn while the previous one was still in flight. The proposed-plan card's
577
+ actions were fixed for the same overlap.
578
+
579
+ Confirm and Adjust are now disabled while `isLoading` is true, the signal the
580
+ proposed-plan card's actions already wait on. They carry the native `disabled`
581
+ attribute while they wait and come back once no turn is in flight. Because the
582
+ signal is not tied to the card's own message, the gate also holds an older card
583
+ while a newer turn is in flight below it, including a request that is out with
584
+ no reply yet.
585
+
586
+ Only those two buttons change. The card's other states render as before: the
587
+ Applying badge, the blocked state after an AI quota refusal, the Confirmed
588
+ badge, and the reply hint shown when the host passes no `onSendMessage`.
589
+ - 39f4309: Published typings from every `vite-plugin-dts` package now carry an explicit extension on
590
+ every relative specifier, and a type error in the declaration build now fails the build
591
+ instead of being printed and ignored (objectui#5439, objectui#5483).
592
+
593
+ **Consumers on `moduleResolution: nodenext` or `node16` may see NEW type errors, and that
594
+ is the fix working.** These packages re-export mostly through NAMED re-exports —
595
+ `export { useObjectChat } from './useObjectChat'`. TypeScript could not follow the
596
+ extensionless hop, but it still DECLARED the name, so the symbol resolved to a silent
597
+ `any`. Nothing errored; consumers simply got no types. With the extension emitted, the
598
+ symbol carries its real type, and any call site that was relying on the `any` now type
599
+ checks for the first time. This is the mode that produced the 21 residual `TS7006` on
600
+ `@object-ui/app-shell` reported against objectui#5365 — a type hole that opened quietly,
601
+ unlike objectui#5365's own `export * from './ui'` packages where the same defect surfaced
602
+ immediately as `TS2305: has no exported member`.
603
+
604
+ 410 extensionless relative specifiers across 19 packages were emitted before this change;
605
+ the count is now 0 in all 22 packages that build typings through `vite-plugin-dts`.
606
+ `@object-ui/fields` was already clean — its sources write explicit `.js` specifiers — and
607
+ is wired so it stays that way.
608
+
609
+ The second half changes no emitted output today: 22/22 packages built green unmodified, so
610
+ making the declaration step's exit code honest turns nothing red. It changes what a FUTURE
611
+ regression does — print and exit 0, versus fail the build.
612
+ - 01c9023: `AiPendingActionsInbox` speaks the session locale — every string in it, not only its timestamps (objectui#7173).
613
+
614
+ The AI HITL approval inbox held its own relative-time helper returning hardcoded
615
+ English (`'just now'`, `` `${min}m ago` ``), so a zh / ja / ar session read English
616
+ relative times on every row. It is the fifth spelling of that helper in the repo,
617
+ and the file had **no translation wiring at all** — the unwired-component shape,
618
+ not the lookup-swap shape.
619
+
620
+ It is therefore swept whole. objectui#7142 wired one string into an otherwise
621
+ untranslated component and shipped something visibly half-done, and objectui#7149
622
+ is what finishing that afterwards cost; the triage ruling on this card (2026-09-01)
623
+ carried that forward as *sweep the file whole or leave it*. Everything the user can
624
+ read now resolves from the locale packs: the card heading and description, the three
625
+ tabs, the refresh button, all five status badges, the six column headings, the empty
626
+ state, the row and drawer buttons, all nine drawer field labels, the outcome banner
627
+ and the whole reject-reason dialog.
628
+
629
+ **No new rows for the four relative-time branches.** `detail.justNow`,
630
+ `detail.minutesAgo`, `detail.hoursAgo` and `detail.daysAgo` already existed,
631
+ translated, in all ten packs, and cross-package key borrowing is this repo's settled
632
+ convention rather than an open question — `ObjectGrid`, `ObjectKanban`, `ObjectTree`,
633
+ `ListView`, `ObjectView`, `NavigationOverlay`, `RecordAttachmentsPanel`,
634
+ `RecordDetailView` and `apps/console` all resolve `detail.*` from outside
635
+ `plugin-detail`. One phrase on one kind of control should not get a second
636
+ translation that can drift from the first.
637
+
638
+ The rest of the sweep needed copy no pack had, so `@object-ui/i18n` gains an
639
+ `aiApprovals` namespace: 38 keys, translated in all ten packs. It is deliberately
640
+ separate from `approvalsInbox`, which is the human approval-**process** inbox — a
641
+ different surface and a different feature, so no rows are shared with it. Four
642
+ generic verbs are reused rather than forked (`common.refresh`, `common.cancel`,
643
+ `common.loading`, `common.ok`).
644
+
645
+ **⛔ The five relative-time helpers are not unified.** They differ in real behaviour
646
+ — `Math.round` here against `Math.floor` in `plugin-detail`, thresholds 45s/30d
647
+ against 60s/7d, different tails — so normalising them is a behaviour change wearing
648
+ a refactor's clothes and needs its own card. This inbox's arithmetic is untouched,
649
+ and three rows in the new suite exist only to pin it: 50s renders `1m ago` (a 60s
650
+ threshold would still say "just now"), 90s renders `2m ago` (`Math.floor` gives
651
+ `1m ago`), and 20d renders `20d ago` (a 7d threshold would already show a date).
652
+
653
+ Two assembled English sentences became single interpolated keys — the outcome banner
654
+ (`Approve for {{id}}: {{message}}`) and the drawer subtitle
655
+ (`Tool {{tool}} on {{object}}`). Their word order differs per locale, which fragments
656
+ around a `<code>` element cannot express, so the two identifiers lose their monospace
657
+ styling. That is the deliberate cost of making those sentences translatable.
658
+
659
+ Evidence: an `en`-only assertion cannot discriminate here, because each key's `en`
660
+ value is byte-identical to the literal it replaced. The suite asserts in **zh and
661
+ ar**, and the provider-less path separately, in its own file (`createI18n` installs
662
+ itself as react-i18next's module-level global, so a provider-less render in a file
663
+ that has already mounted a provider silently reads that pack instead of the defaults
664
+ map). No inline `defaultValue` anywhere (objectui#3517).
665
+
666
+ Two consequences of the sweep, both landed here rather than left for CI to find:
667
+
668
+ `packages/app-shell/src/console/ai/__tests__/ConversationsSidebar.test.tsx` froze its
669
+ `vi.mock('@object-ui/i18n', ...)` factory to a hand-written object. Its import graph
670
+ reaches `plugin-chatbot`, which now resolves `createSafeTranslation` at module scope, so
671
+ the frozen surface made that read `undefined` and the file died during COLLECTION — the
672
+ objectui#6849 shape, which does not look like a test failure. It now spreads
673
+ `importOriginal()` and overrides only `useObjectTranslation`. Measured, not guessed: of
674
+ the 41 frozen `@object-ui/i18n` factories in the repo, running every one of them showed
675
+ this to be the only file whose graph reaches the package.
676
+
677
+ The ten pack blocks are locale DATA, and locale data lands in the console's eager
678
+ `framework` chunk, so `scripts/check-eager-closure-budget.mjs` raises that chunk's
679
+ ceiling from 512,000 to 524,000 gzipped bytes and re-pins its baseline onto a fresh
680
+ measurement (502,405 to 514,863). Attributed by three console builds: the merge parent
681
+ reads 510,192, this branch with the ten `aiApprovals` blocks cut reads 510,192 again, and
682
+ this branch reads 514,863 — so the whole 4,671-byte delta is the pack data and nothing
683
+ else. Headroom is kept at the line's own convention (9,137 bytes, 0.10x the regression
684
+ the gate must catch) rather than widened; most of the overage was pre-existing drift, with
685
+ the merge parent already at 510,192 of the 512,000 allowed.
686
+ - c6198c2: **Breaking for authored metadata:** `ComponentInput.label`, `ComponentInput.defaultValue` and
687
+ `ComponentInput.advanced` are RETIRED on both faces (objectui#7493 item ① and objectui#7781;
688
+ maintainer ruling A of 2026-09-06, immediate, no deprecation window; ADR-0049 enforce-or-remove).
689
+ They are the three keys the manifest serializer does not forward, and nothing read them on any
690
+ publication or consumption path.
691
+
692
+ No manifest ever published them, so no consumer could ever have read them. `sdui-parser`'s
693
+ serializer (`packages/sdui-parser/src/index.ts`) forwards exactly seven keys per input — `name`,
694
+ `type`, `of`, `required`, `enum`, `binding`, `description` — so a value authored under any of the three
695
+ never reached `sdui.manifest.json`, the generated JSX `.d.ts`, or a diagnostic; its boundary type
696
+ has no slot for them; the registry's data-source seam reads `name` only; and neither the designer
697
+ nor the app-shell inspectors consult registry `inputs` at all. A structural census over every
698
+ `inputs:` array in the repository (re-measured on this change's merge-base, `name` 951 and `type`
699
+ 951 as the controls) counted the writes: `label` 908, `defaultValue` 245, `advanced` 9 — written on
700
+ nearly every registration, read by nothing.
701
+
702
+ FROM → TO, per key — all three **TOMBSTONED, not removed**, because the route was measured on
703
+ the built face before it was chosen: `ComponentInputSchema` is a non-strict `z.object`, and an
704
+ undeclared key parses GREEN and is silently STRIPPED, so a deletion would have swallowed 1,162
705
+ authored values in silence. The tombstone is what makes the refusal loud and by name.
706
+
707
+ - `label?: string` → `label?: never` on the interface, `retirementTombstone()` on the Zod mirror.
708
+ Migration: delete the key. An input is identified by its `name` on every path that reaches it;
709
+ nothing ever rendered a label for it.
710
+ - `defaultValue?: any` → `defaultValue?: never` / `retirementTombstone()`. Migration: delete the
711
+ key. The renderer's own fallback read IS the default; tell the author about it in `description`,
712
+ which IS published. (Tightening the type to `unknown` was ruled out: it closes no error class,
713
+ since nothing reads the value.)
714
+ - `advanced?: boolean` → `advanced?: never` / `retirementTombstone()`. Migration: delete the key.
715
+ No designer surface ever hid an "advanced" input; there is nothing to write instead.
716
+
717
+ The retirement kit: `?: never` on `ComponentInput` (`packages/types/src/base.ts`), so authoring one
718
+ is a `tsc` error at the registration site; `retirementTombstone()` on `ComponentInputSchema`
719
+ (`packages/types/src/zod/base.zod.ts`), so an authored value is REFUSED at parse time with
720
+ `code: 'invalid_type'`, the key named in the issue `path`, and the migration note as the message
721
+ (one string, both channels). Pinned in
722
+ `packages/types/src/__tests__/component-input-retired-keys-7493.test.ts`, which also holds a
723
+ tree-scoped absence census over every `inputs:` array under `packages/**` and `apps/**`.
724
+
725
+ Accept-set change, stated plainly for reviewers: a document that sets any of the three keys on a
726
+ `ComponentInput` used to parse GREEN (the value was then dropped by the serializer) and now parses
727
+ RED. Every in-repo authoring site — 1,199 keys across 110 registration files, the three standalone
728
+ `ComponentInput[]` arrays and the two named input arrays `tsc` found included — is deleted in the same change, as the ruling's split rule
729
+ requires; the `WidgetRegistry` seam no longer copies the widget-manifest values onto the synthesized
730
+ `ComponentInput` (they fed nothing), and the data-source declaration `ELEMENT_DATA_SOURCE_INPUT`
731
+ drops its `label`. The patch entries on the other packages record exactly that: their registrations
732
+ stop authoring inert keys, with no runtime or published-manifest change.
733
+
734
+ The nine test files that read `defaultValue` off a registration were re-pinned against the
735
+ renderer's ACTUAL default (its own fallback read, or the `defaultProps` it ships) instead of the
736
+ declaration that went away; two assertions that only restated the shadow default were dropped with
737
+ the reason on the line.
738
+
739
+ The in-repo zero is what was measured. Whether anything OUTSIDE this repository writes these keys
740
+ is not measurable from here (the objectui#5674 limit); converting such a write from a silent drop
741
+ into a named refusal is exactly what the tombstones buy. `WidgetInput`'s own `label` /
742
+ `defaultValue` / `advanced` (the widget-manifest face) stay declared and writable — nothing has
743
+ ruled on that face; that it now has no reader either is recorded as objectui#7911.
744
+ - 3e377c9: Retire `ChatbotSchema.displayMode` — and its copy on `ChatbotFloatingSchema` — as an
745
+ ADR-0049 retirement tombstone, and remove the `chatbot-floating` registration's
746
+ "Display Mode" designer control and its `defaultProps.displayMode: 'floating'` seed
747
+ (objectui#7654, maintainer ruling B of 2026-09-05, director decision batch #44).
748
+
749
+ ⚠️ **BREAKING for anyone authoring `displayMode` against a chatbot face in TypeScript.**
750
+ Ships as `minor` per the launch-window convention: objectui's `major` is a cross-repo pin
751
+ to `@objectstack`'s so that "same major means compatible" holds across the two repos
752
+ (`scripts/check-changeset-no-major.mjs`), and objectui's own breaking changes ship as
753
+ `minor` with the break named where it lands — this entry is the channel that carries it.
754
+
755
+ ## What was retired, and why
756
+
757
+ The node `type` — `chatbot-floating` versus `chatbot` / `chatbot-enhanced` — is the one
758
+ selector of presentation. `displayMode` (`'inline' | 'floating'`) was a second spelling
759
+ of that same choice, and no renderer has ever read it: `chatbot-floating` renders the
760
+ trigger and panel unconditionally, and `chatbot` never looked at the key, so
761
+ `displayMode: 'floating'` on a `chatbot` node produced no trigger and `'inline'` on a
762
+ `chatbot-floating` node changed nothing. It was nevertheless declared on both faces,
763
+ painted as a **Display Mode** control in the designer's property panel, and written as
764
+ `'floating'` into every node the designer created — two surfaces teaching a switch that
765
+ did not exist.
766
+
767
+ Re-measured on this branch's base rather than inherited from the card: a whole-repo
768
+ `git grep` census over tracked files, build output excluded, returned the declarations,
769
+ the doc comments and parity-ledger entries beside them, one historical CHANGELOG line and
770
+ two unrelated `displayMode` props on `GridField` / `MasterDetailForm` — no read. The same
771
+ pass over `floatingConfig`, a key that IS read, returned 79 lines, so the instrument was
772
+ not blind.
773
+
774
+ FROM → TO:
775
+
776
+ - `ChatbotSchema.displayMode?: 'inline' | 'floating'` → **`displayMode?: never`**, an
777
+ ADR-0049 retirement tombstone whose comment points at `type` as the replacement.
778
+ - `ChatbotFloatingSchema.displayMode?: 'inline' | 'floating'` → **`displayMode?: never`**,
779
+ the same tombstone. objectui#7655 declared the key on the floating face with
780
+ `ChatbotSchema`'s own lines precisely so this retirement would find it on both faces;
781
+ leaving the copy typed would have kept the published face teaching the switch.
782
+ - `chatbot-floating` `inputs`: the **Display Mode** control is removed.
783
+ - `chatbot-floating` `defaultProps`: `displayMode: 'floating'` is no longer written into
784
+ designer-created nodes.
785
+
786
+ A control is restated, never deleted into a vacuum (`5f4514f7b`): the restatement of
787
+ the removed control is the tombstone's guidance plus this note.
788
+
789
+ **Migration.** Delete `displayMode` from any TypeScript literal typed as `ChatbotSchema`
790
+ or `ChatbotFloatingSchema`; the presentation you wanted is already chosen by `type` —
791
+ `'chatbot-floating'` for the trigger-and-panel, `'chatbot'` / `'chatbot-enhanced'` for
792
+ inline. **No JSON document needs editing** — see the next section.
793
+
794
+ ## Stored documents: runtime validation of this key is unchanged — zero before, zero after
795
+
796
+ `displayMode` has never had a Zod arm — it sits in the `UnmirroredDeclared` ledger for
797
+ both `complex.zod.ts#ChatbotSchema` and `#ChatbotFloatingSchema`, and `BaseSchema` is
798
+ `.passthrough()` — so a stored document carrying `displayMode: 'floating'` (every node
799
+ the designer ever created) parses green before this change and parses green after it,
800
+ and the value is dropped at render time exactly as it always was.
801
+
802
+ That is deliberate, and it is why this tombstone has **no `retirementTombstone()`
803
+ half**: minting a mirror arm to refuse the key would be the declared-but-unmirrored axis
804
+ (objectui#6152), a different defect, and a parse outcome the ruling did not ask for.
805
+ `packages/types/src/__tests__/chatbot-display-mode-retired.test.ts` pins both twins'
806
+ shapes as a **tripwire** — the same shape `a3eb5d07a` gave `triggerIcon` — so that if
807
+ objectui#6152 ever mints an arm for `displayMode`, the pin goes red and whoever lands the
808
+ mirror adds the `retirementTombstone()` half at that time, flipping the control rather
809
+ than deleting it.
810
+
811
+ ## Why a tombstone and not a deletion — measured on this carrier
812
+
813
+ `ChatbotSchema` extends `BaseSchema`, which carries a `[key: string]: any` index
814
+ signature, and on such a carrier deleting an optional member is **silent in every value
815
+ shape**: the index signature defeats both excess-property checking and the weak-type
816
+ check. Measured on this member with `tsc -p tsconfig.test.json`, a no-index-signature
817
+ control carrier (`FloatingChatbotConfig`) lit in the same run:
818
+
819
+ | route | fresh `'floating'` | fresh `'bogus'` | widened `'floating'` |
820
+ |---|---|---|---|
821
+ | declared (before) | clean | `TS2322` | clean |
822
+ | deleted | clean | **clean** | clean |
823
+ | tombstoned (after) | `TS2322` | `TS2322` | `TS2322` |
824
+
825
+ Deleted, the member reads as `any` and even a wrong-typed value goes quiet. Tombstoned,
826
+ **presence with any value** is a compile error — a channel deletion cannot produce on
827
+ this carrier at all. On a `BaseSchema` carrier the two routes are loud-vs-silent, not
828
+ louder-vs-quieter (the discriminator's carrier branch in its amended form, `5f8190c8c`).
829
+ Prong 2 of that discriminator licenses the tombstone: the key was advertised in the
830
+ 3.3.0 release record (`CHANGELOG.md:578`) and its published comment taught it as the
831
+ presentation switch. The deleted row is pinned in the test file as a live control — an
832
+ undeclared key that rides both shapes with no directive — so the contrast cannot rot.
833
+
834
+ ## Accept-set change, one line per face
835
+
836
+ - **TypeScript.** A write of `displayMode` against either chatbot face used to compile
837
+ and now does not.
838
+ - **Runtime (Zod / `safeValidateSchema`).** Nothing changes at all — a stored document
839
+ carrying the key parses green before and after, and keeps the value.
840
+ - **Designer.** The **Display Mode** control disappears from the `chatbot-floating`
841
+ property panel, and newly created nodes no longer carry the key.
842
+ - **Manifest, author-time validator, and generated JSX props.** The `chatbot-floating`
843
+ registration's `inputs` go from 20 entries to 19 and its `defaultProps` from 9 keys to
844
+ 8, so the manifest projected from them no longer lists the prop. Measured on both sides
845
+ of this change: `validateTree` on a stored `chatbot-floating` node carrying
846
+ `displayMode` goes from **0 diagnostics to exactly 1** — code `unknown-prop`, severity
847
+ **`warning`**, message `` `<chatbot-floating> has no prop "displayMode"` `` — which is
848
+ what the JSX/HTML authoring tier reports through `compile()`. In the same pair of runs
849
+ the props interface `generateDts` derives from those same `inputs` drops from 20 members
850
+ to 19, losing its `displayMode?: string` line, so a `.tsx` page written against those
851
+ generated intrinsics no longer type-checks the attribute.
852
+
853
+ **This is author-time only: no stored document stops parsing and nothing at render
854
+ moves.** The value survives compilation — `compile()` returns a tree still carrying
855
+ `displayMode: 'floating'`, byte-for-byte the same keys before and after — and a
856
+ `warning` never blocks a page, because the page renderer filters the diagnostics to
857
+ `severity === 'error'` before deciding whether to fail. Two neighbouring instruments are
858
+ untouched and worth naming so the scope is not read wider than it is: `os validate` runs
859
+ `safeValidateSchema`, the Zod path, and is silent on this key before and after; and the
860
+ build-time `sdui-intrinsics.d.ts` artifact is generated from the PUBLIC tier, which does
861
+ not contain `chatbot-floating` on either side of this change.
862
+ - 4ce14f1: One named, importable authoring-face type per `plugin-chatbot` registration:
863
+ `ChatbotEnhancedSchema` and `ChatbotFloatingSchema` join `ChatbotSchema`
864
+ (objectui#7655, under the objectui#6169 / #6172 family ruling — every component
865
+ node has exactly one named, importable authoring-face type).
866
+
867
+ `packages/plugin-chatbot` registers three components — `chatbot`,
868
+ `chatbot-enhanced`, `chatbot-floating` — and `@object-ui/types` published ONE
869
+ face for the family with `type` pinned to `'chatbot'`. An author annotating a
870
+ `chatbot-enhanced` or `chatbot-floating` node either dropped to untyped JSON or
871
+ annotated with `ChatbotSchema` and lied about `type`; the docs' floating example
872
+ had to be a `json` fence because no `tsx` fence could compile. The two
873
+ registrations' real key sets lived in anonymous `ChatbotSchema & { ... }`
874
+ intersections local to the renderer, referenceable by nothing outside that file.
875
+
876
+ ## The shape, and why not the smaller diff
877
+
878
+ One interface per registration, not `ChatbotSchema['type']` widened to the union
879
+ of the three keys. The union would give three nodes ONE type and re-open what
880
+ #6169 closed — a single interface declaring keys only some of its own `type`
881
+ values read — and this card exists because the family's declarations had already
882
+ drifted from its reads. Each face declares what ITS registration reads, censused
883
+ per key on the PR's base (one `schema.KEY` read per registration body in
884
+ `renderer.tsx`, lit by keys that are NOT shared: `processVisibility` 0 / 1 / 0,
885
+ `floatingConfig` 0 / 0 / 1), and the twenty keys all three read are picked off
886
+ `ChatbotSchema` by name (`ChatbotSharedKey`) so they stay one declaration:
887
+
888
+ - **`ChatbotEnhancedSchema`** (`type: 'chatbot-enhanced'`): the shared twenty,
889
+ plus `maxHeight` and `processVisibility` (read here, not by the floating
890
+ panel), plus `enableMarkdown`, `enableFileUpload`, `surface` (`'card' |
891
+ 'plain'`, objectui#6687) and the `onClear` runtime slot — four keys
892
+ `ChatbotSchema` never declared.
893
+ - **`ChatbotFloatingSchema`** (`type: 'chatbot-floating'`): the shared twenty,
894
+ plus `enableMarkdown`, `enableFileUpload`, `onClear`, and the two keys it
895
+ declares alongside `ChatbotSchema` — `floatingConfig` (`FloatingChatbotConfig`)
896
+ and `displayMode`. No `maxHeight`, `processVisibility` or `surface`: the
897
+ floating registration has no named read for any of them. (At this change its
898
+ trailing raw props spread still carried authored keys into the panel —
899
+ `processVisibility`, `surface` and `showAvatars` were live there, measured
900
+ through the real host — and this face neither declared nor promised that
901
+ accidental channel, which was tracked on a card of its own. That card has since
902
+ fenced the spread (`d3499b315`) the way the two sibling registrations do, so those three keys
903
+ are dark on `chatbot-floating` now; no member this face declares depended on
904
+ the channel.)
905
+ - Neither face declares `ChatbotSchema`'s six legacy members (`loading`,
906
+ `showAvatars`, `userAvatar`, `assistantAvatar`, `markdown`, `height`) — no
907
+ registration reads them by name — and neither redeclares `disabled`, which
908
+ stays `BaseSchema`'s `boolean | string` (`c93b4d5f3`).
909
+
910
+ **`ChatbotSchema` is unchanged.** It keeps `displayMode` and `floatingConfig`
911
+ (declarations verbatim), and the floating face declares the same two, so
912
+ `ChatbotSchema['displayMode']` and `ChatbotSchema['floatingConfig']` stay the
913
+ typed members they were — the `a3eb5d07a` `triggerIcon` tombstone keeps its
914
+ reach on `chatbot` nodes, now pinned on the node. `floatingConfig`'s doc comment
915
+ is rewritten on both faces: the old text said it was "only used when
916
+ `displayMode` is `'floating'`", which was false — it is read by `chatbot-floating`
917
+ alone and forwarded to the panel. `displayMode` is RULED RETIRED — objectui#7654,
918
+ maintainer ruling B (2026-09-05): `?: never` tombstone, designer control and
919
+ `defaultProps` seed removed, in that card's own change. This change carries the
920
+ key untouched on both faces (still unmirrored, still read by nothing) so that PR
921
+ finds the member exactly as ruled, and a tripwire test pins that any value still
922
+ parses green until that PR flips it.
923
+
924
+ **New published symbol:** `ChatbotSharedKey`, the string-literal union of the
925
+ twenty keys all three registrations read. It is exported from `complex.ts`
926
+ because an exported interface may not extend a `Pick` over a private name
927
+ (TS4022), so it is emitted into `dist/complex.d.ts` and is reachable through the
928
+ published `@object-ui/types/complex` subpath (it is not re-exported from the
929
+ package entry). It is a census, not an authoring face.
930
+
931
+ ## Zod twins, in lockstep
932
+
933
+ `@object-ui/types/zod` gains `ChatbotEnhancedSchema` and `ChatbotFloatingSchema`
934
+ (and `ComplexSchema` routes the two new discriminants). Every declared key is an
935
+ arm except: the three runtime slots (`onError`, `onSend`, `onClear`), refused by
936
+ name per objectui#6124; and, on the floating twin only, `floatingConfig` (no
937
+ `FloatingChatbotConfig` mirror exists — minting one is objectui#6152's axis) and
938
+ `displayMode` (unmirrored on `ChatbotSchema`'s twin too; retired by ruling on
939
+ objectui#7654 and executed there). The twins mirror the API body params under the
940
+ key the renderer reads, `requestBody`, and inherit `body` as the children slot —
941
+ they do not copy `ChatbotSchema`'s `body` naming collision.
942
+
943
+ **Accept-set change, stated plainly:** a `chatbot-enhanced` or `chatbot-floating`
944
+ document parsed through the family's only twin used to fail on `type`; through
945
+ its own twin it now parses, and the keys the twin declares are VALIDATED where
946
+ they rode through `.passthrough()` unexamined before (`surface: 'frameless'`,
947
+ `enableMarkdown: 'yes'` and `requestBody: 'x'` are refused). A `chatbot` node's
948
+ parse outcome is unchanged: `ChatbotSchema`'s twin did not move.
949
+
950
+ ## `@object-ui/plugin-chatbot`
951
+
952
+ The `chatbot-enhanced` and `chatbot-floating` registrations type `schema` as the
953
+ published faces and drop the anonymous intersections. One consequence:
954
+ `chatbot-floating` used to write `disabled={schema.disabled}` and then spread
955
+ `{...props}` AFTER it — and `SchemaRenderer` always includes `disabled: verdict
956
+ || undefined` in those props, so the raw read was overridden on every render.
957
+ With `disabled` honestly typed as `boolean | string` the raw union cannot be
958
+ forwarded into the panel's `boolean` prop, so the registration now names the
959
+ host verdict (`disabled: hostDisabled`) the way its two siblings have since
960
+ objectui#4431. No render outcome moves; the pin renders through the real host
961
+ both ways.
962
+
963
+ This ships as `minor` for `@object-ui/types` because it widens the published
964
+ surface with two new node types, two new Zod twins and one new type alias;
965
+ `ChatbotSchema`'s own accept set does not move: objectui's major is pinned to `@objectstack`'s
966
+ (`scripts/check-changeset-no-major.mjs`), and objectui's own contract changes
967
+ ship as `minor` with the semantics spelled out — as above.
968
+
969
+ ⚠️ **Dated note, 2026-09-27 — the shared census is nineteen keys, not twenty — objectui#5605.**
970
+ Later in this same release `maxToolRoundtrips` is retired behind a tombstone: no
971
+ registration reads it, so it leaves `ChatbotSharedKey`, and `ChatbotSchema` declares it
972
+ instead as a `?: never` member that the other two faces pick by name, refused by name on
973
+ the zod twins. The "twenty keys" above is kept as the reading of this change; the
974
+ objectui#5605 retirement entry states what the three faces declare now.
975
+
976
+ **Correction, 2026-09-30 (objectui#6152, round 4).** The "Zod twins" section above says the floating twin leaves `floatingConfig` unmirrored because no `FloatingChatbotConfig` mirror exists. That was true when this change was written, and it no longer is: objectui#6152 round 4 minted that mirror and declared `floatingConfig` on the `chatbot-floating` twin, judged member by member. The same round declared `requestBody` on `ChatbotSchema`'s twin, so all three chatbot twins now share one `requestBody` arm. `displayMode` stays unmirrored on both twins, as this entry says.
977
+
978
+ **Correction, 2026-10-01 (objectui#6152, round 5).** The section above says `ChatbotSchema` keeps `floatingConfig` as a typed member, so the `triggerIcon` tombstone reaches `chatbot` nodes. That is no longer true: objectui#6152 round 5 retired `ChatbotSchema.floatingConfig` on both faces, because the `chatbot` registration never read it. The member is a `?: never` tombstone on the TypeScript face and a named refusal on the zod twin, so a `chatbot` node refuses the whole key. `ChatbotFloatingSchema.floatingConfig` is unchanged; it never inherited the base member.
979
+ - e627724: Merge an authored `className` into the floating chat panel instead of replacing it
980
+ (objectui#8078).
981
+
982
+ `<FloatingChatbot>` ended its `<ChatbotEnhanced>` element with a bare
983
+ `className="h-full border-0 rounded-none"` literal written **after**
984
+ `{...chatbotProps}`. A later JSX prop always wins over an earlier spread, so the
985
+ `className` a `chatbot-floating` node authored — correctly forwarded the whole way,
986
+ since the registration destructures it as its own named prop — was silently
987
+ replaced. It type-checked, it parsed, and it did nothing to the rendered panel:
988
+ the styling escape hatch AGENTS.md #3 requires every widget to expose
989
+ (*"Always expose `className` in schema props so users can override via JSON"*),
990
+ exposed and inert. Every sibling in this package already merges through `cn()`.
991
+
992
+ The three classes are now the panel's **default** fit rather than its property:
993
+ `cn("h-full border-0 rounded-none", chatbotProps.className)`. This repo's `cn` is
994
+ `twMerge(clsx(...))`, so the last conflicting utility wins — an author who declares
995
+ `rounded-xl` or `border-2` on a floating node now gets it, while an author who
996
+ declares nothing about size still gets the borderless, square, container-filling
997
+ inner surface the surrounding panel chrome expects. A node that authors no
998
+ `className` renders exactly the class list it rendered before; that control is
999
+ pinned beside the fix.
1000
+
1001
+ `maxHeight="100%"`, two lines up, has the identical shape and is **deliberately
1002
+ kept forced** rather than merged — a ruling, recorded in a comment at the line.
1003
+ `ChatbotFloatingSchema` does not declare `maxHeight` and the `chatbot-floating`
1004
+ registration forwards none (that authoring face says the key is "NOT declared, on
1005
+ purpose", for this very reason), so nothing authored is dropped there, while
1006
+ `<ChatbotEnhanced>`'s own `'500px'` default would cap the conversation well inside
1007
+ a panel that can be 800px tall — or the whole viewport in fullscreen.
1008
+
1009
+ The card recorded that it had measured the defect statically and "not yet confirmed
1010
+ through a live render". The pin added here is that render: a `chatbot-floating` node
1011
+ mounted through the real SDUI host, asserting on the rendered panel's own class list
1012
+ — red before the fix, green after, with the panel's own `h-full` still present beside
1013
+ the authored classes.
1014
+ - e5a28b9: A confirm-gate preview no longer counts as the commit that settles the card before it
1015
+ (objectui#8343).
1016
+
1017
+ `builtPlanIds` decided a proposed plan had been built from the tool NAME alone —
1018
+ `tool.toolName === 'apply_blueprint'`. On an iteration turn where the user did not say
1019
+ the magic phrase ("直接搭建" / "just build it"), `apply_blueprint` hits its own
1020
+ confirm gate and returns `{status:'awaiting_confirmation'}`: it built nothing and is
1021
+ itself waiting for the user. That still marked the earlier `propose_blueprint` card
1022
+ 已搭建, collapsing its "Build it" button into an inert badge — and the
1023
+ `apply_blueprint` card carries no button of its own, so the turn was left with **no
1024
+ confirm affordance at all** while the assistant's prose asked the user to confirm one.
1025
+ The only way forward was guessing "确认" into the composer.
1026
+
1027
+ A build now only counts when the invocation is not a confirm-gate preview
1028
+ (`!isProposalResult(tool.result)`) — the same fact the tool header already reads to say
1029
+ "Awaiting Approval". A still-running `apply_blueprint` (no result yet) keeps counting,
1030
+ so the objectui#432 guard against re-triggering an in-flight build is unchanged.
1031
+
1032
+ The sibling `confirmedChangeIds` memo carried the same defect one level down: it
1033
+ inferred "this later call committed" from the ABSENCE of a rich `proposedChanges` card,
1034
+ and that detector additionally requires ≥1 parseable change row — so a later same-tool
1035
+ call that WAS a preview but produced no card (an empty `changes: []`) silently settled
1036
+ the pending 确认修改 card. It now reads the preview fact directly too.
1037
+ - bddf1cf: Fold an authored `role: 'tool'` before it seeds the AI SDK store, instead of asserting
1038
+ it away (objectui#8443).
1039
+
1040
+ `useObjectChat`'s `aiInitialMessages` builder wrote `as 'user' | 'assistant' | 'system'`
1041
+ over the role at both of its arms. The authoring contract accepts `role: 'tool'`,
1042
+ `normalizeMessages` deliberately does not narrow it, and `renderer.tsx` passes
1043
+ `schema.messages` straight through as `initialMessages` — so in API mode the store was
1044
+ seeded with a value outside its own union, declared as one of three roles it was not.
1045
+
1046
+ Measured against the real `@ai-sdk/react` 4.0.68 / `ai` 7.0.65 before the change: the
1047
+ client store holds the out-of-union role verbatim — nothing recognises it, nothing
1048
+ renders it distinctly — and the SDK's own downstream entry points then reject it.
1049
+ `convertToModelMessages` throws `AI_MessageConversionError: Unsupported role: tool`, and
1050
+ `validateUIMessages` throws `AI_TypeValidationError` naming `["system","user","assistant"]`
1051
+ at `[0].role`. Both legs were read with an in-union control on the identical shape, which
1052
+ converted and validated cleanly.
1053
+
1054
+ Both arms now call `toRuntimeRole(...)` — the package's single expression of this fold
1055
+ and the named decision of objectui#4399, the same one the render seam already applies:
1056
+ `'tool'` renders as an assistant bubble. **Behaviour change on the API-mode leg**: an
1057
+ authored `'tool'` message now seeds the store as `'assistant'` rather than `'tool'`. Its
1058
+ content, parts and tool invocations are untouched, and the other three roles are
1059
+ unchanged — `'system'` in particular keeps its own role and its centred pill.
1060
+
1061
+ Local mode is deliberately unaffected: an authored `'tool'` role still reaches the hook's
1062
+ own `messages` surface unchanged and is folded only at the render seam, which is what
1063
+ `ObjectChatMessage` is a statement about.
1064
+
1065
+ Deleting the assertions also re-arms the compile-time tripwire the seam was built to
1066
+ provide — `chatMessageAdapter.ts` records that "a new authored `role` makes
1067
+ `toRuntimeRole` unassignable", and an `as` let a future role past these two lines
1068
+ silently.
1069
+ - a78cd37: Dates and numbers across the console and the plugins format in the session's
1070
+ display locale instead of the machine's (objectui#9909).
1071
+
1072
+ Every one of these faces handed `Intl` — directly, or through a formatter called
1073
+ without one — either no locale tag or an explicit `undefined`, which is not "the
1074
+ user's locale": it is the locale of the machine the browser runs on, which is
1075
+ neither of this repository's two locale channels.
1076
+ A German or Spanish session therefore read, beside a translated label, a date or
1077
+ an amount grouped and decimal-marked the machine's way — and an amount with
1078
+ inverted separators does not read as unformatted, it reads as a different
1079
+ number. They now go through `useDisplayLocale()` (tenant regional default, then
1080
+ the active UI language, then `'en'`), and a plain helper takes that tag from its
1081
+ caller. The surfaces:
1082
+
1083
+ - **`@object-ui/fields`** — `GridField`'s numeric and currency cells (list mode
1084
+ and computed columns) and both total cells. The same cell helper's date branch
1085
+ already used the display locale, so a single grid row read two conventions at
1086
+ once.
1087
+ - **`@object-ui/plugin-charts`** — ISO-date x-axis ticks, compact y-axis ticks,
1088
+ the single-value face, spec `format` strings and the tooltip value.
1089
+ - **`@object-ui/app-shell`** — the organization invitations, members and
1090
+ accept-invitation dates; marketplace version dates; the AI conversation row's
1091
+ older-than-a-week date and its tooltip; the build-debug token count; the
1092
+ record approvals timeline; and the metadata-admin audit, history, external
1093
+ datasource snapshot, schema-browser row estimate, flow-run start and job
1094
+ next-fire faces. The audit, history and flow-run panels format these in the
1095
+ DISPLAY locale, not in the `locale` prop they take for their UI strings
1096
+ (`AuditPanel` defaults that prop to `'en-US'`; `HistoryPanel` and
1097
+ `FlowRunsPanel` leave it optional).
1098
+ - **`@object-ui/console`** — the approvals inbox's timestamp tooltips, amounts
1099
+ and payload summary; the audit log's timestamp column; the flow runs table and
1100
+ its run detail.
1101
+ - **`@object-ui/components`** — the export dialog's record counts and the debug
1102
+ panel's event times.
1103
+ - **`@object-ui/plugin-form`** — the analytics submission count, the
1104
+ master-detail subtotal / tax / total stack and the edit-conflict dialog's
1105
+ "their save" time.
1106
+ - **`@object-ui/plugin-chatbot`** — the approvals inbox's past-30-days date and
1107
+ the times stamped on local-mode chat messages (the user's and the
1108
+ auto-response).
1109
+ - **`@object-ui/plugin-dashboard`** — the record-count badge, and the currency
1110
+ and date-format branches of `renderFieldValue`, which was handed the display
1111
+ locale and spent it only on its percent branch.
1112
+ - **`@object-ui/plugin-grid`** — the record-detail panel's inferred currency
1113
+ value and the mobile card's amount line, siblings of date cells already on the
1114
+ display locale.
1115
+ - **`@object-ui/plugin-designer`** — `VersionHistory`'s version times.
1116
+
1117
+ A host that mounts one of the components that newly read the display locale with
1118
+ NO `I18nProvider` now gets react-i18next's once-per-module `NO_I18NEXT_INSTANCE`
1119
+ notice in the console on the first such mount; the faces still render, in the
1120
+ channel's `'en'` last resort, and mounting an `I18nProvider` (as the console
1121
+ does) avoids the notice.
1122
+
1123
+ **Additive API** (nothing that compiled before stops compiling):
1124
+
1125
+ - `@object-ui/types`: `ValidationContext` gains an optional `locale`. At this
1126
+ change, the `@object-ui/core` validation engine prints the `date_min` /
1127
+ `date_max` bound in it; omitted, `Intl` follows the runtime default, as
1128
+ `formatDisplayNumber` already declares for a caller with no locale in hand.
1129
+
1130
+ ⚠️ **Dated note, 2026-09-25 — that engine (`ValidationEngine`) is removed from
1131
+ `@object-ui/core` by a later change; `ValidationContext.locale` stays declared in
1132
+ `@object-ui/types`, and at that change nothing in `@object-ui/core` reads it —
1133
+ objectui#7659.**
1134
+
1135
+ ⚠️ **Dated note, 2026-09-27 — `ValidationContext` itself is removed from
1136
+ `@object-ui/types` by a later change, with the rest of the Phase 3.5
1137
+ validation types it belonged to, so the `locale` member this entry adds no
1138
+ longer exists — objectui#10719.**
1139
+ - `@object-ui/plugin-report`: `exportReport`, `exportAsHTML` and `exportAsPDF`
1140
+ take a trailing optional `locale` for the exported file's "Generated:" time,
1141
+ and `LiveExportOptions` gains an optional `locale` that `exportWithLiveData`
1142
+ forwards. Omitted, the time uses the display channel's own last resort
1143
+ (`'en'`), never the machine's locale. `ReportViewer` passes the session's
1144
+ display locale. The locale is deliberately NOT a `ReportExportConfig` member:
1145
+ that type is authored report metadata, and a display locale belongs to the
1146
+ session.
1147
+
1148
+ **One census, repository-wide.** `plugin-detail`'s machine-locale census pin
1149
+ (objectui#9786) is now a single test, `machineLocaleCensus-9909.test.ts` in
1150
+ `@object-ui/i18n`, covering every workspace package whose manifest depends on
1151
+ `@object-ui/i18n`. It refuses any call site that passes nothing, `undefined`,
1152
+ the `'default'` pseudo-tag (a subtag no locale data answers, so `Intl` resolves
1153
+ it to the machine's locale) or a hard-coded tag, unless the site is declared
1154
+ with its reason — for example the `catch` fallback for a tag `Intl` itself
1155
+ rejected, or an ISO formatter feeding `<input type="date">`. Each declared site
1156
+ is counted exactly, so deleting one without its entry is refused too. The
1157
+ per-package pin it replaces is deleted. The runtime tripwire that observes the
1158
+ argument each locale-taking call (`Intl` constructors, `Date` and `Number`
1159
+ `toLocale*`) actually receives moved into the private `@object-ui/test-support`
1160
+ package, and every surface above is pinned with it: the same data under two
1161
+ declared locales must render differently, NO locale-taking call may receive the
1162
+ machine's locale (nothing, `undefined` or `'default'`), and the surface's own
1163
+ calls must receive the declared tag. A call carrying another declared tag, such
1164
+ as the `'en'` of the session's UI language, is tolerated by design: only the
1165
+ machine's locale is the defect.
1166
+ - 79a4b8f: Recognize the landed AI quota ledger vocabulary in the chat error path
1167
+
1168
+ `parseAiQuotaError` now accepts the three SCREAMING_SNAKE ledger codes the cloud
1169
+ token guardrail emits (`AI_ALLOWANCE_EXHAUSTED`, `AI_DESIGN_QUOTA_EXHAUSTED`,
1170
+ `AI_DATA_CHAT_TRIAL_EXHAUSTED`) alongside the legacy lowercase trio, which stays
1171
+ readable for producers that have not converged yet. The companion fields
1172
+ (`messageEn` / `upgrade` / `topUp` / `resetsTonight`) are now read from the
1173
+ declared envelope's `error.details` as well as their legacy top-level position,
1174
+ with the declared position winning.
1175
+
1176
+ A quota-exhausted user gets the upgrade / top-up CTA again instead of the
1177
+ generic "Response failed" banner. The per-turn message cap's generic
1178
+ `QUOTA_EXCEEDED` deliberately keeps its existing rate-limit path — it has no
1179
+ upgrade or top-up next step.
1180
+ - cc3366b: The built-moment transition (#5799) now fires on auto-publish environments too: `detectBuiltAppPackage` reads the raw build envelope (`status:'drafted'` OR `'published'`, packageId + an `app` item), because an auto-publish posture rewrites apply_blueprint's envelope to `published` and the drafted-only `draftReview` lift never fired there — measured live on staging, where reopening a built conversation stayed on the full page.
1181
+ - a31adc6: `useObjectChat` no longer rebuilds its `DefaultChatTransport` on every render
1182
+ (objectui#4187).
1183
+
1184
+ The transport `useMemo` listed the caller's `body` and `headers` in its dep list.
1185
+ Both are object props and every caller passes a fresh literal each render — the AI
1186
+ page's chat pane builds its `body.context` inline — so the memo never hit and a
1187
+ transport was constructed on every render of every chat surface, which during a
1188
+ streaming turn is once per token batch.
1189
+
1190
+ `body` and `headers` are now read through refs inside
1191
+ `prepareSendMessagesRequest`, the idiom this hook already uses for the live model
1192
+ (`modelRef`) and the handoff conversation id (`parentConvRef`), and they are gone
1193
+ from the dep list. Unlike memoizing at each call site, a future caller cannot
1194
+ undo it.
1195
+
1196
+ No user-visible behaviour changes: `@ai-sdk/react` keeps the transport in a ref
1197
+ and re-keys its `Chat` only on `chat`/`id` (verified against the installed
1198
+ 4.0.68), which `useObjectChat` passes neither of, so the message thread was never
1199
+ at risk — the rebuild was pure waste. The one real difference is *when* the two
1200
+ values are sampled: a send now reads them at send time, so it observes the values
1201
+ of the most recent render instead of those of the last render that happened to
1202
+ rebuild the transport. That is never staler than before, and it is pinned by
1203
+ `useObjectChat.transportIdentity.test.tsx`.
1204
+ - 8ea3bee: fix(plugin-chatbot): localize the build-progress panel, which was an English island (objectui#7388)
1205
+
1206
+ Every label the build panel is HANDED was already localized — the host passes
1207
+ `openBuiltAppLabel`, `designBuiltAppLabel`, `previewDraftLabel` and the three
1208
+ connection cues through its own `t()`. Every string the panel OWNED was a
1209
+ literal in the component, so a fully Chinese conversation watched its app get
1210
+ built under `Building your app…`, over `Objects` / `Views` / `Dashboards` /
1211
+ `App` / `Sample data` row headings — one per row, on every build — and a
1212
+ `+N more` overflow counter.
1213
+
1214
+ All of them now resolve through the console's pack as `chatbot.build.*`, added
1215
+ to all ten locales. Behaviour for a known phase is unchanged in English, and
1216
+ the unknown-artifact-type fallback still renders the raw type rather than a
1217
+ raw i18n key.
1218
+ - fb336df: Move `lucide-react` from `^1.31.0` to `^1.43.0` in every package that declares it, and
1219
+ repair what the jump breaks, so icons resolved from a STRING keep drawing a glyph.
1220
+
1221
+ Measured once against the installed 1.43.0 artifact when this change was made; nothing in
1222
+ the repository re-derives these readings. Across the jump lucide removes no runtime export,
1223
+ no public type name and no `lucide-react/dynamic.mjs` name, and every name this repository
1224
+ imports from `lucide-react` resolves. Exactly one key leaves the runtime `icons` record:
1225
+ `Trash2`, retired in favour of `trash`.
1226
+
1227
+ What a user sees change:
1228
+
1229
+ - Icons the lazy icon seam draws (`resolveIcon`, objectui#9251) get their path data again.
1230
+ lucide 1.43.0 icon modules export their path data inside `__iconData` and no longer
1231
+ export `__iconNode`; the seam now reads both. Reading only `__iconNode` against 1.43.0
1232
+ leaves every such glyph an empty box, with nothing thrown or logged.
1233
+ - `DetailView`'s delete action and three schema-catalog examples spell their icon
1234
+ `trash`, not `trash-2`, so they keep resolving. The glyph is unchanged: 1.43.0's `trash`
1235
+ path data is byte-identical to the `trash-2` path data of 1.31.0 and 1.35.0. Anything
1236
+ that already authored `trash` now draws that same artwork, because lucide moved it under
1237
+ the `trash` name; a few other glyphs were also redrawn upstream.
1238
+ - Icons imported as COMPONENTS carry lucide 1.43.0's own classes: one class per declared
1239
+ alias (a spinner renders `class="lucide lucide-loader-circle lucide-loader-2 ..."`), and
1240
+ no longer the class lucide used to derive from the PascalCase key where that differs
1241
+ (`ArrowDown01` no longer carries `lucide-arrow-down01`). The canonical
1242
+ `lucide-<icon name>` class is still there, so a `.lucide-loader-circle` selector still
1243
+ matches.
1244
+ - Icons resolved from a STRING through the seam keep the classes they had: `lucide`, the
1245
+ canonical `lucide-<icon name>` class and the key-derived class. They do not carry
1246
+ lucide's per-alias classes. That is a maintainer ruling (objectui#8941, option C): the
1247
+ alias list lives only inside each lazily loaded icon module, and it was not moved into
1248
+ the eager name list. A selector that targets an alias class matches a component-imported
1249
+ icon and not a string-resolved one. This also dates the example in the objectui#9251
1250
+ entry: `trash-2` no longer resolves as a string, so no seam-drawn glyph carries
1251
+ `lucide-trash2 lucide-trash-2`; a digit-bearing name that still resolves, such as
1252
+ `arrow-down-0-1`, carries `lucide-arrow-down01 lucide-arrow-down-0-1`.
1253
+ - 0fce2ef: `maxToolRoundtrips` on `ChatbotSchema` is deprecated: it is inert, and an author
1254
+ who sets it is now told so instead of being left believing the documented cap
1255
+ applies (objectui#5605).
1256
+
1257
+ The key was declared authorable in `@object-ui/types` (interface and zod, with a
1258
+ description), threaded from the authored document through the chatbot renderer at
1259
+ three call sites, accepted by `useObjectChat`, given a default — and then dropped.
1260
+ Measuring the installed chat runtime says it cannot be honoured from here rather
1261
+ than that someone forgot to wire it: `@ai-sdk/react`'s `useChat` takes `ChatInit`
1262
+ plus throttle/resume, and `ChatInit` declares exactly one loop control — the
1263
+ boolean predicate `sendAutomaticallyWhen` — and no numeric cap under any
1264
+ spelling. The numeric knob was removed from `useChat` in a major, and its
1265
+ successor was renamed through `continueUntil` to `stopWhen` / `stepCountIs`,
1266
+ which the installed `ai` package declares only on `generateText`, `streamText`
1267
+ and the tool-loop agent settings — all server-side. ObjectUI is backend-agnostic,
1268
+ so it owns no server loop to cap either, and putting the number in the request
1269
+ body would only move the same dead key one hop onto a wire contract no backend
1270
+ reads.
1271
+
1272
+ This is stage one of a two-stage retirement, so nothing an author already wrote
1273
+ breaks: the key still parses, still carries its declared shape, and the renderer
1274
+ still threads it. What changes is that it is now marked `@deprecated` in the
1275
+ interface, the zod description and the docs, and that authoring it logs a
1276
+ one-time notice naming the knob that does work — `planning.maxIterations` on the
1277
+ agent. A follow-up removes the declaration once this deprecation has shipped in a
1278
+ release.
1279
+
1280
+ ⚠️ **Dated note, 2026-09-27 — the key is retired behind a tombstone, not staged for removal — objectui#5605.**
1281
+ This deprecation never shipped: it was still a pending changeset when the seat ruled
1282
+ arm A on the card, so no release carries the "deprecated, still accepted" state this entry
1283
+ describes. Later in this same release `maxToolRoundtrips` is refused by name on all three
1284
+ chat nodes, the one-time notice and the renderer pass-throughs are gone, and the key is no
1285
+ longer an option of `useObjectChat`. The rest of this entry is kept as the reading of this
1286
+ change; the objectui#5605 retirement entry states what an author gets now.
1287
+ - a392e1c: 「打开这条记录 →」卡片——ask 的记录交接终于有了客户端的另一半
1288
+
1289
+ 服务端半边(cloud#1659 的 `open_record`)先落了地,实测发现它是**半活的**:agent 发出
1290
+ `status:'record_handoff'`、回答说「点击上方链接打开」,而上方根本没有链接——控制台
1291
+ 有 `build_handoff` 的探测器,这个状态一处都不认识,信号被原样丢弃。
1292
+
1293
+ 按五步补齐:`detectRecordHandoff`(含持久化 `{type:'text',value}` 包裹形状——replay
1294
+ 信封那课的规矩)→ live 映射提升 → 水合提升 → 卡片渲染 → 宿主回调。
1295
+
1296
+ 两个设计点:
1297
+
1298
+ - **app 段点击时现场解析**。记录路由要 `/apps/:app/:object/record/:id`,交接载荷只有
1299
+ 对象和记录 id;宿主回调用一次同源元数据读取 `_packageId` 再导航,不给 agent 增加
1300
+ 它未必知道的参数。
1301
+ - **刻意不做「被取代」置灰**。builder 卡的旧 prompt 会过时,旧的记录链接不会——记录
1302
+ 不因为有新交接而失效。
1303
+
1304
+ 真机闭环验证:问「把《沉默的大多数》标记成已读」→ 卡片渲染
1305
+ (`沉默的大多数 — 把阅读状态改为已读`)→ 点击 → 落在
1306
+ `/apps/app.hdke/hdke_book/record/<id>` 详情页,「编辑」在手边。
1307
+
1308
+ 缺任一 id 的交接在探测器就被丢弃,与服务端的拒绝对称——指向空处的卡片比散文更糟。
1309
+ - ad404e0: Confirm-replay dispatch errors (bare `{error: …}` envelopes) now resolve the 确认修改 card instead of leaving it on 应用中 forever: `detectReplayOutcome` classifies them as a provisional failure, and a later successful authoring result in the same turn (the model self-repairing, e.g. after an `object not found` on a blueprint-local name) supersedes it via `detectAuthoringVerdict` — so the card never says 未生效 over a change that actually landed. Real publish failures (`publishFailed` envelopes) are never superseded. Measured live on the local rig, 2026-08-24.
1310
+ - eddc1dd: The Studio copilot tells the agent WHAT the user is discussing (cloud#1610 send half): `ChatPane` accepts a `surfaceContext` and sends it as `context.surface` on every turn (the transport reads the body per send, so it stays fresh); the Studio copilot derives it from the URL alone — the `:tab` pillar segment plus the `?surface=type:name` deep-link the pillars already mirror, so the artifact carries its type discriminator (page/object/dashboard/report). A display chip above the composer (「正在讨论:…」, new `console.ai.discussing` key in all ten packs) makes the sent context visible instead of invisible grounding.
1311
+ - 9a9977c: 工具卡片的名字终于有了 i18n 通道(此前中文界面里必然是英文)
1312
+
1313
+ 实测(cloud#1658,全中文环境):
1314
+
1315
+ ```
1316
+ 统计一下每个阅读状态各有多少本书
1317
+ Describe object 已完成 执行过程 ← 工具名英文
1318
+ Visualize data 已完成 执行过程 ← 工具名英文
1319
+ 已统计完成,各阅读状态的书本数量如下:… ← 其余全中文
1320
+ ```
1321
+
1322
+ 卡片上每一处都本地化了——状态、动作、回答——**唯独工具名不能**,因为
1323
+ `humanizeToolName` 是个纯英文构词器(`describe_object` → `Describe object`),
1324
+ 名字从未经过翻译,任何语言包都够不着它。而"它现在在做什么"恰恰是用户最需要读懂的一步。
1325
+
1326
+ 现在它接受一个可选的 `translate`(形状即 `useSafeTranslate()`),按
1327
+ `chatbot.tool.<tool_name>` 查;查不到就回落到与今天完全一致的英文标题。
1328
+
1329
+ **这一步只打通通道,不改变任何现有显示**:不传 translate 时行为逐字不变(测试的第一组
1330
+ 就在钉这一点),语言包也还没有条目。后续两件事各自独立、可分别推进:
1331
+ 把两个调用点接上 `useSafeTranslate()`;以及按需往语言包里补 `chatbot.tool.*`。
1332
+ 先落通道是因为——在通道存在之前,翻译工作根本无处可放。
1333
+
1334
+ 回落刻意交给英文标题而非原始名:语言包缺条目时显示 `Describe object`(与今天相同),
1335
+ 而不是 `describe_object`(比今天更差)。
1336
+ - Updated dependencies [7b10bef]
1337
+ - Updated dependencies [97abedc]
1338
+ - Updated dependencies [b46c58f]
1339
+ - Updated dependencies [a507334]
1340
+ - Updated dependencies [ad694ac]
1341
+ - Updated dependencies [6f96fca]
1342
+ - Updated dependencies [afb2284]
1343
+ - Updated dependencies [3ac2de8]
1344
+ - Updated dependencies [0aacecc]
1345
+ - Updated dependencies [63f4f92]
1346
+ - Updated dependencies [777fca2]
1347
+ - Updated dependencies [c131d9e]
1348
+ - Updated dependencies [5f00ff4]
1349
+ - Updated dependencies [c9e073a]
1350
+ - Updated dependencies [7b395d8]
1351
+ - Updated dependencies [0879812]
1352
+ - Updated dependencies [8cedb0d]
1353
+ - Updated dependencies [162621b]
1354
+ - Updated dependencies [4c6f549]
1355
+ - Updated dependencies [6cc910b]
1356
+ - Updated dependencies [061f5e8]
1357
+ - Updated dependencies [2dd4d3f]
1358
+ - Updated dependencies [e686f4d]
1359
+ - Updated dependencies [4ab4f1b]
1360
+ - Updated dependencies [b57107d]
1361
+ - Updated dependencies [e3ea4f9]
1362
+ - Updated dependencies [bb5d4ee]
1363
+ - Updated dependencies [dc666f7]
1364
+ - Updated dependencies [3335767]
1365
+ - Updated dependencies [8b1f066]
1366
+ - Updated dependencies [af243c1]
1367
+ - Updated dependencies [cff4b77]
1368
+ - Updated dependencies [961ceaa]
1369
+ - Updated dependencies [f3f4e4c]
1370
+ - Updated dependencies [a05c350]
1371
+ - Updated dependencies [1dbb993]
1372
+ - Updated dependencies [2b5f509]
1373
+ - Updated dependencies [808f339]
1374
+ - Updated dependencies [6cf5999]
1375
+ - Updated dependencies [274e14a]
1376
+ - Updated dependencies [8c10f4f]
1377
+ - Updated dependencies [90dac98]
1378
+ - Updated dependencies [6096f20]
1379
+ - Updated dependencies [544aca2]
1380
+ - Updated dependencies [ea02938]
1381
+ - Updated dependencies [a14fb23]
1382
+ - Updated dependencies [ae98f1d]
1383
+ - Updated dependencies [f98eddf]
1384
+ - Updated dependencies [ce6bd99]
1385
+ - Updated dependencies [a5b08c9]
1386
+ - Updated dependencies [86982ac]
1387
+ - Updated dependencies [cdefa2a]
1388
+ - Updated dependencies [0961d5e]
1389
+ - Updated dependencies [6276478]
1390
+ - Updated dependencies [5e67837]
1391
+ - Updated dependencies [ff14e29]
1392
+ - Updated dependencies [9b28151]
1393
+ - Updated dependencies [64563a9]
1394
+ - Updated dependencies [1a5003f]
1395
+ - Updated dependencies [09ab32b]
1396
+ - Updated dependencies [8acc51b]
1397
+ - Updated dependencies [ea9d17f]
1398
+ - Updated dependencies [45362a3]
1399
+ - Updated dependencies [2a943bf]
1400
+ - Updated dependencies [93a689d]
1401
+ - Updated dependencies [4357a27]
1402
+ - Updated dependencies [e5f4343]
1403
+ - Updated dependencies [3261e64]
1404
+ - Updated dependencies [f5178a2]
1405
+ - Updated dependencies [2ad3671]
1406
+ - Updated dependencies [8740e86]
1407
+ - Updated dependencies [d22b37b]
1408
+ - Updated dependencies [1daf477]
1409
+ - Updated dependencies [3d614ea]
1410
+ - Updated dependencies [6c2f3c5]
1411
+ - Updated dependencies [fb13e85]
1412
+ - Updated dependencies [c2d8659]
1413
+ - Updated dependencies [e0f8202]
1414
+ - Updated dependencies [ac2d6f1]
1415
+ - Updated dependencies [9fbbb17]
1416
+ - Updated dependencies [c3a26cc]
1417
+ - Updated dependencies [a66e58e]
1418
+ - Updated dependencies [d89492c]
1419
+ - Updated dependencies [9a5f998]
1420
+ - Updated dependencies [9327397]
1421
+ - Updated dependencies [17cc3a3]
1422
+ - Updated dependencies [02e6d36]
1423
+ - Updated dependencies [4758b33]
1424
+ - Updated dependencies [4758b33]
1425
+ - Updated dependencies [f905090]
1426
+ - Updated dependencies [9c78ebe]
1427
+ - Updated dependencies [9c78ebe]
1428
+ - Updated dependencies [12809a5]
1429
+ - Updated dependencies [7afc81d]
1430
+ - Updated dependencies [f9c06ef]
1431
+ - Updated dependencies [5ad3b88]
1432
+ - Updated dependencies [f9d772b]
1433
+ - Updated dependencies [97b6c21]
1434
+ - Updated dependencies [26ca2ad]
1435
+ - Updated dependencies [41ae65b]
1436
+ - Updated dependencies [baac95a]
1437
+ - Updated dependencies [13220af]
1438
+ - Updated dependencies [29b45f6]
1439
+ - Updated dependencies [39b8d51]
1440
+ - Updated dependencies [17b323e]
1441
+ - Updated dependencies [b956e69]
1442
+ - Updated dependencies [33e58d8]
1443
+ - Updated dependencies [256b4c9]
1444
+ - Updated dependencies [c5ec15c]
1445
+ - Updated dependencies [fec3b1a]
1446
+ - Updated dependencies [b8e0941]
1447
+ - Updated dependencies [0c50f18]
1448
+ - Updated dependencies [1dae95a]
1449
+ - Updated dependencies [e32dae1]
1450
+ - Updated dependencies [30b11ad]
1451
+ - Updated dependencies [4aebea0]
1452
+ - Updated dependencies [f976774]
1453
+ - Updated dependencies [3d6badf]
1454
+ - Updated dependencies [25cb364]
1455
+ - Updated dependencies [a60539b]
1456
+ - Updated dependencies [de1b879]
1457
+ - Updated dependencies [c6678b1]
1458
+ - Updated dependencies [0638322]
1459
+ - Updated dependencies [e3782d2]
1460
+ - Updated dependencies [db0beb2]
1461
+ - Updated dependencies [997ce38]
1462
+ - Updated dependencies [ae0b9d3]
1463
+ - Updated dependencies [ad1785c]
1464
+ - Updated dependencies [3b469c8]
1465
+ - Updated dependencies [990a2d6]
1466
+ - Updated dependencies [1c84036]
1467
+ - Updated dependencies [1c84036]
1468
+ - Updated dependencies [6650259]
1469
+ - Updated dependencies [4f8b7f8]
1470
+ - Updated dependencies [9e6619f]
1471
+ - Updated dependencies [f6ae5e2]
1472
+ - Updated dependencies [eb97ce6]
1473
+ - Updated dependencies [7343376]
1474
+ - Updated dependencies [b2683a2]
1475
+ - Updated dependencies [dded788]
1476
+ - Updated dependencies [b45d463]
1477
+ - Updated dependencies [54a7830]
1478
+ - Updated dependencies [f3135a4]
1479
+ - Updated dependencies [b5696d3]
1480
+ - Updated dependencies [3f9d926]
1481
+ - Updated dependencies [e978ed5]
1482
+ - Updated dependencies [6a7f24e]
1483
+ - Updated dependencies [b3c96d6]
1484
+ - Updated dependencies [8d0ca91]
1485
+ - Updated dependencies [c30c8dd]
1486
+ - Updated dependencies [244d516]
1487
+ - Updated dependencies [deca847]
1488
+ - Updated dependencies [ac15833]
1489
+ - Updated dependencies [ac15833]
1490
+ - Updated dependencies [e2dffc9]
1491
+ - Updated dependencies [328abeb]
1492
+ - Updated dependencies [dd0d78f]
1493
+ - Updated dependencies [24d3e65]
1494
+ - Updated dependencies [95a7c8d]
1495
+ - Updated dependencies [e227156]
1496
+ - Updated dependencies [cc4e476]
1497
+ - Updated dependencies [92970c4]
1498
+ - Updated dependencies [d570eaa]
1499
+ - Updated dependencies [4b742f4]
1500
+ - Updated dependencies [42687ba]
1501
+ - Updated dependencies [6cd8f66]
1502
+ - Updated dependencies [24a0f14]
1503
+ - Updated dependencies [797a30f]
1504
+ - Updated dependencies [b4075c0]
1505
+ - Updated dependencies [9b85600]
1506
+ - Updated dependencies [e327c89]
1507
+ - Updated dependencies [2eaf5be]
1508
+ - Updated dependencies [bf7ab35]
1509
+ - Updated dependencies [99878d8]
1510
+ - Updated dependencies [3c13675]
1511
+ - Updated dependencies [63ab761]
1512
+ - Updated dependencies [0eb9f36]
1513
+ - Updated dependencies [ae582b7]
1514
+ - Updated dependencies [51c2949]
1515
+ - Updated dependencies [a4b017e]
1516
+ - Updated dependencies [8732846]
1517
+ - Updated dependencies [559a2e2]
1518
+ - Updated dependencies [db11afd]
1519
+ - Updated dependencies [154075a]
1520
+ - Updated dependencies [582edef]
1521
+ - Updated dependencies [19f484f]
1522
+ - Updated dependencies [0a78a20]
1523
+ - Updated dependencies [615346d]
1524
+ - Updated dependencies [75dcc81]
1525
+ - Updated dependencies [55a12a8]
1526
+ - Updated dependencies [edfcf5a]
1527
+ - Updated dependencies [0a3e540]
1528
+ - Updated dependencies [c021b35]
1529
+ - Updated dependencies [f61dab1]
1530
+ - Updated dependencies [b0a05dd]
1531
+ - Updated dependencies [dd5ff19]
1532
+ - Updated dependencies [54997ff]
1533
+ - Updated dependencies [81f8498]
1534
+ - Updated dependencies [a782fa7]
1535
+ - Updated dependencies [1d6a23d]
1536
+ - Updated dependencies [0645133]
1537
+ - Updated dependencies [76e9df0]
1538
+ - Updated dependencies [0ecaa7d]
1539
+ - Updated dependencies [b24f93a]
1540
+ - Updated dependencies [6158e4c]
1541
+ - Updated dependencies [cff8641]
1542
+ - Updated dependencies [c27b575]
1543
+ - Updated dependencies [84b275c]
1544
+ - Updated dependencies [0e6e76b]
1545
+ - Updated dependencies [bf43afa]
1546
+ - Updated dependencies [385ebc5]
1547
+ - Updated dependencies [858eafb]
1548
+ - Updated dependencies [a8c5509]
1549
+ - Updated dependencies [c2a8d23]
1550
+ - Updated dependencies [0ffc423]
1551
+ - Updated dependencies [3cc4fe5]
1552
+ - Updated dependencies [cd5b19a]
1553
+ - Updated dependencies [cd5b19a]
1554
+ - Updated dependencies [17dc167]
1555
+ - Updated dependencies [20d23be]
1556
+ - Updated dependencies [20d23be]
1557
+ - Updated dependencies [2e3da72]
1558
+ - Updated dependencies [1263e40]
1559
+ - Updated dependencies [e6bc087]
1560
+ - Updated dependencies [9419df1]
1561
+ - Updated dependencies [8bab157]
1562
+ - Updated dependencies [a7557a7]
1563
+ - Updated dependencies [7d074ba]
1564
+ - Updated dependencies [6158e4c]
1565
+ - Updated dependencies [6158e4c]
1566
+ - Updated dependencies [52aad5c]
1567
+ - Updated dependencies [18d1a0a]
1568
+ - Updated dependencies [7fed09d]
1569
+ - Updated dependencies [58da8ae]
1570
+ - Updated dependencies [a8b9889]
1571
+ - Updated dependencies [138ad45]
1572
+ - Updated dependencies [138ad45]
1573
+ - Updated dependencies [5262f7d]
1574
+ - Updated dependencies [6aa029b]
1575
+ - Updated dependencies [2124d04]
1576
+ - Updated dependencies [be52115]
1577
+ - Updated dependencies [770cc5b]
1578
+ - Updated dependencies [1a88ce2]
1579
+ - Updated dependencies [a1a44d6]
1580
+ - Updated dependencies [e0a9c67]
1581
+ - Updated dependencies [5638529]
1582
+ - Updated dependencies [5638529]
1583
+ - Updated dependencies [d0fba91]
1584
+ - Updated dependencies [c476be0]
1585
+ - Updated dependencies [c82ff39]
1586
+ - Updated dependencies [6c3da53]
1587
+ - Updated dependencies [31987bd]
1588
+ - Updated dependencies [3c3ce15]
1589
+ - Updated dependencies [063119f]
1590
+ - Updated dependencies [e100589]
1591
+ - Updated dependencies [304f611]
1592
+ - Updated dependencies [e46ee77]
1593
+ - Updated dependencies [f9c8c4e]
1594
+ - Updated dependencies [6e9c8d2]
1595
+ - Updated dependencies [9547063]
1596
+ - Updated dependencies [3f6efd6]
1597
+ - Updated dependencies [55d18c6]
1598
+ - Updated dependencies [c4ab6d0]
1599
+ - Updated dependencies [0e9058b]
1600
+ - Updated dependencies [c4ab6d0]
1601
+ - Updated dependencies [5988b6b]
1602
+ - Updated dependencies [6158e4c]
1603
+ - Updated dependencies [00ccdf7]
1604
+ - Updated dependencies [9d9ed54]
1605
+ - Updated dependencies [4a1adb7]
1606
+ - Updated dependencies [4a1adb7]
1607
+ - Updated dependencies [50c73fe]
1608
+ - Updated dependencies [ca3de72]
1609
+ - Updated dependencies [83e3f83]
1610
+ - Updated dependencies [401611b]
1611
+ - Updated dependencies [2c0ddf2]
1612
+ - Updated dependencies [4abc0aa]
1613
+ - Updated dependencies [f560ded]
1614
+ - Updated dependencies [2b188fa]
1615
+ - Updated dependencies [b654d4e]
1616
+ - Updated dependencies [f68e0a0]
1617
+ - Updated dependencies [aea682a]
1618
+ - Updated dependencies [fcdc8ec]
1619
+ - Updated dependencies [2d576e4]
1620
+ - Updated dependencies [8366acc]
1621
+ - Updated dependencies [95e58a3]
1622
+ - Updated dependencies [9d7419b]
1623
+ - Updated dependencies [fc7db05]
1624
+ - Updated dependencies [9ed8d0f]
1625
+ - Updated dependencies [c73cdb5]
1626
+ - Updated dependencies [6f5719e]
1627
+ - Updated dependencies [d0097af]
1628
+ - Updated dependencies [432882b]
1629
+ - Updated dependencies [64dae8e]
1630
+ - Updated dependencies [b06e374]
1631
+ - Updated dependencies [06a8af5]
1632
+ - Updated dependencies [6a91586]
1633
+ - Updated dependencies [a04d7c6]
1634
+ - Updated dependencies [5ccc500]
1635
+ - Updated dependencies [f3c2bb0]
1636
+ - Updated dependencies [978507b]
1637
+ - Updated dependencies [778138e]
1638
+ - Updated dependencies [9801765]
1639
+ - Updated dependencies [9cebfca]
1640
+ - Updated dependencies [460575f]
1641
+ - Updated dependencies [d796c8d]
1642
+ - Updated dependencies [594704f]
1643
+ - Updated dependencies [d3995fe]
1644
+ - Updated dependencies [1b1d772]
1645
+ - Updated dependencies [d88e20f]
1646
+ - Updated dependencies [2d7304d]
1647
+ - Updated dependencies [636b236]
1648
+ - Updated dependencies [4172589]
1649
+ - Updated dependencies [d6d8fb9]
1650
+ - Updated dependencies [64d624d]
1651
+ - Updated dependencies [053fdc8]
1652
+ - Updated dependencies [41b7ce3]
1653
+ - Updated dependencies [ae476b8]
1654
+ - Updated dependencies [39f4309]
1655
+ - Updated dependencies [95bad12]
1656
+ - Updated dependencies [d2fb6ef]
1657
+ - Updated dependencies [7cd3987]
1658
+ - Updated dependencies [ee3b878]
1659
+ - Updated dependencies [e304a4e]
1660
+ - Updated dependencies [fda49e5]
1661
+ - Updated dependencies [490d9a9]
1662
+ - Updated dependencies [fc62bb4]
1663
+ - Updated dependencies [41df893]
1664
+ - Updated dependencies [0cba1b7]
1665
+ - Updated dependencies [00f3eb5]
1666
+ - Updated dependencies [1ec291c]
1667
+ - Updated dependencies [453dbaa]
1668
+ - Updated dependencies [95f8704]
1669
+ - Updated dependencies [f8cdbf2]
1670
+ - Updated dependencies [69a2163]
1671
+ - Updated dependencies [24e027e]
1672
+ - Updated dependencies [2c3cd1b]
1673
+ - Updated dependencies [e176053]
1674
+ - Updated dependencies [e30ed15]
1675
+ - Updated dependencies [90665e0]
1676
+ - Updated dependencies [8d3a529]
1677
+ - Updated dependencies [5ac2e2c]
1678
+ - Updated dependencies [194fae1]
1679
+ - Updated dependencies [7e19d03]
1680
+ - Updated dependencies [b08b7eb]
1681
+ - Updated dependencies [1e946c9]
1682
+ - Updated dependencies [546ddf7]
1683
+ - Updated dependencies [864154e]
1684
+ - Updated dependencies [b023625]
1685
+ - Updated dependencies [75bd83d]
1686
+ - Updated dependencies [44d075b]
1687
+ - Updated dependencies [40c479a]
1688
+ - Updated dependencies [971d387]
1689
+ - Updated dependencies [ee851c3]
1690
+ - Updated dependencies [6414dfd]
1691
+ - Updated dependencies [a8d5c71]
1692
+ - Updated dependencies [905b21f]
1693
+ - Updated dependencies [88e9109]
1694
+ - Updated dependencies [2c45966]
1695
+ - Updated dependencies [db3a600]
1696
+ - Updated dependencies [3a3db76]
1697
+ - Updated dependencies [0d723a3]
1698
+ - Updated dependencies [0c95d3d]
1699
+ - Updated dependencies [3e4fa2c]
1700
+ - Updated dependencies [b5b928a]
1701
+ - Updated dependencies [6fd2cf7]
1702
+ - Updated dependencies [5fa06c4]
1703
+ - Updated dependencies [52a43de]
1704
+ - Updated dependencies [195052f]
1705
+ - Updated dependencies [e4559d1]
1706
+ - Updated dependencies [2c71482]
1707
+ - Updated dependencies [129bcc5]
1708
+ - Updated dependencies [a26b9e4]
1709
+ - Updated dependencies [5ef9c4f]
1710
+ - Updated dependencies [46f0bb4]
1711
+ - Updated dependencies [06b82b8]
1712
+ - Updated dependencies [8ec11e1]
1713
+ - Updated dependencies [6f81384]
1714
+ - Updated dependencies [22ba927]
1715
+ - Updated dependencies [f8c70f4]
1716
+ - Updated dependencies [5d3a2d1]
1717
+ - Updated dependencies [8f1d995]
1718
+ - Updated dependencies [b362c1b]
1719
+ - Updated dependencies [f9c34df]
1720
+ - Updated dependencies [dddb942]
1721
+ - Updated dependencies [00c665e]
1722
+ - Updated dependencies [29754cf]
1723
+ - Updated dependencies [d7de534]
1724
+ - Updated dependencies [3c2b6f7]
1725
+ - Updated dependencies [6e88630]
1726
+ - Updated dependencies [b84dc18]
1727
+ - Updated dependencies [ac8abb0]
1728
+ - Updated dependencies [9d86e1d]
1729
+ - Updated dependencies [3a5817f]
1730
+ - Updated dependencies [99a3c2d]
1731
+ - Updated dependencies [5961030]
1732
+ - Updated dependencies [f24de8b]
1733
+ - Updated dependencies [c8ea8af]
1734
+ - Updated dependencies [9602dc8]
1735
+ - Updated dependencies [3190414]
1736
+ - Updated dependencies [4e480f5]
1737
+ - Updated dependencies [38a123c]
1738
+ - Updated dependencies [299102e]
1739
+ - Updated dependencies [30c73cd]
1740
+ - Updated dependencies [830ed58]
1741
+ - Updated dependencies [d7acad6]
1742
+ - Updated dependencies [45a9aeb]
1743
+ - Updated dependencies [713db46]
1744
+ - Updated dependencies [c71e14d]
1745
+ - Updated dependencies [bf3a03c]
1746
+ - Updated dependencies [cb55718]
1747
+ - Updated dependencies [748494b]
1748
+ - Updated dependencies [5967be0]
1749
+ - Updated dependencies [831be72]
1750
+ - Updated dependencies [29cb85b]
1751
+ - Updated dependencies [3e028c8]
1752
+ - Updated dependencies [d0889e2]
1753
+ - Updated dependencies [ce503e5]
1754
+ - Updated dependencies [f20dcf0]
1755
+ - Updated dependencies [12402a9]
1756
+ - Updated dependencies [aff3d7a]
1757
+ - Updated dependencies [4ca30d0]
1758
+ - Updated dependencies [7a5da14]
1759
+ - Updated dependencies [fff9645]
1760
+ - Updated dependencies [9c3b7ce]
1761
+ - Updated dependencies [2c1c967]
1762
+ - Updated dependencies [9486ac6]
1763
+ - Updated dependencies [9486ac6]
1764
+ - Updated dependencies [4d5f9b4]
1765
+ - Updated dependencies [d6ceb8d]
1766
+ - Updated dependencies [dc4365c]
1767
+ - Updated dependencies [e321d52]
1768
+ - Updated dependencies [969ba84]
1769
+ - Updated dependencies [4c68077]
1770
+ - Updated dependencies [7977ff9]
1771
+ - Updated dependencies [3beef6d]
1772
+ - Updated dependencies [06b8c42]
1773
+ - Updated dependencies [46b9bc9]
1774
+ - Updated dependencies [b97790a]
1775
+ - Updated dependencies [dbd5194]
1776
+ - Updated dependencies [7c9b044]
1777
+ - Updated dependencies [d47de51]
1778
+ - Updated dependencies [3fe6463]
1779
+ - Updated dependencies [b392674]
1780
+ - Updated dependencies [4f3a1e2]
1781
+ - Updated dependencies [31ab372]
1782
+ - Updated dependencies [846889b]
1783
+ - Updated dependencies [2acd8e1]
1784
+ - Updated dependencies [26896c6]
1785
+ - Updated dependencies [67fc3b0]
1786
+ - Updated dependencies [33a3b3c]
1787
+ - Updated dependencies [b87f15b]
1788
+ - Updated dependencies [045d20b]
1789
+ - Updated dependencies [a2d2515]
1790
+ - Updated dependencies [c18d099]
1791
+ - Updated dependencies [adb2a86]
1792
+ - Updated dependencies [03380aa]
1793
+ - Updated dependencies [4562ea5]
1794
+ - Updated dependencies [3619792]
1795
+ - Updated dependencies [3561bd2]
1796
+ - Updated dependencies [bf97b98]
1797
+ - Updated dependencies [320374d]
1798
+ - Updated dependencies [b0d308d]
1799
+ - Updated dependencies [40f34b4]
1800
+ - Updated dependencies [8063bcb]
1801
+ - Updated dependencies [b74a859]
1802
+ - Updated dependencies [d4493fd]
1803
+ - Updated dependencies [240b80f]
1804
+ - Updated dependencies [77cb489]
1805
+ - Updated dependencies [bfaa158]
1806
+ - Updated dependencies [777e5c6]
1807
+ - Updated dependencies [0c386dd]
1808
+ - Updated dependencies [9e37d9b]
1809
+ - Updated dependencies [5ad86dd]
1810
+ - Updated dependencies [16a725f]
1811
+ - Updated dependencies [4dfdcc3]
1812
+ - Updated dependencies [6a449fc]
1813
+ - Updated dependencies [446d93d]
1814
+ - Updated dependencies [ecd9cb2]
1815
+ - Updated dependencies [98d4108]
1816
+ - Updated dependencies [0e3b3be]
1817
+ - Updated dependencies [a29ae2d]
1818
+ - Updated dependencies [220c18d]
1819
+ - Updated dependencies [00d3f09]
1820
+ - Updated dependencies [4388f71]
1821
+ - Updated dependencies [0b1ac58]
1822
+ - Updated dependencies [c93b4d5]
1823
+ - Updated dependencies [c1fe272]
1824
+ - Updated dependencies [3cab570]
1825
+ - Updated dependencies [8ad218d]
1826
+ - Updated dependencies [3e41187]
1827
+ - Updated dependencies [5f78953]
1828
+ - Updated dependencies [639114c]
1829
+ - Updated dependencies [639114c]
1830
+ - Updated dependencies [1490691]
1831
+ - Updated dependencies [1f31d3a]
1832
+ - Updated dependencies [d1842ab]
1833
+ - Updated dependencies [78ca238]
1834
+ - Updated dependencies [d8ec8d6]
1835
+ - Updated dependencies [351eb31]
1836
+ - Updated dependencies [866cd1d]
1837
+ - Updated dependencies [20c04b2]
1838
+ - Updated dependencies [01c9023]
1839
+ - Updated dependencies [48c19bd]
1840
+ - Updated dependencies [a6d8b8d]
1841
+ - Updated dependencies [4b5bb95]
1842
+ - Updated dependencies [b652514]
1843
+ - Updated dependencies [adbda1b]
1844
+ - Updated dependencies [adbda1b]
1845
+ - Updated dependencies [8952395]
1846
+ - Updated dependencies [e2b3826]
1847
+ - Updated dependencies [0348bc9]
1848
+ - Updated dependencies [e8c553b]
1849
+ - Updated dependencies [2e32ed4]
1850
+ - Updated dependencies [3ed3eec]
1851
+ - Updated dependencies [7c3df8f]
1852
+ - Updated dependencies [a4514e8]
1853
+ - Updated dependencies [db3896c]
1854
+ - Updated dependencies [b9f5ff1]
1855
+ - Updated dependencies [e75f4c9]
1856
+ - Updated dependencies [19f1639]
1857
+ - Updated dependencies [4704aa4]
1858
+ - Updated dependencies [47547d0]
1859
+ - Updated dependencies [1bee5d0]
1860
+ - Updated dependencies [858cd72]
1861
+ - Updated dependencies [cfc9b6d]
1862
+ - Updated dependencies [554f2b6]
1863
+ - Updated dependencies [72f55c9]
1864
+ - Updated dependencies [26e06d7]
1865
+ - Updated dependencies [669d71b]
1866
+ - Updated dependencies [ed27d7c]
1867
+ - Updated dependencies [52c8cf7]
1868
+ - Updated dependencies [2ceb43a]
1869
+ - Updated dependencies [7cdd2b9]
1870
+ - Updated dependencies [52c8cf7]
1871
+ - Updated dependencies [3399704]
1872
+ - Updated dependencies [71a4a53]
1873
+ - Updated dependencies [7bf244b]
1874
+ - Updated dependencies [f0bb9fa]
1875
+ - Updated dependencies [81a2eb1]
1876
+ - Updated dependencies [caa0cd3]
1877
+ - Updated dependencies [caa0cd3]
1878
+ - Updated dependencies [20cb8db]
1879
+ - Updated dependencies [25c7d58]
1880
+ - Updated dependencies [00d2fa6]
1881
+ - Updated dependencies [77b2a18]
1882
+ - Updated dependencies [c6198c2]
1883
+ - Updated dependencies [721d1e0]
1884
+ - Updated dependencies [c2f0f48]
1885
+ - Updated dependencies [1237ae4]
1886
+ - Updated dependencies [2f61238]
1887
+ - Updated dependencies [51eb515]
1888
+ - Updated dependencies [c354ce5]
1889
+ - Updated dependencies [8fe8e5c]
1890
+ - Updated dependencies [feac439]
1891
+ - Updated dependencies [9ae871d]
1892
+ - Updated dependencies [efbd566]
1893
+ - Updated dependencies [2a5bf45]
1894
+ - Updated dependencies [9587fc9]
1895
+ - Updated dependencies [e62c44e]
1896
+ - Updated dependencies [daf9d57]
1897
+ - Updated dependencies [23b9958]
1898
+ - Updated dependencies [c15d7ec]
1899
+ - Updated dependencies [5d0876c]
1900
+ - Updated dependencies [f7ace0a]
1901
+ - Updated dependencies [b041b9c]
1902
+ - Updated dependencies [ce2aaef]
1903
+ - Updated dependencies [544ecba]
1904
+ - Updated dependencies [2ce2612]
1905
+ - Updated dependencies [bc640ec]
1906
+ - Updated dependencies [1e215c4]
1907
+ - Updated dependencies [da6e191]
1908
+ - Updated dependencies [3e377c9]
1909
+ - Updated dependencies [a3eb5d0]
1910
+ - Updated dependencies [4ce14f1]
1911
+ - Updated dependencies [aef97e5]
1912
+ - Updated dependencies [2af1fa7]
1913
+ - Updated dependencies [c14d3a0]
1914
+ - Updated dependencies [a137d0c]
1915
+ - Updated dependencies [caf477f]
1916
+ - Updated dependencies [f6375da]
1917
+ - Updated dependencies [967e5d8]
1918
+ - Updated dependencies [c907a9c]
1919
+ - Updated dependencies [a4611b3]
1920
+ - Updated dependencies [20316ba]
1921
+ - Updated dependencies [d3499b3]
1922
+ - Updated dependencies [91f9276]
1923
+ - Updated dependencies [309c75e]
1924
+ - Updated dependencies [c9f9bae]
1925
+ - Updated dependencies [18897a4]
1926
+ - Updated dependencies [8b7ea39]
1927
+ - Updated dependencies [a915064]
1928
+ - Updated dependencies [dcbf0b2]
1929
+ - Updated dependencies [52cac38]
1930
+ - Updated dependencies [93fea2e]
1931
+ - Updated dependencies [1422a92]
1932
+ - Updated dependencies [d05fe17]
1933
+ - Updated dependencies [a480f79]
1934
+ - Updated dependencies [f08d1a8]
1935
+ - Updated dependencies [64a252d]
1936
+ - Updated dependencies [786bc91]
1937
+ - Updated dependencies [75fca96]
1938
+ - Updated dependencies [7ca6ddd]
1939
+ - Updated dependencies [f1cd290]
1940
+ - Updated dependencies [5a41ce7]
1941
+ - Updated dependencies [8d50bc2]
1942
+ - Updated dependencies [604476d]
1943
+ - Updated dependencies [d1bebb0]
1944
+ - Updated dependencies [95bf128]
1945
+ - Updated dependencies [335abea]
1946
+ - Updated dependencies [edea22a]
1947
+ - Updated dependencies [0f5cadf]
1948
+ - Updated dependencies [4f9f1ee]
1949
+ - Updated dependencies [66e8b2a]
1950
+ - Updated dependencies [aa083cd]
1951
+ - Updated dependencies [12b5992]
1952
+ - Updated dependencies [b93e245]
1953
+ - Updated dependencies [c842594]
1954
+ - Updated dependencies [290de37]
1955
+ - Updated dependencies [e1c27e4]
1956
+ - Updated dependencies [8c8da45]
1957
+ - Updated dependencies [8cd8eb5]
1958
+ - Updated dependencies [cf1d29e]
1959
+ - Updated dependencies [1bd79c8]
1960
+ - Updated dependencies [af9e957]
1961
+ - Updated dependencies [b1030c7]
1962
+ - Updated dependencies [c974edf]
1963
+ - Updated dependencies [ad852b6]
1964
+ - Updated dependencies [6778809]
1965
+ - Updated dependencies [7fb22a1]
1966
+ - Updated dependencies [ad66d79]
1967
+ - Updated dependencies [0758bd8]
1968
+ - Updated dependencies [ee4d19f]
1969
+ - Updated dependencies [496d31d]
1970
+ - Updated dependencies [0ea7054]
1971
+ - Updated dependencies [9a853f2]
1972
+ - Updated dependencies [cb847fd]
1973
+ - Updated dependencies [ee70287]
1974
+ - Updated dependencies [3e98e13]
1975
+ - Updated dependencies [a695f50]
1976
+ - Updated dependencies [fc32921]
1977
+ - Updated dependencies [4eaa835]
1978
+ - Updated dependencies [8f9d87a]
1979
+ - Updated dependencies [b1777ae]
1980
+ - Updated dependencies [24845c4]
1981
+ - Updated dependencies [6f864cf]
1982
+ - Updated dependencies [24d1edd]
1983
+ - Updated dependencies [645087c]
1984
+ - Updated dependencies [33f4a19]
1985
+ - Updated dependencies [6e9a3d4]
1986
+ - Updated dependencies [4a292d2]
1987
+ - Updated dependencies [5323168]
1988
+ - Updated dependencies [841dd2b]
1989
+ - Updated dependencies [3014fc0]
1990
+ - Updated dependencies [dacb402]
1991
+ - Updated dependencies [846cec0]
1992
+ - Updated dependencies [91facae]
1993
+ - Updated dependencies [b38014e]
1994
+ - Updated dependencies [474797d]
1995
+ - Updated dependencies [704e695]
1996
+ - Updated dependencies [a407bd6]
1997
+ - Updated dependencies [317dbce]
1998
+ - Updated dependencies [309728c]
1999
+ - Updated dependencies [aa08d7e]
2000
+ - Updated dependencies [3a43a15]
2001
+ - Updated dependencies [868e825]
2002
+ - Updated dependencies [f76f436]
2003
+ - Updated dependencies [ce45a03]
2004
+ - Updated dependencies [421544b]
2005
+ - Updated dependencies [fb01022]
2006
+ - Updated dependencies [e9d9212]
2007
+ - Updated dependencies [ecfb693]
2008
+ - Updated dependencies [abc1b18]
2009
+ - Updated dependencies [81a51db]
2010
+ - Updated dependencies [67749c7]
2011
+ - Updated dependencies [507b61b]
2012
+ - Updated dependencies [512c84b]
2013
+ - Updated dependencies [c300267]
2014
+ - Updated dependencies [fb3a101]
2015
+ - Updated dependencies [d4733f2]
2016
+ - Updated dependencies [7c9145f]
2017
+ - Updated dependencies [1570eac]
2018
+ - Updated dependencies [f391ede]
2019
+ - Updated dependencies [f5cfbbd]
2020
+ - Updated dependencies [f5cfbbd]
2021
+ - Updated dependencies [8b532cb]
2022
+ - Updated dependencies [64c3cdd]
2023
+ - Updated dependencies [4d65991]
2024
+ - Updated dependencies [c42554e]
2025
+ - Updated dependencies [555b4ec]
2026
+ - Updated dependencies [1ccfc23]
2027
+ - Updated dependencies [542718f]
2028
+ - Updated dependencies [7f27bc5]
2029
+ - Updated dependencies [0a174f3]
2030
+ - Updated dependencies [676f677]
2031
+ - Updated dependencies [f95b140]
2032
+ - Updated dependencies [541ce4e]
2033
+ - Updated dependencies [6479086]
2034
+ - Updated dependencies [d79f525]
2035
+ - Updated dependencies [d1865d2]
2036
+ - Updated dependencies [55ba3ff]
2037
+ - Updated dependencies [f1190b0]
2038
+ - Updated dependencies [561abef]
2039
+ - Updated dependencies [ef52001]
2040
+ - Updated dependencies [6a4680b]
2041
+ - Updated dependencies [c3a4273]
2042
+ - Updated dependencies [abf710d]
2043
+ - Updated dependencies [093af32]
2044
+ - Updated dependencies [1bd1be7]
2045
+ - Updated dependencies [d234fa9]
2046
+ - Updated dependencies [adf5812]
2047
+ - Updated dependencies [e36acd4]
2048
+ - Updated dependencies [5058336]
2049
+ - Updated dependencies [2f6b2bf]
2050
+ - Updated dependencies [2028b31]
2051
+ - Updated dependencies [63601ab]
2052
+ - Updated dependencies [c372b29]
2053
+ - Updated dependencies [152f0a7]
2054
+ - Updated dependencies [8693b85]
2055
+ - Updated dependencies [e82dad1]
2056
+ - Updated dependencies [58b7b3d]
2057
+ - Updated dependencies [84defab]
2058
+ - Updated dependencies [681d3f1]
2059
+ - Updated dependencies [969d4f2]
2060
+ - Updated dependencies [f3bc481]
2061
+ - Updated dependencies [b79aac2]
2062
+ - Updated dependencies [93fc0e7]
2063
+ - Updated dependencies [a4b723f]
2064
+ - Updated dependencies [2b10ca0]
2065
+ - Updated dependencies [7db4a81]
2066
+ - Updated dependencies [19a0b0e]
2067
+ - Updated dependencies [526fc11]
2068
+ - Updated dependencies [f8e3e9a]
2069
+ - Updated dependencies [b9d47ec]
2070
+ - Updated dependencies [3b6bc69]
2071
+ - Updated dependencies [6214db6]
2072
+ - Updated dependencies [6732df4]
2073
+ - Updated dependencies [fe9e0d0]
2074
+ - Updated dependencies [63fb72c]
2075
+ - Updated dependencies [804831c]
2076
+ - Updated dependencies [279e48e]
2077
+ - Updated dependencies [8700d6d]
2078
+ - Updated dependencies [8db2a0f]
2079
+ - Updated dependencies [689953a]
2080
+ - Updated dependencies [30443fb]
2081
+ - Updated dependencies [8d3dbb2]
2082
+ - Updated dependencies [efc1c9c]
2083
+ - Updated dependencies [da45e6b]
2084
+ - Updated dependencies [7533465]
2085
+ - Updated dependencies [835f0f3]
2086
+ - Updated dependencies [a9d97be]
2087
+ - Updated dependencies [ed35b44]
2088
+ - Updated dependencies [9ba7e9c]
2089
+ - Updated dependencies [729e851]
2090
+ - Updated dependencies [96919a4]
2091
+ - Updated dependencies [345e24a]
2092
+ - Updated dependencies [20b507a]
2093
+ - Updated dependencies [2e471dc]
2094
+ - Updated dependencies [6748587]
2095
+ - Updated dependencies [be50942]
2096
+ - Updated dependencies [775e079]
2097
+ - Updated dependencies [7e8b3c0]
2098
+ - Updated dependencies [53374dc]
2099
+ - Updated dependencies [f6fb83f]
2100
+ - Updated dependencies [2049b03]
2101
+ - Updated dependencies [2bf34f7]
2102
+ - Updated dependencies [15b33ae]
2103
+ - Updated dependencies [7cbc724]
2104
+ - Updated dependencies [7098eed]
2105
+ - Updated dependencies [3df7c5c]
2106
+ - Updated dependencies [fb91ac9]
2107
+ - Updated dependencies [fb91ac9]
2108
+ - Updated dependencies [641fb55]
2109
+ - Updated dependencies [8524372]
2110
+ - Updated dependencies [7cbefa5]
2111
+ - Updated dependencies [72d6587]
2112
+ - Updated dependencies [a272a4f]
2113
+ - Updated dependencies [55f39ee]
2114
+ - Updated dependencies [0ce32d5]
2115
+ - Updated dependencies [0970a0e]
2116
+ - Updated dependencies [e427e9c]
2117
+ - Updated dependencies [bbc9dc3]
2118
+ - Updated dependencies [02f1813]
2119
+ - Updated dependencies [1ef89c0]
2120
+ - Updated dependencies [ba0b61a]
2121
+ - Updated dependencies [ba0b61a]
2122
+ - Updated dependencies [ac716ff]
2123
+ - Updated dependencies [f0f3cd5]
2124
+ - Updated dependencies [ab856ed]
2125
+ - Updated dependencies [20f3e65]
2126
+ - Updated dependencies [bbba098]
2127
+ - Updated dependencies [87af769]
2128
+ - Updated dependencies [3be720e]
2129
+ - Updated dependencies [43c0d17]
2130
+ - Updated dependencies [c3df43a]
2131
+ - Updated dependencies [d16d0e9]
2132
+ - Updated dependencies [bbe57fd]
2133
+ - Updated dependencies [272a530]
2134
+ - Updated dependencies [1779e8d]
2135
+ - Updated dependencies [f7fcc2c]
2136
+ - Updated dependencies [f0f4d6c]
2137
+ - Updated dependencies [4128188]
2138
+ - Updated dependencies [b253c4e]
2139
+ - Updated dependencies [78a9c67]
2140
+ - Updated dependencies [4a7ef0d]
2141
+ - Updated dependencies [4598f6d]
2142
+ - Updated dependencies [dea17b4]
2143
+ - Updated dependencies [89bb77a]
2144
+ - Updated dependencies [06611e4]
2145
+ - Updated dependencies [44152c4]
2146
+ - Updated dependencies [3939545]
2147
+ - Updated dependencies [66abbde]
2148
+ - Updated dependencies [dc3893d]
2149
+ - Updated dependencies [1bbaa16]
2150
+ - Updated dependencies [6ee259a]
2151
+ - Updated dependencies [7649f43]
2152
+ - Updated dependencies [e708426]
2153
+ - Updated dependencies [3b6d53b]
2154
+ - Updated dependencies [276d174]
2155
+ - Updated dependencies [2982ed9]
2156
+ - Updated dependencies [a8198de]
2157
+ - Updated dependencies [0c789a4]
2158
+ - Updated dependencies [05a49f2]
2159
+ - Updated dependencies [b234a84]
2160
+ - Updated dependencies [a78cd37]
2161
+ - Updated dependencies [5ea623e]
2162
+ - Updated dependencies [5eabe86]
2163
+ - Updated dependencies [ca5d671]
2164
+ - Updated dependencies [32bf2d6]
2165
+ - Updated dependencies [ff0c384]
2166
+ - Updated dependencies [af4fb29]
2167
+ - Updated dependencies [c698a81]
2168
+ - Updated dependencies [ff5ef1c]
2169
+ - Updated dependencies [befd40c]
2170
+ - Updated dependencies [9a97800]
2171
+ - Updated dependencies [6bca0e4]
2172
+ - Updated dependencies [81c0bc4]
2173
+ - Updated dependencies [3c76801]
2174
+ - Updated dependencies [60500cb]
2175
+ - Updated dependencies [2fcefb9]
2176
+ - Updated dependencies [77f846a]
2177
+ - Updated dependencies [bc5870c]
2178
+ - Updated dependencies [b55a346]
2179
+ - Updated dependencies [065bba7]
2180
+ - Updated dependencies [f760064]
2181
+ - Updated dependencies [dd19463]
2182
+ - Updated dependencies [6791717]
2183
+ - Updated dependencies [8ea3bee]
2184
+ - Updated dependencies [100547e]
2185
+ - Updated dependencies [3a58149]
2186
+ - Updated dependencies [6d1c155]
2187
+ - Updated dependencies [d7573b3]
2188
+ - Updated dependencies [bf3edfe]
2189
+ - Updated dependencies [2c8474c]
2190
+ - Updated dependencies [6ce89da]
2191
+ - Updated dependencies [0e05aac]
2192
+ - Updated dependencies [ae61ad4]
2193
+ - Updated dependencies [5aed9e4]
2194
+ - Updated dependencies [83c77dc]
2195
+ - Updated dependencies [18a8e7d]
2196
+ - Updated dependencies [e7957ab]
2197
+ - Updated dependencies [f7e34ca]
2198
+ - Updated dependencies [e719ebd]
2199
+ - Updated dependencies [516583b]
2200
+ - Updated dependencies [f9e4f91]
2201
+ - Updated dependencies [6ef48b1]
2202
+ - Updated dependencies [fa429cf]
2203
+ - Updated dependencies [ed8df3e]
2204
+ - Updated dependencies [fe76ece]
2205
+ - Updated dependencies [8b446f5]
2206
+ - Updated dependencies [8e74b27]
2207
+ - Updated dependencies [7102b20]
2208
+ - Updated dependencies [8ebd57f]
2209
+ - Updated dependencies [617707a]
2210
+ - Updated dependencies [c40f3b8]
2211
+ - Updated dependencies [58770f3]
2212
+ - Updated dependencies [aefe428]
2213
+ - Updated dependencies [485f096]
2214
+ - Updated dependencies [7357447]
2215
+ - Updated dependencies [199d31b]
2216
+ - Updated dependencies [b655a9d]
2217
+ - Updated dependencies [3e01cb5]
2218
+ - Updated dependencies [7138bc1]
2219
+ - Updated dependencies [cef27e2]
2220
+ - Updated dependencies [4e8622b]
2221
+ - Updated dependencies [dffd752]
2222
+ - Updated dependencies [06973aa]
2223
+ - Updated dependencies [50798f3]
2224
+ - Updated dependencies [6a576c9]
2225
+ - Updated dependencies [105f3c5]
2226
+ - Updated dependencies [3ccd9e8]
2227
+ - Updated dependencies [689b979]
2228
+ - Updated dependencies [c70f865]
2229
+ - Updated dependencies [e546222]
2230
+ - Updated dependencies [fd13f52]
2231
+ - Updated dependencies [d7bd274]
2232
+ - Updated dependencies [98c3a74]
2233
+ - Updated dependencies [fffa30d]
2234
+ - Updated dependencies [ebce5a3]
2235
+ - Updated dependencies [fb336df]
2236
+ - Updated dependencies [9d9040d]
2237
+ - Updated dependencies [20e317c]
2238
+ - Updated dependencies [0fce2ef]
2239
+ - Updated dependencies [42df928]
2240
+ - Updated dependencies [0e2ddd4]
2241
+ - Updated dependencies [b7479ab]
2242
+ - Updated dependencies [9850c6e]
2243
+ - Updated dependencies [de570cc]
2244
+ - Updated dependencies [b2ea297]
2245
+ - Updated dependencies [5b5a5c3]
2246
+ - Updated dependencies [14582b8]
2247
+ - Updated dependencies [51e144e]
2248
+ - Updated dependencies [19cbf10]
2249
+ - Updated dependencies [ab92940]
2250
+ - Updated dependencies [a691c0b]
2251
+ - Updated dependencies [0b1326d]
2252
+ - Updated dependencies [1e66879]
2253
+ - Updated dependencies [c5200f0]
2254
+ - Updated dependencies [af3861f]
2255
+ - Updated dependencies [515f171]
2256
+ - Updated dependencies [1f4e029]
2257
+ - Updated dependencies [4f14ad7]
2258
+ - Updated dependencies [258d264]
2259
+ - Updated dependencies [cac64b3]
2260
+ - Updated dependencies [8033ad1]
2261
+ - Updated dependencies [fa140b8]
2262
+ - Updated dependencies [71cba28]
2263
+ - Updated dependencies [190fbd0]
2264
+ - Updated dependencies [c00bf28]
2265
+ - Updated dependencies [93127bd]
2266
+ - Updated dependencies [f2158ec]
2267
+ - Updated dependencies [759606e]
2268
+ - Updated dependencies [fd8dace]
2269
+ - Updated dependencies [72ffc34]
2270
+ - Updated dependencies [a51fa0c]
2271
+ - Updated dependencies [51f3d8d]
2272
+ - Updated dependencies [bf28341]
2273
+ - Updated dependencies [78cbdb5]
2274
+ - Updated dependencies [b7543a9]
2275
+ - Updated dependencies [6c6cee7]
2276
+ - Updated dependencies [42887e0]
2277
+ - Updated dependencies [83fe6e7]
2278
+ - Updated dependencies [d1ab06f]
2279
+ - Updated dependencies [38a9568]
2280
+ - Updated dependencies [f90b8fb]
2281
+ - Updated dependencies [91783c4]
2282
+ - Updated dependencies [982885d]
2283
+ - Updated dependencies [dba7d84]
2284
+ - Updated dependencies [ca39427]
2285
+ - Updated dependencies [bd09957]
2286
+ - Updated dependencies [5a07e67]
2287
+ - Updated dependencies [2d36552]
2288
+ - Updated dependencies [45d8288]
2289
+ - Updated dependencies [b2437a7]
2290
+ - Updated dependencies [f157423]
2291
+ - Updated dependencies [7a90afd]
2292
+ - Updated dependencies [eddc1dd]
2293
+ - Updated dependencies [490f482]
2294
+ - Updated dependencies [27308c5]
2295
+ - Updated dependencies [8689166]
2296
+ - Updated dependencies [c9327c9]
2297
+ - Updated dependencies [920165d]
2298
+ - Updated dependencies [9101be5]
2299
+ - Updated dependencies [f53a8d0]
2300
+ - Updated dependencies [968dc1e]
2301
+ - Updated dependencies [57f9b07]
2302
+ - Updated dependencies [3c73d99]
2303
+ - Updated dependencies [d91aed9]
2304
+ - Updated dependencies [ed71d9e]
2305
+ - Updated dependencies [7776fc2]
2306
+ - Updated dependencies [e76634c]
2307
+ - Updated dependencies [c86185e]
2308
+ - Updated dependencies [fb96ecb]
2309
+ - Updated dependencies [1170ed1]
2310
+ - Updated dependencies [92814db]
2311
+ - Updated dependencies [4d73b07]
2312
+ - @object-ui/react@17.7.0
2313
+ - @object-ui/core@17.7.0
2314
+ - @object-ui/types@17.7.0
2315
+ - @object-ui/i18n@17.7.0
2316
+ - @object-ui/components@17.7.0
2317
+
2318
+ ## 17.6.0
2319
+
2320
+ ### Patch Changes
2321
+
2322
+ - Updated dependencies [88085e3]
2323
+ - Updated dependencies [69251bf]
2324
+ - Updated dependencies [57e668f]
2325
+ - Updated dependencies [516663d]
2326
+ - Updated dependencies [41ac1b7]
2327
+ - Updated dependencies [1eaf0a1]
2328
+ - Updated dependencies [460c4d0]
2329
+ - Updated dependencies [0ae27f7]
2330
+ - Updated dependencies [2533ec5]
2331
+ - Updated dependencies [78c0f9a]
2332
+ - Updated dependencies [bbe8b86]
2333
+ - Updated dependencies [8477be5]
2334
+ - Updated dependencies [279fb13]
2335
+ - Updated dependencies [2e82ab2]
2336
+ - Updated dependencies [ad07b65]
2337
+ - Updated dependencies [41f498b]
2338
+ - Updated dependencies [ef0d150]
2339
+ - Updated dependencies [f34226e]
2340
+ - Updated dependencies [564b605]
2341
+ - Updated dependencies [e1d4251]
2342
+ - Updated dependencies [40d3a33]
2343
+ - Updated dependencies [8b9dc62]
2344
+ - Updated dependencies [1184192]
2345
+ - Updated dependencies [a2a9747]
2346
+ - Updated dependencies [a1609a6]
2347
+ - Updated dependencies [53f23bc]
2348
+ - Updated dependencies [c4533dc]
2349
+ - Updated dependencies [be60815]
2350
+ - Updated dependencies [37f6844]
2351
+ - Updated dependencies [93de4f6]
2352
+ - Updated dependencies [2b50261]
2353
+ - Updated dependencies [384f30d]
2354
+ - Updated dependencies [ac600e5]
2355
+ - Updated dependencies [97fba31]
2356
+ - Updated dependencies [232f61a]
2357
+ - Updated dependencies [d374caf]
2358
+ - Updated dependencies [5673576]
2359
+ - Updated dependencies [c1ef923]
2360
+ - Updated dependencies [911ceaa]
2361
+ - Updated dependencies [98eab36]
2362
+ - Updated dependencies [af5e292]
2363
+ - Updated dependencies [3fbbea1]
2364
+ - Updated dependencies [7f96b10]
2365
+ - Updated dependencies [167ec42]
2366
+ - Updated dependencies [616a2a5]
2367
+ - Updated dependencies [0046d8f]
2368
+ - Updated dependencies [f1d4748]
2369
+ - Updated dependencies [bea374e]
2370
+ - Updated dependencies [b1119ec]
2371
+ - Updated dependencies [9f23d2b]
2372
+ - Updated dependencies [578e025]
2373
+ - Updated dependencies [af025ee]
2374
+ - Updated dependencies [d109a4d]
2375
+ - Updated dependencies [598c89a]
2376
+ - Updated dependencies [4a0bd17]
2377
+ - Updated dependencies [b8b9af4]
2378
+ - Updated dependencies [31676be]
2379
+ - Updated dependencies [8c0d52e]
2380
+ - Updated dependencies [aff10e2]
2381
+ - Updated dependencies [70a774b]
2382
+ - Updated dependencies [9ce096f]
2383
+ - Updated dependencies [e05db88]
2384
+ - Updated dependencies [7458a41]
2385
+ - Updated dependencies [ad13d63]
2386
+ - Updated dependencies [5ffcc14]
2387
+ - Updated dependencies [d971e51]
2388
+ - Updated dependencies [97abb24]
2389
+ - Updated dependencies [deb157a]
2390
+ - Updated dependencies [9c60144]
2391
+ - Updated dependencies [d2ce342]
2392
+ - Updated dependencies [9695da7]
2393
+ - Updated dependencies [75444e3]
2394
+ - Updated dependencies [58b8346]
2395
+ - Updated dependencies [2d0bd16]
2396
+ - Updated dependencies [a9e17b4]
2397
+ - Updated dependencies [b8ce7dc]
2398
+ - Updated dependencies [dad51e5]
2399
+ - Updated dependencies [1c9c342]
2400
+ - Updated dependencies [787c738]
2401
+ - Updated dependencies [8396656]
2402
+ - Updated dependencies [dbbd38a]
2403
+ - Updated dependencies [8871c14]
2404
+ - Updated dependencies [93fe362]
2405
+ - Updated dependencies [dfc6975]
2406
+ - Updated dependencies [3cf4de0]
2407
+ - Updated dependencies [c9dc811]
2408
+ - Updated dependencies [144ef9b]
2409
+ - Updated dependencies [138ab04]
2410
+ - Updated dependencies [a0b9e91]
2411
+ - Updated dependencies [99bd015]
2412
+ - Updated dependencies [21e4585]
2413
+ - @object-ui/types@17.6.0
2414
+ - @object-ui/i18n@17.6.0
2415
+ - @object-ui/react@17.6.0
2416
+ - @object-ui/components@17.6.0
2417
+ - @object-ui/core@17.6.0
2418
+
3
2419
  ## 17.5.0
4
2420
 
5
2421
  ### Minor Changes