@object-ui/plugin-tree 17.6.0 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,2633 @@
1
1
  # @object-ui/plugin-tree
2
2
 
3
+ ## 18.0.0
4
+
5
+ ### Dependency floors
6
+
7
+ Computed from `.objectstack-sha` `06cab4849a8a`: the earliest published `@objectstack/spec` that contains it is `18.0.0`.
8
+
9
+ - `@objectstack/spec` (`dependencies`): `^18.0.0-next.1` → `^18.0.0`
10
+
11
+ ### Major Changes
12
+
13
+ - 6f3299f: objectui moves to major 18, following `@objectstack/*` from 17 to 18 (objectui#12334). objectui's major is not a count of its own breaking changes: it tracks the major of the `@objectstack/spec` its packages depend on, so that the same major means compatible across the two projects. These packages already declare `@objectstack/*` on the 18 line (objectui#12030), so every package in the fixed release group crosses to 18 together. It is the one `major` that rule admits: objectui's own breaking changes ship as `minor`, described in their entries.
14
+
15
+ The 18 line is released from Changesets pre mode on the `next` tag (`.changeset/pre.json`), as `@objectstack/*` 18 is: these releases are `18.0.0-next.N` on the npm `next` dist-tag, and they do not move `latest`. The first `18.0.0` on `latest` comes when `@objectstack` 18 is generally available and this repository leaves pre mode.
16
+
17
+ What a consumer must do to take it is in the `@objectstack/*` 18 entry of this release (objectui#12030): move its own `@objectstack/*` packages to the 18 line at the same time.
18
+
19
+ ### Minor Changes
20
+
21
+ - f34e877: A tree row's declared deadline reads neutral once the row's record settles it through the field's `settledWhen`, and "Overdue Nd" in red otherwise (objectui#11815).
22
+ - c5406c2: Depend on the `@objectstack/*` 18 prerelease line (objectui#12030).
23
+
24
+ Every `@objectstack/*` range these packages declare in `dependencies` or `peerDependencies` moves from `^17.x` to `^18.0.0-next.0`, the `next` prerelease of `@objectstack/*` 18 (raised to `^18.0.0-next.1` by objectui#12370 before release).
25
+
26
+ **Breaking for consumers:** an install that resolves `@objectstack/spec` (or `@objectstack/client`, `@objectstack/formula`, `@objectstack/lint`) 17.x no longer satisfies these ranges. A consumer must move its own `@objectstack/*` packages to the 18 line, starting with `18.0.0-next.1` (objectui#12370), at the same time as it takes this release.
27
+
28
+ **objectui's own surface moves with it:**
29
+
30
+ - `element:record_picker`'s registration stops publishing the `object`, `filter`, `sort` and `limit` inputs, which spec 18 retires; a JSX page that writes one now gets `unknown-prop`.
31
+ - The `CapabilityMultiSelectField` widget's curated capability set (`@object-ui/fields`) follows spec 18: `manage_mailboxes` in, `manage_org_presentation` out.
32
+ - `element:number` and `element:repeater` nodes that bind no object are accepted, as spec 18's row and `PageComponentSchema` accept them; the two `ELEMENT_*_OBJECT_REQUIRED` refusals are gone.
33
+
34
+ **Retired with the spec:** `@objectstack/spec` 18 tombstones `object-grid`'s `defaultFilters` and refuses it by name, and `ObjectGrid` and `ObjectView` stop reading it (`table.defaultFilters` on an `object-view` included). A view that still carries it renders unfiltered: rename the key to `filter`, whose value is the same rule array.
35
+ - ff9df88: Depend on `@objectstack/*` `18.0.0-next.1` (objectui#12370).
36
+
37
+ Every `@objectstack/*` range these packages declare moves from `^18.0.0-next.0` to `^18.0.0-next.1`; the console and the runner bundle `18.0.0-next.1`. A consumer moves its own `@objectstack/*` packages to `18.0.0-next.1` with this release.
38
+
39
+ **Accept sets that narrow with it.** `@object-ui/types` validates page action rows and view data bindings through the spec's own rows, so its faces (`safeValidateSchema` and `StrictAnyComponentSchema`) now refuse what `18.0.0-next.1` refuses. Each was accepted on `18.0.0-next.0`:
40
+
41
+ - `onSuccess` on an `action:button` / `action:icon` row, or an `action:group` / `action:menu` member, whose executor is the `url`, `navigation`, `modal`, `flow` or `form` built-in, or that has no executor at all. Write the hop on an `api` or `script` action (or a host handler name), or drop it.
42
+ - `onSuccess` beside `operation: 'update'`, and an `onSuccess` block carrying a key outside `{ navigate, openIn }`.
43
+ - `actionType: 'navigation'` on a row (and `type: 'navigation'` on a container member): write `'url'`.
44
+ - A `url` executor's `target` that is not openable, judged on the executor the runner runs, including a row whose `name` selects it.
45
+ - A view `data` binding with `provider: 'api'`: bind the object or static rows; an API call is the page element's binding.
46
+
47
+ ### Patch Changes
48
+
49
+ - a58626c: fix(plugin-tree): tree cells draw the same field faces as list cells, so a boolean no longer shows as `true` (objectui#11686)
50
+
51
+ A tree view, such as the Org Chart tab on Setup → Business Units, printed most column values as raw text. Its cells knew only option labels and referenced records; every other type was printed as stored, so the boolean "Active" column read `true`, and dates, numbers and currency amounts showed their stored form while the list tabs on the same page drew them properly.
52
+
53
+ Each tree cell whose column the object defines now draws through the field package's cell display for that field type, the same one the grid, kanban and gallery cards use. A boolean draws the read-only checkbox, a date the locale-aware date, a currency the formatted amount, a select its option badge and a lookup the referenced record's name. Where a display names its own column, as the boolean display's badge for an inactive `active` field does, it uses the column label the tree's header shows, so it reads in the session's language. A column the object does not define keeps the plain text it showed before.
54
+
55
+ `@object-ui/plugin-tree` now declares `@object-ui/fields` as a dependency; it already reached it through `@object-ui/plugin-detail`. Nothing is added to the package entry: no export, prop, type member or language-pack key.
56
+ - Updated dependencies [18d7b48]
57
+ - Updated dependencies [172acc3]
58
+ - Updated dependencies [f0496bd]
59
+ - Updated dependencies [c4c506b]
60
+ - Updated dependencies [9db9ff3]
61
+ - Updated dependencies [c096f03]
62
+ - Updated dependencies [d92b2a1]
63
+ - Updated dependencies [92f4e2b]
64
+ - Updated dependencies [b10c68e]
65
+ - Updated dependencies [bdc9049]
66
+ - Updated dependencies [b61c116]
67
+ - Updated dependencies [e8c0b96]
68
+ - Updated dependencies [b92329c]
69
+ - Updated dependencies [2e818d0]
70
+ - Updated dependencies [fd060f0]
71
+ - Updated dependencies [fd060f0]
72
+ - Updated dependencies [8b14aec]
73
+ - Updated dependencies [2abec3a]
74
+ - Updated dependencies [4c127cd]
75
+ - Updated dependencies [9dfaca6]
76
+ - Updated dependencies [76993f8]
77
+ - Updated dependencies [c000398]
78
+ - Updated dependencies [73b5d77]
79
+ - Updated dependencies [7b17705]
80
+ - Updated dependencies [fc3c2cc]
81
+ - Updated dependencies [f9f4a62]
82
+ - Updated dependencies [848ba0e]
83
+ - Updated dependencies [57d82cb]
84
+ - Updated dependencies [de96f3d]
85
+ - Updated dependencies [9ca3cac]
86
+ - Updated dependencies [c910630]
87
+ - Updated dependencies [ce464d9]
88
+ - Updated dependencies [e6dcd85]
89
+ - Updated dependencies [96fcf30]
90
+ - Updated dependencies [7a2c60b]
91
+ - Updated dependencies [055d350]
92
+ - Updated dependencies [7300fca]
93
+ - Updated dependencies [834c559]
94
+ - Updated dependencies [22b503c]
95
+ - Updated dependencies [9fc68aa]
96
+ - Updated dependencies [d50f724]
97
+ - Updated dependencies [17acfbb]
98
+ - Updated dependencies [6be0f7a]
99
+ - Updated dependencies [db4cb6b]
100
+ - Updated dependencies [4590363]
101
+ - Updated dependencies [89cc738]
102
+ - Updated dependencies [c0862c1]
103
+ - Updated dependencies [c0862c1]
104
+ - Updated dependencies [c0862c1]
105
+ - Updated dependencies [c0862c1]
106
+ - Updated dependencies [c0862c1]
107
+ - Updated dependencies [c0862c1]
108
+ - Updated dependencies [ded4494]
109
+ - Updated dependencies [d172f63]
110
+ - Updated dependencies [885a96f]
111
+ - Updated dependencies [4c0de52]
112
+ - Updated dependencies [a80fef7]
113
+ - Updated dependencies [3bf8894]
114
+ - Updated dependencies [72167a9]
115
+ - Updated dependencies [e06365c]
116
+ - Updated dependencies [3035948]
117
+ - Updated dependencies [1e1f09e]
118
+ - Updated dependencies [455c646]
119
+ - Updated dependencies [f34e877]
120
+ - Updated dependencies [f34e877]
121
+ - Updated dependencies [f34e877]
122
+ - Updated dependencies [f34e877]
123
+ - Updated dependencies [9844bbf]
124
+ - Updated dependencies [cef0eee]
125
+ - Updated dependencies [7ebff39]
126
+ - Updated dependencies [054fd84]
127
+ - Updated dependencies [5275d1f]
128
+ - Updated dependencies [7241a81]
129
+ - Updated dependencies [74add0c]
130
+ - Updated dependencies [aaba865]
131
+ - Updated dependencies [f1781be]
132
+ - Updated dependencies [5ab2f19]
133
+ - Updated dependencies [fbad078]
134
+ - Updated dependencies [45d5853]
135
+ - Updated dependencies [4f4fc03]
136
+ - Updated dependencies [2312bd9]
137
+ - Updated dependencies [6d5eb34]
138
+ - Updated dependencies [c5406c2]
139
+ - Updated dependencies [c5406c2]
140
+ - Updated dependencies [d99b731]
141
+ - Updated dependencies [2571a3e]
142
+ - Updated dependencies [a368ccb]
143
+ - Updated dependencies [2a48bd4]
144
+ - Updated dependencies [8a55f0c]
145
+ - Updated dependencies [c7b30bd]
146
+ - Updated dependencies [e391f87]
147
+ - Updated dependencies [20c6d35]
148
+ - Updated dependencies [417e245]
149
+ - Updated dependencies [69bca0a]
150
+ - Updated dependencies [023f00d]
151
+ - Updated dependencies [158c75d]
152
+ - Updated dependencies [7525045]
153
+ - Updated dependencies [5af42db]
154
+ - Updated dependencies [ce991bd]
155
+ - Updated dependencies [3c0f806]
156
+ - Updated dependencies [1071393]
157
+ - Updated dependencies [5f75cfa]
158
+ - Updated dependencies [29b9949]
159
+ - Updated dependencies [1d1cfe0]
160
+ - Updated dependencies [6757a93]
161
+ - Updated dependencies [b7cd5c8]
162
+ - Updated dependencies [5330038]
163
+ - Updated dependencies [2498a07]
164
+ - Updated dependencies [898bd2c]
165
+ - Updated dependencies [c9fc10b]
166
+ - Updated dependencies [dc6d28e]
167
+ - Updated dependencies [c0c2f79]
168
+ - Updated dependencies [0665c3b]
169
+ - Updated dependencies [d2500d8]
170
+ - Updated dependencies [a7d4920]
171
+ - Updated dependencies [e723f58]
172
+ - Updated dependencies [82bb1d5]
173
+ - Updated dependencies [f3d5408]
174
+ - Updated dependencies [b231607]
175
+ - Updated dependencies [b231607]
176
+ - Updated dependencies [466a219]
177
+ - Updated dependencies [466a219]
178
+ - Updated dependencies [466a219]
179
+ - Updated dependencies [6fb281d]
180
+ - Updated dependencies [54159d3]
181
+ - Updated dependencies [fa778e6]
182
+ - Updated dependencies [334f0cf]
183
+ - Updated dependencies [c08c933]
184
+ - Updated dependencies [92f979d]
185
+ - Updated dependencies [c4dd707]
186
+ - Updated dependencies [c4dd707]
187
+ - Updated dependencies [7578323]
188
+ - Updated dependencies [a491b64]
189
+ - Updated dependencies [38bb373]
190
+ - Updated dependencies [803f678]
191
+ - Updated dependencies [923504f]
192
+ - Updated dependencies [5b45c0d]
193
+ - Updated dependencies [923504f]
194
+ - Updated dependencies [5c2982a]
195
+ - Updated dependencies [0cd322d]
196
+ - Updated dependencies [97e7d4e]
197
+ - Updated dependencies [5d3f437]
198
+ - Updated dependencies [10aba37]
199
+ - Updated dependencies [10aba37]
200
+ - Updated dependencies [5d3f437]
201
+ - Updated dependencies [51c661e]
202
+ - Updated dependencies [7af0ab3]
203
+ - Updated dependencies [b434f5f]
204
+ - Updated dependencies [9f282ef]
205
+ - Updated dependencies [fd4872f]
206
+ - Updated dependencies [f0532d8]
207
+ - Updated dependencies [cea429b]
208
+ - Updated dependencies [3092aca]
209
+ - Updated dependencies [82e5f53]
210
+ - Updated dependencies [d81e460]
211
+ - Updated dependencies [8106db1]
212
+ - Updated dependencies [068a540]
213
+ - Updated dependencies [ca45c6d]
214
+ - Updated dependencies [093d55b]
215
+ - Updated dependencies [b64fda3]
216
+ - Updated dependencies [28ebfb5]
217
+ - Updated dependencies [a8051d6]
218
+ - Updated dependencies [72594f2]
219
+ - Updated dependencies [524136e]
220
+ - Updated dependencies [2b06a91]
221
+ - Updated dependencies [6f3299f]
222
+ - Updated dependencies [065a1cf]
223
+ - Updated dependencies [f2b17c6]
224
+ - Updated dependencies [52d6194]
225
+ - Updated dependencies [23bf859]
226
+ - Updated dependencies [1c72d77]
227
+ - Updated dependencies [789cb16]
228
+ - Updated dependencies [2b4d3f1]
229
+ - Updated dependencies [d75f212]
230
+ - Updated dependencies [37db09f]
231
+ - Updated dependencies [ff9df88]
232
+ - Updated dependencies [70e843f]
233
+ - Updated dependencies [caac3b2]
234
+ - Updated dependencies [a2225f9]
235
+ - Updated dependencies [5c4deb5]
236
+ - Updated dependencies [a8e5b73]
237
+ - Updated dependencies [9782cb2]
238
+ - Updated dependencies [3e2394d]
239
+ - Updated dependencies [d9d9d98]
240
+ - Updated dependencies [c950345]
241
+ - Updated dependencies [21f9577]
242
+ - Updated dependencies [044f231]
243
+ - Updated dependencies [f8267df]
244
+ - Updated dependencies [023087f]
245
+ - Updated dependencies [023087f]
246
+ - Updated dependencies [9b82ced]
247
+ - Updated dependencies [3821a3a]
248
+ - Updated dependencies [3eb3ec1]
249
+ - Updated dependencies [92c2a69]
250
+ - Updated dependencies [518a8e3]
251
+ - Updated dependencies [165f8ff]
252
+ - Updated dependencies [646caea]
253
+ - Updated dependencies [1ffd6a2]
254
+ - Updated dependencies [5f8ecf6]
255
+ - Updated dependencies [6f5dc6b]
256
+ - Updated dependencies [7d0c174]
257
+ - Updated dependencies [8ed7e5a]
258
+ - Updated dependencies [6c4d00d]
259
+ - Updated dependencies [db8ce2f]
260
+ - Updated dependencies [726d8c9]
261
+ - Updated dependencies [f0e760a]
262
+ - Updated dependencies [a5bb7ac]
263
+ - Updated dependencies [f78efdd]
264
+ - Updated dependencies [8a8bcf3]
265
+ - Updated dependencies [f74638c]
266
+ - Updated dependencies [278bc29]
267
+ - Updated dependencies [ef71a09]
268
+ - Updated dependencies [8614705]
269
+ - Updated dependencies [619e3f7]
270
+ - Updated dependencies [ca7a4c3]
271
+ - Updated dependencies [c9e6742]
272
+ - Updated dependencies [4be76e0]
273
+ - Updated dependencies [f62b6ff]
274
+ - Updated dependencies [608033b]
275
+ - Updated dependencies [c6b7d82]
276
+ - Updated dependencies [611566b]
277
+ - Updated dependencies [efa9cb4]
278
+ - Updated dependencies [d66d7e8]
279
+ - Updated dependencies [15d8ca6]
280
+ - Updated dependencies [378896d]
281
+ - Updated dependencies [9d857c9]
282
+ - Updated dependencies [670ea10]
283
+ - Updated dependencies [ff215d9]
284
+ - Updated dependencies [71243db]
285
+ - Updated dependencies [e219a3d]
286
+ - Updated dependencies [a8add5c]
287
+ - Updated dependencies [33ee9de]
288
+ - Updated dependencies [4839f5c]
289
+ - Updated dependencies [a23e804]
290
+ - Updated dependencies [c7462e7]
291
+ - Updated dependencies [36e2f7b]
292
+ - Updated dependencies [263e9dd]
293
+ - Updated dependencies [360e27a]
294
+ - Updated dependencies [ac59073]
295
+ - Updated dependencies [44cb469]
296
+ - Updated dependencies [e058d76]
297
+ - Updated dependencies [464ae62]
298
+ - Updated dependencies [c999d4c]
299
+ - Updated dependencies [8df2608]
300
+ - Updated dependencies [8df2608]
301
+ - Updated dependencies [5483297]
302
+ - Updated dependencies [ed43c79]
303
+ - Updated dependencies [6367bfe]
304
+ - Updated dependencies [260ef71]
305
+ - Updated dependencies [655e897]
306
+ - Updated dependencies [655e897]
307
+ - Updated dependencies [020d178]
308
+ - Updated dependencies [8d80845]
309
+ - Updated dependencies [69a408f]
310
+ - Updated dependencies [1aa622a]
311
+ - Updated dependencies [d2b21a1]
312
+ - Updated dependencies [6e4f144]
313
+ - Updated dependencies [5ff64ef]
314
+ - Updated dependencies [64acb7e]
315
+ - Updated dependencies [4ff5b6b]
316
+ - Updated dependencies [473e5a0]
317
+ - Updated dependencies [b279016]
318
+ - Updated dependencies [bb6c38c]
319
+ - Updated dependencies [15b1065]
320
+ - Updated dependencies [26323c4]
321
+ - Updated dependencies [9753811]
322
+ - Updated dependencies [2727527]
323
+ - Updated dependencies [3da39ae]
324
+ - Updated dependencies [bc281f4]
325
+ - Updated dependencies [d637be3]
326
+ - Updated dependencies [8392f74]
327
+ - Updated dependencies [2cfdc99]
328
+ - Updated dependencies [2cfdc99]
329
+ - Updated dependencies [8523e81]
330
+ - Updated dependencies [1e6d83b]
331
+ - Updated dependencies [1e6d83b]
332
+ - Updated dependencies [32b492b]
333
+ - Updated dependencies [6058bf8]
334
+ - Updated dependencies [c219165]
335
+ - Updated dependencies [79cb8c0]
336
+ - Updated dependencies [a7ae252]
337
+ - Updated dependencies [fb501bc]
338
+ - Updated dependencies [03f1d65]
339
+ - Updated dependencies [30083da]
340
+ - Updated dependencies [7f9cc37]
341
+ - Updated dependencies [b7fe09e]
342
+ - Updated dependencies [025130c]
343
+ - Updated dependencies [76f91f8]
344
+ - Updated dependencies [ea34d9b]
345
+ - Updated dependencies [8aa8e3e]
346
+ - Updated dependencies [024b7b6]
347
+ - Updated dependencies [cb80001]
348
+ - Updated dependencies [bcd9717]
349
+ - Updated dependencies [909c64e]
350
+ - Updated dependencies [9e7e1a5]
351
+ - Updated dependencies [1d3da6c]
352
+ - Updated dependencies [0d97642]
353
+ - Updated dependencies [2493e85]
354
+ - Updated dependencies [d0b9648]
355
+ - Updated dependencies [46dbf32]
356
+ - Updated dependencies [a928aaa]
357
+ - Updated dependencies [47508f3]
358
+ - Updated dependencies [61ed5ad]
359
+ - Updated dependencies [1b94d50]
360
+ - Updated dependencies [6f877f1]
361
+ - Updated dependencies [988aa9f]
362
+ - Updated dependencies [50ba1bb]
363
+ - Updated dependencies [1ce0711]
364
+ - Updated dependencies [fb85637]
365
+ - Updated dependencies [9f1dd79]
366
+ - Updated dependencies [df71568]
367
+ - Updated dependencies [d11174a]
368
+ - Updated dependencies [4c68855]
369
+ - Updated dependencies [2d8a8b7]
370
+ - Updated dependencies [cbac9d7]
371
+ - Updated dependencies [5129caa]
372
+ - Updated dependencies [9eb1479]
373
+ - Updated dependencies [74e37aa]
374
+ - Updated dependencies [961b69f]
375
+ - Updated dependencies [52907d7]
376
+ - Updated dependencies [f466b0a]
377
+ - Updated dependencies [673a71c]
378
+ - Updated dependencies [616df65]
379
+ - Updated dependencies [f48a4d5]
380
+ - Updated dependencies [58798ec]
381
+ - Updated dependencies [8803ca5]
382
+ - Updated dependencies [e70c21d]
383
+ - Updated dependencies [4b92c5a]
384
+ - Updated dependencies [06be396]
385
+ - Updated dependencies [3650d94]
386
+ - Updated dependencies [7c05f21]
387
+ - Updated dependencies [8cd4db4]
388
+ - Updated dependencies [daeb77f]
389
+ - Updated dependencies [eb4552e]
390
+ - Updated dependencies [3c3115e]
391
+ - Updated dependencies [55e90fd]
392
+ - Updated dependencies [9b75509]
393
+ - Updated dependencies [b13ea3c]
394
+ - Updated dependencies [d7e9e9a]
395
+ - Updated dependencies [cf62edf]
396
+ - Updated dependencies [0253416]
397
+ - Updated dependencies [5d77c09]
398
+ - Updated dependencies [3fd8625]
399
+ - Updated dependencies [1473757]
400
+ - Updated dependencies [d73d987]
401
+ - Updated dependencies [12ff256]
402
+ - Updated dependencies [35a2b59]
403
+ - Updated dependencies [26b0bd2]
404
+ - Updated dependencies [26b0bd2]
405
+ - Updated dependencies [d328698]
406
+ - Updated dependencies [d328698]
407
+ - Updated dependencies [d328698]
408
+ - Updated dependencies [b4e0787]
409
+ - Updated dependencies [53ee2f8]
410
+ - Updated dependencies [088e0f7]
411
+ - Updated dependencies [78b07f4]
412
+ - Updated dependencies [0df67f2]
413
+ - Updated dependencies [f962cdc]
414
+ - Updated dependencies [b403bb3]
415
+ - Updated dependencies [8a25fee]
416
+ - Updated dependencies [4016370]
417
+ - Updated dependencies [12dc7b4]
418
+ - @object-ui/types@18.0.0
419
+ - @object-ui/components@18.0.0
420
+ - @object-ui/core@18.0.0
421
+ - @object-ui/i18n@18.0.0
422
+ - @object-ui/react@18.0.0
423
+ - @object-ui/plugin-detail@18.0.0
424
+ - @object-ui/fields@18.0.0
425
+ - @object-ui/permissions@18.0.0
426
+
427
+ ## 17.7.0
428
+
429
+ ### Minor Changes
430
+
431
+ - 990a2d6: refactor(plugin-tree)!: retire the bare `tree` node type key; `object-tree` is the one spelling (objectui#10859, batch 8)
432
+
433
+ **BREAKING (authoring):** the plugin no longer registers `tree` (and with it `view:tree`), the second key it registered on the `object-tree` renderer with the same inputs. `objectui validate` refused a `tree` node at `type`, because only `object-tree` has a declaration (`@objectstack/spec`'s `ComponentPropsMap` row), and nothing in this repository authored the alias. A node authored `type: "tree"` now renders the "Unknown component type" panel.
434
+
435
+ Migration:
436
+
437
+ - `{ "type": "tree", … }` → `{ "type": "object-tree", … }`, with the same keys.
438
+
439
+ The host-composition VIEW type `tree` and the FIELD type `tree` are different layers and are unchanged: `ObjectView` and `ListView` already compose a stored tree view into an `object-tree` node.
440
+
441
+ **Clause-②: yes** — a registration leaves the runtime (narrowing), released as `minor` with this banner.
442
+ - 20d23be: `object-tree` publishes the keys its `@objectstack/spec` 17.5.0 row declares and its renderer honours (objectui#11168 slice 3, objectui#11111 decision 3 = B). Each key was measured on the real renderer first.
443
+
444
+ - `data`, `staticData`, `filter` and `navigation` are now registration inputs on both tags (`object-tree` and `view:tree`). The page validator used to report each as an unknown prop, even though the tree reads it. Each description says what the tree does with the key, including the cases that draw nothing: the `api` and `schema` providers under `data`, and an absent `navigation`. On `navigation`, `page` and a block without `mode` open a record page through the record navigator the host publishes (the console publishes one on its custom pages, record pages and list views). The object is `data.object` when `data` is the object provider, so it wins when both are written, and the tree's `objectName` otherwise. Under a host that publishes none, or on a tree that names neither (inline rows with no `objectName`), they open nothing.
445
+ - `objectName` is no longer a required input. The record source is one of `data`, `staticData` and `objectName`. A tree on inline rows never reads the object name, and the validator used to raise `missing-required-prop` on a tree that draws.
446
+ - The `tree` input's description now names its four members and what each does.
447
+ - `ObjectTree` reads `navigation` without a cast, because the node type declares it.
448
+
449
+ What the tree draws and what a click opens are unchanged.
450
+
451
+ ⚠️ **Dated note, 2026-10-02 — the `view:tree` tag is retired — objectui#10859.**
452
+ Later in this same release objectui#10859 batch 8 unregistered the bare `tree` alias (and with it
453
+ `view:tree`), so these inputs ship on one tag, `object-tree`. Author `object-tree`. The rest of this
454
+ entry is kept as the reading of this change.
455
+ - e3d117a: `ObjectGantt` and `ObjectTree` resolve a relationship target only from the two
456
+ spellings a contract carries, dropping the third one no contract declares
457
+ (objectui#6837, second slice).
458
+
459
+ - `ObjectGantt`'s quick-filter option fetch was
460
+ `fd?.reference_to ?? fd?.reference ?? fd?.referenceTo`; it is now
461
+ `fd?.reference_to ?? fd?.reference`.
462
+ - `ObjectTree`'s `detectParentField` was
463
+ `def?.reference || def?.reference_to || def?.referenceTo`; it is now
464
+ `def?.reference || def?.reference_to`.
465
+
466
+ **Accept-set move — a def carrying ONLY `referenceTo` stops resolving a target
467
+ at these two seams.** Concretely: the gantt quick filter for that field falls
468
+ back to the distinct values present in the loaded rows instead of fetching the
469
+ referenced object's full domain, and the tree stops auto-detecting that field as
470
+ its parent pointer, so records render as a flat forest unless `parentField` is
471
+ configured explicitly. Nothing else changes; the two surviving arms are
472
+ untouched.
473
+
474
+ Two things bound that move:
475
+
476
+ - Any def that entered through the ingestion choke point is unaffected.
477
+ `normalizeSchemaReferenceKeys` reads `reference_to ?? reference ??
478
+ referenceTo` and stamps both snake_case keys, so a `referenceTo`-only def
479
+ arriving via `MetadataProvider` or `ObjectStackAdapter.getObjectSchema`
480
+ already carries `reference_to` before either component sees it. Only a def
481
+ that bypassed that door entirely is affected — and that door is not total:
482
+ `getObjectSchema` is a required member of the published `DataSource`
483
+ interface, and both components call it on the generic `dataSource`.
484
+ - No contract declares the deleted spelling. `@objectstack/spec` 17.2.0's
485
+ `FieldSchema` refuses `referenceTo` by name with `unrecognized_keys`, carrying
486
+ its own "Did you mean `referenceTo` -> `reference`?" rename, and `referenceTo`
487
+ is additionally a tombstone in `RETIRED_FIELD_KEY_TOMBSTONES` (objectui#6041)
488
+ at all three strip sites, so the designer read door removes it before a draft
489
+ round-trips.
490
+
491
+ A repo-wide structure-walk producer census found **0** emitters of `referenceTo`
492
+ reaching either seam, measured in the cell these components read (a value inside
493
+ an object schema's `fields` container) against controls `reference` (92 hits / 36
494
+ files) and `reference_to` (52 / 36) hot in the same pass over the same cells;
495
+ the only two in-cell hits are negative fixtures of the retirement machinery,
496
+ asserting the read door strips the key. Neither `plugin-gantt` nor `plugin-tree`
497
+ emits `referenceTo` anywhere, while both packages' own fixtures are hot on the
498
+ surviving spellings.
499
+
500
+ Pinned by `ObjectGantt.referenceArms-6837.test.tsx` and
501
+ `ObjectTree.referenceArms-6837.test.tsx`, which keep the live arms green beside a
502
+ named refusal for the deleted key.
503
+
504
+ ⚠️ **Dated note, 2026-09-30 — the choke point folds, it no longer stamps both keys — objectui#11070.** "`normalizeSchemaReferenceKeys` ... stamps both snake_case keys" above held when this change landed. Later in this same release objectui#11070 (round 4) made that pass fold a legacy spelling onto `reference` without stamping `reference_to`; a def that entered through it still carries `reference`, the one arm both components keep. `.changeset/11070-reference-to-round4.md` states what ships; the text above is kept as the reading of this change.
505
+ - 045d20b: Relationship-target readers resolve a lookup's target from `reference` alone,
506
+ dropping the `reference_to` fallback arm (objectui#6837, half 2).
507
+
508
+ Maintainer ruling, 2026-08-31, 原文照录: 「objectui不是前端的项目吗?后端的元数据只要
509
+ 对,前端按协议执行就行了呀」. Protocol normalization belongs on the SERVER; the front
510
+ end just executes the protocol. objectstack#13847 landed the server half — a
511
+ `field-reference-to-alias` conversion rewrites stored `reference_to` to
512
+ `reference` on the serve path and in `os migrate meta`.
513
+
514
+ `reference` is the only target spelling `@objectstack/spec`'s `FieldSchema`
515
+ declares. Measured on the installed 17.2.0: it refuses `reference_to`,
516
+ `referenceTo` and `target` with `unrecognized_keys`, each carrying its own
517
+ "Did you mean -> `reference`?" rename, while a nonsense key gets the same
518
+ refusal with NO rename hint and `reference` parses clean.
519
+
520
+ ## ⚠️ BREAKING for a hand-written schema that spells `reference_to` — read this
521
+
522
+ **This is a behaviour change for BYO consumers, and it is being stated rather
523
+ than shipped silently.** ObjectUI is usable without an ObjectStack backend
524
+ (`examples/byo-backend-console`), and a hand-written TypeScript schema passes
525
+ through no zod door, so nothing rejects the legacy spelling at authoring time.
526
+
527
+ **The break surface is narrower than "all BYO consumers", and this is the
528
+ measurement rather than a blanket claim.** Two ingestion choke points stamp both
529
+ snake_case keys from whichever spelling arrived — `MetadataProvider`'s type
530
+ cache for metadata type `object`, and `ObjectStackAdapter.getObjectSchema`. Any
531
+ def that passed either one already carries `reference` and is **completely
532
+ unaffected**. What is affected is exactly:
533
+
534
+ - **A `DataSource` implementation other than `ObjectStackAdapter`.**
535
+ `getObjectSchema` is a required member of the published `DataSource`
536
+ interface, and the readers call it on the generic `dataSource` (through
537
+ `useSettledSchema` and directly), so a host adapter's object schema reaches
538
+ them raw. Every in-repo example of one is on this path:
539
+ `ApiDataSource`, `ValueDataSource`, `packages/types/examples/rest-data-source.ts`,
540
+ `examples/byo-backend-console/src/mockDataSource.ts`,
541
+ `packages/runner/src/lib/mockDataSource.ts`,
542
+ `apps/site/app/components/galleryDataSource.ts`,
543
+ `apps/console/src/sdui-workbench-preview.tsx`,
544
+ `packages/plugin-grid/demo/bulk-actions.tsx`.
545
+
546
+ **Measured on this tree, none of those eight emits a relationship target at all** —
547
+ `reference_to` and `reference` are both zero in each, and
548
+ `examples/byo-backend-console` carries no lookup or master_detail field
549
+ anywhere (its only `reference` hits are a vite triple-slash directive and a
550
+ tsconfig `references` array). The single in-repo producer that WAS on this
551
+ surface, `packages/plugin-gantt/demo/main.tsx`, is fixed here at the producer.
552
+
553
+ ⇒ **If you author object metadata by hand and spell a lookup's target
554
+ `reference_to`, rename that key to `reference`.** Symptom if you do not: the
555
+ target silently fails to resolve, and the affected surface degrades rather than
556
+ erroring — a related list is not derived, a gantt quick filter falls back to the
557
+ distinct values in the loaded rows instead of the referenced object's full
558
+ domain, a tree stops auto-detecting its parent pointer, a lookup cell shows a
559
+ raw id, a chart's group-by labels stay unresolved.
560
+
561
+ The ingestion choke point now emits a **dev-mode warning** when a def arrives
562
+ carrying only `reference_to` or `referenceTo` and no `reference`. It names the
563
+ object, the field and the offending key, and points at this ruling. Stamping is
564
+ deliberately unchanged, so nothing that worked stops working. It is memoised
565
+ once per **(object name, field name, spelling, target value)** — every segment
566
+ of that key is pinned, in both directions, in
567
+ `reference-keys.legacyWarning-6837.test.ts`.
568
+
569
+ ⛔ **This warning does NOT cover the break described above, and it is worth being
570
+ exact about that rather than letting it read as mitigation.** It lives in
571
+ `normalizeFieldReferenceKeys`, reachable only through
572
+ `normalizeSchemaReferenceKeys`, which has exactly two production call sites —
573
+ `MetadataProvider` (metadata type `object`) and
574
+ `ObjectStackAdapter.getObjectSchema`. Both of those also STAMP the def, so the
575
+ warning fires precisely where the def still resolves and nothing is broken. A
576
+ hand-written schema served through any OTHER `DataSource` — the break surface —
577
+ reaches a reader raw: it never passes through this code and produces **no
578
+ warning at all**. On that path the failure is exactly as silent as before.
579
+ A reader-side or shared-resolver diagnostic, which would cover it, remains open
580
+ on objectui#6837.
581
+
582
+ ⚠️ **Dated note, 2026-09-29 — the call-site count above has since moved —
583
+ objectui#7650.** "exactly two production call sites" above held when this change landed
584
+ (`045d20ba8`). Later in this same release objectui#7650 (PR objectui#8868) added a call
585
+ on `MetadataProvider`'s by-name object-schema serve path. Re-measured for objectui#10979
586
+ on `main` at `2eaf5be27`, `normalizeSchemaReferenceKeys` had three production call sites:
587
+ two in `MetadataProvider`, on its list path and on its by-name path, and one in
588
+ `ObjectStackAdapter.getObjectSchema`.
589
+ `.changeset/7650-metadata-item-reference-canonicalisation.md` (PR objectui#8868) states
590
+ what ships; the text above is kept as the reading of this change.
591
+
592
+ ## What did NOT change
593
+
594
+ **Every key these readers EMIT is byte-identical**, and that was verified
595
+ mechanically over the whole diff rather than asserted. Eleven of the sixteen
596
+ sites write a target onto a bag whose own contract spells it `reference_to` (or
597
+ camelCase `referenceTo`): the six whose read and write share a line —
598
+ `RecordDetailDrawer`, `RelatedList`, `buildDefaultPageSchema`, `ListView`,
599
+ `FilterConditionField`, `resolveActionParams` — plus five more that read on one
600
+ line and emit on another, and so are just as much emitters: `RecordDetailView`,
601
+ `RecordMetaFooter`, `ObjectGallery`, `fieldEnrichment` (all `reference_to`) and
602
+ `UserFilters` (`referenceTo`). Only the right-hand read narrowed anywhere; the
603
+ emitted key is what its target contract declares, and renaming it would be a
604
+ separate change.
605
+
606
+ **Three readers were deliberately left alone.** `LookupCellRenderer`
607
+ (`fields/src/index.tsx`), `LookupField` and `UserField` read `FieldMetadata` —
608
+ ObjectUI's OWN contract, whose `LookupFieldMetadata` declares `reference_to` and
609
+ never declares `reference`. They are fed by the emitters above and by published
610
+ example schemas (`examples/schema-catalog/src/schemas/fields-lookup/*.json`), so
611
+ narrowing them would break in-repo producers, and `plugin-grid`'s
612
+ `relationalMetaCopySet.derivation.test.ts` re-derives its read set from exactly
613
+ those three sources — where `reference_to` is recorded with verdict
614
+ `adapter-stamped`. `DetailViewFieldSchema` is likewise untouched.
615
+
616
+ ⚠️ **Dated note, 2026-09-30 — the stamp, the three readers and the emitted key have since moved — objectui#11070.** Later in this same release objectui#11070 (round 4) retired `reference_to` inside ObjectUI as well. `normalizeFieldReferenceKeys` now FOLDS a legacy `reference_to` / `referenceTo` onto `reference` and no longer stamps `reference_to`, so "Stamping is deliberately unchanged" and "stamp both snake_case keys" above no longer describe what ships. `LookupCellRenderer`, `LookupField` and `UserField` read `reference` only; `LookupFieldMetadata`, `MasterDetailFieldMetadata` and `DetailViewField` (with `DetailViewFieldSchema`) declare `reference`; and the emitters listed under "What did NOT change" write `reference`. A hand-written schema served through a `DataSource` other than `ObjectStackAdapter` that spells only `reference_to` therefore also loses the lookup picker's target and the read cell's name. `.changeset/11070-reference-to-round4.md` states what ships; the text above is kept as the reading of this change.
617
+ - 7c3df8f: A non-grid view's fetch now carries a platform row ceiling, and crossing it is
618
+ never silent (objectui#7210, maintainer ruling a′, 2026-09-02).
619
+
620
+ Before this, `ObjectGantt`, `ObjectCalendar`, `ObjectMap` and `ObjectTree` each
621
+ issued a `find` with **no `$top` at all**, so the request returned the entire
622
+ filtered result set. At the 186 rows the card was filed from that is invisible;
623
+ on an object with 100k scheduled rows it is the whole table into the browser,
624
+ and nothing an author could write — `pagination.pageSize` included — could
625
+ bound a request that never carried a cap to begin with.
626
+
627
+ **What changed.** Those four fetches now ask for `NON_GRID_ROW_CEILING_TOP`
628
+ rows, draw at most `NON_GRID_ROW_CEILING` of them, and when the result set was
629
+ larger they render a footnote naming both numbers, verbatim as it renders:
630
+ *"Showing the first 2000 of 41234 records. Narrow the filter."* Below the
631
+ ceiling nothing changes: the full set draws and no footnote appears.
632
+
633
+ The four view packages take a **minor**, not a patch: a result set above the
634
+ ceiling is no longer drawn in full, which is a behaviour break whatever the
635
+ fixed group does to the released version number.
636
+
637
+ **The ceiling is a platform constant, not an authorable key** — `2000`, exported
638
+ from `@object-ui/react` as `NON_GRID_ROW_CEILING`. An authored `limit` or
639
+ `dataSource: { limit }` still does not reach these queries, by the same ruling;
640
+ three alternatives were rejected with it (a documentation note only — still the
641
+ whole table; truncating at `pageSize` — silent, and a complete schedule capped
642
+ at one page; an authorable `maxRows` — a new permanent key every author sets).
643
+
644
+ **Why 2,000.** One constant for all four, so the binding view sets it. Measured
645
+ in this repo's jsdom lane: gantt, calendar and map hold their DOM flat as rows
646
+ grow (virtualised task list; four events per day cell; auto-clustering above
647
+ 100 markers), while `ObjectTree` flattens every expanded node into the document
648
+ at a linear **5.2 DOM elements per record** with no virtualisation. 2,000 rows
649
+ is where the worst of the four lands at ~10,400 elements — an order of
650
+ magnitude above Lighthouse's "excessive DOM size" warning, and still ~10x the
651
+ real application result set this card came from.
652
+
653
+ New exports on `@object-ui/react`: `NON_GRID_ROW_CEILING`,
654
+ `NON_GRID_ROW_CEILING_TOP`, `applyNonGridRowCeiling`, `NonGridRowCeilingNote`
655
+ and the type `NonGridCeilingResult`. Two new `common.*` i18n keys carry the
656
+ footnote copy in all ten packs.
657
+ - b041b9c: `@object-ui/core` publishes `resolveRecordSourceObjectName`, the ONE reader for "which
658
+ object is this block bound to".
659
+
660
+ Six view plugins each spelled that resolution locally — `ObjectCalendar` twice,
661
+ `ObjectGantt`, `ObjectTree` twice, `ObjectMap`, `ObjectGrid` — and had drifted: three
662
+ wrote `?? schema.objectName`, one `|| ''`, one `: undefined`, one an `'object' in
663
+ dataConfig` test. They now delegate to one function that states the published
664
+ record-source ladder `77cb489b4` declared (`data`, then `staticData`, then `objectName`) once.
665
+
666
+ **No behaviour changes.** Each site's pre-collapse expression is transcribed verbatim
667
+ into `record-source.behaviourNeutrality-7627.test.ts` and asserted equal to its
668
+ post-collapse spelling across the whole contract-valid input matrix — both bindings
669
+ present, data only, `objectName` only, empty `objectName`, empty `data.object`, the
670
+ `api` / `value` / `staticData` / array-shorthand providers, and nothing bound.
671
+
672
+ **Two questions stay two questions.** `normalizeListViewSchema`'s gap-fill (#7477,
673
+ ruling B, landed as `00d2fa682`) is untouched and is NOT re-pointed at the new reader: it answers
674
+ how `objectName` gets POPULATED when absent, where an already-present `objectName` wins.
675
+ The new reader answers which object a block RESOLVES, where the `data` block wins — the
676
+ order declared on both published faces in `@object-ui/types` and pinned by
677
+ `objectql-record-source-refinement-6939.test.ts`. Merging them would silently override
678
+ one standing ruling or the other.
679
+
680
+ **`ObjectGantt`'s `persistLayoutKey` is deliberately excluded** and keeps its inverted
681
+ order, with an in-place comment saying why: its receiver is a localStorage key
682
+ (`gantt-layout:KEY:filters`), not a record source, so re-pointing it would orphan every
683
+ saved layout and filter-chip set of a view carrying both bindings. Two more sites the
684
+ finding listed are not object-name readers at all and were struck: `ObjectGantt`'s
685
+ refresh-handler predicate (`object` OR `api`) and `plugin-dashboard`'s `isObjectProvider`
686
+ type-guard over a widget's `data`.
687
+
688
+ `useSettledSchema`'s doc comment stops prescribing the hand-written ladder at all four
689
+ lines that taught it, so the copies cannot re-seed from the hook that replaced them.
690
+ - 846cec0: **Breaking behaviour change — `object-tree` now honours only the `data` spelling its published row declares.**
691
+
692
+ Decision batch #83, maintainer verbatim 「8348 以协议为准」: a view block honours the `data` spelling its block's published row declares, and no other. `object-tree` was the one ladder block that ruling could not reach, because no published face declared a `data` row for it, so it honoured ANY truthy `data`. Ruling batch #136 item 3 (Q1-C) had the protocol gain the row, and `ComponentPropsMap['object-tree']` in the installed `@objectstack/spec` declares `data` as the `ViewData` union and `staticData` as an array. The ruling's 「协议没有的能力删」 clause did not fire — the row does declare `data` — so the tree keeps the object form and loses only the bare-array spelling.
693
+
694
+ - `data: { provider: 'value', items: [...] }`, `{ provider: 'object', object }` and `{ provider: 'api', … }` — **unchanged**, still the tree's first record source.
695
+ - `staticData: [...]` — **unchanged**; the same row declares it, and it is still the second rung.
696
+ - ⚠️ `data: [...]` (a bare array) — **no longer a record source.** The ladder falls through to `staticData`, then `objectName`: such a tree queries its object instead, or draws `No records` when it names neither. In a development build `SchemaRenderer` says so once, naming the key and the spelling that works; in production it is quiet. This is the same outcome `object-map` and `object-gantt` already give for the same spelling. Stored documents authored that way stop drawing those rows — accepted by the ruling, with no transition window. Move inline rows to `staticData` or to `data: { provider: 'value', items }`.
697
+ - The `data` **prop** a host hands down (`ListView`'s tree) is untouched.
698
+
699
+ Two carriers had to close for this to be observable. `@object-ui/core`'s `recordSourceDataArmForType` now answers `'view-data'` for all four spellings the tree registers under (`object-tree`, `plugin-tree:object-tree`, `tree`, `view:tree`), so `SchemaRenderer` no longer spreads an authored `data` on a tree node as a React prop (objectui#9571). And `ObjectTree`'s own fetch effect no longer reads `schema.data` beside the host prop — that second reader bypassed the shared ladder, so an arm change alone would have removed nothing end to end.
700
+
701
+ ⚠️ **Dated note, 2026-10-02 — two of the four spellings are retired — objectui#10859.**
702
+ Later in this same release objectui#10859 batch 8 unregistered the bare `tree` alias, and with it
703
+ `view:tree`; `recordSourceDataArmForType` answers `'view-data'` for `object-tree` and
704
+ `plugin-tree:object-tree` only. The rest of this entry is kept as the reading of this change.
705
+ - 91facae: **Breaking behaviour change — a view block now honours only the `data` spelling its published row declares.**
706
+
707
+ Maintainer ruling, decision batch #83 (2026-09-08), verbatim 「8348 以协议为准」: the contract decides. What `os validate` and the save gate refuse under `data`, the renderer refuses too. The shared record-source ladder (`resolveRecordSourceConfig` in `@object-ui/core`) now takes the arm the calling block's row declares, and rung 1 applies only on that arm.
708
+
709
+ ⚠️ **`object-calendar` documents authored against the tolerated spelling stop rendering those rows.** The ladder falls past `data` to `staticData`, then to `objectName` — so such a calendar queries its object instead, or draws nothing when it names neither. This is accepted, with no transition window and no staged deprecation (the standing 2026-08-27 posture).
710
+
711
+ **Per block — what the published row says, and what actually moves:**
712
+
713
+ - **`object-calendar`** — row: `ComponentPropsMap['object-calendar'].data` is `z.array(z.unknown())` ("Pre-fetched records — skips the internal fetch"). A record-source **config object** under `data` — `{ provider: 'value', items }`, `{ provider: 'object', object }`, `{ provider: 'api', … }` — is no longer honoured, and this is a real end-to-end change: that object had exactly one carrier into the block, so an authored calendar written that way now queries its object (or draws nothing) instead of drawing the authored rows. There is no longer an api-provider branch to reach here. An **array** under `data` is unchanged, as are `staticData` and `objectName`.
714
+ - **`object-grid`** — row: the `ViewData` union, whose own description says "the bare-array shortcut is refused". `getDataConfig`'s `Array.isArray(schema.data)` head is removed, so the array is no longer a record source at the ladder. ⛔ Measured: this is **not** an end-to-end change for a node rendered through `SchemaRenderer`. An authored `data` array also arrives on the **props channel** (`SchemaRenderer` spreads node keys as props; `ObjectGrid`'s `passedData` lifts an array at higher priority), so such a grid still drew its rows when this landed. The removal took the second read, not the last one; objectui#9571 closed the props carrier afterwards.
715
+ - **`object-map`** — no `ComponentPropsMap` row existed when this landed; the governing row was this repo's own `ObjectMapSchema.data`, `ViewDataSchema.optional()` (the protocol row has since been published, and is the `ViewData` union too). Its array-shorthand head is removed on the same terms, with the same measured caveat at the time: through `SchemaRenderer` the props channel still drew an authored array, until objectui#9571. `data: { provider: 'value', items }` and `staticData` are unchanged.
716
+ - **`object-gantt`** — no `ComponentPropsMap` row when this landed; the governing row was `ObjectGanttSchema.data`, `ViewDataSchema.optional()` (the protocol row has since been published, and is the `ViewData` union too). A bare array under `data` is no longer a record source. Nothing observable moves: this block never lifted one, the array carried no `provider` and matched no fetch branch, and its renderer forwards no host props.
717
+ - **`object-tree`** — **unchanged by this change.** When it landed, no published face declared a `data` row for this block: not `ComponentPropsMap`, not `ObjectTreeSchema` (which declares `objectName` required and no `data`), not its registration `inputs`. Neither arm of the ruling reached it, so its rung 1 kept its previous behaviour and the block was reported rather than guessed at. Once the protocol published `ComponentPropsMap['object-tree']`, the tree moved to the `ViewData` arm too — see the separate `object-tree` entry for objectui#8348.
718
+
719
+ The `data` **prop** — the pre-fetched rows a host such as `ObjectView` or `ListView` passes down — is a different carrier and is untouched on every block. That it is also reachable from an authored node key, because `SchemaRenderer` spreads node keys as props, is what limits the grid and map halves above; it is reported on objectui#8348 rather than changed here.
720
+ - 009f92d: `ObjectTreeProps.schema` is the published `object-tree` node instead of `any`,
721
+ and `getTreeConfig`'s parameter with it (objectui#8655).
722
+
723
+ The type WAS DERIVED rather than written out: `Extract< ObjectQLComponentSchema, { type:
724
+ 'object-tree' } >`, the spelling that union's own docblock teaches. So every key
725
+ name and key type still has exactly one declaration, `ObjectTreeSchema` in
726
+ `@object-ui/types`, and a key added or retyped there arrives here without an
727
+ edit. `Extract` rather than a named import because, when this landed, the TS barrel did
728
+ not export `ObjectTreeSchema` — the zod barrel did, and its eleven sibling arms
729
+ were all on the TS one. Repairing that omission was a published-surface addition
730
+ on another package, so it was reported rather than smuggled in here, and
731
+ objectui#9550 took it: the name is on that barrel in THIS SAME RELEASE and this
732
+ package now imports it — see that entry. ⚠️ So the derivation described above is the
733
+ state this card left behind, ⛔ not the state being released; the shipped code reads
734
+ as a named import. The claim that survives both spellings is the one that mattered:
735
+ one declaration, `ObjectTreeSchema`, and no copy of it here.
736
+
737
+ Accept-set change on the published props type, stated plainly:
738
+
739
+ - NARROWS. `any` accepted everything; the node accepts what `ObjectTreeSchema`
740
+ declares plus anything `BaseSchema`'s `[key: string]: any` admits. Breaking
741
+ for a TypeScript consumer that passed a value the node schema refuses at a
742
+ DECLARED key — `labelField` and `fields` are the two that can bite, since the
743
+ renderer tolerates host column OBJECTS there while the declaration says
744
+ `string` / `string[]`. This package's own test carried exactly that shape and
745
+ now says so at the mount rather than compiling silently.
746
+ - No runtime behaviour changes. One `as any` is removed at a read site and one
747
+ is deliberately kept; both are casts, neither is a value.
748
+
749
+ Why the type had to come first: the two reads this card was filed on were
750
+ reported UNANSWERABLE, not undeclared. Through `any`, `checker.getPropertyOfType`
751
+ returns `undefined` for a key the node certainly declares exactly as it does for
752
+ a nonsense token, so no verdict was available at all. Typed, the checker answers,
753
+ and the two answers point in opposite directions — `data` is DECLARED (on
754
+ `BaseSchema`), so its cast is gone; `navigation` is genuinely undeclared and its
755
+ cast stays, marking the read rather than hiding it.
756
+
757
+ What the re-measurement then surfaced, reported rather than tidied: six more
758
+ reads became answerable, five declared and one — `filter` — not. Its verdict is
759
+ declare-by-mirror-alignment and it is ⛔ NOT executed here, because the two files
760
+ that would carry it are held by an in-flight branch; the ledger row in
761
+ `ObjectTree.schemaTyped-8655.test.ts` reddens the day it lands. `tree` is
762
+ declared by the protocol on the VIEW and on zero element faces, so declaring it
763
+ on the node would fork rather than mirror the contract, and retiring the read
764
+ needs a producer census a text search cannot make. `navigation` belongs to a
765
+ blocked card and is ledgered, ⛔ not ruled.
766
+
767
+ Nothing in `@object-ui/types` is declared, widened or narrowed by this change.
768
+
769
+ **Note, 2026-10-01 (objectui#11168 slice 3, shipping in this same release).**
770
+ The `navigation` and `tree` readings above changed after this entry was written.
771
+ `@objectstack/spec` 17.5.0 gave `object-tree` an element row, and that row
772
+ declares both keys, so both verdicts here were re-run on that contract.
773
+ - `navigation` is DECLARED on `ObjectTreeSchema` as the spec's
774
+ `NavigationConfig`, and the cast this entry says "stays" is gone.
775
+ - `tree` is DECLARED as the spec's `TreeConfig`, by reference. Mirroring the
776
+ element row is not the fork described above.
777
+ - `ObjectTreeSchema` also declares `data` as `ViewData` (not `BaseSchema`'s
778
+ untyped `data`) and `staticData`, and `objectName` is optional.
779
+
780
+ So the sentences above that say these keys are undeclared describe the tree at
781
+ objectui#8655, not the code in this release. See that slice's changesets for
782
+ `@object-ui/types` and `@object-ui/plugin-tree`.
783
+ - 2f6b2bf: Derive `TreeViewConfig` from `@objectstack/spec` and drop `titleField`, the key the
784
+ protocol refuses on `ListView.tree` (objectui#8841).
785
+
786
+ **What was wrong.** `@object-ui/types` published `TreeViewConfig` as a hand-written
787
+ interface — a copy of the protocol's `ListView.tree` block under a second name — and the
788
+ copy declared a fifth key, `titleField`. `@objectstack/spec@17.4.0` refuses that key
789
+ there by name: `TreeConfigSchema` is a `strictObject` since spec objectstack#15469 closed the
790
+ `.passthrough()` window 17.3.0 left open. So this package's published face accepted what
791
+ the contract rejects, and an author who followed `@object-ui/types` was refused at
792
+ publish with `Unrecognized key(s) on this tree configuration: 'titleField'`. The copy was
793
+ invisible to `scripts/check-spec-symbol-derivation.mjs`, which matches spec symbols BY
794
+ NAME — a hand copy renamed away from the spec's symbol has nothing for its rule 1 to
795
+ match (objectui#4592's recorded blind spot).
796
+
797
+ **The grades, and why.**
798
+
799
+ - `@object-ui/types` — **minor**. `TreeViewConfig` is now
800
+ `NonNullable<ListView['tree']>` from `@objectstack/spec/ui`, and `titleField` is
801
+ removed from a **published** exported type. That is breaking for a producer that
802
+ annotates a `tree` block carrying the key; per this repo's version-alignment policy
803
+ (AGENTS.md — objectui's major tracks `@objectstack`'s) objectui's own breaking changes
804
+ ship as `minor` with the breaking semantics stated here. The precedent is the same
805
+ shape: `Remove the retired striped / bordered / virtualScroll list-view surface`
806
+ (`@object-ui/types` 17.6.0, minor) propagated a spec-side retirement into this package
807
+ the same way.
808
+ - `@object-ui/plugin-tree` — **minor**. `getTreeConfig`'s `labelField` chain loses its
809
+ third rung, `?? schema.titleField`. That rung read the flattened **node**, never the
810
+ block, and `titleField` is declared on neither face — not on `ObjectTreeSchema` (the TS
811
+ interface or its zod mirror) and not on the protocol's `ListView.tree`. It is a runtime
812
+ behaviour change, graded like one. The README's claim that this block is "the single
813
+ declaration of that shape" is corrected in the same stroke: the protocol owns it, and
814
+ this package publishes it derived.
815
+ - `@object-ui/plugin-view` — **patch**. `ObjectViewProps.views[n].tree` still resolves to
816
+ `TreeViewConfig`; what it admits narrows with the type. Type-only, no runtime change.
817
+ - `@object-ui/app-shell` — **patch**. The console's `tree` composition keeps both rungs;
818
+ only the second one's annotation changes (see below). No runtime change.
819
+
820
+ **The tolerant reads are kept, and deliberately left undeclared.** Three
821
+ `labelField || titleField` dual-reads survive — `plugin-view`'s and `plugin-list`'s
822
+ `'tree'` branches and the console's own composition in `app-shell` — so a view record
823
+ that already stores `tree.titleField` keeps resolving exactly as before, and
824
+ objectui#6557's pin on that rung stays green. They read through `any` now; the console's
825
+ canonical rung stays annotated `TreeViewConfig` while its legacy rung is not, because
826
+ casting it to a type that no longer carries the key cannot compile and re-declaring the
827
+ key locally would fossilise a renderer-side alias into a second contract — the AGENTS.md
828
+ #0.1 defect this change undoes. Retiring those three reads is a follow-up.
829
+
830
+ **Migration.** A host that writes `tree.titleField` should write `tree.labelField`, which
831
+ is the protocol's spelling and already wins wherever both are present. Nothing that
832
+ renders today stops rendering; what changes is that the key is now reported at compile
833
+ time by the same face that will refuse it at publish, instead of only at publish.
834
+ - 9c08dc6: Honour `filter` and the platform row ceiling on a tree's inline
835
+ (`provider: 'value'`) data (objectui#9136) — the fourth surface of the
836
+ objectui#8769 repair, after objectui#9061 ported it to `ObjectCalendar` and
837
+ `ObjectMap`.
838
+
839
+ **The defect was fail-open.** `ObjectTree`'s record effect set the authored rows
840
+ and returned on the inline provider without reaching the query in its `object`
841
+ arm, which is the one site in the file that lowers `schema.filter` to `$filter`
842
+ and the objectui#7210 ceiling to `$top`. So an inline tree that declared a
843
+ `filter` drew **every** authored row, with no diagnostic. The key that was
844
+ dropped is the key that NARROWS: the view answered a wider question than the
845
+ author asked. Nothing was exposed that was not already in the authored schema —
846
+ this is a correctness defect, not a data-access one.
847
+
848
+ **What changed.** The inline provider resolves a `ValueDataSource` over its own
849
+ rows and issues the same query the `object` arm issues (`$filter`, `$top`), then
850
+ goes through the same `applyNonGridRowCeiling`. Two keys, not the siblings'
851
+ three: `ObjectTree` reads `sort` on no provider, so nothing about ordering moves.
852
+ No dependency array moves, and the `object` provider is untouched.
853
+
854
+ **Behaviour you may notice.** This is a behaviour change on inline trees, and
855
+ it is declared `minor`, as objectui#9061 declared the same change on the
856
+ calendar and map:
857
+
858
+ - An authored `filter` now narrows inline rows, on both inline spellings —
859
+ `data: { provider: 'value', items }` and `staticData`.
860
+ - The row ceiling now applies to inline rows: past `NON_GRID_ROW_CEILING`
861
+ (`@object-ui/react`) rows the tree draws that many and shows the footnote
862
+ naming both numbers, as it already did for fetched rows. The tree is the view
863
+ that ceiling's value was measured on. It is applied to the **filtered** set,
864
+ so a large inline array that a `filter` cuts below the ceiling draws every
865
+ matching row and stays quiet.
866
+ - Rows a host passes down through the `data` React prop, or as a bare array
867
+ under `schema.data`, are unchanged: that passthrough sits above the inline
868
+ branch and is still never filtered or capped here.
869
+ - Inline rows now reach the tree as the adapter's own deep copy
870
+ (`structuredClone`, objectui#9175) rather than as the authored array's object
871
+ identities. A row handed to `onRowClick` is that copy, so code comparing it
872
+ against the authored array with `===` needs `id` equality instead. A record
873
+ graph carrying a back-reference still renders; a function-valued key in an
874
+ inline row now fails loudly with the tree's error panel instead of rendering.
875
+ - 7098eed: One record-overlay shell: all five list-type renderers honour all four overlay
876
+ `navigation.mode` values (objectui#9299, director seat decision batch #128 item
877
+ 1, 2026-09-13).
878
+
879
+ `ObjectGantt`, `ObjectKanban` and `ObjectCalendar` rendered one drawer for every
880
+ authored mode — `modal`, `split` and `popover` silently WERE the drawer, with no
881
+ diagnostic. `RecordDetailDrawer`'s payload is extracted into the new
882
+ `RecordDetailPanel` (shell-free by construction) and mounted through the shared
883
+ `NavigationOverlay`, which is what `ObjectGrid` and `ObjectTree` already used.
884
+
885
+ User-visible on published surfaces:
886
+
887
+ - **`modal` / `split` / `popover` now do what they say** on the gantt, the
888
+ kanban and the calendar.
889
+ - **`split` renders.** Each renderer passes its own view as `mainContent`, so
890
+ the board / calendar / chart / tree / grid sits beside the record panel.
891
+ Authored `split` used to render NOTHING on `ObjectTree` — and, measured while
892
+ fixing this, on `ObjectGrid` too.
893
+ - **`popover` is anchored to the element the user clicked** — row, node, bar,
894
+ card, event — instead of degrading to a centred dialog. It was honoured on no
895
+ surface before.
896
+ - **Drawer chrome converges** on the shared shell's header (breadcrumb title,
897
+ close, optional expand) for the three renderers that brought their own.
898
+ - **Drawer widths carry over, they are not reset.** The two drag-resize
899
+ implementations become one: a width persisted under the retired
900
+ `objectui.drawerWidth.OBJECT` is read once, written forward to
901
+ `ov:drawer-width:OBJECT` and removed. One key per object across every view
902
+ type. The default width is unchanged at every viewport (objectui#6584); an
903
+ authored width below `min(60vw, 880px)` now widens to it, which is the shell's
904
+ long-standing policy on grid and tree.
905
+ - **Richer record body on grid and tree** — typed widgets, declared labels,
906
+ honoured `hidden` — wherever the object declares its fields. With nothing
907
+ declared those two renderers keep their own value-inference reading, which is
908
+ what preserves the locale-aware date fallback (objectui#4541), the localized
909
+ empty placeholder (objectui#8491) and the `format` hint (objectui#8920); the
910
+ overlay shell is the shared one on that path too.
911
+
912
+ New published API: `RecordDetailPanel`, `buildRecordDetailFields`,
913
+ `RECORD_OVERLAY_DEFAULT_WIDTH` (`@object-ui/plugin-detail`);
914
+ `useOverlayAnchor`, `recordOverlayWidthStorageKey`,
915
+ `legacyRecordDrawerWidthKey` and the `popoverAnchorRef` / `legacyStorageKey`
916
+ props on `NavigationOverlay` (`@object-ui/components`). `RecordDetailDrawer`
917
+ keeps its props and is now a thin wrapper over the shared shell. ⛔ No spec
918
+ change.
919
+ - 502eb58: The row/card click props on the view components now declare the modifier
920
+ payload they have always been invoked with (objectui#9357).
921
+
922
+ `useNavigationOverlay`'s `handleClick` invokes the handler it is given with two
923
+ arguments — the record, and an optional modifier payload (`metaKey` / `ctrlKey`
924
+ / `button`) a host needs to implement Cmd/Ctrl/middle-click. objectui#9360 made
925
+ the hook's own option say so. These components pass a host-supplied prop
926
+ straight into that option, so the value a host writes against them is invoked
927
+ with two arguments too — and every one of these props declared only the record.
928
+ The payload was therefore invisible on the one line a host reads, exactly as it
929
+ had been on the hook.
930
+
931
+ Thirteen declarations across nine packages now name both parameters:
932
+
933
+ - `ObjectGridComponentProps.onRowClick`
934
+ - `ObjectKanbanComponentProps.onRowClick` (its sibling `onCardClick`, the other
935
+ arm of the same fallback, already declared both)
936
+ - `KanbanRendererProps.schema.onCardClick`
937
+ - `ObjectCalendar`, `ObjectGantt`, `ObjectMap`, `ObjectTree`: `onRowClick`
938
+ - `ObjectTimeline`: `onRowClick` and `onItemClick`, the two arms of one fallback
939
+ - `ListView.onRowClick`
940
+ - `ObjectGallery`: `onRowClick` and `onCardClick`, likewise two arms of one
941
+ - `RelatedList.onRowClick`
942
+
943
+ **Source-compatible, and with no refused class.** A one-parameter handler is
944
+ still assignable to the widened signature, and a handler written against the
945
+ widened signature was already assignable to the narrow one — its minimum
946
+ argument count is still one. The second parameter is spelled `any` rather than
947
+ `HandleClickModifiers`, which is the difference that matters for callers: the
948
+ hook's own option names that interface and therefore refuses a handler whose
949
+ second parameter is annotated narrower (objectui#9360 documents that class and
950
+ the one-line remedy). These faces refuse nothing. A host that discovered the
951
+ payload from the implementation and annotated it `React.MouseEvent` — which is
952
+ what actually arrives — keeps compiling. `any` is also the spelling
953
+ `ObjectKanbanSchema.onCardClick` already carries for this same payload
954
+ (objectui#9341) and the one `BaseSchema`'s own `onClick` / `onChange` /
955
+ `onSubmit` use, and it is forced on the published twins in `@object-ui/types`,
956
+ which may not name a type that lives in a package depending on them.
957
+
958
+ **Runtime behaviour is unchanged.** Nothing is newly called and nothing newly
959
+ passes an argument; only the declarations move.
960
+
961
+ Three declarations that share the name and the shape are deliberately NOT
962
+ widened, because the value flowing through them is not invoked with the
963
+ payload: `VirtualGrid.onRowClick`, whose second parameter is a row index;
964
+ `ManageViewsDialog.onRowClick`, which receives a view id; and the `data-table`
965
+ family (`DataTableSchema.onRowClick`, `ObjectDataTableSchema.onRowClick`),
966
+ whose renderer invokes with one argument. Widening those would have declared a
967
+ payload that never arrives.
968
+ - d16d0e9: `ObjectTreeSchema.filter` is declared on both faces, in the shape objectui#9309
969
+ settled for `ObjectGallerySchema.filter`: `QueryParams['$filter']` by indexed
970
+ access on the TS interface in `objectql.ts`, and the same two-arm union (array
971
+ first) on the zod mirror in `zod/objectql.zod.ts` (objectui#9549).
972
+
973
+ The key was already delivered and read before it was declared. `ListView` puts
974
+ `filter` on the `baseProps` every child view receives, and `ObjectTree` sends
975
+ `$filter: schema.filter` on its own fetch. Until now the value survived only on
976
+ `BaseSchema`'s `[key: string]: any` and the mirror's `.passthrough()`.
977
+
978
+ Accept-set change on the published surface, stated plainly:
979
+
980
+ - NARROWS, both faces. `filter: 'stage=won'` and `filter: 42` are type errors
981
+ now, and the mirror refuses them at parse time instead of keeping them
982
+ unjudged. Breaking for any TypeScript consumer that assigned a non-object
983
+ value to this key on an `object-tree` node.
984
+ - Both object arms still compile and parse: the ObjectQL field-keyed record
985
+ (`{ age: { $gt: 18 } }`) and the spec's `FilterArray` sugar
986
+ (`[['status', '=', 'active']]`).
987
+
988
+ `@object-ui/plugin-tree`: the renderer no longer reads the tree block from
989
+ `filter.tree`. It used to resolve the block as `schema.tree`, falling back to a
990
+ `tree` member of `schema.filter`; that second dialect treated the query filter
991
+ as a holder of tree config. Measured before removal: no example, fixture, test
992
+ or doc authors a `tree` under `filter`, and the arm dates from the renderer's
993
+ first commit with no stated reason. Author the block as `tree`. A node that put
994
+ it under `filter` now gets the auto-detected parent field and the default label
995
+ column, and the `filter` object is still forwarded as `$filter`.
996
+
997
+ ### Patch Changes
998
+
999
+ - f9c06ef: Every data node that sends its own authored `filter` into a query now resolves the spec's context tokens first (objectui#10666). With `filter: [['owner', '=', '{current_user_id}']]` these nodes used to send the literal token; they now send the signed-in user's id, and `{current_org_id}` resolves to the active organization:
1000
+
1001
+ - `object-calendar`, `object-map` and `object-tree`, on both the object query and the inline (`provider: 'value'`) query;
1002
+ - `object-gantt`, `object-kanban` and `object-timeline`;
1003
+ - `record:related_list` and `record:line_items`, where the node's own filter is combined with the parent-record condition;
1004
+ - the `element:repeater`, `element:number` (both the `aggregate` filter and the `find` fallback) and `element:record_picker` page elements.
1005
+
1006
+ `list-view`, `object-grid` and `object-gallery` already did this, and are unchanged.
1007
+
1008
+ **New in `@object-ui/react`: `useResolvedFilter(filter, scope)`.** Pass it a node's authored filter and `useFilterScope()`. It resolves the filter through `@object-ui/core`'s shared `resolveFilterPlaceholders` and holds the result: re-rendering with an equal filter (even one rebuilt inline on every render) hands back the same value, so a fetch effect keyed on it does not run again, while a structurally different filter or a change of signed-in user or organization resolves again. A filter with no token to resolve is handed back as the value you passed in. The hold is the one `list-view` and `object-gallery` used privately; `plugin-list` now imports it from here, and no second copy remains in that package.
1009
+
1010
+ What changes for an app:
1011
+
1012
+ - A filter with no placeholders reaches the query as before, unchanged.
1013
+ - Nodes that re-queried whenever the host rebuilt an equal filter inline (`object-calendar`, `object-gantt`, `object-kanban`, `object-map`, `object-tree`) no longer issue those redundant queries.
1014
+ - Date macros such as `{today}` in these nodes' own filters are now resolved in the browser's local time, as they already are for `list-view`, `object-grid` and `object-view`. Before, they reached the server as literals, and the server resolved them in the tenant's time zone.
1015
+
1016
+ `@object-ui/types`: the `filter` docblocks on `ObjectMapSchema`, `ObjectTreeSchema`, `ObjectGanttSchema`, `ObjectCalendarSchema`, `ObjectKanbanSchema`, `ObjectChartSchema` and `ObjectGallerySchema` (and the matching zod descriptions) no longer say the filter is forwarded verbatim; they say its context tokens are resolved first. No type changes.
1017
+ - 8c3d7fc: fix(plugin-tree): `object-tree` re-reads its rows on the data-invalidation bus
1018
+
1019
+ The record effect of `ObjectTree` now names the `useDataInvalidation` nonce for
1020
+ the object its `object` provider queries — whether the node spells it
1021
+ `objectName` or `data: { provider: 'object', object }` — so a write declared on
1022
+ the bus (`notifyDataChanged`, as a page action over raw HTTP does) re-reads the
1023
+ tree in place, keeping the user's expansion choices. Before, a tree that no
1024
+ host handed rows to refreshed after such a write only when its host remounted
1025
+ it, and `PageView` is about to stop doing that (objectui#10519).
1026
+
1027
+ Inline rows (a `data` array, the `value` provider) name no object and do not
1028
+ subscribe. A tree whose host hands down rows (the `list-view` tree) subscribes
1029
+ too: it runs its own full query ahead of those rows, so its freshness does not
1030
+ rest on the host's rows moving.
1031
+ - 4d0af04: fix(plugin-tree): `object-tree` keeps its rows on screen while it re-reads them
1032
+
1033
+ `ObjectTree` drew its "Loading…" placeholder whenever a read was in flight, so
1034
+ every re-read — each data-invalidation event for its object among them — took
1035
+ the table off the screen and put it back: the rows flashed, and a scrolled tree
1036
+ lost its scroll offset.
1037
+
1038
+ The placeholder is now drawn only while the tree has no rows for the source it
1039
+ is bound to: the first load, a switch to another object or data provider, and an
1040
+ empty result being re-read. A re-read of the same source keeps the rows, the
1041
+ scroll container and the user's expansion choices on screen, with the shared
1042
+ `RefreshIndicator` bar across the top of the tree while the read is in flight
1043
+ (named through the locale's `grid.refreshing`). The previous object's rows are
1044
+ never drawn under a new object or provider.
1045
+ - 39f4309: Published typings from every `vite-plugin-dts` package now carry an explicit extension on
1046
+ every relative specifier, and a type error in the declaration build now fails the build
1047
+ instead of being printed and ignored (objectui#5439, objectui#5483).
1048
+
1049
+ **Consumers on `moduleResolution: nodenext` or `node16` may see NEW type errors, and that
1050
+ is the fix working.** These packages re-export mostly through NAMED re-exports —
1051
+ `export { useObjectChat } from './useObjectChat'`. TypeScript could not follow the
1052
+ extensionless hop, but it still DECLARED the name, so the symbol resolved to a silent
1053
+ `any`. Nothing errored; consumers simply got no types. With the extension emitted, the
1054
+ symbol carries its real type, and any call site that was relying on the `any` now type
1055
+ checks for the first time. This is the mode that produced the 21 residual `TS7006` on
1056
+ `@object-ui/app-shell` reported against objectui#5365 — a type hole that opened quietly,
1057
+ unlike objectui#5365's own `export * from './ui'` packages where the same defect surfaced
1058
+ immediately as `TS2305: has no exported member`.
1059
+
1060
+ 410 extensionless relative specifiers across 19 packages were emitted before this change;
1061
+ the count is now 0 in all 22 packages that build typings through `vite-plugin-dts`.
1062
+ `@object-ui/fields` was already clean — its sources write explicit `.js` specifiers — and
1063
+ is wired so it stays that way.
1064
+
1065
+ The second half changes no emitted output today: 22/22 packages built green unmodified, so
1066
+ making the declaration step's exit code honest turns nothing red. It changes what a FUTURE
1067
+ regression does — print and exit 0, versus fail the build.
1068
+ - b00fcba: `ObjectTree` formats its cells the way the flat table does: a lookup column renders the
1069
+ referenced record's display name and a select column renders its translated option label,
1070
+ instead of a raw record id and the raw stored value (objectui#6014).
1071
+
1072
+ Reported against the built-in 业务单元 (`sys_business_unit`) page, whose 「组织架构」 tree tab
1073
+ showed the manager column as a bare user id and the type column as `department`, while the
1074
+ flat-table tab on the same page — over the same expanded records — showed the user's name
1075
+ and 「部门」.
1076
+
1077
+ The card carried its own control, and it pointed at the fetch rather than the formatter. The
1078
+ tree treated "the host passed inline `data`" as "I do not need the object schema" and skipped
1079
+ `getObjectSchema`, but its record-fetch branch prefers a live object dataSource over any
1080
+ inline data. On the one mount shape `ListView` actually uses — `objectName` + a dataSource +
1081
+ its own pre-fetched `data` — the tree therefore issued its OWN query with
1082
+ `buildExpandFields(undefined)` → `[]` → no `$expand` at all, and had no field definitions to
1083
+ format cells from. Both reported symptoms fall out of that single gap, which is why the flat
1084
+ tab was unaffected and why the tree's existing tests (inline data, no dataSource — a path
1085
+ that never runs the tree's own fetch) could not see it.
1086
+
1087
+ Three changes, all inside `packages/plugin-tree`:
1088
+
1089
+ - The object schema is fetched whenever the dataSource can serve one, not only when no host
1090
+ passed inline data. The guard inside the fetch already no-ops without a dataSource, so the
1091
+ pure inline/static path is unaffected.
1092
+ - Records are no longer fetched until that schema has settled — settled, not necessarily
1093
+ successful, so a rejected or inapplicable schema fetch can never block the tree. This also
1094
+ removes a wasted first query whose lookup columns came back as bare ids and were painted
1095
+ for a moment before the real query landed.
1096
+ - Cell values route through a field-aware formatter that delegates both decisions rather than
1097
+ re-deciding them: option labels through the `translateOptions` seam `ObjectGrid` already
1098
+ uses for the flat tab (so both tabs read one `fieldOptions.*` i18n key, with the same
1099
+ exact-then-case-insensitive match and `humanizeLabel` fallback as `SelectCellRenderer`), and
1100
+ expanded references through `getRecordDisplayName`, the unified display-name resolver
1101
+ (ADR-0079), with the family judged by `isExpandableFieldType` — the same predicate that
1102
+ decided what to put in `$expand`.
1103
+
1104
+ No new exports and no new package dependencies: both resolvers were already published from
1105
+ `@object-ui/core`, and `translateOptions` was already reachable through the `useSafeFieldLabel`
1106
+ hook this component calls for its column headers.
1107
+
1108
+ One visible consequence beyond the report: an expanded record that comes back with no name-ish
1109
+ field now reads as ADR-0079's `Record #<id>` floor — the string every other surface shows for
1110
+ it — rather than as the bare id.
1111
+ - 9abc02a: `ObjectTree` no longer queries a switched-to object with the previous object's
1112
+ `$expand` set (objectui#6481).
1113
+
1114
+ The schema-settled gate was two separate pieces of state — the definition
1115
+ (`objectSchema`) and a bare `schemaSettled` boolean that was set `true` in a
1116
+ `finally` and never reset. Two independent values cannot express "settled, but
1117
+ for a DIFFERENT object", so when the host swapped the bound object both effects
1118
+ re-ran while the latch still read `true` from the previous object's settle and
1119
+ the definition still held the previous object's fields. The tree issued
1120
+
1121
+ find(newObject, { $filter: …, $expand: [ …previous object's relation fields… ] })
1122
+
1123
+ — rejected or silently ignored depending on the adapter, plus the transient it
1124
+ painted — before a correct second query followed.
1125
+
1126
+ `ObjectTree` now adopts `useSettledSchema` from `@object-ui/react` (the shared
1127
+ resolution hook ruled in objectui#6482), replacing BOTH pieces of state with the
1128
+ hook's single `{ key, def } | null`. Readiness is derived during render by
1129
+ comparing the settled key against the currently bound object, so the gate closes
1130
+ in the same commit that changes the object rather than one commit later — the
1131
+ stale-key window is not merely fixed but unrepresentable.
1132
+
1133
+ Behaviour that deliberately does NOT change: the gate stays inside the
1134
+ object-provider branch of the record effect (the inline/static branches issue no
1135
+ metadata read and must not wait on one), and every exit still settles — no
1136
+ `getObjectSchema`, no object name, or a rejected read each settle with no
1137
+ definition, so a tree whose adapter serves no schema still queries instead of
1138
+ waiting forever.
1139
+ - 37200ee: Re-key `ObjectTree`'s record-fetch effect onto the primitive fields it
1140
+ actually reads off `dataConfig` (`provider` / `object` / `items`) instead of
1141
+ the whole memoised `dataConfig` object (objectui#6700, closing out the
1142
+ census #6592 opened — the schema-resolution half of this component was
1143
+ already re-keyed onto `useSettledSchema`'s primitive `schemaKey` by #6696).
1144
+
1145
+ `useMemo` carries no semantic guarantee — React is permitted to discard a
1146
+ memo cache and recompute even when its dependency array compares equal to
1147
+ the previous render, and the local `getDataConfig(schema)` helper builds a
1148
+ fresh `{ provider, object }` / `{ provider, items }` wrapper object on every
1149
+ call. So the record-fetch effect, keyed on `dataConfig` itself, was correct
1150
+ only for as long as that identity happened to survive a discard: a
1151
+ recompute alone (no author or caller action) was enough to re-run the
1152
+ effect and issue an extra `dataSource.find` call. Keying the effect on the
1153
+ primitives instead makes a cache discard a no-op, restoring `useMemo` to a
1154
+ pure optimisation — mirroring the fix already shipped for `ObjectMap` /
1155
+ `ObjectCalendar` / `ObjectGantt`.
1156
+
1157
+ No behaviour change for a schema whose `useMemo` caches survive normally;
1158
+ the effect is unaffected by React discarding one.
1159
+ - d327b9c: FLS-gate the `$expand` projection at the seven remaining `buildExpandFields`
1160
+ call sites (objectui#7429).
1161
+
1162
+ objectui#7215 / PR #7229 gated the two projection sites in its scope
1163
+ (`ObjectGrid`, `ListView`). objectui#7230 / PR #7428 gated four more
1164
+ (`ObjectCalendar`, `ObjectGantt`, `RecordDetailView`, `DetailView`). This
1165
+ closes the seven that were left: `ObjectKanban`, `ObjectTree`, `ObjectView`
1166
+ (the non-grid record-fetch effect), `ObjectMap`, `ObjectGallery`,
1167
+ `ObjectTimeline`, and the metadata-admin `PagePreview`'s record-binding fetch.
1168
+
1169
+ **All seven pass no column list at all**, which makes every one of them the
1170
+ sharp shape: `buildExpandFields` reads an absent column list as "no column
1171
+ restriction" and falls back to **every declared relation on the object**,
1172
+ denied ones included. So each of these components asked the server to resolve
1173
+ the object's full relation set by default, not by configuration — the
1174
+ ordinary shape of each surface, not a corner of it.
1175
+
1176
+ **`PagePreview` is the one site where the judged principal is not the page's
1177
+ eventual audience.** It calls the browser's own `fetch` with
1178
+ `credentials: 'include'` rather than `DataSource.find`, so it runs under
1179
+ whichever session is loading the Studio preview. Gating on that same session's
1180
+ `usePermissions()` is still the correct principal: it is exactly the request
1181
+ the browser is about to make, on its own credentials, regardless of who later
1182
+ opens the published page.
1183
+
1184
+ **Reproduced before it was fixed**, as a failing test per site (and, for the
1185
+ two sites — `ObjectView`, `PagePreview` — where the gate was implemented
1186
+ before its test was run red, a reverse-verification: the gate was reverted,
1187
+ all four denial-and-set pins on each went red, and the two deferral/positive
1188
+ control pins stayed green, before the gate was restored).
1189
+
1190
+ **Grading, measured rather than assumed** — the same reading objectui#6898,
1191
+ #7215 and #7230 recorded: against ObjectStack's own server this is
1192
+ defence-in-depth, not a live disclosure. `plugin-security`'s
1193
+ `FieldMasker.maskRecord` deletes every unreadable key from each returned row
1194
+ and objectql's expand path writes the resolved record back under that same
1195
+ key, so one statement removes the expanded object and the bare id alike; the
1196
+ expansion sub-read is itself gated (the referenced object's full CRUD + RLS +
1197
+ FLS treatment, objectstack#7626). It is load-bearing for any backend that does
1198
+ not strip, and the client-request side is real regardless.
1199
+
1200
+ **Nothing a permitted view did stops working.** The gate judges each site's
1201
+ `buildExpandFields` OUTPUT, which contains only the object's declared
1202
+ reference-bearing fields, so the "`checkField` answers false for an
1203
+ undeclared key" trap cannot be reached. An unanswered permission policy
1204
+ filters nothing. `buildExpandFields` itself is unchanged.
1205
+
1206
+ `@object-ui/permissions` is added to `dependencies` for `plugin-kanban`,
1207
+ `plugin-tree`, `plugin-map`, `plugin-timeline`, and `plugin-view` — the fifth
1208
+ one objectui#7429's own dependency count missed (it named four); `plugin-list`
1209
+ and `app-shell` already had it.
1210
+ - c6198c2: **Breaking for authored metadata:** `ComponentInput.label`, `ComponentInput.defaultValue` and
1211
+ `ComponentInput.advanced` are RETIRED on both faces (objectui#7493 item ① and objectui#7781;
1212
+ maintainer ruling A of 2026-09-06, immediate, no deprecation window; ADR-0049 enforce-or-remove).
1213
+ They are the three keys the manifest serializer does not forward, and nothing read them on any
1214
+ publication or consumption path.
1215
+
1216
+ No manifest ever published them, so no consumer could ever have read them. `sdui-parser`'s
1217
+ serializer (`packages/sdui-parser/src/index.ts`) forwards exactly seven keys per input — `name`,
1218
+ `type`, `of`, `required`, `enum`, `binding`, `description` — so a value authored under any of the three
1219
+ never reached `sdui.manifest.json`, the generated JSX `.d.ts`, or a diagnostic; its boundary type
1220
+ has no slot for them; the registry's data-source seam reads `name` only; and neither the designer
1221
+ nor the app-shell inspectors consult registry `inputs` at all. A structural census over every
1222
+ `inputs:` array in the repository (re-measured on this change's merge-base, `name` 951 and `type`
1223
+ 951 as the controls) counted the writes: `label` 908, `defaultValue` 245, `advanced` 9 — written on
1224
+ nearly every registration, read by nothing.
1225
+
1226
+ FROM → TO, per key — all three **TOMBSTONED, not removed**, because the route was measured on
1227
+ the built face before it was chosen: `ComponentInputSchema` is a non-strict `z.object`, and an
1228
+ undeclared key parses GREEN and is silently STRIPPED, so a deletion would have swallowed 1,162
1229
+ authored values in silence. The tombstone is what makes the refusal loud and by name.
1230
+
1231
+ - `label?: string` → `label?: never` on the interface, `retirementTombstone()` on the Zod mirror.
1232
+ Migration: delete the key. An input is identified by its `name` on every path that reaches it;
1233
+ nothing ever rendered a label for it.
1234
+ - `defaultValue?: any` → `defaultValue?: never` / `retirementTombstone()`. Migration: delete the
1235
+ key. The renderer's own fallback read IS the default; tell the author about it in `description`,
1236
+ which IS published. (Tightening the type to `unknown` was ruled out: it closes no error class,
1237
+ since nothing reads the value.)
1238
+ - `advanced?: boolean` → `advanced?: never` / `retirementTombstone()`. Migration: delete the key.
1239
+ No designer surface ever hid an "advanced" input; there is nothing to write instead.
1240
+
1241
+ The retirement kit: `?: never` on `ComponentInput` (`packages/types/src/base.ts`), so authoring one
1242
+ is a `tsc` error at the registration site; `retirementTombstone()` on `ComponentInputSchema`
1243
+ (`packages/types/src/zod/base.zod.ts`), so an authored value is REFUSED at parse time with
1244
+ `code: 'invalid_type'`, the key named in the issue `path`, and the migration note as the message
1245
+ (one string, both channels). Pinned in
1246
+ `packages/types/src/__tests__/component-input-retired-keys-7493.test.ts`, which also holds a
1247
+ tree-scoped absence census over every `inputs:` array under `packages/**` and `apps/**`.
1248
+
1249
+ Accept-set change, stated plainly for reviewers: a document that sets any of the three keys on a
1250
+ `ComponentInput` used to parse GREEN (the value was then dropped by the serializer) and now parses
1251
+ RED. Every in-repo authoring site — 1,199 keys across 110 registration files, the three standalone
1252
+ `ComponentInput[]` arrays and the two named input arrays `tsc` found included — is deleted in the same change, as the ruling's split rule
1253
+ requires; the `WidgetRegistry` seam no longer copies the widget-manifest values onto the synthesized
1254
+ `ComponentInput` (they fed nothing), and the data-source declaration `ELEMENT_DATA_SOURCE_INPUT`
1255
+ drops its `label`. The patch entries on the other packages record exactly that: their registrations
1256
+ stop authoring inert keys, with no runtime or published-manifest change.
1257
+
1258
+ The nine test files that read `defaultValue` off a registration were re-pinned against the
1259
+ renderer's ACTUAL default (its own fallback read, or the `defaultProps` it ships) instead of the
1260
+ declaration that went away; two assertions that only restated the shadow default were dropped with
1261
+ the reason on the line.
1262
+
1263
+ The in-repo zero is what was measured. Whether anything OUTSIDE this repository writes these keys
1264
+ is not measurable from here (the objectui#5674 limit); converting such a write from a silent drop
1265
+ into a named refusal is exactly what the tombstones buy. `WidgetInput`'s own `label` /
1266
+ `defaultValue` / `advanced` (the widget-manifest face) stay declared and writable — nothing has
1267
+ ruled on that face; that it now has no reader either is recorded as objectui#7911.
1268
+ - ce2aaef: One shared record-source ladder, five plugins delegate.
1269
+
1270
+ `@object-ui/core` publishes `resolveRecordSourceConfig(schema)` — the ONE implementation
1271
+ of the ruled three-rung record source ladder: `data` first, then `staticData` wrapped as
1272
+ `{ provider: 'value', items }`, then `objectName` folded to `{ provider: 'object' }`, and
1273
+ `null` when nothing is bound. It is the PRODUCER whose output the reader
1274
+ `resolveRecordSourceObjectName` (`b041b9c0c`) consumes, and it now sits beside it in the same module.
1275
+
1276
+ That ladder is published contract on both faces — `packages/types/src/objectql.ts` and its
1277
+ zod mirror both ship `.describe()` strings naming `getDataConfig`'s order (`77cb489b4`,
1278
+ maintainer ruling 2026-09-02), pinned by `objectql-record-source-refinement-6939.test.ts` —
1279
+ and it was hand-copied into five plugin components with no gate holding them together. A
1280
+ change to the ruled order had five edit sites and nothing that noticed a missed one; that
1281
+ is the AGENTS.md #0.1 drift class.
1282
+
1283
+ **No behaviour changes.** `ObjectCalendar`, `ObjectGantt` and `ObjectTree` now call the
1284
+ shared reader directly. `ObjectGrid` and `ObjectMap` keep their own bare-array `data`
1285
+ shorthand as a documented head above the shared call and are otherwise unchanged.
1286
+ `record-source-config.behaviourNeutrality-7632.test.ts` transcribes all five pre-collapse
1287
+ bodies verbatim and asserts the post-collapse spelling agrees with each across the whole
1288
+ input matrix, so a later edit to the shared reader that moves any site turns red.
1289
+
1290
+ **Two divergences were measured rather than assumed, and both are preserved.**
1291
+
1292
+ `ObjectCalendar`'s `'data' in schema && schema.data` guards existed because its parameter was
1293
+ at that time the union `ObjectGridSchema | CalendarSchema`, whose `CalendarSchema` arm declared
1294
+ neither key. (objectui#8651 has since re-pointed that parameter at the published
1295
+ `ObjectCalendarSchema`, so the union is gone; the CONCLUSION below — that the guard had no
1296
+ runtime effect and removing it is behaviour-neutral — is unaffected.)
1297
+ That is a TypeScript narrowing device with no runtime effect — an absent property reads
1298
+ `undefined`, falsy either way — so the guard could never change which rung is taken. The
1299
+ shared reader's optional-property parameter accepts the union directly, and the
1300
+ equivalence is pinned on a fixture that really lacks both keys rather than argued.
1301
+
1302
+ `ObjectGrid` and `ObjectMap` normalize a bare-array `data` to `{ provider: 'value', items }`;
1303
+ `ObjectCalendar`, `ObjectGantt` and `ObjectTree` do not, and return the array verbatim. That
1304
+ is a real divergence on off-contract input — `ViewData` is a discriminated union over object
1305
+ variants, so an array under `data` cannot be published. It is NOT unified here: the shared
1306
+ rung stays contract-strict and the two sites keep the head locally, the same way `b041b9c0c`
1307
+ left the off-contract `{ provider: 'object' }` tails at their sites. Both sides of the fork are
1308
+ pinned, so neither folding the head in nor deleting it as redundant can happen silently.
1309
+
1310
+ `ObjectTree`'s copy took `schema: any`; it now goes through the shared reader's typed
1311
+ parameter. Types are erased at runtime, so nothing it resolves moves.
1312
+ - 2ce2612: A record-page URL now names the object the clicked rows actually came from, in
1313
+ `ObjectTree` and `ObjectCalendar`.
1314
+
1315
+ `useNavigationOverlay` builds `/{objectName}/record/{id}` out of whatever it is handed,
1316
+ and both components handed it the bare top-level `schema.objectName` while resolving
1317
+ their own rows through the ruled record-source ladder (`data`, then
1318
+ `staticData`, then `objectName`). `77cb489b4` published `objectName` as that ladder's
1319
+ THIRD RUNG and not as a parallel "page object" concept, so a block has exactly one
1320
+ record source — and a row fetched through `data.object` whose click built
1321
+ `/{schema.objectName}/record/{id}` named a record that the URL's own object does not
1322
+ contain.
1323
+
1324
+ Two shapes change, both toward the object the rows came from:
1325
+
1326
+ - a block carrying **both** bindings navigated to the top-level key and now navigates to
1327
+ `data.object`;
1328
+ - a **data-only** block had no name to build a URL from at all, so the hook took its
1329
+ `/{id}` leg — an unrouted path that paints a blank page — and now builds the routed
1330
+ record URL.
1331
+
1332
+ `ObjectCalendar` is where the divergence was plainest: on one click it resolved the
1333
+ detail drawer through the ladder and the navigation URL through the top-level key. The
1334
+ URL now reuses the very `schemaObjectName` that already keys the calendar's record query
1335
+ and its `$expand` derivation, so query, drawer and URL agree by construction.
1336
+
1337
+ **Nothing else moves.** Both converted sites keep a site-local `?? schema.objectName`
1338
+ tail for the off-contract `data: { provider: 'object' }` that carries no `object`
1339
+ (`ViewDataSchema` declares it required) — the same tail `ObjectTree`'s `headerObjectName`
1340
+ already carries, and the same conservatism `b041b9c0c` applied when it published the
1341
+ shared reader. `useNavigationOverlay`'s own signature is unchanged: it still takes an
1342
+ `objectName`, and only what callers hand it has changed.
1343
+
1344
+ The hook's `@example` stops prescribing `objectName: schema.objectName`. That prose is
1345
+ why there were copies to convert at all — component authors copied the divergence out of
1346
+ the documentation, correctly, as written — so it now points at
1347
+ `resolveRecordSourceObjectName` and says explicitly that a caller with no data config
1348
+ has nothing above rung three and should keep passing `schema.objectName`.
1349
+
1350
+ `ObjectKanban` is deliberately **not** converted: it has no data config, no
1351
+ `getDataConfig`, and its `data` is a raw row array rather than a `ViewData` binding, so
1352
+ `schema.objectName` already IS its record source and its board, drawer and URL already
1353
+ agree.
1354
+ - f556a89: `ObjectTree`'s parent-pointer auto-detection accepts a `tree` field only when it is
1355
+ this object's own (objectui#7839, objectstack#14892 follow-up).
1356
+
1357
+ A hierarchy is parent/child **within one object**, so `@objectstack/spec` refuses a
1358
+ `tree` field whose `reference` names any other object (`refuseForeignTreeReference`);
1359
+ `reference` stays optional on a `tree`, where it is a redundant self-annotation.
1360
+ `detectParentField` returned the first `type: 'tree'` field whatever its `reference`
1361
+ said, so a foreign-shaped one was silently picked as the parent pointer and the forest
1362
+ was grouped on a pointer into a table it does not point at. It now mirrors the spec's
1363
+ own kernel predicate `hasDetectableParentField` term for term — accept when `reference`
1364
+ is absent, or when it equals the bound `objectName` — and the `objectName` guard comes
1365
+ with it: an object whose name we do not know cannot be self-referenced.
1366
+
1367
+ Skipping rather than returning also removes a masking bug the old early-return hid: a
1368
+ foreign `tree` declared before a self-referencing `lookup` used to win by position and
1369
+ the lookup never got its turn. The `lookup` / `master_detail` arm is otherwise
1370
+ unchanged.
1371
+
1372
+ Reachability is narrow and stated rather than oversold: the refused shape does not
1373
+ survive `ObjectSchema.parse` on a spec carrying that rule, so it is unreachable from
1374
+ parsed metadata and reachable from a hand-built one — `getObjectSchema` is a required
1375
+ member of the published `DataSource` interface, so a third-party implementation reaches
1376
+ this reader raw. Note also that the renderer tightens **ahead** of the spec copy this
1377
+ repo installs: `@objectstack/spec@17.2.0` still accepts the foreign shape at parse
1378
+ (measured), so until that pin moves this function is the only door.
1379
+ - 3e98e13: Export the host `tree` view config as `TreeViewConfig` (objectui#8253, director
1380
+ decision batch #78, 2026-09-07, maintainer 「同意」 on option (a)).
1381
+
1382
+ **What was wrong.** `tree` is a host-composition-only view type — ruled deliberate on
1383
+ objectui#5321, it is a member of neither `ObjectViewSchema.defaultViewType` nor
1384
+ `NamedListView.type`, so the branch runs only when a host passes a `views` prop. On
1385
+ that path a per-view `tree` block is read at four sites, and its only description
1386
+ anywhere was a module-local, non-exported `interface TreeConfig` inside
1387
+ `plugin-tree/src/ObjectTree.tsx`. The live host is the console: it stores view records
1388
+ and passes them as `views`, and its create-view dialog offers `tree`. So a real
1389
+ consumer wrote this block with no type to write it against, and a misspelled
1390
+ `parentFeild` was admitted by the views entry's `[key: string]: any`, stored, read by
1391
+ nobody and reported by nothing. Declared ≠ enforced on a surface a non-author
1392
+ re-writes.
1393
+
1394
+ **The grades, and why.**
1395
+
1396
+ - `@object-ui/types` — **minor**: one new name, `TreeViewConfig`, becomes reachable
1397
+ from the package entry. Nothing existing is renamed, retyped or removed, and no
1398
+ value's validation changes anywhere in this package.
1399
+ - `@object-ui/plugin-view` — **minor**: `ObjectViewProps.views[n].tree` is now
1400
+ declared `TreeViewConfig` where it previously resolved to `any` through the entry's
1401
+ index signature. On a face that already admitted every spelling a declaration
1402
+ **cannot widen — it can only narrow**, and this one does: a host composing the entry
1403
+ as an object literal now gets `parentFeild` reported as an excess property instead
1404
+ of silently dropped. The index signature itself is untouched, so every other
1405
+ undeclared key a host puts on the entry still type-checks exactly as before.
1406
+ - `@object-ui/plugin-tree` — **patch**: the module-local interface becomes an import
1407
+ of the exported one and the resolver's own type is `Pick`ed off it. No runtime
1408
+ behaviour changes, and no key is added to or removed from what the renderer reads.
1409
+
1410
+ **`titleField` was declared, not deleted — and that was a measurement.** The ruling put
1411
+ this key to a test: declare it if the console writes it, else remove the read. The
1412
+ console's create-view dialog does **not** offer it (its `tree` slot collects
1413
+ `parentField` alone), but the console's own host composition reads it by name, so do
1414
+ the `ListView` and `ObjectView` tree branches, and that rung is pinned as live behaviour
1415
+ by objectui#6557 ("the tree's second view-declared rung … still answers"). Deleting that
1416
+ read would have reversed a recorded ruling and reddened that pin, so this change declared
1417
+ the key at all four read sites instead. `labelField` remains canonical and wins wherever
1418
+ both are present.
1419
+
1420
+ ⚠️ **Superseded — the declaration has since been removed.** objectui#8841 (PR
1421
+ objectui#9052) settled it against the protocol rather than against the reads:
1422
+ `@objectstack/spec@17.4.0`'s `TreeConfigSchema` is a `strictObject` and refuses
1423
+ `titleField` on `ListView.tree` by name, so declaring it here published a key an author
1424
+ following `@object-ui/types` was refused for at publish. `TreeViewConfig` is now derived
1425
+ from that protocol block and no longer carries the key, and `plugin-tree`'s
1426
+ `?? schema.titleField` rung — which read the flattened NODE, not this block — went with
1427
+ it. ⛔ What did NOT go is the view-declared read objectui#6557 pins: the
1428
+ `labelField || titleField` dual-reads in `plugin-view`, `plugin-list` and the console
1429
+ survive as undeclared tolerance, so stored view records keep resolving and that pin is
1430
+ still green. Read this entry for why the key was declared and objectui#8841's for why the
1431
+ declaration could not stand; the migration is to write `tree.labelField`.
1432
+
1433
+ **Migration.** None required. Hosts that already compose a `tree` block keep working;
1434
+ hosts that annotate one against `TreeViewConfig` start getting a compile error for a
1435
+ misspelled key instead of a view that silently ignores it.
1436
+
1437
+ ⛔ This does not make `tree` an authorable view type. objectui#5321 is untouched: the
1438
+ block is host config, written by a host and never by a document author, and the
1439
+ authored node remains the flat `ObjectTreeSchema`.
1440
+
1441
+ **Note, 2026-10-01 (objectui#11168 slice 3, shipping in this same release).**
1442
+ The last sentence above calls the authored node "the flat `ObjectTreeSchema`".
1443
+ `@objectstack/spec` 17.5.0 gave `object-tree` an element row whose `tree` block
1444
+ carries `parentField`, `labelField`, `fields` and `defaultExpandedDepth`, and
1445
+ `ObjectTreeSchema` now declares that block by reference, so an authored tree
1446
+ writes those keys under `tree` rather than flat on the node. The flat spellings
1447
+ `ObjectTreeSchema` still carries are the form a host composes. What this entry
1448
+ says about the host `tree` view config, `TreeViewConfig` and objectui#5321 is
1449
+ unchanged.
1450
+ - 5e96b45: `ObjectTree` derives expansion during render instead of mirroring it into state
1451
+ (objectui#8666).
1452
+
1453
+ **The rendering artifact this removes.** Expansion lived in a
1454
+ `useState<Set<string>>(new Set())` that a passive `useEffect` keyed on
1455
+ `[roots, defaultExpandedDepth]` re-seeded from the forest, with rows computed as
1456
+ `flattenVisible(roots, expanded)`. So the commit that first painted the table
1457
+ still carried the previous, empty mirror: the root drew, its children did not,
1458
+ and a second commit drew the seeded-open forest. Probed in the DOM the sequence
1459
+ was `loading` then a one-row table then a two-row table; it is now `loading` then
1460
+ the two-row table. Every mount with a non-zero `defaultExpandedDepth` showed a
1461
+ collapsed forest for one frame, and that frame is also why a test could observe a
1462
+ half-drawn tree at all.
1463
+
1464
+ **The behaviour change that comes with it, and it is the load-bearing half.**
1465
+ Component state now holds only the answers the *user* gave by clicking a chevron
1466
+ — a sparse map of node id to open/closed — and the seed is computed from the
1467
+ forest during render. They compose by one rule: a new forest may re-seed, but a
1468
+ node the user deliberately opened or closed, and which is still in the forest,
1469
+ keeps the user's answer; every other node, a genuinely new one included, takes
1470
+ the seed.
1471
+
1472
+ That is a fix in the same direction as the frame, not a side effect of it.
1473
+ Before this change a re-seed *overwrote* the user's expansion, so any change to
1474
+ the identity of the record set — a refetch, a filter, a host re-render that
1475
+ reallocated the rows — silently reopened every subtree the user had collapsed
1476
+ and reclosed every one they had opened below `defaultExpandedDepth`. Authored
1477
+ metadata is unaffected: `defaultExpandedDepth` means exactly what it meant, and
1478
+ no schema key changes.
1479
+ - bbe57fd: Import `ObjectTreeSchema` instead of re-deriving it (objectui#9550)
1480
+
1481
+ `ObjectTree` typed its node by narrowing the published union on the `object-tree`
1482
+ tag and binding that to a module-local alias. That spelling was correct and it was
1483
+ forced: the name it wanted was declared in `@object-ui/types` and re-exported by
1484
+ the `./zod` barrel, but the root barrel did not carry it, so there was nothing to
1485
+ import. objectui#9550 put the name on that barrel, and this package now imports it.
1486
+
1487
+ Nothing about the type changes — the imported name and the narrowing resolve to the
1488
+ same declaration, which `ObjectTree.schemaTyped-8655.test.ts` asserts invariantly and
1489
+ independently through `ObjectTreeProps['schema']`. What changes is that the renderer
1490
+ no longer carries a derived restatement of a published type. A type nobody can import
1491
+ mints one of those per consumer, and each one is correct on the day it is written —
1492
+ that is the second-authority shape objectui#6349 is burning down, and this was one of
1493
+ its instances rather than a tidy-up.
1494
+
1495
+ The docblock's justification paragraph went with it: it stated, as its measured reason
1496
+ for choosing the narrowing, that the barrel omits the name so it "cannot be imported
1497
+ today". That sentence is false as of objectui#9550 and nothing re-derived it. The
1498
+ objectui#8651 warning beside it is KEPT and re-pointed at the import: a module-local
1499
+ type wearing a published type's name is the two-layers-one-word trap, and it is more
1500
+ load-bearing now that the published name is importable, not less.
1501
+ - fb336df: Move `lucide-react` from `^1.31.0` to `^1.43.0` in every package that declares it, and
1502
+ repair what the jump breaks, so icons resolved from a STRING keep drawing a glyph.
1503
+
1504
+ Measured once against the installed 1.43.0 artifact when this change was made; nothing in
1505
+ the repository re-derives these readings. Across the jump lucide removes no runtime export,
1506
+ no public type name and no `lucide-react/dynamic.mjs` name, and every name this repository
1507
+ imports from `lucide-react` resolves. Exactly one key leaves the runtime `icons` record:
1508
+ `Trash2`, retired in favour of `trash`.
1509
+
1510
+ What a user sees change:
1511
+
1512
+ - Icons the lazy icon seam draws (`resolveIcon`, objectui#9251) get their path data again.
1513
+ lucide 1.43.0 icon modules export their path data inside `__iconData` and no longer
1514
+ export `__iconNode`; the seam now reads both. Reading only `__iconNode` against 1.43.0
1515
+ leaves every such glyph an empty box, with nothing thrown or logged.
1516
+ - `DetailView`'s delete action and three schema-catalog examples spell their icon
1517
+ `trash`, not `trash-2`, so they keep resolving. The glyph is unchanged: 1.43.0's `trash`
1518
+ path data is byte-identical to the `trash-2` path data of 1.31.0 and 1.35.0. Anything
1519
+ that already authored `trash` now draws that same artwork, because lucide moved it under
1520
+ the `trash` name; a few other glyphs were also redrawn upstream.
1521
+ - Icons imported as COMPONENTS carry lucide 1.43.0's own classes: one class per declared
1522
+ alias (a spinner renders `class="lucide lucide-loader-circle lucide-loader-2 ..."`), and
1523
+ no longer the class lucide used to derive from the PascalCase key where that differs
1524
+ (`ArrowDown01` no longer carries `lucide-arrow-down01`). The canonical
1525
+ `lucide-<icon name>` class is still there, so a `.lucide-loader-circle` selector still
1526
+ matches.
1527
+ - Icons resolved from a STRING through the seam keep the classes they had: `lucide`, the
1528
+ canonical `lucide-<icon name>` class and the key-derived class. They do not carry
1529
+ lucide's per-alias classes. That is a maintainer ruling (objectui#8941, option C): the
1530
+ alias list lives only inside each lazily loaded icon module, and it was not moved into
1531
+ the eager name list. A selector that targets an alias class matches a component-imported
1532
+ icon and not a string-resolved one. This also dates the example in the objectui#9251
1533
+ entry: `trash-2` no longer resolves as a string, so no seam-drawn glyph carries
1534
+ `lucide-trash2 lucide-trash-2`; a digit-bearing name that still resolves, such as
1535
+ `arrow-down-0-1`, carries `lucide-arrow-down01 lucide-arrow-down-0-1`.
1536
+ - Updated dependencies [cd2cb41]
1537
+ - Updated dependencies [7b10bef]
1538
+ - Updated dependencies [97abedc]
1539
+ - Updated dependencies [b46c58f]
1540
+ - Updated dependencies [a507334]
1541
+ - Updated dependencies [ad694ac]
1542
+ - Updated dependencies [6f96fca]
1543
+ - Updated dependencies [afb2284]
1544
+ - Updated dependencies [3ac2de8]
1545
+ - Updated dependencies [0aacecc]
1546
+ - Updated dependencies [28b0658]
1547
+ - Updated dependencies [63f4f92]
1548
+ - Updated dependencies [777fca2]
1549
+ - Updated dependencies [c131d9e]
1550
+ - Updated dependencies [5f00ff4]
1551
+ - Updated dependencies [c9e073a]
1552
+ - Updated dependencies [7b395d8]
1553
+ - Updated dependencies [0879812]
1554
+ - Updated dependencies [588380d]
1555
+ - Updated dependencies [8cedb0d]
1556
+ - Updated dependencies [162621b]
1557
+ - Updated dependencies [b06c3de]
1558
+ - Updated dependencies [0d379f5]
1559
+ - Updated dependencies [4c6f549]
1560
+ - Updated dependencies [6cc910b]
1561
+ - Updated dependencies [061f5e8]
1562
+ - Updated dependencies [879ecac]
1563
+ - Updated dependencies [c2dabf0]
1564
+ - Updated dependencies [2dd4d3f]
1565
+ - Updated dependencies [e686f4d]
1566
+ - Updated dependencies [4ab4f1b]
1567
+ - Updated dependencies [fa5fbd9]
1568
+ - Updated dependencies [5f44cc6]
1569
+ - Updated dependencies [b57107d]
1570
+ - Updated dependencies [e3ea4f9]
1571
+ - Updated dependencies [fd6f5da]
1572
+ - Updated dependencies [bb5d4ee]
1573
+ - Updated dependencies [dc666f7]
1574
+ - Updated dependencies [3335767]
1575
+ - Updated dependencies [8b1f066]
1576
+ - Updated dependencies [af243c1]
1577
+ - Updated dependencies [cff4b77]
1578
+ - Updated dependencies [961ceaa]
1579
+ - Updated dependencies [f3f4e4c]
1580
+ - Updated dependencies [a05c350]
1581
+ - Updated dependencies [1dbb993]
1582
+ - Updated dependencies [2b5f509]
1583
+ - Updated dependencies [808f339]
1584
+ - Updated dependencies [6cf5999]
1585
+ - Updated dependencies [274e14a]
1586
+ - Updated dependencies [8c10f4f]
1587
+ - Updated dependencies [90dac98]
1588
+ - Updated dependencies [6096f20]
1589
+ - Updated dependencies [544aca2]
1590
+ - Updated dependencies [ea02938]
1591
+ - Updated dependencies [a14fb23]
1592
+ - Updated dependencies [ae98f1d]
1593
+ - Updated dependencies [f98eddf]
1594
+ - Updated dependencies [ce6bd99]
1595
+ - Updated dependencies [a5b08c9]
1596
+ - Updated dependencies [86982ac]
1597
+ - Updated dependencies [cdefa2a]
1598
+ - Updated dependencies [cc4366d]
1599
+ - Updated dependencies [0961d5e]
1600
+ - Updated dependencies [6276478]
1601
+ - Updated dependencies [5e67837]
1602
+ - Updated dependencies [ff14e29]
1603
+ - Updated dependencies [9b28151]
1604
+ - Updated dependencies [64563a9]
1605
+ - Updated dependencies [1a5003f]
1606
+ - Updated dependencies [09ab32b]
1607
+ - Updated dependencies [8acc51b]
1608
+ - Updated dependencies [ea9d17f]
1609
+ - Updated dependencies [45362a3]
1610
+ - Updated dependencies [2a943bf]
1611
+ - Updated dependencies [d999617]
1612
+ - Updated dependencies [93a689d]
1613
+ - Updated dependencies [4357a27]
1614
+ - Updated dependencies [e5f4343]
1615
+ - Updated dependencies [3261e64]
1616
+ - Updated dependencies [f5178a2]
1617
+ - Updated dependencies [2ad3671]
1618
+ - Updated dependencies [8740e86]
1619
+ - Updated dependencies [d22b37b]
1620
+ - Updated dependencies [9cbe4db]
1621
+ - Updated dependencies [1daf477]
1622
+ - Updated dependencies [3d614ea]
1623
+ - Updated dependencies [6c2f3c5]
1624
+ - Updated dependencies [fb13e85]
1625
+ - Updated dependencies [c2d8659]
1626
+ - Updated dependencies [e0f8202]
1627
+ - Updated dependencies [ac2d6f1]
1628
+ - Updated dependencies [9fbbb17]
1629
+ - Updated dependencies [c3a26cc]
1630
+ - Updated dependencies [a66e58e]
1631
+ - Updated dependencies [d89492c]
1632
+ - Updated dependencies [9a5f998]
1633
+ - Updated dependencies [9327397]
1634
+ - Updated dependencies [17cc3a3]
1635
+ - Updated dependencies [02e6d36]
1636
+ - Updated dependencies [4758b33]
1637
+ - Updated dependencies [4758b33]
1638
+ - Updated dependencies [8848ce4]
1639
+ - Updated dependencies [f905090]
1640
+ - Updated dependencies [9c78ebe]
1641
+ - Updated dependencies [9c78ebe]
1642
+ - Updated dependencies [12809a5]
1643
+ - Updated dependencies [9c78ebe]
1644
+ - Updated dependencies [12809a5]
1645
+ - Updated dependencies [7afc81d]
1646
+ - Updated dependencies [f9c06ef]
1647
+ - Updated dependencies [93a5585]
1648
+ - Updated dependencies [5ad3b88]
1649
+ - Updated dependencies [21eb61a]
1650
+ - Updated dependencies [f9d772b]
1651
+ - Updated dependencies [97b6c21]
1652
+ - Updated dependencies [26ca2ad]
1653
+ - Updated dependencies [41ae65b]
1654
+ - Updated dependencies [184cfe1]
1655
+ - Updated dependencies [baac95a]
1656
+ - Updated dependencies [13220af]
1657
+ - Updated dependencies [29b45f6]
1658
+ - Updated dependencies [39b8d51]
1659
+ - Updated dependencies [17b323e]
1660
+ - Updated dependencies [b956e69]
1661
+ - Updated dependencies [33e58d8]
1662
+ - Updated dependencies [256b4c9]
1663
+ - Updated dependencies [c5ec15c]
1664
+ - Updated dependencies [fec3b1a]
1665
+ - Updated dependencies [b8e0941]
1666
+ - Updated dependencies [0c50f18]
1667
+ - Updated dependencies [285e36b]
1668
+ - Updated dependencies [1dae95a]
1669
+ - Updated dependencies [e32dae1]
1670
+ - Updated dependencies [30b11ad]
1671
+ - Updated dependencies [4aebea0]
1672
+ - Updated dependencies [f976774]
1673
+ - Updated dependencies [3d6badf]
1674
+ - Updated dependencies [25cb364]
1675
+ - Updated dependencies [a60539b]
1676
+ - Updated dependencies [de1b879]
1677
+ - Updated dependencies [c6678b1]
1678
+ - Updated dependencies [0638322]
1679
+ - Updated dependencies [e3782d2]
1680
+ - Updated dependencies [db0beb2]
1681
+ - Updated dependencies [997ce38]
1682
+ - Updated dependencies [ae0b9d3]
1683
+ - Updated dependencies [ad1785c]
1684
+ - Updated dependencies [3b469c8]
1685
+ - Updated dependencies [990a2d6]
1686
+ - Updated dependencies [37140f4]
1687
+ - Updated dependencies [1c84036]
1688
+ - Updated dependencies [1c84036]
1689
+ - Updated dependencies [6650259]
1690
+ - Updated dependencies [4f8b7f8]
1691
+ - Updated dependencies [9e6619f]
1692
+ - Updated dependencies [f6ae5e2]
1693
+ - Updated dependencies [eb97ce6]
1694
+ - Updated dependencies [7343376]
1695
+ - Updated dependencies [b2683a2]
1696
+ - Updated dependencies [dded788]
1697
+ - Updated dependencies [b45d463]
1698
+ - Updated dependencies [54a7830]
1699
+ - Updated dependencies [f3135a4]
1700
+ - Updated dependencies [b5696d3]
1701
+ - Updated dependencies [3f9d926]
1702
+ - Updated dependencies [e978ed5]
1703
+ - Updated dependencies [6a7f24e]
1704
+ - Updated dependencies [b3c96d6]
1705
+ - Updated dependencies [8d0ca91]
1706
+ - Updated dependencies [c30c8dd]
1707
+ - Updated dependencies [244d516]
1708
+ - Updated dependencies [deca847]
1709
+ - Updated dependencies [ac15833]
1710
+ - Updated dependencies [ac15833]
1711
+ - Updated dependencies [e2dffc9]
1712
+ - Updated dependencies [328abeb]
1713
+ - Updated dependencies [dd0d78f]
1714
+ - Updated dependencies [24d3e65]
1715
+ - Updated dependencies [95a7c8d]
1716
+ - Updated dependencies [e227156]
1717
+ - Updated dependencies [cc4e476]
1718
+ - Updated dependencies [92970c4]
1719
+ - Updated dependencies [d570eaa]
1720
+ - Updated dependencies [4b742f4]
1721
+ - Updated dependencies [42687ba]
1722
+ - Updated dependencies [6cd8f66]
1723
+ - Updated dependencies [24a0f14]
1724
+ - Updated dependencies [797a30f]
1725
+ - Updated dependencies [27ae632]
1726
+ - Updated dependencies [b4075c0]
1727
+ - Updated dependencies [9b85600]
1728
+ - Updated dependencies [e327c89]
1729
+ - Updated dependencies [2eaf5be]
1730
+ - Updated dependencies [bf7ab35]
1731
+ - Updated dependencies [99878d8]
1732
+ - Updated dependencies [3c13675]
1733
+ - Updated dependencies [63ab761]
1734
+ - Updated dependencies [0eb9f36]
1735
+ - Updated dependencies [ae582b7]
1736
+ - Updated dependencies [62d6f56]
1737
+ - Updated dependencies [51c2949]
1738
+ - Updated dependencies [a4b017e]
1739
+ - Updated dependencies [8732846]
1740
+ - Updated dependencies [559a2e2]
1741
+ - Updated dependencies [db11afd]
1742
+ - Updated dependencies [154075a]
1743
+ - Updated dependencies [582edef]
1744
+ - Updated dependencies [19f484f]
1745
+ - Updated dependencies [0a78a20]
1746
+ - Updated dependencies [615346d]
1747
+ - Updated dependencies [75dcc81]
1748
+ - Updated dependencies [55a12a8]
1749
+ - Updated dependencies [edfcf5a]
1750
+ - Updated dependencies [0a3e540]
1751
+ - Updated dependencies [c021b35]
1752
+ - Updated dependencies [f61dab1]
1753
+ - Updated dependencies [b0a05dd]
1754
+ - Updated dependencies [dd5ff19]
1755
+ - Updated dependencies [54997ff]
1756
+ - Updated dependencies [81f8498]
1757
+ - Updated dependencies [a782fa7]
1758
+ - Updated dependencies [1d6a23d]
1759
+ - Updated dependencies [0645133]
1760
+ - Updated dependencies [76e9df0]
1761
+ - Updated dependencies [0ecaa7d]
1762
+ - Updated dependencies [b24f93a]
1763
+ - Updated dependencies [6158e4c]
1764
+ - Updated dependencies [cff8641]
1765
+ - Updated dependencies [3f61eef]
1766
+ - Updated dependencies [c27b575]
1767
+ - Updated dependencies [84b275c]
1768
+ - Updated dependencies [0e6e76b]
1769
+ - Updated dependencies [bf43afa]
1770
+ - Updated dependencies [385ebc5]
1771
+ - Updated dependencies [858eafb]
1772
+ - Updated dependencies [a8c5509]
1773
+ - Updated dependencies [c2a8d23]
1774
+ - Updated dependencies [f4ed238]
1775
+ - Updated dependencies [0ffc423]
1776
+ - Updated dependencies [3cc4fe5]
1777
+ - Updated dependencies [cd5b19a]
1778
+ - Updated dependencies [cd5b19a]
1779
+ - Updated dependencies [17dc167]
1780
+ - Updated dependencies [20d23be]
1781
+ - Updated dependencies [20d23be]
1782
+ - Updated dependencies [2e3da72]
1783
+ - Updated dependencies [1263e40]
1784
+ - Updated dependencies [e6bc087]
1785
+ - Updated dependencies [9419df1]
1786
+ - Updated dependencies [8bab157]
1787
+ - Updated dependencies [a7557a7]
1788
+ - Updated dependencies [7d074ba]
1789
+ - Updated dependencies [6158e4c]
1790
+ - Updated dependencies [6158e4c]
1791
+ - Updated dependencies [52aad5c]
1792
+ - Updated dependencies [18d1a0a]
1793
+ - Updated dependencies [e420df3]
1794
+ - Updated dependencies [7fed09d]
1795
+ - Updated dependencies [58da8ae]
1796
+ - Updated dependencies [a8b9889]
1797
+ - Updated dependencies [138ad45]
1798
+ - Updated dependencies [138ad45]
1799
+ - Updated dependencies [5262f7d]
1800
+ - Updated dependencies [6aa029b]
1801
+ - Updated dependencies [2124d04]
1802
+ - Updated dependencies [be52115]
1803
+ - Updated dependencies [770cc5b]
1804
+ - Updated dependencies [1a88ce2]
1805
+ - Updated dependencies [a1a44d6]
1806
+ - Updated dependencies [e0a9c67]
1807
+ - Updated dependencies [5638529]
1808
+ - Updated dependencies [5638529]
1809
+ - Updated dependencies [d0fba91]
1810
+ - Updated dependencies [c476be0]
1811
+ - Updated dependencies [c82ff39]
1812
+ - Updated dependencies [6c3da53]
1813
+ - Updated dependencies [31987bd]
1814
+ - Updated dependencies [3c3ce15]
1815
+ - Updated dependencies [063119f]
1816
+ - Updated dependencies [e100589]
1817
+ - Updated dependencies [304f611]
1818
+ - Updated dependencies [e46ee77]
1819
+ - Updated dependencies [f9c8c4e]
1820
+ - Updated dependencies [6e9c8d2]
1821
+ - Updated dependencies [9547063]
1822
+ - Updated dependencies [3f6efd6]
1823
+ - Updated dependencies [55d18c6]
1824
+ - Updated dependencies [c4ab6d0]
1825
+ - Updated dependencies [0e9058b]
1826
+ - Updated dependencies [c4ab6d0]
1827
+ - Updated dependencies [5988b6b]
1828
+ - Updated dependencies [6158e4c]
1829
+ - Updated dependencies [00ccdf7]
1830
+ - Updated dependencies [9d9ed54]
1831
+ - Updated dependencies [4a1adb7]
1832
+ - Updated dependencies [4a1adb7]
1833
+ - Updated dependencies [4a1adb7]
1834
+ - Updated dependencies [50c73fe]
1835
+ - Updated dependencies [ca3de72]
1836
+ - Updated dependencies [83e3f83]
1837
+ - Updated dependencies [401611b]
1838
+ - Updated dependencies [2c0ddf2]
1839
+ - Updated dependencies [4abc0aa]
1840
+ - Updated dependencies [f560ded]
1841
+ - Updated dependencies [f560ded]
1842
+ - Updated dependencies [2b188fa]
1843
+ - Updated dependencies [b654d4e]
1844
+ - Updated dependencies [f68e0a0]
1845
+ - Updated dependencies [aea682a]
1846
+ - Updated dependencies [fcdc8ec]
1847
+ - Updated dependencies [2d576e4]
1848
+ - Updated dependencies [8366acc]
1849
+ - Updated dependencies [95e58a3]
1850
+ - Updated dependencies [9d7419b]
1851
+ - Updated dependencies [fc7db05]
1852
+ - Updated dependencies [fc7db05]
1853
+ - Updated dependencies [9ed8d0f]
1854
+ - Updated dependencies [c73cdb5]
1855
+ - Updated dependencies [6f5719e]
1856
+ - Updated dependencies [b34cc14]
1857
+ - Updated dependencies [ab18797]
1858
+ - Updated dependencies [d0097af]
1859
+ - Updated dependencies [432882b]
1860
+ - Updated dependencies [64dae8e]
1861
+ - Updated dependencies [b06e374]
1862
+ - Updated dependencies [06a8af5]
1863
+ - Updated dependencies [6a91586]
1864
+ - Updated dependencies [a04d7c6]
1865
+ - Updated dependencies [5ccc500]
1866
+ - Updated dependencies [f3c2bb0]
1867
+ - Updated dependencies [978507b]
1868
+ - Updated dependencies [778138e]
1869
+ - Updated dependencies [9801765]
1870
+ - Updated dependencies [9cebfca]
1871
+ - Updated dependencies [460575f]
1872
+ - Updated dependencies [d796c8d]
1873
+ - Updated dependencies [594704f]
1874
+ - Updated dependencies [d3995fe]
1875
+ - Updated dependencies [1b1d772]
1876
+ - Updated dependencies [d88e20f]
1877
+ - Updated dependencies [f66072d]
1878
+ - Updated dependencies [2d7304d]
1879
+ - Updated dependencies [636b236]
1880
+ - Updated dependencies [4172589]
1881
+ - Updated dependencies [d6d8fb9]
1882
+ - Updated dependencies [64d624d]
1883
+ - Updated dependencies [053fdc8]
1884
+ - Updated dependencies [41b7ce3]
1885
+ - Updated dependencies [ae476b8]
1886
+ - Updated dependencies [39f4309]
1887
+ - Updated dependencies [95bad12]
1888
+ - Updated dependencies [d2fb6ef]
1889
+ - Updated dependencies [7cd3987]
1890
+ - Updated dependencies [ee3b878]
1891
+ - Updated dependencies [e304a4e]
1892
+ - Updated dependencies [fda49e5]
1893
+ - Updated dependencies [490d9a9]
1894
+ - Updated dependencies [1117414]
1895
+ - Updated dependencies [6d63cd0]
1896
+ - Updated dependencies [fc62bb4]
1897
+ - Updated dependencies [41df893]
1898
+ - Updated dependencies [0cba1b7]
1899
+ - Updated dependencies [7c96c94]
1900
+ - Updated dependencies [4da5109]
1901
+ - Updated dependencies [00f3eb5]
1902
+ - Updated dependencies [1ec291c]
1903
+ - Updated dependencies [453dbaa]
1904
+ - Updated dependencies [95f8704]
1905
+ - Updated dependencies [f8cdbf2]
1906
+ - Updated dependencies [69a2163]
1907
+ - Updated dependencies [24e027e]
1908
+ - Updated dependencies [2c3cd1b]
1909
+ - Updated dependencies [e176053]
1910
+ - Updated dependencies [e30ed15]
1911
+ - Updated dependencies [90665e0]
1912
+ - Updated dependencies [8d3a529]
1913
+ - Updated dependencies [5ac2e2c]
1914
+ - Updated dependencies [194fae1]
1915
+ - Updated dependencies [63d54dd]
1916
+ - Updated dependencies [7e19d03]
1917
+ - Updated dependencies [b08b7eb]
1918
+ - Updated dependencies [1e946c9]
1919
+ - Updated dependencies [546ddf7]
1920
+ - Updated dependencies [864154e]
1921
+ - Updated dependencies [b023625]
1922
+ - Updated dependencies [75bd83d]
1923
+ - Updated dependencies [44d075b]
1924
+ - Updated dependencies [40c479a]
1925
+ - Updated dependencies [b4393e5]
1926
+ - Updated dependencies [971d387]
1927
+ - Updated dependencies [ee851c3]
1928
+ - Updated dependencies [6414dfd]
1929
+ - Updated dependencies [a8d5c71]
1930
+ - Updated dependencies [905b21f]
1931
+ - Updated dependencies [88e9109]
1932
+ - Updated dependencies [2c45966]
1933
+ - Updated dependencies [db3a600]
1934
+ - Updated dependencies [3a3db76]
1935
+ - Updated dependencies [0d723a3]
1936
+ - Updated dependencies [0c95d3d]
1937
+ - Updated dependencies [3e4fa2c]
1938
+ - Updated dependencies [b5b928a]
1939
+ - Updated dependencies [6fd2cf7]
1940
+ - Updated dependencies [5fa06c4]
1941
+ - Updated dependencies [52a43de]
1942
+ - Updated dependencies [195052f]
1943
+ - Updated dependencies [e4559d1]
1944
+ - Updated dependencies [2c71482]
1945
+ - Updated dependencies [129bcc5]
1946
+ - Updated dependencies [d3005f7]
1947
+ - Updated dependencies [1e7fe0a]
1948
+ - Updated dependencies [a26b9e4]
1949
+ - Updated dependencies [5ef9c4f]
1950
+ - Updated dependencies [46f0bb4]
1951
+ - Updated dependencies [06b82b8]
1952
+ - Updated dependencies [8ec11e1]
1953
+ - Updated dependencies [6f81384]
1954
+ - Updated dependencies [22ba927]
1955
+ - Updated dependencies [f8c70f4]
1956
+ - Updated dependencies [5d3a2d1]
1957
+ - Updated dependencies [8f1d995]
1958
+ - Updated dependencies [b362c1b]
1959
+ - Updated dependencies [f9c34df]
1960
+ - Updated dependencies [dddb942]
1961
+ - Updated dependencies [00c665e]
1962
+ - Updated dependencies [29754cf]
1963
+ - Updated dependencies [d7de534]
1964
+ - Updated dependencies [3c2b6f7]
1965
+ - Updated dependencies [6e88630]
1966
+ - Updated dependencies [b84dc18]
1967
+ - Updated dependencies [ac8abb0]
1968
+ - Updated dependencies [9d86e1d]
1969
+ - Updated dependencies [3a5817f]
1970
+ - Updated dependencies [99a3c2d]
1971
+ - Updated dependencies [5961030]
1972
+ - Updated dependencies [f24de8b]
1973
+ - Updated dependencies [c8ea8af]
1974
+ - Updated dependencies [9602dc8]
1975
+ - Updated dependencies [3777538]
1976
+ - Updated dependencies [3190414]
1977
+ - Updated dependencies [4e480f5]
1978
+ - Updated dependencies [38a123c]
1979
+ - Updated dependencies [299102e]
1980
+ - Updated dependencies [30c73cd]
1981
+ - Updated dependencies [830ed58]
1982
+ - Updated dependencies [d7acad6]
1983
+ - Updated dependencies [45a9aeb]
1984
+ - Updated dependencies [713db46]
1985
+ - Updated dependencies [c71e14d]
1986
+ - Updated dependencies [bf3a03c]
1987
+ - Updated dependencies [cb55718]
1988
+ - Updated dependencies [748494b]
1989
+ - Updated dependencies [5967be0]
1990
+ - Updated dependencies [831be72]
1991
+ - Updated dependencies [29cb85b]
1992
+ - Updated dependencies [3e028c8]
1993
+ - Updated dependencies [d0889e2]
1994
+ - Updated dependencies [ce503e5]
1995
+ - Updated dependencies [f20dcf0]
1996
+ - Updated dependencies [12402a9]
1997
+ - Updated dependencies [aff3d7a]
1998
+ - Updated dependencies [4ca30d0]
1999
+ - Updated dependencies [7a5da14]
2000
+ - Updated dependencies [fff9645]
2001
+ - Updated dependencies [9c3b7ce]
2002
+ - Updated dependencies [2c1c967]
2003
+ - Updated dependencies [9486ac6]
2004
+ - Updated dependencies [9486ac6]
2005
+ - Updated dependencies [4d5f9b4]
2006
+ - Updated dependencies [d6ceb8d]
2007
+ - Updated dependencies [dc4365c]
2008
+ - Updated dependencies [e321d52]
2009
+ - Updated dependencies [969ba84]
2010
+ - Updated dependencies [4c68077]
2011
+ - Updated dependencies [7977ff9]
2012
+ - Updated dependencies [3beef6d]
2013
+ - Updated dependencies [06b8c42]
2014
+ - Updated dependencies [46b9bc9]
2015
+ - Updated dependencies [45ac2cb]
2016
+ - Updated dependencies [b97790a]
2017
+ - Updated dependencies [dbd5194]
2018
+ - Updated dependencies [7c9b044]
2019
+ - Updated dependencies [d47de51]
2020
+ - Updated dependencies [3fe6463]
2021
+ - Updated dependencies [b392674]
2022
+ - Updated dependencies [4f3a1e2]
2023
+ - Updated dependencies [31ab372]
2024
+ - Updated dependencies [846889b]
2025
+ - Updated dependencies [2acd8e1]
2026
+ - Updated dependencies [26896c6]
2027
+ - Updated dependencies [a439e16]
2028
+ - Updated dependencies [67fc3b0]
2029
+ - Updated dependencies [33a3b3c]
2030
+ - Updated dependencies [b87f15b]
2031
+ - Updated dependencies [9409eb9]
2032
+ - Updated dependencies [045d20b]
2033
+ - Updated dependencies [a2d2515]
2034
+ - Updated dependencies [c18d099]
2035
+ - Updated dependencies [adb2a86]
2036
+ - Updated dependencies [03380aa]
2037
+ - Updated dependencies [4562ea5]
2038
+ - Updated dependencies [3619792]
2039
+ - Updated dependencies [3561bd2]
2040
+ - Updated dependencies [bf97b98]
2041
+ - Updated dependencies [320374d]
2042
+ - Updated dependencies [b0d308d]
2043
+ - Updated dependencies [40f34b4]
2044
+ - Updated dependencies [bd0376d]
2045
+ - Updated dependencies [8063bcb]
2046
+ - Updated dependencies [b74a859]
2047
+ - Updated dependencies [d4493fd]
2048
+ - Updated dependencies [240b80f]
2049
+ - Updated dependencies [77cb489]
2050
+ - Updated dependencies [bfaa158]
2051
+ - Updated dependencies [777e5c6]
2052
+ - Updated dependencies [0c386dd]
2053
+ - Updated dependencies [9e37d9b]
2054
+ - Updated dependencies [5ad86dd]
2055
+ - Updated dependencies [16a725f]
2056
+ - Updated dependencies [c4326fe]
2057
+ - Updated dependencies [4dfdcc3]
2058
+ - Updated dependencies [6a449fc]
2059
+ - Updated dependencies [446d93d]
2060
+ - Updated dependencies [ecd9cb2]
2061
+ - Updated dependencies [98d4108]
2062
+ - Updated dependencies [0e3b3be]
2063
+ - Updated dependencies [a29ae2d]
2064
+ - Updated dependencies [220c18d]
2065
+ - Updated dependencies [eeb6c2f]
2066
+ - Updated dependencies [00d3f09]
2067
+ - Updated dependencies [4388f71]
2068
+ - Updated dependencies [0b1ac58]
2069
+ - Updated dependencies [c93b4d5]
2070
+ - Updated dependencies [c1fe272]
2071
+ - Updated dependencies [3cab570]
2072
+ - Updated dependencies [8ad218d]
2073
+ - Updated dependencies [3e41187]
2074
+ - Updated dependencies [5f78953]
2075
+ - Updated dependencies [639114c]
2076
+ - Updated dependencies [639114c]
2077
+ - Updated dependencies [1490691]
2078
+ - Updated dependencies [1f31d3a]
2079
+ - Updated dependencies [d1842ab]
2080
+ - Updated dependencies [854cba3]
2081
+ - Updated dependencies [78ca238]
2082
+ - Updated dependencies [d8ec8d6]
2083
+ - Updated dependencies [351eb31]
2084
+ - Updated dependencies [866cd1d]
2085
+ - Updated dependencies [20c04b2]
2086
+ - Updated dependencies [01c9023]
2087
+ - Updated dependencies [48c19bd]
2088
+ - Updated dependencies [a6d8b8d]
2089
+ - Updated dependencies [4b5bb95]
2090
+ - Updated dependencies [b652514]
2091
+ - Updated dependencies [adbda1b]
2092
+ - Updated dependencies [adbda1b]
2093
+ - Updated dependencies [8952395]
2094
+ - Updated dependencies [e2b3826]
2095
+ - Updated dependencies [a338037]
2096
+ - Updated dependencies [0348bc9]
2097
+ - Updated dependencies [e8c553b]
2098
+ - Updated dependencies [2e32ed4]
2099
+ - Updated dependencies [3ed3eec]
2100
+ - Updated dependencies [7c3df8f]
2101
+ - Updated dependencies [a4514e8]
2102
+ - Updated dependencies [6411def]
2103
+ - Updated dependencies [db3896c]
2104
+ - Updated dependencies [b9f5ff1]
2105
+ - Updated dependencies [e75f4c9]
2106
+ - Updated dependencies [19f1639]
2107
+ - Updated dependencies [4704aa4]
2108
+ - Updated dependencies [47547d0]
2109
+ - Updated dependencies [1bee5d0]
2110
+ - Updated dependencies [63a8828]
2111
+ - Updated dependencies [b61d7d8]
2112
+ - Updated dependencies [858cd72]
2113
+ - Updated dependencies [cfc9b6d]
2114
+ - Updated dependencies [dc0a60b]
2115
+ - Updated dependencies [554f2b6]
2116
+ - Updated dependencies [72f55c9]
2117
+ - Updated dependencies [26e06d7]
2118
+ - Updated dependencies [669d71b]
2119
+ - Updated dependencies [ed27d7c]
2120
+ - Updated dependencies [52c8cf7]
2121
+ - Updated dependencies [2ceb43a]
2122
+ - Updated dependencies [7cdd2b9]
2123
+ - Updated dependencies [52c8cf7]
2124
+ - Updated dependencies [3399704]
2125
+ - Updated dependencies [02fe257]
2126
+ - Updated dependencies [71a4a53]
2127
+ - Updated dependencies [7bf244b]
2128
+ - Updated dependencies [f0bb9fa]
2129
+ - Updated dependencies [81a2eb1]
2130
+ - Updated dependencies [caa0cd3]
2131
+ - Updated dependencies [caa0cd3]
2132
+ - Updated dependencies [20cb8db]
2133
+ - Updated dependencies [25c7d58]
2134
+ - Updated dependencies [00d2fa6]
2135
+ - Updated dependencies [77b2a18]
2136
+ - Updated dependencies [c6198c2]
2137
+ - Updated dependencies [721d1e0]
2138
+ - Updated dependencies [c2f0f48]
2139
+ - Updated dependencies [1237ae4]
2140
+ - Updated dependencies [2f61238]
2141
+ - Updated dependencies [51eb515]
2142
+ - Updated dependencies [c354ce5]
2143
+ - Updated dependencies [8fe8e5c]
2144
+ - Updated dependencies [feac439]
2145
+ - Updated dependencies [9ae871d]
2146
+ - Updated dependencies [efbd566]
2147
+ - Updated dependencies [2a5bf45]
2148
+ - Updated dependencies [9587fc9]
2149
+ - Updated dependencies [e62c44e]
2150
+ - Updated dependencies [daf9d57]
2151
+ - Updated dependencies [fe8f451]
2152
+ - Updated dependencies [23b9958]
2153
+ - Updated dependencies [c15d7ec]
2154
+ - Updated dependencies [5d0876c]
2155
+ - Updated dependencies [f7ace0a]
2156
+ - Updated dependencies [b041b9c]
2157
+ - Updated dependencies [ce2aaef]
2158
+ - Updated dependencies [544ecba]
2159
+ - Updated dependencies [2ce2612]
2160
+ - Updated dependencies [bc640ec]
2161
+ - Updated dependencies [1e215c4]
2162
+ - Updated dependencies [da6e191]
2163
+ - Updated dependencies [3e377c9]
2164
+ - Updated dependencies [a3eb5d0]
2165
+ - Updated dependencies [4ce14f1]
2166
+ - Updated dependencies [aef97e5]
2167
+ - Updated dependencies [2af1fa7]
2168
+ - Updated dependencies [c14d3a0]
2169
+ - Updated dependencies [a137d0c]
2170
+ - Updated dependencies [caf477f]
2171
+ - Updated dependencies [f6375da]
2172
+ - Updated dependencies [967e5d8]
2173
+ - Updated dependencies [c907a9c]
2174
+ - Updated dependencies [a4611b3]
2175
+ - Updated dependencies [20316ba]
2176
+ - Updated dependencies [d3499b3]
2177
+ - Updated dependencies [91f9276]
2178
+ - Updated dependencies [309c75e]
2179
+ - Updated dependencies [c9f9bae]
2180
+ - Updated dependencies [18897a4]
2181
+ - Updated dependencies [8b7ea39]
2182
+ - Updated dependencies [a915064]
2183
+ - Updated dependencies [dcbf0b2]
2184
+ - Updated dependencies [52cac38]
2185
+ - Updated dependencies [93fea2e]
2186
+ - Updated dependencies [1422a92]
2187
+ - Updated dependencies [d05fe17]
2188
+ - Updated dependencies [a480f79]
2189
+ - Updated dependencies [f08d1a8]
2190
+ - Updated dependencies [64a252d]
2191
+ - Updated dependencies [786bc91]
2192
+ - Updated dependencies [75fca96]
2193
+ - Updated dependencies [7ca6ddd]
2194
+ - Updated dependencies [f1cd290]
2195
+ - Updated dependencies [5a41ce7]
2196
+ - Updated dependencies [8d50bc2]
2197
+ - Updated dependencies [604476d]
2198
+ - Updated dependencies [d1bebb0]
2199
+ - Updated dependencies [95bf128]
2200
+ - Updated dependencies [335abea]
2201
+ - Updated dependencies [edea22a]
2202
+ - Updated dependencies [0f5cadf]
2203
+ - Updated dependencies [4f9f1ee]
2204
+ - Updated dependencies [66e8b2a]
2205
+ - Updated dependencies [aa083cd]
2206
+ - Updated dependencies [12b5992]
2207
+ - Updated dependencies [b93e245]
2208
+ - Updated dependencies [c842594]
2209
+ - Updated dependencies [290de37]
2210
+ - Updated dependencies [e1c27e4]
2211
+ - Updated dependencies [8c8da45]
2212
+ - Updated dependencies [8cd8eb5]
2213
+ - Updated dependencies [cf1d29e]
2214
+ - Updated dependencies [1bd79c8]
2215
+ - Updated dependencies [af9e957]
2216
+ - Updated dependencies [b1030c7]
2217
+ - Updated dependencies [c974edf]
2218
+ - Updated dependencies [592402e]
2219
+ - Updated dependencies [ad852b6]
2220
+ - Updated dependencies [6778809]
2221
+ - Updated dependencies [7fb22a1]
2222
+ - Updated dependencies [ad66d79]
2223
+ - Updated dependencies [0758bd8]
2224
+ - Updated dependencies [ee4d19f]
2225
+ - Updated dependencies [37149ec]
2226
+ - Updated dependencies [496d31d]
2227
+ - Updated dependencies [0ea7054]
2228
+ - Updated dependencies [9a853f2]
2229
+ - Updated dependencies [cb847fd]
2230
+ - Updated dependencies [ee70287]
2231
+ - Updated dependencies [3e98e13]
2232
+ - Updated dependencies [a695f50]
2233
+ - Updated dependencies [fc32921]
2234
+ - Updated dependencies [4eaa835]
2235
+ - Updated dependencies [8f9d87a]
2236
+ - Updated dependencies [b1777ae]
2237
+ - Updated dependencies [24845c4]
2238
+ - Updated dependencies [6f864cf]
2239
+ - Updated dependencies [24d1edd]
2240
+ - Updated dependencies [645087c]
2241
+ - Updated dependencies [33f4a19]
2242
+ - Updated dependencies [6e9a3d4]
2243
+ - Updated dependencies [4a292d2]
2244
+ - Updated dependencies [5323168]
2245
+ - Updated dependencies [841dd2b]
2246
+ - Updated dependencies [3014fc0]
2247
+ - Updated dependencies [dacb402]
2248
+ - Updated dependencies [846cec0]
2249
+ - Updated dependencies [91facae]
2250
+ - Updated dependencies [b38014e]
2251
+ - Updated dependencies [e2feb13]
2252
+ - Updated dependencies [474797d]
2253
+ - Updated dependencies [704e695]
2254
+ - Updated dependencies [9dcc545]
2255
+ - Updated dependencies [d7fecfb]
2256
+ - Updated dependencies [c13d39e]
2257
+ - Updated dependencies [a407bd6]
2258
+ - Updated dependencies [317dbce]
2259
+ - Updated dependencies [309728c]
2260
+ - Updated dependencies [e6ec217]
2261
+ - Updated dependencies [aa08d7e]
2262
+ - Updated dependencies [3a43a15]
2263
+ - Updated dependencies [868e825]
2264
+ - Updated dependencies [f76f436]
2265
+ - Updated dependencies [ce45a03]
2266
+ - Updated dependencies [7cf6f38]
2267
+ - Updated dependencies [fd9c50a]
2268
+ - Updated dependencies [421544b]
2269
+ - Updated dependencies [5cc8c28]
2270
+ - Updated dependencies [fb01022]
2271
+ - Updated dependencies [e9d9212]
2272
+ - Updated dependencies [ecfb693]
2273
+ - Updated dependencies [40a7c53]
2274
+ - Updated dependencies [abc1b18]
2275
+ - Updated dependencies [81a51db]
2276
+ - Updated dependencies [67749c7]
2277
+ - Updated dependencies [507b61b]
2278
+ - Updated dependencies [512c84b]
2279
+ - Updated dependencies [c300267]
2280
+ - Updated dependencies [fb3a101]
2281
+ - Updated dependencies [d4733f2]
2282
+ - Updated dependencies [7c9145f]
2283
+ - Updated dependencies [1570eac]
2284
+ - Updated dependencies [f391ede]
2285
+ - Updated dependencies [f5cfbbd]
2286
+ - Updated dependencies [f5cfbbd]
2287
+ - Updated dependencies [8b532cb]
2288
+ - Updated dependencies [64c3cdd]
2289
+ - Updated dependencies [4d65991]
2290
+ - Updated dependencies [c42554e]
2291
+ - Updated dependencies [555b4ec]
2292
+ - Updated dependencies [1ccfc23]
2293
+ - Updated dependencies [542718f]
2294
+ - Updated dependencies [7f27bc5]
2295
+ - Updated dependencies [0a174f3]
2296
+ - Updated dependencies [cc00c59]
2297
+ - Updated dependencies [676f677]
2298
+ - Updated dependencies [f95b140]
2299
+ - Updated dependencies [541ce4e]
2300
+ - Updated dependencies [6479086]
2301
+ - Updated dependencies [d79f525]
2302
+ - Updated dependencies [d1865d2]
2303
+ - Updated dependencies [ab77513]
2304
+ - Updated dependencies [55ba3ff]
2305
+ - Updated dependencies [0b138da]
2306
+ - Updated dependencies [f1190b0]
2307
+ - Updated dependencies [561abef]
2308
+ - Updated dependencies [ef52001]
2309
+ - Updated dependencies [6a4680b]
2310
+ - Updated dependencies [c3a4273]
2311
+ - Updated dependencies [abf710d]
2312
+ - Updated dependencies [093af32]
2313
+ - Updated dependencies [6df26f0]
2314
+ - Updated dependencies [1bd1be7]
2315
+ - Updated dependencies [d234fa9]
2316
+ - Updated dependencies [adf5812]
2317
+ - Updated dependencies [e36acd4]
2318
+ - Updated dependencies [5058336]
2319
+ - Updated dependencies [2f6b2bf]
2320
+ - Updated dependencies [2028b31]
2321
+ - Updated dependencies [16a1a51]
2322
+ - Updated dependencies [63601ab]
2323
+ - Updated dependencies [c372b29]
2324
+ - Updated dependencies [152f0a7]
2325
+ - Updated dependencies [8693b85]
2326
+ - Updated dependencies [e82dad1]
2327
+ - Updated dependencies [58b7b3d]
2328
+ - Updated dependencies [e77a003]
2329
+ - Updated dependencies [84defab]
2330
+ - Updated dependencies [681d3f1]
2331
+ - Updated dependencies [969d4f2]
2332
+ - Updated dependencies [88561fd]
2333
+ - Updated dependencies [f3bc481]
2334
+ - Updated dependencies [b79aac2]
2335
+ - Updated dependencies [93fc0e7]
2336
+ - Updated dependencies [0601af1]
2337
+ - Updated dependencies [a4b723f]
2338
+ - Updated dependencies [2b10ca0]
2339
+ - Updated dependencies [7db4a81]
2340
+ - Updated dependencies [19a0b0e]
2341
+ - Updated dependencies [526fc11]
2342
+ - Updated dependencies [f8e3e9a]
2343
+ - Updated dependencies [b9d47ec]
2344
+ - Updated dependencies [3b6bc69]
2345
+ - Updated dependencies [6214db6]
2346
+ - Updated dependencies [6732df4]
2347
+ - Updated dependencies [fe9e0d0]
2348
+ - Updated dependencies [63fb72c]
2349
+ - Updated dependencies [804831c]
2350
+ - Updated dependencies [9f5c017]
2351
+ - Updated dependencies [c271413]
2352
+ - Updated dependencies [279e48e]
2353
+ - Updated dependencies [4784bb3]
2354
+ - Updated dependencies [8700d6d]
2355
+ - Updated dependencies [8db2a0f]
2356
+ - Updated dependencies [689953a]
2357
+ - Updated dependencies [30443fb]
2358
+ - Updated dependencies [8d3dbb2]
2359
+ - Updated dependencies [efc1c9c]
2360
+ - Updated dependencies [7d6439c]
2361
+ - Updated dependencies [da45e6b]
2362
+ - Updated dependencies [7533465]
2363
+ - Updated dependencies [835f0f3]
2364
+ - Updated dependencies [6d5db7b]
2365
+ - Updated dependencies [a9d97be]
2366
+ - Updated dependencies [ed35b44]
2367
+ - Updated dependencies [e6040ef]
2368
+ - Updated dependencies [9ba7e9c]
2369
+ - Updated dependencies [729e851]
2370
+ - Updated dependencies [96919a4]
2371
+ - Updated dependencies [345e24a]
2372
+ - Updated dependencies [3bc1bb4]
2373
+ - Updated dependencies [20b507a]
2374
+ - Updated dependencies [2e471dc]
2375
+ - Updated dependencies [6748587]
2376
+ - Updated dependencies [be50942]
2377
+ - Updated dependencies [775e079]
2378
+ - Updated dependencies [7e8b3c0]
2379
+ - Updated dependencies [53374dc]
2380
+ - Updated dependencies [f6fb83f]
2381
+ - Updated dependencies [2049b03]
2382
+ - Updated dependencies [2bf34f7]
2383
+ - Updated dependencies [15b33ae]
2384
+ - Updated dependencies [7cbc724]
2385
+ - Updated dependencies [4a94c38]
2386
+ - Updated dependencies [7098eed]
2387
+ - Updated dependencies [3df7c5c]
2388
+ - Updated dependencies [fb91ac9]
2389
+ - Updated dependencies [fb91ac9]
2390
+ - Updated dependencies [641fb55]
2391
+ - Updated dependencies [8524372]
2392
+ - Updated dependencies [7cbefa5]
2393
+ - Updated dependencies [72d6587]
2394
+ - Updated dependencies [a272a4f]
2395
+ - Updated dependencies [55f39ee]
2396
+ - Updated dependencies [502eb58]
2397
+ - Updated dependencies [0ce32d5]
2398
+ - Updated dependencies [0970a0e]
2399
+ - Updated dependencies [e427e9c]
2400
+ - Updated dependencies [bbc9dc3]
2401
+ - Updated dependencies [02f1813]
2402
+ - Updated dependencies [1ef89c0]
2403
+ - Updated dependencies [ba0b61a]
2404
+ - Updated dependencies [ba0b61a]
2405
+ - Updated dependencies [ba0b61a]
2406
+ - Updated dependencies [ac716ff]
2407
+ - Updated dependencies [697aabc]
2408
+ - Updated dependencies [f0f3cd5]
2409
+ - Updated dependencies [ab856ed]
2410
+ - Updated dependencies [20f3e65]
2411
+ - Updated dependencies [bbba098]
2412
+ - Updated dependencies [87af769]
2413
+ - Updated dependencies [3be720e]
2414
+ - Updated dependencies [80a0ecd]
2415
+ - Updated dependencies [43c0d17]
2416
+ - Updated dependencies [c3df43a]
2417
+ - Updated dependencies [d16d0e9]
2418
+ - Updated dependencies [bbe57fd]
2419
+ - Updated dependencies [272a530]
2420
+ - Updated dependencies [462bafb]
2421
+ - Updated dependencies [1779e8d]
2422
+ - Updated dependencies [f7fcc2c]
2423
+ - Updated dependencies [f0f4d6c]
2424
+ - Updated dependencies [4128188]
2425
+ - Updated dependencies [b253c4e]
2426
+ - Updated dependencies [78a9c67]
2427
+ - Updated dependencies [4a7ef0d]
2428
+ - Updated dependencies [4598f6d]
2429
+ - Updated dependencies [dea17b4]
2430
+ - Updated dependencies [89bb77a]
2431
+ - Updated dependencies [06611e4]
2432
+ - Updated dependencies [44152c4]
2433
+ - Updated dependencies [3939545]
2434
+ - Updated dependencies [66abbde]
2435
+ - Updated dependencies [dc3893d]
2436
+ - Updated dependencies [1bbaa16]
2437
+ - Updated dependencies [6ee259a]
2438
+ - Updated dependencies [7649f43]
2439
+ - Updated dependencies [d0f52e4]
2440
+ - Updated dependencies [e708426]
2441
+ - Updated dependencies [33e1697]
2442
+ - Updated dependencies [3b6d53b]
2443
+ - Updated dependencies [a017617]
2444
+ - Updated dependencies [276d174]
2445
+ - Updated dependencies [2982ed9]
2446
+ - Updated dependencies [741864f]
2447
+ - Updated dependencies [a8198de]
2448
+ - Updated dependencies [0c789a4]
2449
+ - Updated dependencies [05a49f2]
2450
+ - Updated dependencies [b234a84]
2451
+ - Updated dependencies [a78cd37]
2452
+ - Updated dependencies [5ea623e]
2453
+ - Updated dependencies [dc49246]
2454
+ - Updated dependencies [5eabe86]
2455
+ - Updated dependencies [ca5d671]
2456
+ - Updated dependencies [32bf2d6]
2457
+ - Updated dependencies [ff0c384]
2458
+ - Updated dependencies [af4fb29]
2459
+ - Updated dependencies [c698a81]
2460
+ - Updated dependencies [ff5ef1c]
2461
+ - Updated dependencies [befd40c]
2462
+ - Updated dependencies [905913c]
2463
+ - Updated dependencies [9a97800]
2464
+ - Updated dependencies [6358a2d]
2465
+ - Updated dependencies [6bca0e4]
2466
+ - Updated dependencies [81c0bc4]
2467
+ - Updated dependencies [3c76801]
2468
+ - Updated dependencies [d06fba8]
2469
+ - Updated dependencies [60500cb]
2470
+ - Updated dependencies [2fcefb9]
2471
+ - Updated dependencies [77f846a]
2472
+ - Updated dependencies [bc5870c]
2473
+ - Updated dependencies [b55a346]
2474
+ - Updated dependencies [065bba7]
2475
+ - Updated dependencies [f760064]
2476
+ - Updated dependencies [dd19463]
2477
+ - Updated dependencies [6791717]
2478
+ - Updated dependencies [8ea3bee]
2479
+ - Updated dependencies [100547e]
2480
+ - Updated dependencies [3a58149]
2481
+ - Updated dependencies [6d1c155]
2482
+ - Updated dependencies [d7573b3]
2483
+ - Updated dependencies [bf3edfe]
2484
+ - Updated dependencies [2c8474c]
2485
+ - Updated dependencies [6ce89da]
2486
+ - Updated dependencies [0e05aac]
2487
+ - Updated dependencies [ae61ad4]
2488
+ - Updated dependencies [5aed9e4]
2489
+ - Updated dependencies [83c77dc]
2490
+ - Updated dependencies [3c9fca3]
2491
+ - Updated dependencies [18a8e7d]
2492
+ - Updated dependencies [e7957ab]
2493
+ - Updated dependencies [f7e34ca]
2494
+ - Updated dependencies [e719ebd]
2495
+ - Updated dependencies [516583b]
2496
+ - Updated dependencies [f9e4f91]
2497
+ - Updated dependencies [6ef48b1]
2498
+ - Updated dependencies [fa429cf]
2499
+ - Updated dependencies [ed8df3e]
2500
+ - Updated dependencies [fe76ece]
2501
+ - Updated dependencies [8b446f5]
2502
+ - Updated dependencies [8e74b27]
2503
+ - Updated dependencies [7102b20]
2504
+ - Updated dependencies [8ebd57f]
2505
+ - Updated dependencies [617707a]
2506
+ - Updated dependencies [c40f3b8]
2507
+ - Updated dependencies [58770f3]
2508
+ - Updated dependencies [aefe428]
2509
+ - Updated dependencies [485f096]
2510
+ - Updated dependencies [7357447]
2511
+ - Updated dependencies [199d31b]
2512
+ - Updated dependencies [b655a9d]
2513
+ - Updated dependencies [3e01cb5]
2514
+ - Updated dependencies [7138bc1]
2515
+ - Updated dependencies [cef27e2]
2516
+ - Updated dependencies [4e8622b]
2517
+ - Updated dependencies [dffd752]
2518
+ - Updated dependencies [06973aa]
2519
+ - Updated dependencies [50798f3]
2520
+ - Updated dependencies [6a576c9]
2521
+ - Updated dependencies [0b12a33]
2522
+ - Updated dependencies [105f3c5]
2523
+ - Updated dependencies [3ccd9e8]
2524
+ - Updated dependencies [689b979]
2525
+ - Updated dependencies [c70f865]
2526
+ - Updated dependencies [e546222]
2527
+ - Updated dependencies [fd13f52]
2528
+ - Updated dependencies [d7bd274]
2529
+ - Updated dependencies [98c3a74]
2530
+ - Updated dependencies [fffa30d]
2531
+ - Updated dependencies [ebce5a3]
2532
+ - Updated dependencies [fb336df]
2533
+ - Updated dependencies [6c1b105]
2534
+ - Updated dependencies [4dc80d0]
2535
+ - Updated dependencies [9d9040d]
2536
+ - Updated dependencies [20e317c]
2537
+ - Updated dependencies [0fce2ef]
2538
+ - Updated dependencies [42df928]
2539
+ - Updated dependencies [0e2ddd4]
2540
+ - Updated dependencies [b7479ab]
2541
+ - Updated dependencies [9850c6e]
2542
+ - Updated dependencies [de570cc]
2543
+ - Updated dependencies [b2ea297]
2544
+ - Updated dependencies [5b5a5c3]
2545
+ - Updated dependencies [14582b8]
2546
+ - Updated dependencies [51e144e]
2547
+ - Updated dependencies [19cbf10]
2548
+ - Updated dependencies [7e50e84]
2549
+ - Updated dependencies [ab92940]
2550
+ - Updated dependencies [a691c0b]
2551
+ - Updated dependencies [0b1326d]
2552
+ - Updated dependencies [1e66879]
2553
+ - Updated dependencies [c5200f0]
2554
+ - Updated dependencies [af3861f]
2555
+ - Updated dependencies [2a79e84]
2556
+ - Updated dependencies [2609812]
2557
+ - Updated dependencies [515f171]
2558
+ - Updated dependencies [1f4e029]
2559
+ - Updated dependencies [4f14ad7]
2560
+ - Updated dependencies [258d264]
2561
+ - Updated dependencies [cac64b3]
2562
+ - Updated dependencies [17fbbaf]
2563
+ - Updated dependencies [d8cf1cb]
2564
+ - Updated dependencies [0d1e702]
2565
+ - Updated dependencies [b03ba3a]
2566
+ - Updated dependencies [0068348]
2567
+ - Updated dependencies [641543f]
2568
+ - Updated dependencies [8a44390]
2569
+ - Updated dependencies [8033ad1]
2570
+ - Updated dependencies [fa140b8]
2571
+ - Updated dependencies [71cba28]
2572
+ - Updated dependencies [190fbd0]
2573
+ - Updated dependencies [c00bf28]
2574
+ - Updated dependencies [23705b7]
2575
+ - Updated dependencies [93127bd]
2576
+ - Updated dependencies [f2158ec]
2577
+ - Updated dependencies [759606e]
2578
+ - Updated dependencies [fd8dace]
2579
+ - Updated dependencies [72ffc34]
2580
+ - Updated dependencies [a51fa0c]
2581
+ - Updated dependencies [51f3d8d]
2582
+ - Updated dependencies [bf28341]
2583
+ - Updated dependencies [78cbdb5]
2584
+ - Updated dependencies [b7543a9]
2585
+ - Updated dependencies [6c6cee7]
2586
+ - Updated dependencies [42887e0]
2587
+ - Updated dependencies [83fe6e7]
2588
+ - Updated dependencies [d1ab06f]
2589
+ - Updated dependencies [38a9568]
2590
+ - Updated dependencies [f90b8fb]
2591
+ - Updated dependencies [91783c4]
2592
+ - Updated dependencies [982885d]
2593
+ - Updated dependencies [dba7d84]
2594
+ - Updated dependencies [ca39427]
2595
+ - Updated dependencies [bd09957]
2596
+ - Updated dependencies [5a07e67]
2597
+ - Updated dependencies [2d36552]
2598
+ - Updated dependencies [45d8288]
2599
+ - Updated dependencies [b2437a7]
2600
+ - Updated dependencies [f157423]
2601
+ - Updated dependencies [7a90afd]
2602
+ - Updated dependencies [eddc1dd]
2603
+ - Updated dependencies [490f482]
2604
+ - Updated dependencies [27308c5]
2605
+ - Updated dependencies [8689166]
2606
+ - Updated dependencies [c9327c9]
2607
+ - Updated dependencies [920165d]
2608
+ - Updated dependencies [9101be5]
2609
+ - Updated dependencies [f53a8d0]
2610
+ - Updated dependencies [30266cf]
2611
+ - Updated dependencies [968dc1e]
2612
+ - Updated dependencies [57f9b07]
2613
+ - Updated dependencies [3c73d99]
2614
+ - Updated dependencies [d91aed9]
2615
+ - Updated dependencies [ed71d9e]
2616
+ - Updated dependencies [7776fc2]
2617
+ - Updated dependencies [e76634c]
2618
+ - Updated dependencies [c86185e]
2619
+ - Updated dependencies [fb96ecb]
2620
+ - Updated dependencies [1170ed1]
2621
+ - Updated dependencies [92814db]
2622
+ - Updated dependencies [4d73b07]
2623
+ - @object-ui/plugin-detail@17.7.0
2624
+ - @object-ui/react@17.7.0
2625
+ - @object-ui/core@17.7.0
2626
+ - @object-ui/types@17.7.0
2627
+ - @object-ui/i18n@17.7.0
2628
+ - @object-ui/components@17.7.0
2629
+ - @object-ui/permissions@17.7.0
2630
+
3
2631
  ## 17.6.0
4
2632
 
5
2633
  ### Patch Changes