@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 +2416 -0
- package/README.md +37 -12
- package/dist/AiPendingActionsInbox.d.ts +8 -2
- package/dist/AiPendingActionsInbox.d.ts.map +1 -1
- package/dist/ChatbotEnhanced.d.ts +122 -48
- package/dist/ChatbotEnhanced.d.ts.map +1 -1
- package/dist/FloatingChatbot.d.ts +1 -1
- package/dist/FloatingChatbot.d.ts.map +1 -1
- package/dist/chatMessageAdapter.d.ts +18 -6
- package/dist/chatMessageAdapter.d.ts.map +1 -1
- package/dist/elements/index.d.ts +10 -10
- package/dist/elements/prompt-input.d.ts +1 -1
- package/dist/elements/prompt-input.d.ts.map +1 -1
- package/dist/elements/tool.d.ts +13 -1
- package/dist/elements/tool.d.ts.map +1 -1
- package/dist/index.d.ts +35 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2180 -1794
- package/dist/index.umd.cjs +4 -2
- package/dist/mapMessages.d.ts +148 -4
- package/dist/mapMessages.d.ts.map +1 -1
- package/dist/tool-display.d.ts +97 -26
- package/dist/tool-display.d.ts.map +1 -1
- package/dist/useAiApprovalsTranslation.d.ts +76 -0
- package/dist/useAiApprovalsTranslation.d.ts.map +1 -0
- package/dist/useAiModels.d.ts +1 -1
- package/dist/useHitlInChat.d.ts +2 -2
- package/dist/useObjectChat.d.ts +94 -18
- package/dist/useObjectChat.d.ts.map +1 -1
- package/package.json +13 -17
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
|