@object-ui/plugin-designer 17.5.0 → 17.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2567 -0
- package/README.md +65 -17
- package/dist/AppCreationWizard.d.ts +6 -1
- package/dist/AppCreationWizard.d.ts.map +1 -1
- package/dist/DashboardEditor.d.ts.map +1 -1
- package/dist/DataModelDesigner.d.ts +5 -3
- package/dist/DataModelDesigner.d.ts.map +1 -1
- package/dist/FieldDesigner.d.ts.map +1 -1
- package/dist/MetadataFieldsPage.d.ts.map +1 -1
- package/dist/MetadataObjectsPage.d.ts +4 -2
- package/dist/MetadataObjectsPage.d.ts.map +1 -1
- package/dist/NavigationDesigner.d.ts.map +1 -1
- package/dist/ObjectManager.d.ts.map +1 -1
- package/dist/PageDesigner.d.ts +5 -1
- package/dist/PageDesigner.d.ts.map +1 -1
- package/dist/ProcessDesigner.d.ts +6 -2
- package/dist/ProcessDesigner.d.ts.map +1 -1
- package/dist/ReportDesigner.d.ts +6 -3
- package/dist/ReportDesigner.d.ts.map +1 -1
- package/dist/canvasBackground.d.ts +16 -0
- package/dist/canvasBackground.d.ts.map +1 -0
- package/dist/components/HistoryPanel.d.ts +1 -1
- package/dist/components/VersionHistory.d.ts.map +1 -1
- package/dist/components/index.d.ts +10 -10
- package/dist/hooks/index.d.ts +13 -13
- package/dist/hooks/useDesignerHistory.d.ts +1 -1
- package/dist/hooks/useDesignerTranslation.d.ts.map +1 -1
- package/dist/index.d.ts +37 -37
- package/dist/index.js +2546 -2070
- package/dist/index.umd.cjs +3 -2
- package/dist/pages/DashboardDesignPage.d.ts.map +1 -1
- package/dist/pages/EditAppPage.d.ts.map +1 -1
- package/package.json +16 -18
- package/dist/__tests__/__mocks__/plugin-form.d.ts +0 -4
- package/dist/__tests__/__mocks__/plugin-form.d.ts.map +0 -1
- package/dist/__tests__/__mocks__/plugin-grid.d.ts +0 -3
- package/dist/__tests__/__mocks__/plugin-grid.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,2572 @@
|
|
|
1
1
|
# @object-ui/plugin-designer
|
|
2
2
|
|
|
3
|
+
## 17.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 37140f4: refactor(plugin-designer)!: retire four builder-chrome node type keys (objectui#10859, batch 8 phase 2b)
|
|
8
|
+
|
|
9
|
+
**BREAKING (authoring):** the plugin no longer registers `app-creation-wizard`, `navigation-designer`, `dashboard-editor` or `branding-editor` (and with them their `plugin-designer:` keys). `objectui validate` refused each at `type`, and none appears as a node type anywhere in this repository, its examples or objectstack. A node authored with one of these types now renders the "Unknown component type" panel. `AppCreationWizard`, `NavigationDesigner`, `DashboardEditor` and `BrandingEditor` stay named exports.
|
|
10
|
+
|
|
11
|
+
Migration:
|
|
12
|
+
|
|
13
|
+
- `{ "type": "app-creation-wizard", … }` → mount `AppCreationWizard` directly;
|
|
14
|
+
- `{ "type": "navigation-designer", … }` → mount `NavigationDesigner` directly;
|
|
15
|
+
- `{ "type": "dashboard-editor", … }` → mount `DashboardEditor` directly;
|
|
16
|
+
- `{ "type": "branding-editor", … }` → mount `BrandingEditor` directly.
|
|
17
|
+
|
|
18
|
+
**Clause-②: yes** — registrations leave the runtime (narrowing), released as `minor` with this banner.
|
|
19
|
+
- e6bc087: feat: a `doc` navigation entry (ADR-0046) validates and draws as a link into the docs portal
|
|
20
|
+
|
|
21
|
+
`@objectstack/spec` 17.5.0 added a tenth navigation item type, `doc` — `{ type: 'doc', book }`
|
|
22
|
+
opens a book, `{ type: 'doc', doc }` opens one page, both opens that page in that book's
|
|
23
|
+
context. `objectui validate` refused it: `NavigationItemTypeSchema` was a hand-written list of
|
|
24
|
+
the nine older types, while the TypeScript `NavigationItemType`, derived from the spec, already
|
|
25
|
+
carried `doc`. And no renderer drew one — `resolveHref` had no `doc` branch, so the entry
|
|
26
|
+
rendered as a dead `#` link.
|
|
27
|
+
|
|
28
|
+
- **`@object-ui/types`** — `NavigationItemTypeSchema` is now read off the discriminator of the
|
|
29
|
+
spec's navigation union instead of hand-listed, so it gains `doc`. A `doc` entry is judged by
|
|
30
|
+
the spec's own `DocNavItemSchema`: it accepts exactly what the spec accepts — at least one of
|
|
31
|
+
`book` / `doc`, a doc NAME (a filename or a path is refused), a snake_case `id`, and the closed
|
|
32
|
+
key set of the spec's `doc` arm — and refuses an empty `label` as every sibling type does. The
|
|
33
|
+
parsed entry is never rewritten. `NavigationEntryItem` gains the spec-derived `book` and `doc`
|
|
34
|
+
members. An unknown `type` is now refused with `invalid_union` at `type` (was `invalid_value`),
|
|
35
|
+
the code the spec's own union answers with.
|
|
36
|
+
- **`@object-ui/layout`** — `resolveHref` sends a `doc` entry to the console docs portal under
|
|
37
|
+
its `basePath`: `/docs/DOC`, `/docs/BOOK` or `/docs/BOOK/DOC`. An unlabelled `doc`
|
|
38
|
+
entry shows the page it opens, else the book. It is gated by the same base keys as its
|
|
39
|
+
siblings (`visible`, `requiredPermissions`, `requiresObject`, `requiresService`); the book
|
|
40
|
+
audience gate stays the server's. The mobile tab bar links it the same way.
|
|
41
|
+
- **`@object-ui/app-shell`** — the app designer's preview keys its navigation kinds by
|
|
42
|
+
`NavigationItemType`, so a `doc` entry is drawn with its target and route instead of being
|
|
43
|
+
dropped (label-less) or badged `untyped`.
|
|
44
|
+
- **`@object-ui/plugin-designer`** — `NAV_TYPE_META` drops the `| 'doc'` key that bridged the
|
|
45
|
+
spec pin lag; it is keyed by `NavigationItemType` alone.
|
|
46
|
+
- **`@object-ui/console`** — the docs portal resolves a path segment that is a book's NAME
|
|
47
|
+
rather than its `slug` — what a `{ type: 'doc', book }` entry links to — and redirects to
|
|
48
|
+
the book's canonical slug URL: `/docs/NAME` opens the book, `/docs/NAME/DOC` reads that page
|
|
49
|
+
with the book's sidebar. It is looked up after a book's slug and an installed doc's name, so
|
|
50
|
+
every URL that resolved before answers as it did; only former "Documentation not found"
|
|
51
|
+
answers change.
|
|
52
|
+
- 1563d3e: The Field Designer's drawer no longer offers `select` as a field type for a new field, or as a type
|
|
53
|
+
to change an existing non-choice field into.
|
|
54
|
+
|
|
55
|
+
The drawer has no options editor, and `MetadataFieldsPage` saves every change at once, so a
|
|
56
|
+
picklist created there could only be a choice with nothing to choose, which the object write guard
|
|
57
|
+
now holds client-side (objectui#11253, the objectui half of the ruling on objectstack#20827). The
|
|
58
|
+
type returns once the drawer can author options.
|
|
59
|
+
|
|
60
|
+
BREAKING (behaviour, released as `minor` per this repository's version policy): a host that relied
|
|
61
|
+
on the drawer to create picklists loses that path until the drawer gains an options editor. An
|
|
62
|
+
existing `select` field keeps its own type in the drawer, so editing it shows and writes back what it
|
|
63
|
+
is, options included. The list's type filter still offers every type.
|
|
64
|
+
- 5988b6b: The page and report designers, and all three canvases, draw the members their node declarations always carried and they never read. Every designer registration's `inputs` now lists the members its component reads (objectui#11434).
|
|
65
|
+
|
|
66
|
+
**BREAKING (rendering)** — a report field element draws its `dataBinding` and no longer reads `properties.field`. The designer writes `dataBinding` itself now: a new field element is born bound to `field_name`, and the property panel's **Data binding** entry edits it on every element type. Migration: move a saved element's `properties.field` to its `dataBinding`. `@object-ui/types` refuses the old key by name in the same release.
|
|
67
|
+
|
|
68
|
+
**All three canvases.** `canvas.backgroundColor` is drawn on the page, data-model and process canvases. The colour is published as a CSS custom property and painted by a static utility (the styling rule's author-declared-colour carve-out), so a theme can still override it.
|
|
69
|
+
|
|
70
|
+
**Page designer.**
|
|
71
|
+
|
|
72
|
+
- A component's `children` are drawn inside it, positioned within it, and indented under it in the component tree. Selecting, editing, moving, copying and deleting all reach nested components.
|
|
73
|
+
- A `locked` component cannot be dragged or deleted on the canvas, and shows a lock. No delete path removes it: its own delete button is withheld, and Delete / Backspace and the toolbar's **Delete selected** delete only the unlocked rest of a selection. A parent that holds a locked component anywhere inside it is kept too, because deleting it would take the locked one with it.
|
|
74
|
+
- A component with `visible: false` is drawn faded, with a dashed edge and a hidden marker, so it can still be found.
|
|
75
|
+
- `zIndex` orders overlapping components.
|
|
76
|
+
- The property panel offers **Visible**, **Locked** and **Z-index**.
|
|
77
|
+
- The palette draws each category's `icon` and each item's `icon` (any Lucide name; an item without one keeps the generic "add" glyph), and an item's `preview` as a thumbnail.
|
|
78
|
+
|
|
79
|
+
**Report designer.**
|
|
80
|
+
|
|
81
|
+
- An element draws its `format`: weight, style, alignment, colours, font, border and padding on its content, and `numberFormat` / `dateFormat` beside its binding. Every value goes through a CSS custom property and a static utility.
|
|
82
|
+
- A section draws its `groupField` in its label (`by FIELD`), and a page-break rule across its top when `pageBreakBefore` is set.
|
|
83
|
+
- The page draws its four `margins` as a dashed guide.
|
|
84
|
+
|
|
85
|
+
**Registration inputs.**
|
|
86
|
+
|
|
87
|
+
- `page-designer` adds `palette` and `propertyEditor`.
|
|
88
|
+
- `data-model-designer` adds `canvas` and `showRelationshipLabels`.
|
|
89
|
+
- `process-designer` adds `version`, `lanes` and `canvas`.
|
|
90
|
+
- `report-designer` adds `pageSize` and `orientation` (enumerated), and `margins`.
|
|
91
|
+
- Every designer row that was typed `code` is now declared by its value's kind: `page-designer` `canvas` (object) and `components`, `data-model-designer` `entities` / `relationships`, `process-designer` `nodes` / `edges`, `report-designer` `sections`, `object-manager` `objects` and `field-designer` `fields` (each an array). A `code` row is judged as a string, so a legal value drew `type-mismatch` ("expected a string"); none does now.
|
|
92
|
+
|
|
93
|
+
Each was a member the component already read. The html-tier page compiler, which builds its manifest from every known registration, warned it off as an `unknown-prop`. Each added row declares the kind its value has (`array`, `object`, `enum` or `string`), so a legal value draws no `type-mismatch` either. `object-manager` and `field-designer` already listed theirs.
|
|
94
|
+
- 0e9058b: The data-model and process designers draw the members their node declarations always carried and they never read (objectui#11434).
|
|
95
|
+
|
|
96
|
+
**Data-model designer.**
|
|
97
|
+
|
|
98
|
+
- Each field row draws its `label` beside the name, a `UQ` badge when `unique`, and its `defaultValue` after the type (as JSON, so a string is quoted and `null` shows), with the field's `description` and default as the row's tooltip.
|
|
99
|
+
- Each relationship line runs from the row of its `sourceField` to the row of its `targetField`, edge to edge, instead of centre to centre whatever the fields said. Cards whose columns overlap are joined on their right edges by a curve. A field name the entity does not declare anchors at the entity header, and the line's tooltip says which name was not found.
|
|
100
|
+
- A relationship's `deleteBehavior` is drawn beside its label and in the line's tooltip. Renaming a field on the canvas renames it in every relationship that names it, so its line stays on the row.
|
|
101
|
+
- The card's header and rows have fixed heights now, so the lines can be anchored at them.
|
|
102
|
+
|
|
103
|
+
**Process designer.**
|
|
104
|
+
|
|
105
|
+
- The toolbar draws the process `version` beside its name.
|
|
106
|
+
- Each lane in `lanes` is drawn as a band around the nodes its `nodeIds` names, labelled with its `label` and `role`, under the flows and the nodes.
|
|
107
|
+
- A flow draws its `condition` in brackets, and BPMN's slash marker at its source when it `isDefault`.
|
|
108
|
+
- The property panel of a selected node offers its `assignee` and `dueDate` on a user task, its `script` on a script task, either on any node that already carries a value, and each entry of its `properties` under its key, with a control for the value's type.
|
|
109
|
+
|
|
110
|
+
Nothing in the components' props changed: `ProcessDesignerProps` already declared `version` and `lanes`, and the rest are members of the records the props already took.
|
|
111
|
+
- c4ab6d0: **BREAKING (TypeScript props)** — `DataModelDesignerProps.autoLayout` and `ReportDesignerProps.previewMode` are removed, and the `data-model-designer` registration no longer publishes `autoLayout` as an input (objectui#11434).
|
|
112
|
+
|
|
113
|
+
Neither prop was ever read: `DataModelDesigner` arranges entities only when the toolbar's Auto Layout button is pressed, and `ReportDesigner` has no preview mode. `@object-ui/types` retires the matching node members in the same release, so the component face, the registration and both node faces now agree.
|
|
114
|
+
|
|
115
|
+
**Migration.**
|
|
116
|
+
|
|
117
|
+
- `<DataModelDesigner autoLayout />`: drop the prop; use the toolbar's Auto Layout button. The package README's example no longer passes it.
|
|
118
|
+
- `<ReportDesigner previewMode />`: drop the prop; for a chrome-free, non-editable layout pass `readOnly`, `showToolbar={false}` and `showPropertyPanel={false}`.
|
|
119
|
+
|
|
120
|
+
The Field Designer's defaults map also drops the labels `appDesigner.fieldDesigner.validationRules` and `appDesigner.fieldDesigner.addRule`, which named an editor that was never built (see the `@object-ui/i18n` note of this release). Nothing renders differently.
|
|
121
|
+
- 864154e: The Field Designer no longer offers a formula-expression textarea, and no designer write
|
|
122
|
+
path emits a `formula` key (objectui#6043).
|
|
123
|
+
|
|
124
|
+
**This is a behaviour change on an authoring surface: a control is removed.** A field's
|
|
125
|
+
`type` may still be set to `formula` — that is a valid spec `FieldType` and stays in the
|
|
126
|
+
palette — but the expression itself is no longer authored here. Authors write formula
|
|
127
|
+
expressions in metadata-admin's field inspector, where they are checked.
|
|
128
|
+
|
|
129
|
+
The control wrote `formula`, which is not in `FieldSchema`'s accept set. Measured against
|
|
130
|
+
the installed `@objectstack/spec` 17.2.0:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
FieldSchema.safeParse({ type:'formula', label:'Tax', formula:'price * quantity' })
|
|
134
|
+
=> success = false
|
|
135
|
+
=> unrecognized_keys ['formula'] "Did you mean `formula` -> `expression`?"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
so `PUT /api/v1/meta/object/:name` returned a hard 422 `INVALID_METADATA` — and because
|
|
139
|
+
the key was then stored, it blocked **every later save of that object**, not just the one
|
|
140
|
+
that introduced it.
|
|
141
|
+
|
|
142
|
+
**The key was deliberately NOT renamed to the spec's `expression`.** `FieldSchema` judges
|
|
143
|
+
the key name and never the expression LANGUAGE — measured, it accepts
|
|
144
|
+
`expression: 'price * quantity'` and even `expression: '!!!not cel at all!!!'`; only the
|
|
145
|
+
empty string is refused. Spec `expression` is CEL rooted at `record`
|
|
146
|
+
(`record.amount * 0.1`), whereas this control's own placeholder taught `price * quantity`
|
|
147
|
+
— bare field refs, which under the scope formulas bind evaluate to null silently. A rename
|
|
148
|
+
would therefore have converted a loud, immediate 422 into a formula that saves clean and
|
|
149
|
+
then quietly computes nothing, which is strictly worse than the bug it appears to fix.
|
|
150
|
+
|
|
151
|
+
Making refusals loud *in the control* would need CEL lint, autocomplete and `returnType`
|
|
152
|
+
inference — that is `CelPredicateField`, which lives in `@object-ui/app-shell`, and
|
|
153
|
+
app-shell depends on `@object-ui/plugin-designer`, so it cannot be imported back without a
|
|
154
|
+
dependency cycle. Growing a second formula-authoring surface inside plugin-designer is a
|
|
155
|
+
feature, not this fix. `returnType` is likewise not authored here: it is only derivable by
|
|
156
|
+
inferring the CEL result type, and with no expression control there is nothing to infer
|
|
157
|
+
from.
|
|
158
|
+
|
|
159
|
+
`formula` joins the retired-key tombstone in `MetadataFieldsPage`, so an object already
|
|
160
|
+
carrying the key is stripped clean on its next save instead of staying blocked forever —
|
|
161
|
+
which matters more than usual here, because with the control gone an author would
|
|
162
|
+
otherwise have no way left to clear it. It is dropped rather than migrated to `expression`,
|
|
163
|
+
for the same reason the rename was refused. A `expression` authored in metadata-admin is
|
|
164
|
+
**not** touched: it is a real `FieldSchema` key and rides through the designer's
|
|
165
|
+
round-trip untouched.
|
|
166
|
+
|
|
167
|
+
Also removes the now-unreachable `formula` read/write from
|
|
168
|
+
`views/metadata-admin/previews/object-fields-bridge.ts`, which was a third emit site for
|
|
169
|
+
the key that neither the card nor the parity gate named.
|
|
170
|
+
|
|
171
|
+
The `formula` entry is removed from `check-designer-field-key-parity.mjs`'s
|
|
172
|
+
`KNOWN_UNPARSEABLE_KEYS` ledger, which ratchets in both directions — a resolved key that
|
|
173
|
+
left a stale entry behind would be as red as a new offender.
|
|
174
|
+
- d18a0d3: Object-level metadata payloads no longer emit the three keys `ObjectSchema` refuses by
|
|
175
|
+
name — **group**, **sortOrder** and **relationships** (objectui#6223).
|
|
176
|
+
|
|
177
|
+
Measured against the installed `@objectstack/spec` 17.2.0, whose `ObjectSchema` accept set
|
|
178
|
+
is 42 keys:
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
const base = { name: 'account', label: 'Account', fields: { n: { type: 'text', label: 'N' } } };
|
|
182
|
+
|
|
183
|
+
ObjectSchema.safeParse(base) => success = true (control)
|
|
184
|
+
ObjectSchema.safeParse({ ...base, isSystem: true }) => success = true (control)
|
|
185
|
+
ObjectSchema.safeParse({ ...base, pluralLabel: 'A' }) => success = true (control)
|
|
186
|
+
|
|
187
|
+
ObjectSchema.safeParse({ ...base, group: 'Sales' }) => unrecognized_keys ["group"]
|
|
188
|
+
ObjectSchema.safeParse({ ...base, sortOrder: 3 }) => unrecognized_keys ["sortOrder"]
|
|
189
|
+
ObjectSchema.safeParse({ ...base, relationships: [ … ] }) => unrecognized_keys ["relationships"]
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
The two controls are what make that a key-by-key result rather than a schema refusing
|
|
193
|
+
everything. Each key was resolved on its own, as the objectui#5761 family ruling requires:
|
|
194
|
+
|
|
195
|
+
- **group** — the Object Manager's grouping is a UI-only display category. The spec has no
|
|
196
|
+
object-level grouping key (`fieldGroups` groups the fields *inside* one object), so the
|
|
197
|
+
grouping control and its column stay, and the value is now DERIVED from the spec key that
|
|
198
|
+
is accepted (`isSystem`) instead of round-tripped. `MetadataObjectsPage` also strips a
|
|
199
|
+
`group` already stored by an earlier build, because its save-back spreads the server
|
|
200
|
+
document verbatim and would otherwise keep re-sending it forever.
|
|
201
|
+
- **sortOrder** — what populated it was the array index the converter happened to be at,
|
|
202
|
+
i.e. the order the list was already in. The declaration is removed from the object
|
|
203
|
+
payload. The field-level `sortOrder` is a different key with a different card
|
|
204
|
+
(objectui#6045) and is untouched.
|
|
205
|
+
- **relationships** — the spec models relationships on the FIELD (`reference` /
|
|
206
|
+
`master_detail`, plus object-level `indexes`). The object payload stops declaring and
|
|
207
|
+
sending an object-level relationship array; what the designer should author for a
|
|
208
|
+
relationship is a data-model question this change does not settle.
|
|
209
|
+
|
|
210
|
+
**Breaking for TypeScript consumers of `ObjectMetadataPayload`** (exported from app-shell):
|
|
211
|
+
the three properties are gone from the published type, so code that set them stops
|
|
212
|
+
compiling. That is the point — setting any of them produced a payload the metadata route
|
|
213
|
+
refuses. `ObjectDefinition` (the designer's UI model) is unchanged and still carries all
|
|
214
|
+
three.
|
|
215
|
+
|
|
216
|
+
The parity gate built for objectui#5761 now has a **second oracle**: every shape in
|
|
217
|
+
`PAYLOAD_SHAPES` names the schema that judges it, `ObjectSchema` alongside `FieldSchema`,
|
|
218
|
+
and reach is resolved within an oracle rather than across one — `group` is a legal
|
|
219
|
+
`FieldSchema` key and a refused `ObjectSchema` key at the same time. That extension found a
|
|
220
|
+
fourth object-level key (`enabled`, objectui#6238) and a value-level rejection the key-name
|
|
221
|
+
check cannot see (`fields` sent as an array where the spec wants a map, objectui#6240);
|
|
222
|
+
both are filed and ledgered rather than fixed here.
|
|
223
|
+
- 1cca678: Retire the dashboard-**root** `title` read across all five surfaces (objectui#7509,
|
|
224
|
+
maintainer ruling 2026-09-04, decision batch #29, option C, under ADR-0049).
|
|
225
|
+
|
|
226
|
+
**What changes for an operator.** A stored dashboard whose header came from a legacy
|
|
227
|
+
root `title` now shows its `label`. `label` is the only header source, then the raw
|
|
228
|
+
`name`.
|
|
229
|
+
|
|
230
|
+
Per surface:
|
|
231
|
+
|
|
232
|
+
- Console dashboard page (`DashboardView`) — header falls to `label`, then `name`.
|
|
233
|
+
- Standalone dashboard embed (`DashboardRenderer`) — `header` shows `label`; a document
|
|
234
|
+
with no `label` now shows no header title at all.
|
|
235
|
+
- The `dashboard-grid` SDUI component (`DashboardGridLayout`) — heading falls to
|
|
236
|
+
`label`, then the generic `Dashboard`.
|
|
237
|
+
- Studio dashboard designer (`DashboardEditor` preview panel, `DashboardDesignPage`
|
|
238
|
+
heading) — both fall to `label`, then `name` / the generic heading.
|
|
239
|
+
|
|
240
|
+
**Why now.** `@objectstack/spec`'s `DashboardSchema` refuses a root `title` **by name**
|
|
241
|
+
(`unrecognized_keys(title)`), and the save route answers `422 INVALID_METADATA` — so no
|
|
242
|
+
authored dashboard can acquire the key, and what retires is compatibility with documents
|
|
243
|
+
stored before that refusal existed. Until now five surfaces read the legacy spelling
|
|
244
|
+
independently, which meant a legacy document could show one header in the console and a
|
|
245
|
+
different one in the designer. One spelling now answers everywhere.
|
|
246
|
+
|
|
247
|
+
**Migration.** `label` is REQUIRED on `DashboardSchema`, so a spec-valid stored dashboard
|
|
248
|
+
already carries it and needs no change — it simply starts showing that `label` instead of
|
|
249
|
+
the legacy `title`. A document carrying `title` and no `label` was already invalid; give
|
|
250
|
+
it a `label`. No in-repo document needed migrating: a sweep of all 627 tracked JSON found
|
|
251
|
+
9 dashboard-shaped nodes, and the 6 carrying a root `title` are `type: 'dashboard'`
|
|
252
|
+
component examples that declare no `header`, so none of them rendered a header title
|
|
253
|
+
either before or after.
|
|
254
|
+
|
|
255
|
+
**Not affected: widget titles.** `DashboardWidget.title` is a different, spec-**declared**
|
|
256
|
+
key (the spec's `I18nLabel`) on a different receiver, and is untouched — widget headings,
|
|
257
|
+
the designer's widget-title input and its per-locale write path all behave exactly as
|
|
258
|
+
before. Root and widget arms were separated by receiver, and the retirement's pins carry
|
|
259
|
+
widget-level controls on every surface for that reason.
|
|
260
|
+
|
|
261
|
+
⚠️ **Dated note, 2026-10-02 — the `dashboard-grid` node key is retired — objectui#10859.**
|
|
262
|
+
Later in this same release objectui#10859 batch 8 (phase 2b) unregistered the `dashboard-grid`
|
|
263
|
+
node key, so `DashboardGridLayout` is no longer an SDUI component; the heading rule above holds
|
|
264
|
+
for it wherever a host mounts it directly. The rest of this entry is kept as the reading of this
|
|
265
|
+
change.
|
|
266
|
+
- bdb4dbd: A half-filled relationship field stays in the client and is never PUT (objectui#7714,
|
|
267
|
+
maintainer ruling on objectui#7122 item 4, 2026-09-05).
|
|
268
|
+
|
|
269
|
+
**Breaking, deliberately, and stated rather than implied.** Both metadata writers —
|
|
270
|
+
`MetadataService.saveFields` / `saveObject` in `@object-ui/app-shell`, and
|
|
271
|
+
`MetadataFieldsPage` in `@object-ui/plugin-designer` — now REFUSE a `lookup` or
|
|
272
|
+
`master_detail` field whose `reference` is missing, empty, blank or not a string. A
|
|
273
|
+
caller that previously got a PUT now gets a thrown error and **no request at all**. The
|
|
274
|
+
refusal is raised while the wire `fields` map is being built, so nothing is sent and
|
|
275
|
+
nothing is partially applied.
|
|
276
|
+
|
|
277
|
+
**Why the draft may not leave the client.** `@objectstack/spec` 17.3.0 turned
|
|
278
|
+
`reference` from prose into a hard requirement on relationship types (a `custom`
|
|
279
|
+
refinement at path `reference`). Driven against a real 17.3.0 backend in a running
|
|
280
|
+
designer: creating a `lookup` and leaving its target empty PUT the whole object,
|
|
281
|
+
came back `422 INVALID_METADATA` at `fields.<name>.reference` — and then the NEXT
|
|
282
|
+
edit, to a different and already-saved field, was refused identically, because the
|
|
283
|
+
half-filled draft rides along inside the same document. The author sees that later
|
|
284
|
+
edit rendered as applied while the server has none of it, and the only escape that
|
|
285
|
+
does not require noticing the lookup is a reload, which discards the work. An editing
|
|
286
|
+
session's half-finished state belongs to the client, not to the metadata store.
|
|
287
|
+
|
|
288
|
+
⛔ **Not** "strip the incomplete field from the body and report a successful save".
|
|
289
|
+
That shows the author a field the server never received — the silent-drop shape
|
|
290
|
+
objectstack#4001 closed.
|
|
291
|
+
|
|
292
|
+
**The whitespace row follows the contract; it is not a local opinion.** The predicate
|
|
293
|
+
is `typeof reference === 'string' && reference.trim() !== ''`. It was a declared
|
|
294
|
+
divergence when written — 17.3.0's objectstack#13632 refinement spelled its emptiness test as an
|
|
295
|
+
equality against `''`, so the spec accepted `reference: ' '` while these writers
|
|
296
|
+
refused it. objectstack#16920 applies that test to the TRIMMED value, so the spec now
|
|
297
|
+
refuses the identical shape under the same `custom` issue at the same `reference`
|
|
298
|
+
path, and the divergence note is retired (objectui#8621). Whitespace names no object
|
|
299
|
+
at either end (the spec's own `ObjectSchema.fields` key grammar
|
|
300
|
+
`/^[a-z_][a-z0-9_]*$/` admits no whitespace-bearing name), so admitting it would only
|
|
301
|
+
move the identical failure past the PUT and into a stored document, where it surfaces
|
|
302
|
+
with no field named. ⚠️ objectstack#16920 is an unreleased `minor` upstream and this
|
|
303
|
+
repo's pin is `@objectstack/spec` 17.3.0, which predates it — so until the pin moves,
|
|
304
|
+
these writers are still the only thing refusing `' '` here, and they refuse it at
|
|
305
|
+
editor time either way, before the PUT rather than at the publish gate.
|
|
306
|
+
|
|
307
|
+
The refusal message diagnoses which of the four states it found — absent, empty,
|
|
308
|
+
non-string (`invalid_type`, a value of the wrong kind rather than a missing target),
|
|
309
|
+
or blank — because the repair and the consequence differ per state.
|
|
310
|
+
|
|
311
|
+
`minor` rather than `major` per `AGENTS.md`: objectui's major tracks `@objectstack`'s,
|
|
312
|
+
so objectui's own breaking changes ship as `minor` with the breaking semantics stated.
|
|
313
|
+
- 0ea7054: Remove 37 runtime dependencies that no file in the declaring package consumes, and gate
|
|
314
|
+
the direction so the next one cannot land (objectui#8198).
|
|
315
|
+
|
|
316
|
+
`check:phantom-deps` judges imports that are not declared; nothing judged the reverse,
|
|
317
|
+
so a declaration could outlive its last consumer indefinitely. That is what happened to
|
|
318
|
+
`recharts` in `@object-ui/components` after objectui#7397 deleted its only importer — it
|
|
319
|
+
was removed by hand on objectui#7625, and nothing would have reported the next one. The
|
|
320
|
+
new `pnpm check:unused-deps` asks the reverse question over `dependencies` and
|
|
321
|
+
`optionalDependencies` of every released package.
|
|
322
|
+
|
|
323
|
+
**Potentially breaking, for consumers relying on hoisting.** Nothing these packages ship
|
|
324
|
+
changes: their Vite `external` predicates are path-based and never read `dependencies`,
|
|
325
|
+
so no built artifact moves. What changes is the install graph — a project that imports
|
|
326
|
+
one of the removed packages while depending only on the ObjectUI package that used to
|
|
327
|
+
drag it in will no longer resolve it. Declare it directly; that is the correct
|
|
328
|
+
dependency edge in either case. The removals, by package:
|
|
329
|
+
|
|
330
|
+
- `@object-ui/plugin-designer`: `@dnd-kit/core`, `@dnd-kit/sortable`, `@dnd-kit/utilities`, `@object-ui/fields`
|
|
331
|
+
- `@object-ui/plugin-chatbot`: `react-markdown`, `react-syntax-highlighter`, `remark-gfm` (and the orphaned `@types/react-syntax-highlighter`)
|
|
332
|
+
- `@object-ui/plugin-report`: `@object-ui/plugin-grid`, `clsx`, `react-i18next`, `tailwind-merge`
|
|
333
|
+
- `@object-ui/plugin-map`: `@objectstack/spec`, `lucide-react`, `zod`
|
|
334
|
+
- `@object-ui/runner`: `class-variance-authority`, `clsx`, `tailwind-merge`
|
|
335
|
+
- `@object-ui/core`: `lodash`, `zod`
|
|
336
|
+
- `@object-ui/layout`: `clsx`, `tailwind-merge`, and `react-dom` — which it pinned at an exact version in `dependencies` while also declaring it as a peer range, i.e. a library hard-depending on the renderer it asks its host to supply
|
|
337
|
+
- `@object-ui/plugin-dashboard`: `clsx`, `tailwind-merge`, and the same `react-dom` defect
|
|
338
|
+
- `@object-ui/plugin-ai`: `@object-ui/react`, `clsx`, `tailwind-merge`
|
|
339
|
+
- `@object-ui/fields`: `clsx`, `tailwind-merge`
|
|
340
|
+
- `@object-ui/console`: `@object-ui/react-runtime`, `sucrase`
|
|
341
|
+
- `@object-ui/auth`: `@object-ui/types`
|
|
342
|
+
- `@object-ui/plugin-calendar`: `@object-ui/fields`
|
|
343
|
+
- `@object-ui/plugin-editor`, `@object-ui/plugin-markdown`: `@object-ui/react`
|
|
344
|
+
- `@object-ui/react`: `react-hook-form`
|
|
345
|
+
|
|
346
|
+
Every one was verified by a whole-package grep before removal — the name appeared nowhere
|
|
347
|
+
under the package but its own manifest and CHANGELOG — and the whole workspace builds,
|
|
348
|
+
type-checks and tests green afterwards.
|
|
349
|
+
- 9662aca: Apply the object-metadata write invariant at the write DOORS instead of at the writers.
|
|
350
|
+
|
|
351
|
+
objectui#7714 ruled that a half-filled relationship stays client-side and the PUT body never
|
|
352
|
+
carries one without a non-empty `reference`, and implemented that ruling by naming the two
|
|
353
|
+
writers it knew of. The identical defect was then reproduced on a third (fixed in `9073cf018`); a
|
|
354
|
+
sweep found nine more. The doors — the three places in this repo that actually PUT `/meta/:type/:name` —
|
|
355
|
+
now apply the invariant themselves, so every writer is covered without any list of writers
|
|
356
|
+
existing anywhere, and a new door is caught by a gate that derives the door set from the
|
|
357
|
+
tree rather than restating it.
|
|
358
|
+
|
|
359
|
+
Behaviour change for consumers: `MetadataClient.save('object', …)` now throws BEFORE issuing
|
|
360
|
+
the request when the body carries a relationship field with a missing, empty or whitespace-only
|
|
361
|
+
`reference`. The same document is refused by the server with a 422 on `fields.NAME.reference`,
|
|
362
|
+
so nothing that previously succeeded now fails — the refusal moves earlier, names the field,
|
|
363
|
+
and leaves the draft in the client instead of wedging every later save of that object. Writes
|
|
364
|
+
of every other metadata type are untouched.
|
|
365
|
+
|
|
366
|
+
New export from `@object-ui/data-objectstack`: `assertObjectMetadataWritable`,
|
|
367
|
+
`RELATIONSHIP_TYPES_REQUIRING_REFERENCE` and `OBJECT_METADATA_TYPE`.
|
|
368
|
+
- 7dc31bb: **`MetadataFieldsPage` no longer rewrites a stored field type it cannot author.**
|
|
369
|
+
|
|
370
|
+
`toDesignerType` mapped every type outside `DESIGNER_FIELD_TYPES` to `'text'` on the
|
|
371
|
+
READ path, and `fromDesignerField` emitted the designer's type on the write path — so
|
|
372
|
+
relabelling one field rewrote every other field whose type this designer does not
|
|
373
|
+
author, on the same PUT. `text` is a legal spec type, so the save succeeded, the
|
|
374
|
+
designer redrew the fields as text, and nothing reported it; restoring a field required
|
|
375
|
+
knowing what its type used to be.
|
|
376
|
+
|
|
377
|
+
The census: `DESIGNER_FIELD_TYPES` has 27 members, `FieldType` in `@objectstack/spec`
|
|
378
|
+
17.3.0 declares 49, and all 27 are a subset of the 49. The 22 in the difference were
|
|
379
|
+
each a distinct data-loss case — `secret`, `richtext`, `toggle`, `multiselect`, `radio`,
|
|
380
|
+
`checkboxes`, `master_detail`, `tree`, `user`, `avatar`, `video`, `audio`, `summary`,
|
|
381
|
+
`composite`, `repeater`, `record`, `json`, `signature`, `qrcode`, `progress`, `tags`,
|
|
382
|
+
`vector`.
|
|
383
|
+
|
|
384
|
+
A field whose stored type is outside the designer's set is now carried through the
|
|
385
|
+
save verbatim — the mechanism this page already used one level down, where unknown
|
|
386
|
+
per-field KEYS survive via `carryOver` — and is listed on the page read-only, showing
|
|
387
|
+
its real stored type, instead of being drawn as an editable `text` field. Types inside
|
|
388
|
+
the set are unchanged: still editable, and a type change the author makes is still
|
|
389
|
+
honoured. A stored type in NEITHER vocabulary is carried through too, so an unknown
|
|
390
|
+
type produces a loud 422 naming the field rather than a silent rewrite.
|
|
391
|
+
|
|
392
|
+
Two behaviour changes worth naming:
|
|
393
|
+
|
|
394
|
+
- Fields with a carried-through type are no longer editable or deletable from this
|
|
395
|
+
page — including deleting them, which was previously possible only because they had
|
|
396
|
+
already been misrepresented as text. Use metadata-admin to change them.
|
|
397
|
+
- An object holding a target-less stored `master_detail` used to save from this page by
|
|
398
|
+
flattening the field to `text` and losing the relationship. That field now reaches
|
|
399
|
+
the existing relationship-target guard with its real type and is refused by name
|
|
400
|
+
before the PUT. `@objectstack/spec` 17.3.0 requires `reference` on `master_detail`,
|
|
401
|
+
so such a document's PUT answers 422 regardless; refusing here names the field and
|
|
402
|
+
leaves the stored relationship intact.
|
|
403
|
+
|
|
404
|
+
### Patch Changes
|
|
405
|
+
|
|
406
|
+
- 1dbb993: fix(plugin-designer): the Navigation Designer has an entry for the spec's `doc` navigation item type
|
|
407
|
+
|
|
408
|
+
objectstack#19789 added a `doc` member to the spec's navigation item union (an
|
|
409
|
+
item that targets a book and/or a doc). `NAV_TYPE_META` in `NavigationDesigner`
|
|
410
|
+
is keyed by that spec-derived union, so objectui stopped compiling against
|
|
411
|
+
`@objectstack/spec` built from objectstack `main`, and every row reads its badge,
|
|
412
|
+
colour and icon from that map. The map now has a `doc` entry (a `BookOpen` icon,
|
|
413
|
+
its own colour and the `appDesigner.navTypeDoc` label key). The key has an
|
|
414
|
+
English fallback in the designer's defaults and a translation in all ten locale
|
|
415
|
+
packs.
|
|
416
|
+
|
|
417
|
+
The map is typed `Record<NavigationItemType | 'doc', ...>` so it compiles both
|
|
418
|
+
against the pinned `@objectstack/spec`, which predates `doc`, and against
|
|
419
|
+
objectstack `main`. The `| 'doc'` goes away at the pin bump that ships `doc`.
|
|
420
|
+
`doc` is not added to the quick-add buttons: an empty `doc` item fails the spec's
|
|
421
|
+
book-or-doc requirement, and authoring one is objectui#10188.
|
|
422
|
+
- 557abc2: fix(app-shell, plugin-designer): three more forms keep the required `*` out of the control's accessible name
|
|
423
|
+
|
|
424
|
+
A flow screen's input fields (`ScreenView`), the metadata-admin `SchemaForm` and
|
|
425
|
+
the `AppCreationWizard` basic step each drew the required marker as a bare `*`
|
|
426
|
+
inside the label that names the control. A screen reader therefore announced
|
|
427
|
+
"Title *" instead of "Title", and none of those controls reported that it was
|
|
428
|
+
required.
|
|
429
|
+
|
|
430
|
+
The marker is now `aria-hidden`, the rule `ActionParamDialog` and `FormPage`
|
|
431
|
+
already follow (objectui#3299, objectui#10178): the `*` is for sighted users, and
|
|
432
|
+
the requirement is announced as `aria-required` on the control. Each marker also
|
|
433
|
+
carries `data-required-marker="true"`, the same locator the shared form
|
|
434
|
+
renderer's marker uses.
|
|
435
|
+
|
|
436
|
+
- `ScreenView`: every field control (text, number, email, date, textarea,
|
|
437
|
+
checkbox and select) carries `aria-required` when the field is required.
|
|
438
|
+
- `SchemaForm`: the marker is hidden in the default row, in the boolean row, and
|
|
439
|
+
in a grid repeater's column header, which names every cell below it. The
|
|
440
|
+
controls `SchemaForm` renders itself (select, switch, number and text inputs,
|
|
441
|
+
textarea, the comma-separated list input and the JSON editor) carry
|
|
442
|
+
`aria-required` from the same flag that draws the marker.
|
|
443
|
+
- Metadata-admin widgets: `WidgetProps` gains an optional `required` member, and
|
|
444
|
+
`SchemaForm` passes the same flag to a registered widget, in a row and in a
|
|
445
|
+
grid cell. Ten of the eleven `labelling: 'control'` widgets put it on their
|
|
446
|
+
control as `aria-required`: `ref:object`, `ref:component`, `object-selector`,
|
|
447
|
+
`field-selector`, `field-ref`, `view-ref`, `icon`, `color-input`,
|
|
448
|
+
`string-tags` and `secret`. `filter-builder` does not, because its control is
|
|
449
|
+
a plain button, where ARIA does not allow `aria-required`.
|
|
450
|
+
- Colour picker: `ColorVariantPicker` takes an optional `required` and puts
|
|
451
|
+
`aria-required` on its radio group, and the `color-picker` widget passes the
|
|
452
|
+
field's flag through. Its other callers pass nothing, so they are unchanged.
|
|
453
|
+
- `AppCreationWizard`: the App name and Title inputs carry `aria-required`.
|
|
454
|
+
|
|
455
|
+
Native `required` is not added anywhere, so no browser validation appears beside
|
|
456
|
+
each form's own required check.
|
|
457
|
+
- 25cb364: The Studio's app wizard saves an app the platform accepts, and the app favicon has one
|
|
458
|
+
spelling, `branding.favicon` (objectui#10842).
|
|
459
|
+
|
|
460
|
+
**Creating an app is no longer refused.** The console's "create app" and "edit app" pages save through
|
|
461
|
+
`client.meta.saveItem('app', …)`, and the platform judges that document with
|
|
462
|
+
`@objectstack/spec`'s strict `AppSchema`. `wizardDraftToAppSchema` wrote four top-level keys the
|
|
463
|
+
spec does not declare (`type`, `title`, `favicon` and `layout`), so the save was refused with
|
|
464
|
+
`422 INVALID_METADATA` (`unrecognized_keys`). It now writes only declared keys: the draft's
|
|
465
|
+
title as `label`, the logo and favicon inside `branding`, and no `type` or `layout`. The spec
|
|
466
|
+
has no app layout, so the wizard's layout choice is not saved.
|
|
467
|
+
|
|
468
|
+
- `@object-ui/types` — **breaking:** `wizardDraftToAppSchema` now returns the app document
|
|
469
|
+
(the spec's `App` shape, with objectui's `NavigationItem[]` as `navigation`) instead of an
|
|
470
|
+
`AppComponentSchema` renderer node. It has no `type`, `title`, top-level `favicon` or `layout`.
|
|
471
|
+
Code that read `result.title` reads `result.label`. Code that fed the result to
|
|
472
|
+
`AppSchemaRenderer` builds the renderer node itself (`type: 'app'`, `title`).
|
|
473
|
+
- `@object-ui/types` — **breaking:** `AppComponentSchema.favicon` is now `never` on the
|
|
474
|
+
TypeScript face, and the zod mirror refuses a top-level `favicon` by name, answering "Did you
|
|
475
|
+
mean `favicon` → `branding`?". This is the objectui#10827 rule that retired the top-level
|
|
476
|
+
`logo`: the spec refuses the key, and the console reads only `branding.favicon`.
|
|
477
|
+
- `@object-ui/layout`: `AppSchemaRenderer` puts `branding.favicon` on the tab. It read the
|
|
478
|
+
top-level `favicon` before, and never `branding.favicon`.
|
|
479
|
+
- `@object-ui/plugin-designer`: `EditAppPage` keeps the keys the wizard does not maintain, but
|
|
480
|
+
only keys the spec's `AppSchema` declares, read from that schema. A row stored before the
|
|
481
|
+
schema closed is served with the old wizard's top-level keys, and echoing them made every
|
|
482
|
+
edit of such an app fail the same way. Its pre-fill no longer falls back onto a top-level
|
|
483
|
+
`logo`, `favicon` or `title`; it reads `branding.logo`, `branding.favicon` and `label`.
|
|
484
|
+
|
|
485
|
+
Migration: move a top-level `favicon` URL to `branding: { favicon: '…' }`.
|
|
486
|
+
|
|
487
|
+
⚠️ **Dated note, 2026-09-28 — the wizard has no layout choice — objectui#10867.**
|
|
488
|
+
Later in this same release the wizard's Layout control was removed, with `AppWizardDraft.layout`, so there is no
|
|
489
|
+
layout choice left to not save. The rest of this entry still holds.
|
|
490
|
+
- 7343376: fix(types,plugin-designer)!: the Studio app wizard saves a document the platform accepts, and an edit keeps the stored `accentColor` (objectui#10867)
|
|
491
|
+
|
|
492
|
+
⚠️ **BREAKING (authoring)**, marked `minor` under this repository's version-alignment rule (a `major` in the fixed group would move all of it off the `@objectstack` major). Two published `@object-ui/types` members narrow: a navigation separator no longer takes a `label`, and `AppWizardDraft.layout` is removed. A TypeScript literal that writes either no longer compiles. `NavigationItem` is now a union type alias, not an interface. So code that reads `label` off an unnarrowed `NavigationItem` into a `string` slot (its type is now `string | undefined`; objectui#11299, in the same release, widens it to the spec's `I18nLabel` or `undefined`, see `.changeset/11299-types-nav-label-locale-map.md`) also stops compiling, as does code that spreads an entry-only key onto one, and an `interface` that `extends NavigationItem` or augments it (extend `NavigationEntryItem` instead). `objectui validate` now refuses a separator `label` too: the zod mirror's `NavigationItemSchema` refuses every key on a separator that the spec's separator does not declare. The four `appDesigner` layout keys also leave the published `@object-ui/i18n` packs and `DESIGNER_DEFAULT_TRANSLATIONS`, so an application that calls `t()` with one of them now renders the raw key (unless the call passes a `defaultValue`).
|
|
493
|
+
|
|
494
|
+
**Clause-②: yes (narrowing)** — the separator arm of `NavigationItem` loses `label`, and `AppWizardDraft` loses `layout`.
|
|
495
|
+
|
|
496
|
+
- **A separator carries only `type`, `id` and `order`.** `@objectstack/spec`'s separator branch declares exactly those keys, and its `AppSchema` refuses anything else. `NavigationItem` required a `label` on every item, so the wizard's "Add separator" wrote `{ id, type: 'separator', label: '' }`, and the console's create-app and edit-app saves were refused with `422 INVALID_METADATA` (`unrecognized_keys` `['label']` at `navigation.N`). `NavigationItem` is now a union of two arms, discriminated by `type`. `NavigationEntryItem` holds every other nav type and keeps its required `label`. `NavigationSeparatorItem` admits `type`, `id` and `order`, and every other entry key is `?: never` on it. Both arms are exported. Reading an entry-only key off an unnarrowed item still compiles, but its type now includes `undefined` (a `label` is `string | undefined`; objectui#11299, in the same release, makes it the spec's `I18nLabel` or `undefined`, see `.changeset/11299-types-nav-label-locale-map.md`), so passing it where a `string` is required does not. Narrow on `item.type === 'separator'` before relying on `label`. `menuItemToNavigationItem` maps a legacy separator to `{ id, type: 'separator' }` and drops its label. `spec-derived-unions.test.ts` no longer pins the separator `label` as a blocker. It asserts, at both spec tiers, that the separator arm admits the spec separator's keys and no others.
|
|
497
|
+
- **`@object-ui/plugin-designer`: the wizard and `NavigationDesigner` write a separator as `{ id, type }`.** `NavigationDesigner` no longer writes a `label` onto a new separator, and its label, icon and visibility patchers skip one.
|
|
498
|
+
- **`@object-ui/layout` narrows on the separator arm; nothing it renders changes.** `resolveNavItemLabel` answers `''` for every separator. A stored separator carrying a non-empty `label`, which `menuItemToNavigationItem` produced before this change, used to resolve to that label. No renderer asks it for a separator's label. The mobile bottom nav's leaf list, which already skipped separators, is now typed as entries.
|
|
499
|
+
- **`@object-ui/app-shell` narrows the same way; nothing it renders changes.** `useNavPins` registers a favorite only for an entry and leaves a separator as it is, and the Studio sidebar's navigation walk passes a separator through unchanged.
|
|
500
|
+
- **`@object-ui/plugin-designer`: `EditAppPage` keeps the stored branding.** The wizard maintains the logo, primary colour and favicon, and its `branding` replaced the stored block, so a stored `accentColor` was dropped on every edit. The console reads that key. The save now keeps every stored `branding` key the spec's `AppBrandingSchema` declares, read from that schema. The wizard's values win for the keys it maintains. A stored key the spec does not declare is still left out.
|
|
501
|
+
- **The wizard's Layout control is removed, with `AppWizardDraft.layout`.** The spec declares no app `layout`, no console surface reads one, and since objectui#10842 the save wrote none. The control persisted nothing. `EditAppPage` no longer reads a stored `layout` into the draft. The Basic Info step's description now reads "Name, title, and icon".
|
|
502
|
+
- **`@object-ui/i18n`:** the four `appDesigner` layout keys (`layout`, `layoutSidebar`, `layoutHeader` and `layoutEmpty`) are removed from all ten packs, and `appDesigner.stepBasicDesc` no longer names a layout.
|
|
503
|
+
|
|
504
|
+
**Migration:** write a separator as `{ id, type: 'separator' }`, with an optional `order`. Remove `layout` from any `AppWizardDraft` you build. Code that spreads an entry-only key (`label`, `visible`, `requiredPermissions` and the rest) onto a value typed `NavigationItem` narrows it first (`item.type !== 'separator'`) or types it `NavigationEntryItem`: the separator arm refuses those keys. `AppComponentSchema.layout`, the renderer node's own layout strategy, is a different member and is unchanged.
|
|
505
|
+
|
|
506
|
+
Pinned in `packages/types/src/__tests__/app-wizard-separator-layout-10867.test.ts` and `packages/plugin-designer/src/__tests__/AppWizard.specDocument-10867.test.tsx`.
|
|
507
|
+
- 44b67da: fix(plugin-designer): editing an app keeps its stored navigation (objectui#10894)
|
|
508
|
+
|
|
509
|
+
**Clause-②: no** — an edit stops destroying stored navigation. No declared type, accepted key or published surface moves.
|
|
510
|
+
|
|
511
|
+
The console's "edit app" page (`EditAppPage`) loads the stored app into `AppCreationWizard`. Leaving the wizard's Objects step replaced the draft's `navigation` with one generated object entry per selected object, and every edit passes through that step. So any edit, even a title change, saved a stored `[object, separator, group, url]` tree as `[object]`. It dropped every separator, group (with its children) and `url` / `dashboard` / `page` / `report` / `component` / `action` entry, and each object entry's own label, icon and order, with no warning.
|
|
512
|
+
|
|
513
|
+
- **Leaving the Objects step no longer replaces the navigation.** An empty navigation (the create path) is still filled with one object entry per selected object. A non-empty one is merged:
|
|
514
|
+
- a newly selected object gets an object entry, appended at the end;
|
|
515
|
+
- the object entries of a deselected object are dropped, at the top level or inside a group. The group keeps its place and its other children, even when that leaves it with none;
|
|
516
|
+
- every other entry is kept as stored, in its position. That includes each object entry's label, icon and order, and an object entry for an object the Objects step does not list.
|
|
517
|
+
- **`EditAppPage` counts an object as selected when the stored navigation has an object entry for it at the top level or inside a group, at any depth.** It counted only top-level entries, so a grouped object showed as unselected.
|
|
518
|
+
- The same merge applies on the create path once the author has shaped the navigation. Going back to the Objects step and forward again keeps the added separators, groups and links, and the order.
|
|
519
|
+
|
|
520
|
+
Pinned in `packages/plugin-designer/src/__tests__/EditAppPage.keepsNavigation-10894.test.tsx`.
|
|
521
|
+
- 8741cb7: fix(app-shell,plugin-designer): the designer's nav surfaces name a nav entry with no `label` the way the console draws it (objectui#11196)
|
|
522
|
+
|
|
523
|
+
A navigation entry's `label` is optional: an entry without one shows, at render time, the current
|
|
524
|
+
label of what it opens. The console's sidebar, `nav:menu`, command palette and search already draw
|
|
525
|
+
it that way, and the platform now writes such entries (the console's navigation sync, for every
|
|
526
|
+
page and dashboard). The designer surfaces read the raw label instead, so the same entry showed as
|
|
527
|
+
`(unnamed)` in the app preview, as a positional `Item N` card on the nav canvas, by its positional
|
|
528
|
+
selection id in the app nav inspector, by its target's internal name (or, for a group, a blank
|
|
529
|
+
heading) in the Studio Interfaces rail, and as a blank row in the Navigation Designer and the app
|
|
530
|
+
wizard's Navigation step.
|
|
531
|
+
|
|
532
|
+
Every one of those surfaces now asks the runtime's own rule, `resolveNavItemLabel` from
|
|
533
|
+
`@object-ui/layout`; none keeps a second copy of it. In app-shell the preview, the canvas, the
|
|
534
|
+
inspector and the Studio rail pass the console's own target resolver, so a label-less entry shows its target's current
|
|
535
|
+
label (a rename shows on the next render), else the target's machine name, else the entry's `id`.
|
|
536
|
+
The app wizard's Navigation step hands the rule its own object list, so a label-less object entry
|
|
537
|
+
there shows the object's label. The Navigation Designer is handed bare items and no metadata, so it
|
|
538
|
+
shows the rule's machine-name rung (`pageName`, `dashboardName`, `objectName`, …), which is what the
|
|
539
|
+
console shows for a page.
|
|
540
|
+
|
|
541
|
+
Editing keeps inheritance intact. The canvas's inline rename and the inspector's Label field show
|
|
542
|
+
the inherited text as a placeholder, never as a stored value: leaving an entry untouched keeps it
|
|
543
|
+
label-less, and typing writes an author label. Emptying the inspector's Label field restores
|
|
544
|
+
inheritance by removing the `label` key, never by writing `''`; for a locale-map label it drops only
|
|
545
|
+
the designer locale's own entry. The inspector also stops reading `title` and `name`, which are not
|
|
546
|
+
nav-item keys, as the label, and a locale-map label there now shows its text instead of
|
|
547
|
+
`[object Object]` and keeps every other language when edited.
|
|
548
|
+
|
|
549
|
+
`@object-ui/plugin-designer` now depends on `@object-ui/layout`, which it did not before.
|
|
550
|
+
- cb2f6fb: fix(app-shell,plugin-designer): standard navigation entries are written with no `label`, never with a copy of their target's text (objectui#11201)
|
|
551
|
+
|
|
552
|
+
A navigation entry's `label` is optional. An entry without one shows, at render time, the current
|
|
553
|
+
label of what it opens, in the viewer's language. A present label is shown as written. The
|
|
554
|
+
platform's own producers of standard entries now leave the label out, so the entry keeps following
|
|
555
|
+
its target:
|
|
556
|
+
|
|
557
|
+
- Studio's Create app with "add objects" seeds one entry per package object. Each entry used to
|
|
558
|
+
store the object's label, or its machine name for a draft or unlabelled object.
|
|
559
|
+
- Binding an object to a placeholder entry in the Studio's nav-item panel used to replace the
|
|
560
|
+
placeholder with the object's label. It now removes the placeholder. A label the author typed, and
|
|
561
|
+
a locale-map label, are kept.
|
|
562
|
+
- The app wizard's generated object entries used to store the object's plural label, else its
|
|
563
|
+
label, and the create and edit pages hand the wizard the machine name for an unlabelled object.
|
|
564
|
+
An entry now stores a label only when the object declares a plural label, and only when that
|
|
565
|
+
plural label differs from both the object's label and its machine name.
|
|
566
|
+
|
|
567
|
+
The console's navigation sync already writes page and dashboard entries this way. Stored navigation
|
|
568
|
+
is not converted.
|
|
569
|
+
- 770cc5b: chore(plugin-designer): follow `@object-ui/layout`'s and `@object-ui/types`' navigation label changes (objectui#11299)
|
|
570
|
+
|
|
571
|
+
- `@object-ui/layout` removed the three unused resolver arguments of
|
|
572
|
+
`resolveNavItemLabel`, so the app creation wizard's preview of an unlabelled
|
|
573
|
+
navigation entry now calls it as `resolveNavItemLabel(item, undefined, targetLabel)`.
|
|
574
|
+
- `@object-ui/types` now types a navigation entry's `label` as the spec's `I18nLabel`
|
|
575
|
+
(a string or an inline locale map), so the navigation designer's inline rename reads
|
|
576
|
+
the label through a helper that takes both: a string, and objectui's keyed
|
|
577
|
+
reference, start the draft as before, and an inline locale map starts it empty, as it
|
|
578
|
+
already did.
|
|
579
|
+
|
|
580
|
+
What either component shows is unchanged.
|
|
581
|
+
- d893290: `MetadataFieldsPage` shows the per-field prescription when the spec refuses a save, not only the refusal headline (objectui#11302).
|
|
582
|
+
|
|
583
|
+
A field the spec refuses (for example a name like `Bad Name`, or `__proto__`) made the page show only the 422's headline, "object/NAME failed spec validation: N issues — …", while the sentence telling the author what to do ("Field names must be lowercase snake_case", "Rename the key") rode in the error's structured issues and never reached the screen. The page now renders its errors through `formatMetadataError` from `@object-ui/data-objectstack`, the same reader the Studio surfaces use: one line per issue, naming the field and the fix. Every other failure still shows its own message.
|
|
584
|
+
- 6e9c8d2: fix: the widget width / height editors write a whole four-number `layout` (objectui#11388)
|
|
585
|
+
|
|
586
|
+
The three dashboard widget width / height editors (Studio's widget inspector in
|
|
587
|
+
`@object-ui/app-shell`, `DashboardWithConfig` in `@object-ui/plugin-dashboard` and
|
|
588
|
+
`DashboardEditor` in `@object-ui/plugin-designer`) each spread the one edited
|
|
589
|
+
dimension onto the widget's possibly-absent `layout` and cast the result past the
|
|
590
|
+
declared four-number type. On a widget with no `layout`, which is how Studio adds
|
|
591
|
+
one, they stored `{ w }` or `{ h }`, and `@objectstack/spec`'s widget `layout`
|
|
592
|
+
refuses that box at `x`, `y` and the other dimension.
|
|
593
|
+
|
|
594
|
+
`@object-ui/types` gains two exports on its main entry:
|
|
595
|
+
|
|
596
|
+
- `defaultWidgetPlacement(index)`: the box the dashboard grid auto-places the
|
|
597
|
+
widget at that position of `widgets[]` in when it has no `layout`, the fallback
|
|
598
|
+
the spec's widget `layout` states (`x: (i % 4) * 3`, `y: Math.floor(i / 4) * 4`,
|
|
599
|
+
`w: 3`, `h: 4`).
|
|
600
|
+
- `completeWidgetLayout(layout, patch, placement)`: the whole box after an edit,
|
|
601
|
+
each coordinate taken from the edit, else from the stored `layout`, else from
|
|
602
|
+
the placement.
|
|
603
|
+
|
|
604
|
+
All three editors now write through `completeWidgetLayout`, seeding from
|
|
605
|
+
`defaultWidgetPlacement` for the widget's index, and the casts are gone, so the
|
|
606
|
+
compiler judges each write. A widget that has a `layout` keeps its `x` and `y`.
|
|
607
|
+
The width and height inputs (and `DashboardWithConfig`'s sliders) show the same
|
|
608
|
+
completed box, so a widget with no `layout` now shows the auto-placed 3 × 4 where
|
|
609
|
+
it showed 1 × 1, and the dimension an edit leaves alone is the one on screen.
|
|
610
|
+
`DashboardGridLayout` places a widget with no `layout` through
|
|
611
|
+
`defaultWidgetPlacement`, with no change to where it lands.
|
|
612
|
+
|
|
613
|
+
`DashboardWithConfig`'s `onWidgetSave` payload keeps its flattened `layoutW` /
|
|
614
|
+
`layoutH` shape. For a widget with no `layout` that the author did not resize,
|
|
615
|
+
the two values it carries are now the auto-placed 3 and 4, not 1 and 1.
|
|
616
|
+
- 9d7419b: The dashboard editor reads a `widgets[]` entry by the slot's element type, `DashboardComponentSchema['widgets'][number]`, in its widget card, its property panel, its preview and its measure probe (objectui#11514). `@object-ui/types` no longer lets the slot's component arm stand in for `DashboardWidgetSchema`, and these reads annotated entries with that interface. Type-only: nothing the editor renders, offers or writes changes.
|
|
617
|
+
- 39f4309: Published typings from every `vite-plugin-dts` package now carry an explicit extension on
|
|
618
|
+
every relative specifier, and a type error in the declaration build now fails the build
|
|
619
|
+
instead of being printed and ignored (objectui#5439, objectui#5483).
|
|
620
|
+
|
|
621
|
+
**Consumers on `moduleResolution: nodenext` or `node16` may see NEW type errors, and that
|
|
622
|
+
is the fix working.** These packages re-export mostly through NAMED re-exports —
|
|
623
|
+
`export { useObjectChat } from './useObjectChat'`. TypeScript could not follow the
|
|
624
|
+
extensionless hop, but it still DECLARED the name, so the symbol resolved to a silent
|
|
625
|
+
`any`. Nothing errored; consumers simply got no types. With the extension emitted, the
|
|
626
|
+
symbol carries its real type, and any call site that was relying on the `any` now type
|
|
627
|
+
checks for the first time. This is the mode that produced the 21 residual `TS7006` on
|
|
628
|
+
`@object-ui/app-shell` reported against objectui#5365 — a type hole that opened quietly,
|
|
629
|
+
unlike objectui#5365's own `export * from './ui'` packages where the same defect surfaced
|
|
630
|
+
immediately as `TS2305: has no exported member`.
|
|
631
|
+
|
|
632
|
+
410 extensionless relative specifiers across 19 packages were emitted before this change;
|
|
633
|
+
the count is now 0 in all 22 packages that build typings through `vite-plugin-dts`.
|
|
634
|
+
`@object-ui/fields` was already clean — its sources write explicit `.js` specifiers — and
|
|
635
|
+
is wired so it stays that way.
|
|
636
|
+
|
|
637
|
+
The second half changes no emitted output today: 22/22 packages built green unmodified, so
|
|
638
|
+
making the declaration step's exit code honest turns nothing red. It changes what a FUTURE
|
|
639
|
+
regression does — print and exit 0, versus fail the build.
|
|
640
|
+
- 2cf69e4: The field designer now reads and writes a lookup field's relationship target under the
|
|
641
|
+
spec's spelling `reference` (objectui#6041), in both directions.
|
|
642
|
+
|
|
643
|
+
`referenceTo` is not in `FieldSchema`'s accept set. Measured against the installed
|
|
644
|
+
`@objectstack/spec` 17.2.0, through the whole object document that
|
|
645
|
+
`PUT /api/v1/meta/object/:name` validates:
|
|
646
|
+
|
|
647
|
+
```
|
|
648
|
+
ObjectSchema.safeParse({ …, fields: { rel: { type: 'lookup', label: 'Owner',
|
|
649
|
+
referenceTo: 'user' } } })
|
|
650
|
+
=> success = false
|
|
651
|
+
=> unrecognized_keys at ["fields","rel"] keys=["referenceTo"]
|
|
652
|
+
"Did you mean `referenceTo` -> `reference`?"
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
so authoring a lookup field through the designer returned a hard 422 `INVALID_METADATA`,
|
|
656
|
+
and — because the key is then stored — blocked **every subsequent save** of that object,
|
|
657
|
+
with nothing in the UI to say which key did it.
|
|
658
|
+
|
|
659
|
+
The read direction was broken symmetrically and is the half that would have survived a
|
|
660
|
+
write-only fix: `toDesignerField` read `raw.referenceTo` while a spec-parsed server sends
|
|
661
|
+
`reference`, so every already-saved lookup field loaded into the designer with an **empty
|
|
662
|
+
reference box**. Both wire-bound payload shapes move — `FieldMetadataPayload`
|
|
663
|
+
(`MetadataService.toFieldPayload`) and `ServerFieldSchema`
|
|
664
|
+
(`MetadataFieldsPage.fromDesignerField`).
|
|
665
|
+
|
|
666
|
+
`referenceTo` also joins `RETIRED_FIELD_KEYS`. Renaming the emit sites alone does not
|
|
667
|
+
unblock an object whose stored fields already carry the misspelling: `carryOver` spreads
|
|
668
|
+
the previous server def verbatim, so the key would ride straight back out to the same 422.
|
|
669
|
+
The designer's in-memory `DesignerFieldDefinition` keeps `referenceTo` — that is the
|
|
670
|
+
internal prop name every other UI surface in this repo already uses (`LookupField`,
|
|
671
|
+
`filter-builder`, `ObjectChart`, `ListView`, `UserFilters`), it reaches no wire-bound
|
|
672
|
+
shape, and the parity gate classifies it as `uiOnly` rather than a violation.
|
|
673
|
+
|
|
674
|
+
No behavioural change for a half-filled draft: the spec's prose calls `reference`
|
|
675
|
+
"required for relationship types", but that is not enforced by the zod parse at 17.2.0 —
|
|
676
|
+
`{ type: 'lookup', label: 'L' }` parses green at field level and through `ObjectSchema`,
|
|
677
|
+
and `undefined` is dropped by `JSON.stringify` under either spelling, so the wire bytes
|
|
678
|
+
are identical before and after.
|
|
679
|
+
- 2cf69e4: The field designer now reads the system-field marker under the spec's spelling `system`,
|
|
680
|
+
and never hands `isSystem` back to the metadata API (objectui#6044).
|
|
681
|
+
|
|
682
|
+
`isSystem` is not in `FieldSchema`'s accept set. Measured against the installed
|
|
683
|
+
`@objectstack/spec` 17.2.0:
|
|
684
|
+
|
|
685
|
+
```
|
|
686
|
+
FieldSchema.safeParse({ type: 'text', label: 'L', isSystem: true })
|
|
687
|
+
=> success = false
|
|
688
|
+
=> unrecognized_keys keys=["isSystem"] "Did you mean `isSystem` -> `system`?"
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
Two defects, one misspelling, and they are two different sites.
|
|
692
|
+
|
|
693
|
+
**The read was dead** — the quieter and worse half. `toDesignerField` read `raw.isSystem`
|
|
694
|
+
while a spec-parsed server sends `system`, so the flag was always `undefined`. Nothing went
|
|
695
|
+
red, because the flag is optional and `undefined` is a valid "not a system field". But it is
|
|
696
|
+
load-bearing: `FieldDesigner` refuses to delete a system field and disables its name and
|
|
697
|
+
type inputs, so with the read dead `organization_id`, `created_at` and friends presented as
|
|
698
|
+
ordinary editable, **deletable** business fields.
|
|
699
|
+
|
|
700
|
+
**The write had no emit site at all.** `fromDesignerField` never names `isSystem`; its only
|
|
701
|
+
route out is the verbatim `...carryOver(prev)` spread, so a stored misspelling round-tripped
|
|
702
|
+
back to `PUT /api/v1/meta/object/:name` as a hard 422 `INVALID_METADATA` that blocks every
|
|
703
|
+
later save. The repair is a `RETIRED_FIELD_KEYS` tombstone rather than a renamed line — and
|
|
704
|
+
it is deliberately paired with the read fix, never a substitute for it: stripping alone would
|
|
705
|
+
close the 422 and fossilize the dead detection. The spec spelling `system` is not stripped,
|
|
706
|
+
so a server-injected flag rides through untouched and feeds the read.
|
|
707
|
+
|
|
708
|
+
`app-shell`'s `FieldMetadataPayload` never declared the key, so `toFieldPayload` had nothing
|
|
709
|
+
to fix. The designer's in-memory `DesignerFieldDefinition` keeps `isSystem`: it reaches no
|
|
710
|
+
wire-bound shape and the parity gate classifies it as `uiOnly`.
|
|
711
|
+
- 00c665e: `appDesigner.fieldDesigner.formula` is retired — one row removed from each of the ten
|
|
712
|
+
locale packs plus the designer defaults map, 11 lines, zero readers (objectui#6310).
|
|
713
|
+
|
|
714
|
+
objectui#6043 retired the Field Designer's formula-expression textarea, which was the
|
|
715
|
+
key's only call site (`FieldDesigner.tsx`, the `{ name: 'formula', label:
|
|
716
|
+
t('appDesigner.fieldDesigner.formula') }` field descriptor). The value outlived it in
|
|
717
|
+
eleven places: `DESIGNER_DEFAULT_TRANSLATIONS` in
|
|
718
|
+
`packages/plugin-designer/src/hooks/useDesignerTranslation.ts`, and the `appDesigner >
|
|
719
|
+
fieldDesigner > formula` leaf of `packages/i18n/src/locales/{en,de,es,fr,pt,ru,ja,ko,zh,ar}.ts`.
|
|
720
|
+
|
|
721
|
+
Removed under objectui#4658's evidence standard, re-measured on this branch rather than
|
|
722
|
+
inherited from the card: zero `t()`/`tt()` call sites, no dynamic template head that could
|
|
723
|
+
reach it (`appDesigner.fieldDesigner.typeCategory.` is the namespace's only one), and its
|
|
724
|
+
sole textual occurrence anywhere in the repo was the defaults-map row this change removes
|
|
725
|
+
with it — so the key goes from NEEDS-REVIEW to no footprint at all.
|
|
726
|
+
|
|
727
|
+
The map and all ten packs move in one commit, which is what keeps
|
|
728
|
+
`defaults-maps-mirror-en-pack` green: that gate fails a map row whose key the `en` pack
|
|
729
|
+
lacks, and `all-locales-key-parity` fails a pack left behind.
|
|
730
|
+
|
|
731
|
+
Not touched: `designer.field.formula` (`'Formula (CEL)'`) in
|
|
732
|
+
`packages/app-shell/src/views/metadata-admin/i18n.ts`, a different and live key belonging
|
|
733
|
+
to metadata-admin's `ObjectFieldInspector` — the surface that still authors formula
|
|
734
|
+
expressions.
|
|
735
|
+
|
|
736
|
+
`packages/i18n/src/__tests__/appDesigner-fieldDesigner-formula-retired-6310.test.ts` pins the
|
|
737
|
+
removal by name, following the four prior retirements (objectui#4145, objectui#4392,
|
|
738
|
+
objectui#4730, objectui#5504). Every i18n gate here runs call site → key, so none of them can
|
|
739
|
+
see a dead key come BACK into the packs: the reverse sweep that found this one is report-only
|
|
740
|
+
by design, `all-locales-key-parity` is fully satisfied by ten packs agreeing on a dead key, and
|
|
741
|
+
`check:i18n-drift` only fires when a value changes. Reverse-verified rather than asserted —
|
|
742
|
+
reviving the row in all ten packs turns exactly that one case red, naming each pack, while the
|
|
743
|
+
parity gate and the defaults-map mirror stay green.
|
|
744
|
+
- 73e8c33: The Field Designer builds an object's `fields` map by defining own properties and refuses
|
|
745
|
+
the three field lists a name-keyed map cannot carry (objectui#6489). `MetadataFieldsPage`
|
|
746
|
+
keyed the map by blind assignment — `nextFields[f.name] = fromDesignerField(…)` inside a
|
|
747
|
+
bare `for` loop — which failed silently in three directions, all measured on the installed
|
|
748
|
+
`@objectstack/spec` 17.2.0:
|
|
749
|
+
|
|
750
|
+
- **A field named `__proto__` never reached the wire.** `map['__proto__'] = def` invokes the
|
|
751
|
+
prototype setter instead of creating a key, so the field vanished from the serialised PUT
|
|
752
|
+
body. `__proto__` matches `ObjectSchema.fields`' key rule `/^[a-z_][a-z0-9_]*$/`, so the
|
|
753
|
+
spec stood ready to accept the field the client had thrown away. The map is now built
|
|
754
|
+
through `Object.fromEntries`, which defines an own property.
|
|
755
|
+
- **A nameless field was stored under the literal key `"undefined"`.** Measured:
|
|
756
|
+
`ObjectSchema.safeParse` with `fields: { undefined: … }` returns `success = true`, so the
|
|
757
|
+
document parsed, persisted, and had no reader anywhere. It is now refused before the
|
|
758
|
+
request.
|
|
759
|
+
- **Two fields sharing a name collapsed into one entry.** A designer list carrying two
|
|
760
|
+
`amount` fields PUT a single entry, the later silently replacing the earlier. Also refused
|
|
761
|
+
before the request.
|
|
762
|
+
|
|
763
|
+
Both refusals raise before `client.save`, so a refused list issues no PUT at all, and the
|
|
764
|
+
message lands in the page's existing error surface naming the offending index — the caller
|
|
765
|
+
is fire-and-forget (`void handleFieldsChange(next)`), so throwing past it would show the
|
|
766
|
+
author nothing.
|
|
767
|
+
|
|
768
|
+
This is the plugin-designer port of the refusals objectui#6240 landed in the sibling object
|
|
769
|
+
writer (app-shell's `MetadataService.toFieldsMap`), down to the wording, so the two writers
|
|
770
|
+
of the objectui#5761 parity family cannot drift. `fromDesignerField`'s carry-over semantics
|
|
771
|
+
are untouched.
|
|
772
|
+
- b49f9a1: `MetadataObjectsPage` keys its object-name lookups as own entries, so deleting an object
|
|
773
|
+
named `constructor` (or `__proto__`) from the Object Manager actually deletes it
|
|
774
|
+
(objectui#6522).
|
|
775
|
+
|
|
776
|
+
Both name lookups in the page were plain object literals filled by assignment, and the
|
|
777
|
+
consequential one was a READ. The delete scan asked `!nextByName[name]`, which for an
|
|
778
|
+
object named `constructor` answered out of `Object.prototype` with the `Object` function —
|
|
779
|
+
truthy — so the deletion read as "still present" and `client.reset('object', …)` never
|
|
780
|
+
fired. Not a refusal: the row disappeared from the manager, no error was shown, the save
|
|
781
|
+
reported success, and the object was still there after the next reload. Measured against
|
|
782
|
+
the installed `@objectstack/spec`, `ObjectSchema` pins object names to
|
|
783
|
+
`/^[a-z_][a-z0-9_]*$/` and accepts both `constructor` and `__proto__` — those two are
|
|
784
|
+
exactly the intersection with `Object.prototype`'s own names, so both are storable and
|
|
785
|
+
neither was deletable.
|
|
786
|
+
|
|
787
|
+
The second lookup, one function over, failed on the WRITE instead: `byName[item.name] =
|
|
788
|
+
item` for an object named `__proto__` invoked the prototype setter rather than creating a
|
|
789
|
+
key, so the object never became an own property, never reached the Object Manager at all,
|
|
790
|
+
and left its payload on the lookup's prototype chain for later name lookups to answer out
|
|
791
|
+
of. Both are now `Map`s — neither container is ever serialised, only its values are, so a
|
|
792
|
+
`Map` fits where the sibling `MetadataFieldsPage` fields map (which IS the PUT body) needs
|
|
793
|
+
`Object.fromEntries`.
|
|
794
|
+
|
|
795
|
+
Keying only. Nameless and duplicate entries behave exactly as before: this page writes
|
|
796
|
+
per-object, so the refusal semantics objectui#6489 added to the fields map are a separate
|
|
797
|
+
question and are deliberately not ported here.
|
|
798
|
+
- 3e028c8: One tombstone registry for the designer seam's retired field keys
|
|
799
|
+
(objectui#6527). Three independently maintained `RETIRED_FIELD_KEYS` literals
|
|
800
|
+
— the metadata-admin read door (`object-fields-io.ts`), `MetadataService`'s
|
|
801
|
+
carry-over and `MetadataFieldsPage`'s carry-over — become derivations from a
|
|
802
|
+
single registry in `@object-ui/types` (`RETIRED_FIELD_KEY_TOMBSTONES` +
|
|
803
|
+
`retiredFieldKeysFor(site)`), naming each retired key, the card that retired
|
|
804
|
+
it, and its PER-SITE applicability.
|
|
805
|
+
|
|
806
|
+
Per-site behaviour is unchanged — this is a consolidation, and each site's
|
|
807
|
+
effective strip set is pinned equal to its pre-consolidation literal. The two
|
|
808
|
+
deliberate asymmetries a naive union would have destroyed are now recorded as
|
|
809
|
+
data and pinned:
|
|
810
|
+
|
|
811
|
+
- `formula` stays stripped by the two write-side carry-overs and is NOT
|
|
812
|
+
stripped by the read door — ruled on objectui#6526 (option B): the
|
|
813
|
+
`ObjectFieldInspector` migration path (objectui#6043) stands, and the
|
|
814
|
+
registry test makes that ruling mechanical.
|
|
815
|
+
- `sortOrder` stays a single-site strip at `MetadataService`'s carry-over,
|
|
816
|
+
now explicitly recorded as the registry's one DEFENSIVE entry (objectui#6045
|
|
817
|
+
measured that no shipped writer ever populated a field-level one).
|
|
818
|
+
- c6198c2: **Breaking for authored metadata:** `ComponentInput.label`, `ComponentInput.defaultValue` and
|
|
819
|
+
`ComponentInput.advanced` are RETIRED on both faces (objectui#7493 item ① and objectui#7781;
|
|
820
|
+
maintainer ruling A of 2026-09-06, immediate, no deprecation window; ADR-0049 enforce-or-remove).
|
|
821
|
+
They are the three keys the manifest serializer does not forward, and nothing read them on any
|
|
822
|
+
publication or consumption path.
|
|
823
|
+
|
|
824
|
+
No manifest ever published them, so no consumer could ever have read them. `sdui-parser`'s
|
|
825
|
+
serializer (`packages/sdui-parser/src/index.ts`) forwards exactly seven keys per input — `name`,
|
|
826
|
+
`type`, `of`, `required`, `enum`, `binding`, `description` — so a value authored under any of the three
|
|
827
|
+
never reached `sdui.manifest.json`, the generated JSX `.d.ts`, or a diagnostic; its boundary type
|
|
828
|
+
has no slot for them; the registry's data-source seam reads `name` only; and neither the designer
|
|
829
|
+
nor the app-shell inspectors consult registry `inputs` at all. A structural census over every
|
|
830
|
+
`inputs:` array in the repository (re-measured on this change's merge-base, `name` 951 and `type`
|
|
831
|
+
951 as the controls) counted the writes: `label` 908, `defaultValue` 245, `advanced` 9 — written on
|
|
832
|
+
nearly every registration, read by nothing.
|
|
833
|
+
|
|
834
|
+
FROM → TO, per key — all three **TOMBSTONED, not removed**, because the route was measured on
|
|
835
|
+
the built face before it was chosen: `ComponentInputSchema` is a non-strict `z.object`, and an
|
|
836
|
+
undeclared key parses GREEN and is silently STRIPPED, so a deletion would have swallowed 1,162
|
|
837
|
+
authored values in silence. The tombstone is what makes the refusal loud and by name.
|
|
838
|
+
|
|
839
|
+
- `label?: string` → `label?: never` on the interface, `retirementTombstone()` on the Zod mirror.
|
|
840
|
+
Migration: delete the key. An input is identified by its `name` on every path that reaches it;
|
|
841
|
+
nothing ever rendered a label for it.
|
|
842
|
+
- `defaultValue?: any` → `defaultValue?: never` / `retirementTombstone()`. Migration: delete the
|
|
843
|
+
key. The renderer's own fallback read IS the default; tell the author about it in `description`,
|
|
844
|
+
which IS published. (Tightening the type to `unknown` was ruled out: it closes no error class,
|
|
845
|
+
since nothing reads the value.)
|
|
846
|
+
- `advanced?: boolean` → `advanced?: never` / `retirementTombstone()`. Migration: delete the key.
|
|
847
|
+
No designer surface ever hid an "advanced" input; there is nothing to write instead.
|
|
848
|
+
|
|
849
|
+
The retirement kit: `?: never` on `ComponentInput` (`packages/types/src/base.ts`), so authoring one
|
|
850
|
+
is a `tsc` error at the registration site; `retirementTombstone()` on `ComponentInputSchema`
|
|
851
|
+
(`packages/types/src/zod/base.zod.ts`), so an authored value is REFUSED at parse time with
|
|
852
|
+
`code: 'invalid_type'`, the key named in the issue `path`, and the migration note as the message
|
|
853
|
+
(one string, both channels). Pinned in
|
|
854
|
+
`packages/types/src/__tests__/component-input-retired-keys-7493.test.ts`, which also holds a
|
|
855
|
+
tree-scoped absence census over every `inputs:` array under `packages/**` and `apps/**`.
|
|
856
|
+
|
|
857
|
+
Accept-set change, stated plainly for reviewers: a document that sets any of the three keys on a
|
|
858
|
+
`ComponentInput` used to parse GREEN (the value was then dropped by the serializer) and now parses
|
|
859
|
+
RED. Every in-repo authoring site — 1,199 keys across 110 registration files, the three standalone
|
|
860
|
+
`ComponentInput[]` arrays and the two named input arrays `tsc` found included — is deleted in the same change, as the ruling's split rule
|
|
861
|
+
requires; the `WidgetRegistry` seam no longer copies the widget-manifest values onto the synthesized
|
|
862
|
+
`ComponentInput` (they fed nothing), and the data-source declaration `ELEMENT_DATA_SOURCE_INPUT`
|
|
863
|
+
drops its `label`. The patch entries on the other packages record exactly that: their registrations
|
|
864
|
+
stop authoring inert keys, with no runtime or published-manifest change.
|
|
865
|
+
|
|
866
|
+
The nine test files that read `defaultValue` off a registration were re-pinned against the
|
|
867
|
+
renderer's ACTUAL default (its own fallback read, or the `defaultProps` it ships) instead of the
|
|
868
|
+
declaration that went away; two assertions that only restated the shadow default were dropped with
|
|
869
|
+
the reason on the line.
|
|
870
|
+
|
|
871
|
+
The in-repo zero is what was measured. Whether anything OUTSIDE this repository writes these keys
|
|
872
|
+
is not measurable from here (the objectui#5674 limit); converting such a write from a silent drop
|
|
873
|
+
into a named refusal is exactly what the tombstones buy. `WidgetInput`'s own `label` /
|
|
874
|
+
`defaultValue` / `advanced` (the widget-manifest face) stay declared and writable — nothing has
|
|
875
|
+
ruled on that face; that it now has no reader either is recorded as objectui#7911.
|
|
876
|
+
- 3f4b458: fix(plugin-designer): read a lookup's target under the retired `referenceTo` spelling too
|
|
877
|
+
|
|
878
|
+
`MetadataFieldsPage`'s read door (`toDesignerField`) read the spec spelling
|
|
879
|
+
`reference` and nothing else, while its carry-over strips `referenceTo` from the
|
|
880
|
+
stored definition. A field whose target survives only as the pre-objectui#6041
|
|
881
|
+
`referenceTo` therefore read as target-less, the strip removed the stored value,
|
|
882
|
+
and the field reached the wire as a `lookup` with no target — saving silently at
|
|
883
|
+
`@objectstack/spec` 17.2.0 and answering `422 INVALID_METADATA` at
|
|
884
|
+
`fields.NAME.reference` against 17.3.0, with nothing naming which field.
|
|
885
|
+
|
|
886
|
+
The read door now reads `reference` and falls back to `referenceTo`. That is a
|
|
887
|
+
pure rename: `FieldSchema`'s own alias map renames `referenceTo` onto
|
|
888
|
+
`reference` and both spellings carry one object machine name, so no value
|
|
889
|
+
changes shape on the way through — unlike the `formula` alias, where the rename
|
|
890
|
+
was refused because the two sides carry different value grammars
|
|
891
|
+
(objectui#6043).
|
|
892
|
+
|
|
893
|
+
objectui#7714's guard is untouched and still refuses a relationship field with
|
|
894
|
+
no usable target under either spelling, by name, before the PUT.
|
|
895
|
+
- c5c0e2a: Per-row operation gating for `ObjectGrid`, and the Field Designer stops drawing a
|
|
896
|
+
delete action it refuses to run (objectui#8674).
|
|
897
|
+
|
|
898
|
+
**The defect.** `FieldDesigner`'s `handleDelete` returned early on `field.isSystem` —
|
|
899
|
+
before the confirm dialog — while the affordance was wired at the GRID level
|
|
900
|
+
(`onDelete={readOnly ? undefined : handleDelete}`). `ObjectGrid` takes one grid-level
|
|
901
|
+
`onDelete` and derives `{ update: !!onEdit, delete: !!onDelete }`, so the row action
|
|
902
|
+
was drawn for every row: clicking delete on a system field produced no dialog, no
|
|
903
|
+
toast and no console message. `readOnly` was honest in the same component (the
|
|
904
|
+
callback is withheld, so no button is drawn); `isSystem` drew the button and dropped
|
|
905
|
+
the click. The two states differed in the code and did not differ on screen.
|
|
906
|
+
|
|
907
|
+
**`@object-ui/plugin-grid` — new, additive, opt-in.** `ObjectGridComponentProps`
|
|
908
|
+
gains `rowOperations?: (record) => { update?: boolean; delete?: boolean }`, with the
|
|
909
|
+
new `ObjectGridRowOperations` type exported from the package root. It speaks the same
|
|
910
|
+
`update` / `delete` vocabulary the authored `operations` block speaks, resolved for
|
|
911
|
+
one row instead of for the grid, and it is an INTERSECTION like every layer around it
|
|
912
|
+
(the ADR-0103 lifecycle bucket, the object's `userActions`, the server's effective API
|
|
913
|
+
operations, the principal's own grant, the record-level explain verdict): `false`
|
|
914
|
+
withholds, and nothing it returns can re-open what those closed. A caller that passes
|
|
915
|
+
no predicate renders exactly what it rendered before — measured, not asserted: the
|
|
916
|
+
rendered DOM of a no-predicate grid is byte-identical across this change, and every
|
|
917
|
+
other `<ObjectGrid>` call site in the repository is such a caller.
|
|
918
|
+
|
|
919
|
+
It is a function value, so no metadata document can hold it and none is invited to:
|
|
920
|
+
like the nine `on*` callbacks it sits beside, it is a renderer prop and not an
|
|
921
|
+
authorable key.
|
|
922
|
+
|
|
923
|
+
**`@object-ui/plugin-designer` — the first caller, and the user-visible fix.** The
|
|
924
|
+
Field Designer passes the predicate, so a system field's row no longer offers Delete
|
|
925
|
+
at all. Edit is untouched: the drawer still opens for a system field, with `name` and
|
|
926
|
+
`type` disabled exactly as before — `isSystem` has never meant "this row is
|
|
927
|
+
untouchable". The guard inside `handleDelete` stays as a second line for direct
|
|
928
|
+
callers of the prop value, but it is no longer the only refusal.
|
|
929
|
+
- db0e9d3: fix(plugin-designer): the dashboard editor's type picker no longer turns a multi-measure widget into a type the widget door refuses (objectui#8894)
|
|
930
|
+
|
|
931
|
+
`@objectstack/spec` 17.5.0 refuses a second measure on a metric-family widget. The
|
|
932
|
+
dashboard editor authors no measures, but a dashboard it opens carries them, and its
|
|
933
|
+
type picker could turn a stored `bar` over two measures into a `metric` that publish
|
|
934
|
+
then refused — a refusal `DashboardDesignPage`'s save swallows. The picker now asks
|
|
935
|
+
objectui's `DashboardWidgetSchema` (which re-attaches the spec's own check) before it
|
|
936
|
+
offers a type: a type the door refuses this widget's measures under is a disabled
|
|
937
|
+
option, and a change to it writes nothing. A stored widget the door already refuses
|
|
938
|
+
keeps its type and shows the door's own message under the picker. A widget with one
|
|
939
|
+
measure, or none, is offered every type as before.
|
|
940
|
+
- a5abc0c: Correct the user-visible refusal banner that told authors a blank relationship
|
|
941
|
+
target would be accepted by the installed `@objectstack/spec` (objectui#8897).
|
|
942
|
+
|
|
943
|
+
`MetadataService` and `MetadataFieldsPage` both refuse a `lookup` /
|
|
944
|
+
`master_detail` field whose `reference` trims to empty, and both explained the
|
|
945
|
+
refusal by saying the spec **accepts** the value, "so the PUT would succeed and
|
|
946
|
+
the failure would surface later and further away". That was measured and true at
|
|
947
|
+
`@objectstack/spec` 17.3.0. The pin is 17.4.0 (objectui#8772), which carries
|
|
948
|
+
objectstack#16920 — the emptiness test now applies to the TRIMMED value — so
|
|
949
|
+
against the artifact this repo actually installs, the PUT would **not** succeed.
|
|
950
|
+
The product was asserting to authors something the installed artifact
|
|
951
|
+
contradicts.
|
|
952
|
+
|
|
953
|
+
Measured on the installed 17.4.0 artifact, with controls in the same run:
|
|
954
|
+
|
|
955
|
+
FieldSchema.safeParse({ type:'lookup', label:'L', reference:' ' })
|
|
956
|
+
=> success = false, custom at ["reference"]
|
|
957
|
+
ObjectSchema.safeParse({ …, fields:{ rel:{ …, reference:' ' } } })
|
|
958
|
+
=> success = false, custom at ["fields","rel","reference"]
|
|
959
|
+
controls: reference:'account' and reference:' account ' both ACCEPTED
|
|
960
|
+
|
|
961
|
+
The banner now names the trim the contract applies — which is what still tells a
|
|
962
|
+
blank target apart from an empty one now that both are refused — and promises
|
|
963
|
+
the 422 it previously had to withhold. The verbatim pin on that sentence moved
|
|
964
|
+
with it, in the same commit.
|
|
965
|
+
|
|
966
|
+
⛔ **The guard's predicate is byte-identical.** objectui#8621 ruled it stays for
|
|
967
|
+
its own reason: it refuses at EDITOR time, before the PUT, naming the field while
|
|
968
|
+
it is still on screen. Only its stated *reason* was wrong.
|
|
969
|
+
|
|
970
|
+
⛔ Statements about **when** the contract changed ("17.3.0 made `reference` a
|
|
971
|
+
hard requirement", "at 17.2.0 the requirement was prose only") are permanently
|
|
972
|
+
true and were not touched; only statements about **what is installed** were.
|
|
973
|
+
- 7b2fe4d: The Object Manager stops drawing a delete action it refuses to run
|
|
974
|
+
(objectui#9219) — objectui#8674's defect, one component over.
|
|
975
|
+
|
|
976
|
+
**The defect.** `ObjectManager`'s `handleDelete` returned early on
|
|
977
|
+
`obj.isSystem`, before the confirm dialog, while the affordance was wired at the
|
|
978
|
+
GRID level (`onDelete={readOnly ? undefined : handleDelete}`) — one callback,
|
|
979
|
+
drawn identically for every row. So a system-object row carried a delete entry
|
|
980
|
+
whose click produced no dialog, no toast and no console message. That row is on
|
|
981
|
+
screen by DEFAULT: `showSystemObjects` defaults to true and the component
|
|
982
|
+
filters system objects out only when it is false. `readOnly` was honest in the
|
|
983
|
+
same component (the callback is withheld, so nothing is drawn); `isSystem` drew
|
|
984
|
+
the entry and swallowed the click. The two states differed in the code and did
|
|
985
|
+
not differ on screen.
|
|
986
|
+
|
|
987
|
+
**The fix.** `ObjectManager` now passes `rowOperations`, the per-row narrowing
|
|
988
|
+
objectui#8674 added to `ObjectGrid`, answering `{ delete: !!obj &&
|
|
989
|
+
!obj.isSystem }` for each row — the same three lines the Field Designer got.
|
|
990
|
+
A system object's row no longer offers Delete at all; an unresolvable row is
|
|
991
|
+
withheld too, because `handleDelete` returns early on a missed lookup and
|
|
992
|
+
offering delete there would reproduce this very defect.
|
|
993
|
+
|
|
994
|
+
Edit is untouched. `isSystem` disables the `name` input inside the edit form and
|
|
995
|
+
has never meant "this row is untouchable", so the modal still opens for a system
|
|
996
|
+
object exactly as before. The guard inside `handleDelete` also stays, as a
|
|
997
|
+
second line for anyone invoking that published prop value directly — it is just
|
|
998
|
+
no longer the only refusal.
|
|
999
|
+
|
|
1000
|
+
**Why `patch`.** No API surface moves: no prop, type, export or signature is
|
|
1001
|
+
added, changed or removed, and `rowOperations` is a prop `ObjectGrid` already
|
|
1002
|
+
published. The only user-visible change is that an entry which never did
|
|
1003
|
+
anything — the click was dropped before the dialog — is no longer drawn, so
|
|
1004
|
+
nothing a caller could have depended on stops working. This is the level the
|
|
1005
|
+
merged sibling repair declared for the same defect in the same package.
|
|
1006
|
+
- a78cd37: Dates and numbers across the console and the plugins format in the session's
|
|
1007
|
+
display locale instead of the machine's (objectui#9909).
|
|
1008
|
+
|
|
1009
|
+
Every one of these faces handed `Intl` — directly, or through a formatter called
|
|
1010
|
+
without one — either no locale tag or an explicit `undefined`, which is not "the
|
|
1011
|
+
user's locale": it is the locale of the machine the browser runs on, which is
|
|
1012
|
+
neither of this repository's two locale channels.
|
|
1013
|
+
A German or Spanish session therefore read, beside a translated label, a date or
|
|
1014
|
+
an amount grouped and decimal-marked the machine's way — and an amount with
|
|
1015
|
+
inverted separators does not read as unformatted, it reads as a different
|
|
1016
|
+
number. They now go through `useDisplayLocale()` (tenant regional default, then
|
|
1017
|
+
the active UI language, then `'en'`), and a plain helper takes that tag from its
|
|
1018
|
+
caller. The surfaces:
|
|
1019
|
+
|
|
1020
|
+
- **`@object-ui/fields`** — `GridField`'s numeric and currency cells (list mode
|
|
1021
|
+
and computed columns) and both total cells. The same cell helper's date branch
|
|
1022
|
+
already used the display locale, so a single grid row read two conventions at
|
|
1023
|
+
once.
|
|
1024
|
+
- **`@object-ui/plugin-charts`** — ISO-date x-axis ticks, compact y-axis ticks,
|
|
1025
|
+
the single-value face, spec `format` strings and the tooltip value.
|
|
1026
|
+
- **`@object-ui/app-shell`** — the organization invitations, members and
|
|
1027
|
+
accept-invitation dates; marketplace version dates; the AI conversation row's
|
|
1028
|
+
older-than-a-week date and its tooltip; the build-debug token count; the
|
|
1029
|
+
record approvals timeline; and the metadata-admin audit, history, external
|
|
1030
|
+
datasource snapshot, schema-browser row estimate, flow-run start and job
|
|
1031
|
+
next-fire faces. The audit, history and flow-run panels format these in the
|
|
1032
|
+
DISPLAY locale, not in the `locale` prop they take for their UI strings
|
|
1033
|
+
(`AuditPanel` defaults that prop to `'en-US'`; `HistoryPanel` and
|
|
1034
|
+
`FlowRunsPanel` leave it optional).
|
|
1035
|
+
- **`@object-ui/console`** — the approvals inbox's timestamp tooltips, amounts
|
|
1036
|
+
and payload summary; the audit log's timestamp column; the flow runs table and
|
|
1037
|
+
its run detail.
|
|
1038
|
+
- **`@object-ui/components`** — the export dialog's record counts and the debug
|
|
1039
|
+
panel's event times.
|
|
1040
|
+
- **`@object-ui/plugin-form`** — the analytics submission count, the
|
|
1041
|
+
master-detail subtotal / tax / total stack and the edit-conflict dialog's
|
|
1042
|
+
"their save" time.
|
|
1043
|
+
- **`@object-ui/plugin-chatbot`** — the approvals inbox's past-30-days date and
|
|
1044
|
+
the times stamped on local-mode chat messages (the user's and the
|
|
1045
|
+
auto-response).
|
|
1046
|
+
- **`@object-ui/plugin-dashboard`** — the record-count badge, and the currency
|
|
1047
|
+
and date-format branches of `renderFieldValue`, which was handed the display
|
|
1048
|
+
locale and spent it only on its percent branch.
|
|
1049
|
+
- **`@object-ui/plugin-grid`** — the record-detail panel's inferred currency
|
|
1050
|
+
value and the mobile card's amount line, siblings of date cells already on the
|
|
1051
|
+
display locale.
|
|
1052
|
+
- **`@object-ui/plugin-designer`** — `VersionHistory`'s version times.
|
|
1053
|
+
|
|
1054
|
+
A host that mounts one of the components that newly read the display locale with
|
|
1055
|
+
NO `I18nProvider` now gets react-i18next's once-per-module `NO_I18NEXT_INSTANCE`
|
|
1056
|
+
notice in the console on the first such mount; the faces still render, in the
|
|
1057
|
+
channel's `'en'` last resort, and mounting an `I18nProvider` (as the console
|
|
1058
|
+
does) avoids the notice.
|
|
1059
|
+
|
|
1060
|
+
**Additive API** (nothing that compiled before stops compiling):
|
|
1061
|
+
|
|
1062
|
+
- `@object-ui/types`: `ValidationContext` gains an optional `locale`. At this
|
|
1063
|
+
change, the `@object-ui/core` validation engine prints the `date_min` /
|
|
1064
|
+
`date_max` bound in it; omitted, `Intl` follows the runtime default, as
|
|
1065
|
+
`formatDisplayNumber` already declares for a caller with no locale in hand.
|
|
1066
|
+
|
|
1067
|
+
⚠️ **Dated note, 2026-09-25 — that engine (`ValidationEngine`) is removed from
|
|
1068
|
+
`@object-ui/core` by a later change; `ValidationContext.locale` stays declared in
|
|
1069
|
+
`@object-ui/types`, and at that change nothing in `@object-ui/core` reads it —
|
|
1070
|
+
objectui#7659.**
|
|
1071
|
+
|
|
1072
|
+
⚠️ **Dated note, 2026-09-27 — `ValidationContext` itself is removed from
|
|
1073
|
+
`@object-ui/types` by a later change, with the rest of the Phase 3.5
|
|
1074
|
+
validation types it belonged to, so the `locale` member this entry adds no
|
|
1075
|
+
longer exists — objectui#10719.**
|
|
1076
|
+
- `@object-ui/plugin-report`: `exportReport`, `exportAsHTML` and `exportAsPDF`
|
|
1077
|
+
take a trailing optional `locale` for the exported file's "Generated:" time,
|
|
1078
|
+
and `LiveExportOptions` gains an optional `locale` that `exportWithLiveData`
|
|
1079
|
+
forwards. Omitted, the time uses the display channel's own last resort
|
|
1080
|
+
(`'en'`), never the machine's locale. `ReportViewer` passes the session's
|
|
1081
|
+
display locale. The locale is deliberately NOT a `ReportExportConfig` member:
|
|
1082
|
+
that type is authored report metadata, and a display locale belongs to the
|
|
1083
|
+
session.
|
|
1084
|
+
|
|
1085
|
+
**One census, repository-wide.** `plugin-detail`'s machine-locale census pin
|
|
1086
|
+
(objectui#9786) is now a single test, `machineLocaleCensus-9909.test.ts` in
|
|
1087
|
+
`@object-ui/i18n`, covering every workspace package whose manifest depends on
|
|
1088
|
+
`@object-ui/i18n`. It refuses any call site that passes nothing, `undefined`,
|
|
1089
|
+
the `'default'` pseudo-tag (a subtag no locale data answers, so `Intl` resolves
|
|
1090
|
+
it to the machine's locale) or a hard-coded tag, unless the site is declared
|
|
1091
|
+
with its reason — for example the `catch` fallback for a tag `Intl` itself
|
|
1092
|
+
rejected, or an ISO formatter feeding `<input type="date">`. Each declared site
|
|
1093
|
+
is counted exactly, so deleting one without its entry is refused too. The
|
|
1094
|
+
per-package pin it replaces is deleted. The runtime tripwire that observes the
|
|
1095
|
+
argument each locale-taking call (`Intl` constructors, `Date` and `Number`
|
|
1096
|
+
`toLocale*`) actually receives moved into the private `@object-ui/test-support`
|
|
1097
|
+
package, and every surface above is pinned with it: the same data under two
|
|
1098
|
+
declared locales must render differently, NO locale-taking call may receive the
|
|
1099
|
+
machine's locale (nothing, `undefined` or `'default'`), and the surface's own
|
|
1100
|
+
calls must receive the declared tag. A call carrying another declared tag, such
|
|
1101
|
+
as the `'en'` of the session's UI language, is tolerated by design: only the
|
|
1102
|
+
machine's locale is the defect.
|
|
1103
|
+
- 4db5989: A widget title stored as an inline per-locale map is editable again in both dashboard
|
|
1104
|
+
authoring surfaces, and a save writes back only the active locale's entry
|
|
1105
|
+
(objectui#5428).
|
|
1106
|
+
|
|
1107
|
+
`@objectstack/spec` widened `I18nLabel` from `string` to `string | Record` at
|
|
1108
|
+
17.0.0-rc.6, so a stored widget title may be an inline per-locale map while both
|
|
1109
|
+
authoring panels edit a title in ONE single-line input. Writing the input's value back
|
|
1110
|
+
as the whole value would collapse every other locale on the first keystroke, so both
|
|
1111
|
+
surfaces took the same conservative branch: show a map-valued title resolved, and make
|
|
1112
|
+
it READ-ONLY.
|
|
1113
|
+
|
|
1114
|
+
That branch could not lose data, but it rested on a premise the spec had already
|
|
1115
|
+
invalidated — "nothing can reach this path from stored metadata yet, `I18nLabel` was
|
|
1116
|
+
plain `string` through rc.5" — stated sixty lines below a comment in the same file
|
|
1117
|
+
documenting the rc.6 widening that makes a stored map reachable. Both could not hold.
|
|
1118
|
+
The pinned spec is 17.0.0. What the read-only branch did in practice from rc.6 onward
|
|
1119
|
+
was not protect an unreachable path: it denied an author the ability to edit a widget
|
|
1120
|
+
title in their own locale.
|
|
1121
|
+
|
|
1122
|
+
objectui#5301's maintainer ruling settled the write rule for the sibling surface — a
|
|
1123
|
+
save replaces only the active locale's entry and preserves the others — and
|
|
1124
|
+
`@object-ui/i18n` ships it as `setLocalized`, co-located with `pickLocalized` because
|
|
1125
|
+
the read and the write have to agree. Both panels now adopt it:
|
|
1126
|
+
|
|
1127
|
+
- `@object-ui/plugin-designer`'s `DashboardEditor` widget property panel;
|
|
1128
|
+
- `@object-ui/app-shell`'s `DashboardWidgetInspector` in metadata-admin.
|
|
1129
|
+
|
|
1130
|
+
A plain-string title keeps saving as a plain string, so the common path is unchanged.
|
|
1131
|
+
An edit made in a locale the stored map does not carry ADDS an entry under that locale
|
|
1132
|
+
rather than overwriting the entry the display fell back to.
|
|
1133
|
+
|
|
1134
|
+
The pins are preservation pins, not "the input is editable" pins: at both surfaces a
|
|
1135
|
+
keystroke on a map-valued title must leave every other locale's entry byte-identical.
|
|
1136
|
+
Reverse-verified by mutating each write back to the flattening form and confirming those
|
|
1137
|
+
assertions go red at both surfaces.
|
|
1138
|
+
|
|
1139
|
+
Not a multi-locale editor: an author still reaches only the entry for the locale they
|
|
1140
|
+
are in. Authoring every locale from one panel remains an open product question. The
|
|
1141
|
+
stale deferrals both comments carried pointed at objectui#4163, which closed as
|
|
1142
|
+
completed on 2026-08-15 while the placeholders were still in the tree; they are replaced
|
|
1143
|
+
with the rule that is actually in force rather than re-pointed at another tracker.
|
|
1144
|
+
- f7e34ca: Close the dashboard widget `type` vocabulary, and admit `metric-card` as objectui's own component extension.
|
|
1145
|
+
|
|
1146
|
+
`DashboardWidgetSchema.type` was `string` on the TypeScript interface and `z.string()` in the Zod twin — an unbounded hatch. A typo'd family, a chart type the spec retired, and a component type nothing registers all type-checked and validated, surfacing only as the renderer's red `OBJUI-001` panel at runtime.
|
|
1147
|
+
|
|
1148
|
+
It is now the CLOSED `DashboardWidgetTypeName` / `DashboardWidgetTypeSchema`: the spec's own `ChartTypeSchema` families **by reference**, plus two named, closed objectui extension sets — `DASHBOARD_WIDGET_TYPE_EXTENSIONS` (`list`, `custom`: objectui-only widget families) and `DASHBOARD_COMPONENT_WIDGET_TYPES` (`metric-card`: an objectui SDUI **component** type the widget slot holds directly, per the maintainer ruling of 2026-08-14 — objectui's own component enum, explicitly not the spec widget enum).
|
|
1149
|
+
|
|
1150
|
+
Three drifts the closure surfaced and this change fixes: the dashboard designer's palette offered `grid`, which is not a widget family in either contract and was refused at publish; the metadata-admin widget inspector and the designer both wrote an unvalidated `string` from their select boxes; and a `@object-ui/types` fixture pinned `bar-chart`, a `plugin-charts` component type, on a dataset-bound widget that could never render as one.
|
|
1151
|
+
|
|
1152
|
+
⚠️ **Dated note, 2026-10-02 — `metric-card` is no widget type — objectui#11483.** At this change, `DashboardWidgetTypeName` / `DashboardWidgetTypeSchema` were the spec's families plus two objectui sets, `DASHBOARD_WIDGET_TYPE_EXTENSIONS` and `DASHBOARD_COMPONENT_WIDGET_TYPES`; now they are the spec's families plus `DASHBOARD_WIDGET_TYPE_EXTENSIONS` only. A `metric-card` in the widget slot is read by the slot's component arm alone, which requires its `value`. `DASHBOARD_COMPONENT_WIDGET_TYPES` still lists `metric-card` as that arm's `type`, and `DashboardWidgetSchema['type']` on the TypeScript face still reads it. `.changeset/11483-metric-card-needs-value.md` states what ships. The rest of this entry is kept as the reading of this change.
|
|
1153
|
+
|
|
1154
|
+
⚠️ **Dated note, 2026-10-03 — the TypeScript widget arm no longer reads `metric-card` — objectui#11514.** At the 2026-10-02 note above, `DashboardWidgetSchema['type']` on the TypeScript face still read `metric-card`, because that interface was the read type of every `widgets[]` entry. Now it is `DashboardWidgetTypeName` alone: an entry is read by the slot's element type, and only the component arm names `metric-card`. `.changeset/11514-types-widget-arm-type.md` states what ships. The rest of this entry is kept as the reading of this change.
|
|
1155
|
+
- fb336df: Move `lucide-react` from `^1.31.0` to `^1.43.0` in every package that declares it, and
|
|
1156
|
+
repair what the jump breaks, so icons resolved from a STRING keep drawing a glyph.
|
|
1157
|
+
|
|
1158
|
+
Measured once against the installed 1.43.0 artifact when this change was made; nothing in
|
|
1159
|
+
the repository re-derives these readings. Across the jump lucide removes no runtime export,
|
|
1160
|
+
no public type name and no `lucide-react/dynamic.mjs` name, and every name this repository
|
|
1161
|
+
imports from `lucide-react` resolves. Exactly one key leaves the runtime `icons` record:
|
|
1162
|
+
`Trash2`, retired in favour of `trash`.
|
|
1163
|
+
|
|
1164
|
+
What a user sees change:
|
|
1165
|
+
|
|
1166
|
+
- Icons the lazy icon seam draws (`resolveIcon`, objectui#9251) get their path data again.
|
|
1167
|
+
lucide 1.43.0 icon modules export their path data inside `__iconData` and no longer
|
|
1168
|
+
export `__iconNode`; the seam now reads both. Reading only `__iconNode` against 1.43.0
|
|
1169
|
+
leaves every such glyph an empty box, with nothing thrown or logged.
|
|
1170
|
+
- `DetailView`'s delete action and three schema-catalog examples spell their icon
|
|
1171
|
+
`trash`, not `trash-2`, so they keep resolving. The glyph is unchanged: 1.43.0's `trash`
|
|
1172
|
+
path data is byte-identical to the `trash-2` path data of 1.31.0 and 1.35.0. Anything
|
|
1173
|
+
that already authored `trash` now draws that same artwork, because lucide moved it under
|
|
1174
|
+
the `trash` name; a few other glyphs were also redrawn upstream.
|
|
1175
|
+
- Icons imported as COMPONENTS carry lucide 1.43.0's own classes: one class per declared
|
|
1176
|
+
alias (a spinner renders `class="lucide lucide-loader-circle lucide-loader-2 ..."`), and
|
|
1177
|
+
no longer the class lucide used to derive from the PascalCase key where that differs
|
|
1178
|
+
(`ArrowDown01` no longer carries `lucide-arrow-down01`). The canonical
|
|
1179
|
+
`lucide-<icon name>` class is still there, so a `.lucide-loader-circle` selector still
|
|
1180
|
+
matches.
|
|
1181
|
+
- Icons resolved from a STRING through the seam keep the classes they had: `lucide`, the
|
|
1182
|
+
canonical `lucide-<icon name>` class and the key-derived class. They do not carry
|
|
1183
|
+
lucide's per-alias classes. That is a maintainer ruling (objectui#8941, option C): the
|
|
1184
|
+
alias list lives only inside each lazily loaded icon module, and it was not moved into
|
|
1185
|
+
the eager name list. A selector that targets an alias class matches a component-imported
|
|
1186
|
+
icon and not a string-resolved one. This also dates the example in the objectui#9251
|
|
1187
|
+
entry: `trash-2` no longer resolves as a string, so no seam-drawn glyph carries
|
|
1188
|
+
`lucide-trash2 lucide-trash-2`; a digit-bearing name that still resolves, such as
|
|
1189
|
+
`arrow-down-0-1`, carries `lucide-arrow-down01 lucide-arrow-down-0-1`.
|
|
1190
|
+
- 93127bd: Keep a relationship target stored only as the retired `referenceTo` spelling (objectui#8896)
|
|
1191
|
+
|
|
1192
|
+
Two field-IO sites deleted the retired `referenceTo` key without keeping its
|
|
1193
|
+
value, so an object whose lookup or master-detail target survived only under the
|
|
1194
|
+
pre-objectui#6041 spelling lost the target on the way through:
|
|
1195
|
+
|
|
1196
|
+
- The Field Designer's carried-through half (fields whose stored type the
|
|
1197
|
+
designer cannot author, `7dc31bb8d`) re-emits the stored document verbatim
|
|
1198
|
+
with no read door in front of it. The strip took the target and the relationship
|
|
1199
|
+
guard then refused the whole object's save — including a save the author
|
|
1200
|
+
triggered by editing an entirely different field, on a page that renders the
|
|
1201
|
+
offending field read-only, so its "Pick the target object" advice named a
|
|
1202
|
+
control that does not exist there.
|
|
1203
|
+
- The object designer's single read door for `draft.fields` deleted the target on
|
|
1204
|
+
load, leaving the target editor empty and committing the loss on the next save.
|
|
1205
|
+
|
|
1206
|
+
Both sites now lift the value onto the spec spelling `reference` before dropping
|
|
1207
|
+
the retired key. The retired key still never reaches the wire, a live `reference`
|
|
1208
|
+
is never overwritten by a stale legacy value, and a field with no usable target
|
|
1209
|
+
under either spelling is still refused.
|
|
1210
|
+
- Updated dependencies [7b10bef]
|
|
1211
|
+
- Updated dependencies [97abedc]
|
|
1212
|
+
- Updated dependencies [b46c58f]
|
|
1213
|
+
- Updated dependencies [a507334]
|
|
1214
|
+
- Updated dependencies [ad694ac]
|
|
1215
|
+
- Updated dependencies [6f96fca]
|
|
1216
|
+
- Updated dependencies [afb2284]
|
|
1217
|
+
- Updated dependencies [3759c56]
|
|
1218
|
+
- Updated dependencies [cd7b728]
|
|
1219
|
+
- Updated dependencies [3ac2de8]
|
|
1220
|
+
- Updated dependencies [0aacecc]
|
|
1221
|
+
- Updated dependencies [63f4f92]
|
|
1222
|
+
- Updated dependencies [777fca2]
|
|
1223
|
+
- Updated dependencies [c131d9e]
|
|
1224
|
+
- Updated dependencies [5f00ff4]
|
|
1225
|
+
- Updated dependencies [c9e073a]
|
|
1226
|
+
- Updated dependencies [142fdfd]
|
|
1227
|
+
- Updated dependencies [7b395d8]
|
|
1228
|
+
- Updated dependencies [185079b]
|
|
1229
|
+
- Updated dependencies [0879812]
|
|
1230
|
+
- Updated dependencies [8cedb0d]
|
|
1231
|
+
- Updated dependencies [162621b]
|
|
1232
|
+
- Updated dependencies [e026e15]
|
|
1233
|
+
- Updated dependencies [4c6f549]
|
|
1234
|
+
- Updated dependencies [80c5412]
|
|
1235
|
+
- Updated dependencies [6cc910b]
|
|
1236
|
+
- Updated dependencies [061f5e8]
|
|
1237
|
+
- Updated dependencies [2dd4d3f]
|
|
1238
|
+
- Updated dependencies [b809375]
|
|
1239
|
+
- Updated dependencies [6099dd8]
|
|
1240
|
+
- Updated dependencies [e686f4d]
|
|
1241
|
+
- Updated dependencies [a04b06d]
|
|
1242
|
+
- Updated dependencies [4ab4f1b]
|
|
1243
|
+
- Updated dependencies [fa5fbd9]
|
|
1244
|
+
- Updated dependencies [d6a1a80]
|
|
1245
|
+
- Updated dependencies [88a4ef6]
|
|
1246
|
+
- Updated dependencies [b57107d]
|
|
1247
|
+
- Updated dependencies [e3ea4f9]
|
|
1248
|
+
- Updated dependencies [9ec8ceb]
|
|
1249
|
+
- Updated dependencies [0651e7a]
|
|
1250
|
+
- Updated dependencies [bb5d4ee]
|
|
1251
|
+
- Updated dependencies [dc666f7]
|
|
1252
|
+
- Updated dependencies [3335767]
|
|
1253
|
+
- Updated dependencies [8b1f066]
|
|
1254
|
+
- Updated dependencies [af243c1]
|
|
1255
|
+
- Updated dependencies [d5cb261]
|
|
1256
|
+
- Updated dependencies [cff4b77]
|
|
1257
|
+
- Updated dependencies [961ceaa]
|
|
1258
|
+
- Updated dependencies [f3f4e4c]
|
|
1259
|
+
- Updated dependencies [a05c350]
|
|
1260
|
+
- Updated dependencies [1dbb993]
|
|
1261
|
+
- Updated dependencies [2b5f509]
|
|
1262
|
+
- Updated dependencies [808f339]
|
|
1263
|
+
- Updated dependencies [6cf5999]
|
|
1264
|
+
- Updated dependencies [274e14a]
|
|
1265
|
+
- Updated dependencies [8c10f4f]
|
|
1266
|
+
- Updated dependencies [90dac98]
|
|
1267
|
+
- Updated dependencies [6096f20]
|
|
1268
|
+
- Updated dependencies [544aca2]
|
|
1269
|
+
- Updated dependencies [ea02938]
|
|
1270
|
+
- Updated dependencies [a14fb23]
|
|
1271
|
+
- Updated dependencies [ae98f1d]
|
|
1272
|
+
- Updated dependencies [f98eddf]
|
|
1273
|
+
- Updated dependencies [ce6bd99]
|
|
1274
|
+
- Updated dependencies [a5b08c9]
|
|
1275
|
+
- Updated dependencies [86982ac]
|
|
1276
|
+
- Updated dependencies [cdefa2a]
|
|
1277
|
+
- Updated dependencies [c3025ea]
|
|
1278
|
+
- Updated dependencies [0961d5e]
|
|
1279
|
+
- Updated dependencies [6276478]
|
|
1280
|
+
- Updated dependencies [5e67837]
|
|
1281
|
+
- Updated dependencies [ff14e29]
|
|
1282
|
+
- Updated dependencies [9b28151]
|
|
1283
|
+
- Updated dependencies [64563a9]
|
|
1284
|
+
- Updated dependencies [1a5003f]
|
|
1285
|
+
- Updated dependencies [09ab32b]
|
|
1286
|
+
- Updated dependencies [8acc51b]
|
|
1287
|
+
- Updated dependencies [ea9d17f]
|
|
1288
|
+
- Updated dependencies [cc139d8]
|
|
1289
|
+
- Updated dependencies [45362a3]
|
|
1290
|
+
- Updated dependencies [2a943bf]
|
|
1291
|
+
- Updated dependencies [93a689d]
|
|
1292
|
+
- Updated dependencies [4357a27]
|
|
1293
|
+
- Updated dependencies [e5f4343]
|
|
1294
|
+
- Updated dependencies [3261e64]
|
|
1295
|
+
- Updated dependencies [f5178a2]
|
|
1296
|
+
- Updated dependencies [2ad3671]
|
|
1297
|
+
- Updated dependencies [8740e86]
|
|
1298
|
+
- Updated dependencies [6ea68e6]
|
|
1299
|
+
- Updated dependencies [d22b37b]
|
|
1300
|
+
- Updated dependencies [1daf477]
|
|
1301
|
+
- Updated dependencies [3d614ea]
|
|
1302
|
+
- Updated dependencies [6c2f3c5]
|
|
1303
|
+
- Updated dependencies [fb13e85]
|
|
1304
|
+
- Updated dependencies [c2d8659]
|
|
1305
|
+
- Updated dependencies [e0f8202]
|
|
1306
|
+
- Updated dependencies [cc07476]
|
|
1307
|
+
- Updated dependencies [f99f9cd]
|
|
1308
|
+
- Updated dependencies [ac2d6f1]
|
|
1309
|
+
- Updated dependencies [4a3d500]
|
|
1310
|
+
- Updated dependencies [9fbbb17]
|
|
1311
|
+
- Updated dependencies [c3a26cc]
|
|
1312
|
+
- Updated dependencies [a66e58e]
|
|
1313
|
+
- Updated dependencies [d89492c]
|
|
1314
|
+
- Updated dependencies [9a5f998]
|
|
1315
|
+
- Updated dependencies [0c3f70a]
|
|
1316
|
+
- Updated dependencies [9327397]
|
|
1317
|
+
- Updated dependencies [17cc3a3]
|
|
1318
|
+
- Updated dependencies [41dcbd5]
|
|
1319
|
+
- Updated dependencies [02e6d36]
|
|
1320
|
+
- Updated dependencies [4758b33]
|
|
1321
|
+
- Updated dependencies [4758b33]
|
|
1322
|
+
- Updated dependencies [5c61e52]
|
|
1323
|
+
- Updated dependencies [f905090]
|
|
1324
|
+
- Updated dependencies [9c78ebe]
|
|
1325
|
+
- Updated dependencies [9c78ebe]
|
|
1326
|
+
- Updated dependencies [12809a5]
|
|
1327
|
+
- Updated dependencies [9c78ebe]
|
|
1328
|
+
- Updated dependencies [12809a5]
|
|
1329
|
+
- Updated dependencies [1ea21c4]
|
|
1330
|
+
- Updated dependencies [7afc81d]
|
|
1331
|
+
- Updated dependencies [f9c06ef]
|
|
1332
|
+
- Updated dependencies [ee6f6c6]
|
|
1333
|
+
- Updated dependencies [b526480]
|
|
1334
|
+
- Updated dependencies [5ad3b88]
|
|
1335
|
+
- Updated dependencies [be0ad00]
|
|
1336
|
+
- Updated dependencies [f9d772b]
|
|
1337
|
+
- Updated dependencies [bf14b64]
|
|
1338
|
+
- Updated dependencies [4345558]
|
|
1339
|
+
- Updated dependencies [704e05b]
|
|
1340
|
+
- Updated dependencies [97b6c21]
|
|
1341
|
+
- Updated dependencies [c58b8e4]
|
|
1342
|
+
- Updated dependencies [26ca2ad]
|
|
1343
|
+
- Updated dependencies [cf00ea8]
|
|
1344
|
+
- Updated dependencies [41ae65b]
|
|
1345
|
+
- Updated dependencies [baac95a]
|
|
1346
|
+
- Updated dependencies [0896838]
|
|
1347
|
+
- Updated dependencies [13220af]
|
|
1348
|
+
- Updated dependencies [29b45f6]
|
|
1349
|
+
- Updated dependencies [39b8d51]
|
|
1350
|
+
- Updated dependencies [17b323e]
|
|
1351
|
+
- Updated dependencies [b956e69]
|
|
1352
|
+
- Updated dependencies [f812f37]
|
|
1353
|
+
- Updated dependencies [b32e7de]
|
|
1354
|
+
- Updated dependencies [33e58d8]
|
|
1355
|
+
- Updated dependencies [256b4c9]
|
|
1356
|
+
- Updated dependencies [c5ec15c]
|
|
1357
|
+
- Updated dependencies [fec3b1a]
|
|
1358
|
+
- Updated dependencies [b8e0941]
|
|
1359
|
+
- Updated dependencies [0c50f18]
|
|
1360
|
+
- Updated dependencies [1dae95a]
|
|
1361
|
+
- Updated dependencies [e32dae1]
|
|
1362
|
+
- Updated dependencies [ed76b1b]
|
|
1363
|
+
- Updated dependencies [30b11ad]
|
|
1364
|
+
- Updated dependencies [4aebea0]
|
|
1365
|
+
- Updated dependencies [f976774]
|
|
1366
|
+
- Updated dependencies [3d6badf]
|
|
1367
|
+
- Updated dependencies [25cb364]
|
|
1368
|
+
- Updated dependencies [a60539b]
|
|
1369
|
+
- Updated dependencies [de1b879]
|
|
1370
|
+
- Updated dependencies [c6678b1]
|
|
1371
|
+
- Updated dependencies [0638322]
|
|
1372
|
+
- Updated dependencies [e3782d2]
|
|
1373
|
+
- Updated dependencies [db0beb2]
|
|
1374
|
+
- Updated dependencies [997ce38]
|
|
1375
|
+
- Updated dependencies [ae0b9d3]
|
|
1376
|
+
- Updated dependencies [ad1785c]
|
|
1377
|
+
- Updated dependencies [3b469c8]
|
|
1378
|
+
- Updated dependencies [e3782d2]
|
|
1379
|
+
- Updated dependencies [990a2d6]
|
|
1380
|
+
- Updated dependencies [37140f4]
|
|
1381
|
+
- Updated dependencies [37140f4]
|
|
1382
|
+
- Updated dependencies [ad1785c]
|
|
1383
|
+
- Updated dependencies [1c84036]
|
|
1384
|
+
- Updated dependencies [1c84036]
|
|
1385
|
+
- Updated dependencies [6650259]
|
|
1386
|
+
- Updated dependencies [4f8b7f8]
|
|
1387
|
+
- Updated dependencies [9e6619f]
|
|
1388
|
+
- Updated dependencies [f6ae5e2]
|
|
1389
|
+
- Updated dependencies [eb97ce6]
|
|
1390
|
+
- Updated dependencies [7343376]
|
|
1391
|
+
- Updated dependencies [b2683a2]
|
|
1392
|
+
- Updated dependencies [dded788]
|
|
1393
|
+
- Updated dependencies [b45d463]
|
|
1394
|
+
- Updated dependencies [54a7830]
|
|
1395
|
+
- Updated dependencies [f3135a4]
|
|
1396
|
+
- Updated dependencies [b5696d3]
|
|
1397
|
+
- Updated dependencies [3f9d926]
|
|
1398
|
+
- Updated dependencies [e978ed5]
|
|
1399
|
+
- Updated dependencies [6a7f24e]
|
|
1400
|
+
- Updated dependencies [b3c96d6]
|
|
1401
|
+
- Updated dependencies [8d0ca91]
|
|
1402
|
+
- Updated dependencies [c30c8dd]
|
|
1403
|
+
- Updated dependencies [244d516]
|
|
1404
|
+
- Updated dependencies [deca847]
|
|
1405
|
+
- Updated dependencies [ac15833]
|
|
1406
|
+
- Updated dependencies [ac15833]
|
|
1407
|
+
- Updated dependencies [e2dffc9]
|
|
1408
|
+
- Updated dependencies [328abeb]
|
|
1409
|
+
- Updated dependencies [dd0d78f]
|
|
1410
|
+
- Updated dependencies [24d3e65]
|
|
1411
|
+
- Updated dependencies [95a7c8d]
|
|
1412
|
+
- Updated dependencies [e227156]
|
|
1413
|
+
- Updated dependencies [cc4e476]
|
|
1414
|
+
- Updated dependencies [8aa68b1]
|
|
1415
|
+
- Updated dependencies [92970c4]
|
|
1416
|
+
- Updated dependencies [d570eaa]
|
|
1417
|
+
- Updated dependencies [4b742f4]
|
|
1418
|
+
- Updated dependencies [42687ba]
|
|
1419
|
+
- Updated dependencies [6cd8f66]
|
|
1420
|
+
- Updated dependencies [24a0f14]
|
|
1421
|
+
- Updated dependencies [797a30f]
|
|
1422
|
+
- Updated dependencies [27ae632]
|
|
1423
|
+
- Updated dependencies [0bc5c5a]
|
|
1424
|
+
- Updated dependencies [b4075c0]
|
|
1425
|
+
- Updated dependencies [9b85600]
|
|
1426
|
+
- Updated dependencies [e327c89]
|
|
1427
|
+
- Updated dependencies [2eaf5be]
|
|
1428
|
+
- Updated dependencies [bf7ab35]
|
|
1429
|
+
- Updated dependencies [99878d8]
|
|
1430
|
+
- Updated dependencies [3c13675]
|
|
1431
|
+
- Updated dependencies [63ab761]
|
|
1432
|
+
- Updated dependencies [7e4fa1b]
|
|
1433
|
+
- Updated dependencies [d0ae5d0]
|
|
1434
|
+
- Updated dependencies [0eb9f36]
|
|
1435
|
+
- Updated dependencies [ae582b7]
|
|
1436
|
+
- Updated dependencies [51c2949]
|
|
1437
|
+
- Updated dependencies [a4b017e]
|
|
1438
|
+
- Updated dependencies [8732846]
|
|
1439
|
+
- Updated dependencies [559a2e2]
|
|
1440
|
+
- Updated dependencies [db11afd]
|
|
1441
|
+
- Updated dependencies [154075a]
|
|
1442
|
+
- Updated dependencies [582edef]
|
|
1443
|
+
- Updated dependencies [19f484f]
|
|
1444
|
+
- Updated dependencies [0a78a20]
|
|
1445
|
+
- Updated dependencies [615346d]
|
|
1446
|
+
- Updated dependencies [75dcc81]
|
|
1447
|
+
- Updated dependencies [55a12a8]
|
|
1448
|
+
- Updated dependencies [edfcf5a]
|
|
1449
|
+
- Updated dependencies [0a3e540]
|
|
1450
|
+
- Updated dependencies [c021b35]
|
|
1451
|
+
- Updated dependencies [f61dab1]
|
|
1452
|
+
- Updated dependencies [b0a05dd]
|
|
1453
|
+
- Updated dependencies [dd5ff19]
|
|
1454
|
+
- Updated dependencies [54997ff]
|
|
1455
|
+
- Updated dependencies [81f8498]
|
|
1456
|
+
- Updated dependencies [a782fa7]
|
|
1457
|
+
- Updated dependencies [1d6a23d]
|
|
1458
|
+
- Updated dependencies [0645133]
|
|
1459
|
+
- Updated dependencies [76e9df0]
|
|
1460
|
+
- Updated dependencies [0ecaa7d]
|
|
1461
|
+
- Updated dependencies [b24f93a]
|
|
1462
|
+
- Updated dependencies [6158e4c]
|
|
1463
|
+
- Updated dependencies [cff8641]
|
|
1464
|
+
- Updated dependencies [3100bef]
|
|
1465
|
+
- Updated dependencies [c27b575]
|
|
1466
|
+
- Updated dependencies [3fa1938]
|
|
1467
|
+
- Updated dependencies [84b275c]
|
|
1468
|
+
- Updated dependencies [0e6e76b]
|
|
1469
|
+
- Updated dependencies [bf43afa]
|
|
1470
|
+
- Updated dependencies [385ebc5]
|
|
1471
|
+
- Updated dependencies [1923d35]
|
|
1472
|
+
- Updated dependencies [858eafb]
|
|
1473
|
+
- Updated dependencies [263dcd7]
|
|
1474
|
+
- Updated dependencies [a8c5509]
|
|
1475
|
+
- Updated dependencies [c2a8d23]
|
|
1476
|
+
- Updated dependencies [0ffc423]
|
|
1477
|
+
- Updated dependencies [3cc4fe5]
|
|
1478
|
+
- Updated dependencies [cd5b19a]
|
|
1479
|
+
- Updated dependencies [cd5b19a]
|
|
1480
|
+
- Updated dependencies [17dc167]
|
|
1481
|
+
- Updated dependencies [17dc167]
|
|
1482
|
+
- Updated dependencies [20d23be]
|
|
1483
|
+
- Updated dependencies [20d23be]
|
|
1484
|
+
- Updated dependencies [2e3da72]
|
|
1485
|
+
- Updated dependencies [1263e40]
|
|
1486
|
+
- Updated dependencies [e6bc087]
|
|
1487
|
+
- Updated dependencies [1ccb5ba]
|
|
1488
|
+
- Updated dependencies [9419df1]
|
|
1489
|
+
- Updated dependencies [c18a075]
|
|
1490
|
+
- Updated dependencies [8bab157]
|
|
1491
|
+
- Updated dependencies [a7557a7]
|
|
1492
|
+
- Updated dependencies [7d074ba]
|
|
1493
|
+
- Updated dependencies [6158e4c]
|
|
1494
|
+
- Updated dependencies [6158e4c]
|
|
1495
|
+
- Updated dependencies [52aad5c]
|
|
1496
|
+
- Updated dependencies [18d1a0a]
|
|
1497
|
+
- Updated dependencies [7fed09d]
|
|
1498
|
+
- Updated dependencies [1563d3e]
|
|
1499
|
+
- Updated dependencies [b149617]
|
|
1500
|
+
- Updated dependencies [58da8ae]
|
|
1501
|
+
- Updated dependencies [a8b9889]
|
|
1502
|
+
- Updated dependencies [138ad45]
|
|
1503
|
+
- Updated dependencies [138ad45]
|
|
1504
|
+
- Updated dependencies [5262f7d]
|
|
1505
|
+
- Updated dependencies [6aa029b]
|
|
1506
|
+
- Updated dependencies [6aa029b]
|
|
1507
|
+
- Updated dependencies [2124d04]
|
|
1508
|
+
- Updated dependencies [be52115]
|
|
1509
|
+
- Updated dependencies [be52115]
|
|
1510
|
+
- Updated dependencies [770cc5b]
|
|
1511
|
+
- Updated dependencies [770cc5b]
|
|
1512
|
+
- Updated dependencies [d893290]
|
|
1513
|
+
- Updated dependencies [1a88ce2]
|
|
1514
|
+
- Updated dependencies [a1a44d6]
|
|
1515
|
+
- Updated dependencies [e0a9c67]
|
|
1516
|
+
- Updated dependencies [5638529]
|
|
1517
|
+
- Updated dependencies [5638529]
|
|
1518
|
+
- Updated dependencies [5638529]
|
|
1519
|
+
- Updated dependencies [d0fba91]
|
|
1520
|
+
- Updated dependencies [c476be0]
|
|
1521
|
+
- Updated dependencies [c82ff39]
|
|
1522
|
+
- Updated dependencies [6c3da53]
|
|
1523
|
+
- Updated dependencies [31987bd]
|
|
1524
|
+
- Updated dependencies [3c3ce15]
|
|
1525
|
+
- Updated dependencies [063119f]
|
|
1526
|
+
- Updated dependencies [5ad9f5d]
|
|
1527
|
+
- Updated dependencies [e100589]
|
|
1528
|
+
- Updated dependencies [304f611]
|
|
1529
|
+
- Updated dependencies [e46ee77]
|
|
1530
|
+
- Updated dependencies [f9c8c4e]
|
|
1531
|
+
- Updated dependencies [6e9c8d2]
|
|
1532
|
+
- Updated dependencies [7728c67]
|
|
1533
|
+
- Updated dependencies [9547063]
|
|
1534
|
+
- Updated dependencies [3f6efd6]
|
|
1535
|
+
- Updated dependencies [55d18c6]
|
|
1536
|
+
- Updated dependencies [c4ab6d0]
|
|
1537
|
+
- Updated dependencies [0e9058b]
|
|
1538
|
+
- Updated dependencies [c4ab6d0]
|
|
1539
|
+
- Updated dependencies [5988b6b]
|
|
1540
|
+
- Updated dependencies [6158e4c]
|
|
1541
|
+
- Updated dependencies [00ccdf7]
|
|
1542
|
+
- Updated dependencies [9d9ed54]
|
|
1543
|
+
- Updated dependencies [9d1c0bf]
|
|
1544
|
+
- Updated dependencies [4a1adb7]
|
|
1545
|
+
- Updated dependencies [4a1adb7]
|
|
1546
|
+
- Updated dependencies [4a1adb7]
|
|
1547
|
+
- Updated dependencies [50c73fe]
|
|
1548
|
+
- Updated dependencies [ca3de72]
|
|
1549
|
+
- Updated dependencies [83e3f83]
|
|
1550
|
+
- Updated dependencies [401611b]
|
|
1551
|
+
- Updated dependencies [2c0ddf2]
|
|
1552
|
+
- Updated dependencies [4abc0aa]
|
|
1553
|
+
- Updated dependencies [f560ded]
|
|
1554
|
+
- Updated dependencies [f560ded]
|
|
1555
|
+
- Updated dependencies [2b188fa]
|
|
1556
|
+
- Updated dependencies [b654d4e]
|
|
1557
|
+
- Updated dependencies [f68e0a0]
|
|
1558
|
+
- Updated dependencies [aea682a]
|
|
1559
|
+
- Updated dependencies [fcdc8ec]
|
|
1560
|
+
- Updated dependencies [fcdc8ec]
|
|
1561
|
+
- Updated dependencies [2d576e4]
|
|
1562
|
+
- Updated dependencies [8366acc]
|
|
1563
|
+
- Updated dependencies [95e58a3]
|
|
1564
|
+
- Updated dependencies [9d7419b]
|
|
1565
|
+
- Updated dependencies [fc7db05]
|
|
1566
|
+
- Updated dependencies [9ed8d0f]
|
|
1567
|
+
- Updated dependencies [c73cdb5]
|
|
1568
|
+
- Updated dependencies [6f5719e]
|
|
1569
|
+
- Updated dependencies [072b7e8]
|
|
1570
|
+
- Updated dependencies [b0bf413]
|
|
1571
|
+
- Updated dependencies [dbd1081]
|
|
1572
|
+
- Updated dependencies [2f54dca]
|
|
1573
|
+
- Updated dependencies [d0097af]
|
|
1574
|
+
- Updated dependencies [9c74902]
|
|
1575
|
+
- Updated dependencies [432882b]
|
|
1576
|
+
- Updated dependencies [64dae8e]
|
|
1577
|
+
- Updated dependencies [b06e374]
|
|
1578
|
+
- Updated dependencies [06a8af5]
|
|
1579
|
+
- Updated dependencies [6a91586]
|
|
1580
|
+
- Updated dependencies [a04d7c6]
|
|
1581
|
+
- Updated dependencies [5ccc500]
|
|
1582
|
+
- Updated dependencies [f3c2bb0]
|
|
1583
|
+
- Updated dependencies [978507b]
|
|
1584
|
+
- Updated dependencies [778138e]
|
|
1585
|
+
- Updated dependencies [9801765]
|
|
1586
|
+
- Updated dependencies [9cebfca]
|
|
1587
|
+
- Updated dependencies [460575f]
|
|
1588
|
+
- Updated dependencies [d796c8d]
|
|
1589
|
+
- Updated dependencies [594704f]
|
|
1590
|
+
- Updated dependencies [d3995fe]
|
|
1591
|
+
- Updated dependencies [1b1d772]
|
|
1592
|
+
- Updated dependencies [d88e20f]
|
|
1593
|
+
- Updated dependencies [2d7304d]
|
|
1594
|
+
- Updated dependencies [062943f]
|
|
1595
|
+
- Updated dependencies [993f312]
|
|
1596
|
+
- Updated dependencies [636b236]
|
|
1597
|
+
- Updated dependencies [4172589]
|
|
1598
|
+
- Updated dependencies [d6d8fb9]
|
|
1599
|
+
- Updated dependencies [64d624d]
|
|
1600
|
+
- Updated dependencies [053fdc8]
|
|
1601
|
+
- Updated dependencies [41b7ce3]
|
|
1602
|
+
- Updated dependencies [ae476b8]
|
|
1603
|
+
- Updated dependencies [67a87d9]
|
|
1604
|
+
- Updated dependencies [39f4309]
|
|
1605
|
+
- Updated dependencies [95bad12]
|
|
1606
|
+
- Updated dependencies [d2fb6ef]
|
|
1607
|
+
- Updated dependencies [7cd3987]
|
|
1608
|
+
- Updated dependencies [ee3b878]
|
|
1609
|
+
- Updated dependencies [e304a4e]
|
|
1610
|
+
- Updated dependencies [fda49e5]
|
|
1611
|
+
- Updated dependencies [94e2fa7]
|
|
1612
|
+
- Updated dependencies [490d9a9]
|
|
1613
|
+
- Updated dependencies [fc62bb4]
|
|
1614
|
+
- Updated dependencies [41df893]
|
|
1615
|
+
- Updated dependencies [0cba1b7]
|
|
1616
|
+
- Updated dependencies [3e853c9]
|
|
1617
|
+
- Updated dependencies [00f3eb5]
|
|
1618
|
+
- Updated dependencies [1ec291c]
|
|
1619
|
+
- Updated dependencies [453dbaa]
|
|
1620
|
+
- Updated dependencies [95f8704]
|
|
1621
|
+
- Updated dependencies [f8cdbf2]
|
|
1622
|
+
- Updated dependencies [69a2163]
|
|
1623
|
+
- Updated dependencies [24e027e]
|
|
1624
|
+
- Updated dependencies [2c3cd1b]
|
|
1625
|
+
- Updated dependencies [e176053]
|
|
1626
|
+
- Updated dependencies [e30ed15]
|
|
1627
|
+
- Updated dependencies [17ccec9]
|
|
1628
|
+
- Updated dependencies [90665e0]
|
|
1629
|
+
- Updated dependencies [8d3a529]
|
|
1630
|
+
- Updated dependencies [5ac2e2c]
|
|
1631
|
+
- Updated dependencies [194fae1]
|
|
1632
|
+
- Updated dependencies [7e19d03]
|
|
1633
|
+
- Updated dependencies [beccf1c]
|
|
1634
|
+
- Updated dependencies [b08b7eb]
|
|
1635
|
+
- Updated dependencies [1e946c9]
|
|
1636
|
+
- Updated dependencies [546ddf7]
|
|
1637
|
+
- Updated dependencies [864154e]
|
|
1638
|
+
- Updated dependencies [b023625]
|
|
1639
|
+
- Updated dependencies [75bd83d]
|
|
1640
|
+
- Updated dependencies [7a72422]
|
|
1641
|
+
- Updated dependencies [44d075b]
|
|
1642
|
+
- Updated dependencies [40c479a]
|
|
1643
|
+
- Updated dependencies [5173a5e]
|
|
1644
|
+
- Updated dependencies [971d387]
|
|
1645
|
+
- Updated dependencies [ee851c3]
|
|
1646
|
+
- Updated dependencies [6414dfd]
|
|
1647
|
+
- Updated dependencies [a8d5c71]
|
|
1648
|
+
- Updated dependencies [905b21f]
|
|
1649
|
+
- Updated dependencies [88e9109]
|
|
1650
|
+
- Updated dependencies [2c45966]
|
|
1651
|
+
- Updated dependencies [db3a600]
|
|
1652
|
+
- Updated dependencies [3a3db76]
|
|
1653
|
+
- Updated dependencies [0d723a3]
|
|
1654
|
+
- Updated dependencies [0c95d3d]
|
|
1655
|
+
- Updated dependencies [3e4fa2c]
|
|
1656
|
+
- Updated dependencies [b5b928a]
|
|
1657
|
+
- Updated dependencies [6fd2cf7]
|
|
1658
|
+
- Updated dependencies [5fa06c4]
|
|
1659
|
+
- Updated dependencies [52a43de]
|
|
1660
|
+
- Updated dependencies [195052f]
|
|
1661
|
+
- Updated dependencies [e4559d1]
|
|
1662
|
+
- Updated dependencies [2c71482]
|
|
1663
|
+
- Updated dependencies [129bcc5]
|
|
1664
|
+
- Updated dependencies [c9a7252]
|
|
1665
|
+
- Updated dependencies [5f19b92]
|
|
1666
|
+
- Updated dependencies [a26b9e4]
|
|
1667
|
+
- Updated dependencies [5ef9c4f]
|
|
1668
|
+
- Updated dependencies [e0b289d]
|
|
1669
|
+
- Updated dependencies [46f0bb4]
|
|
1670
|
+
- Updated dependencies [2da6441]
|
|
1671
|
+
- Updated dependencies [3b9c774]
|
|
1672
|
+
- Updated dependencies [06b82b8]
|
|
1673
|
+
- Updated dependencies [8ec11e1]
|
|
1674
|
+
- Updated dependencies [6f81384]
|
|
1675
|
+
- Updated dependencies [22ba927]
|
|
1676
|
+
- Updated dependencies [f8c70f4]
|
|
1677
|
+
- Updated dependencies [5d3a2d1]
|
|
1678
|
+
- Updated dependencies [c38162d]
|
|
1679
|
+
- Updated dependencies [8f1d995]
|
|
1680
|
+
- Updated dependencies [b362c1b]
|
|
1681
|
+
- Updated dependencies [5127378]
|
|
1682
|
+
- Updated dependencies [f9c34df]
|
|
1683
|
+
- Updated dependencies [dddb942]
|
|
1684
|
+
- Updated dependencies [00c665e]
|
|
1685
|
+
- Updated dependencies [29754cf]
|
|
1686
|
+
- Updated dependencies [d7de534]
|
|
1687
|
+
- Updated dependencies [3c2b6f7]
|
|
1688
|
+
- Updated dependencies [6e88630]
|
|
1689
|
+
- Updated dependencies [b84dc18]
|
|
1690
|
+
- Updated dependencies [ac8abb0]
|
|
1691
|
+
- Updated dependencies [9d86e1d]
|
|
1692
|
+
- Updated dependencies [3a5817f]
|
|
1693
|
+
- Updated dependencies [99a3c2d]
|
|
1694
|
+
- Updated dependencies [1c19722]
|
|
1695
|
+
- Updated dependencies [5961030]
|
|
1696
|
+
- Updated dependencies [faa863d]
|
|
1697
|
+
- Updated dependencies [fd814d6]
|
|
1698
|
+
- Updated dependencies [f24de8b]
|
|
1699
|
+
- Updated dependencies [c8ea8af]
|
|
1700
|
+
- Updated dependencies [9602dc8]
|
|
1701
|
+
- Updated dependencies [3190414]
|
|
1702
|
+
- Updated dependencies [4e480f5]
|
|
1703
|
+
- Updated dependencies [38a123c]
|
|
1704
|
+
- Updated dependencies [299102e]
|
|
1705
|
+
- Updated dependencies [30c73cd]
|
|
1706
|
+
- Updated dependencies [c4987fb]
|
|
1707
|
+
- Updated dependencies [f55d666]
|
|
1708
|
+
- Updated dependencies [f241a4d]
|
|
1709
|
+
- Updated dependencies [830ed58]
|
|
1710
|
+
- Updated dependencies [d7acad6]
|
|
1711
|
+
- Updated dependencies [45a9aeb]
|
|
1712
|
+
- Updated dependencies [713db46]
|
|
1713
|
+
- Updated dependencies [c71e14d]
|
|
1714
|
+
- Updated dependencies [bf3a03c]
|
|
1715
|
+
- Updated dependencies [cb55718]
|
|
1716
|
+
- Updated dependencies [748494b]
|
|
1717
|
+
- Updated dependencies [5967be0]
|
|
1718
|
+
- Updated dependencies [831be72]
|
|
1719
|
+
- Updated dependencies [29cb85b]
|
|
1720
|
+
- Updated dependencies [3e028c8]
|
|
1721
|
+
- Updated dependencies [d0889e2]
|
|
1722
|
+
- Updated dependencies [ce503e5]
|
|
1723
|
+
- Updated dependencies [f20dcf0]
|
|
1724
|
+
- Updated dependencies [12402a9]
|
|
1725
|
+
- Updated dependencies [aff3d7a]
|
|
1726
|
+
- Updated dependencies [4ca30d0]
|
|
1727
|
+
- Updated dependencies [7a5da14]
|
|
1728
|
+
- Updated dependencies [fff9645]
|
|
1729
|
+
- Updated dependencies [9c3b7ce]
|
|
1730
|
+
- Updated dependencies [2c1c967]
|
|
1731
|
+
- Updated dependencies [9486ac6]
|
|
1732
|
+
- Updated dependencies [9486ac6]
|
|
1733
|
+
- Updated dependencies [4d5f9b4]
|
|
1734
|
+
- Updated dependencies [d6ceb8d]
|
|
1735
|
+
- Updated dependencies [dc4365c]
|
|
1736
|
+
- Updated dependencies [e321d52]
|
|
1737
|
+
- Updated dependencies [969ba84]
|
|
1738
|
+
- Updated dependencies [4c68077]
|
|
1739
|
+
- Updated dependencies [7977ff9]
|
|
1740
|
+
- Updated dependencies [4ac3769]
|
|
1741
|
+
- Updated dependencies [3beef6d]
|
|
1742
|
+
- Updated dependencies [06b8c42]
|
|
1743
|
+
- Updated dependencies [46b9bc9]
|
|
1744
|
+
- Updated dependencies [19f3637]
|
|
1745
|
+
- Updated dependencies [9bd08fe]
|
|
1746
|
+
- Updated dependencies [b97790a]
|
|
1747
|
+
- Updated dependencies [dbd5194]
|
|
1748
|
+
- Updated dependencies [7c9b044]
|
|
1749
|
+
- Updated dependencies [d47de51]
|
|
1750
|
+
- Updated dependencies [3fe6463]
|
|
1751
|
+
- Updated dependencies [b392674]
|
|
1752
|
+
- Updated dependencies [4f3a1e2]
|
|
1753
|
+
- Updated dependencies [31ab372]
|
|
1754
|
+
- Updated dependencies [846889b]
|
|
1755
|
+
- Updated dependencies [2acd8e1]
|
|
1756
|
+
- Updated dependencies [26896c6]
|
|
1757
|
+
- Updated dependencies [67fc3b0]
|
|
1758
|
+
- Updated dependencies [fab4802]
|
|
1759
|
+
- Updated dependencies [33a3b3c]
|
|
1760
|
+
- Updated dependencies [b87f15b]
|
|
1761
|
+
- Updated dependencies [f07b976]
|
|
1762
|
+
- Updated dependencies [045d20b]
|
|
1763
|
+
- Updated dependencies [a2d2515]
|
|
1764
|
+
- Updated dependencies [c18d099]
|
|
1765
|
+
- Updated dependencies [adb2a86]
|
|
1766
|
+
- Updated dependencies [503cd8b]
|
|
1767
|
+
- Updated dependencies [03380aa]
|
|
1768
|
+
- Updated dependencies [d9a0490]
|
|
1769
|
+
- Updated dependencies [f9984c0]
|
|
1770
|
+
- Updated dependencies [9700dd9]
|
|
1771
|
+
- Updated dependencies [4562ea5]
|
|
1772
|
+
- Updated dependencies [3619792]
|
|
1773
|
+
- Updated dependencies [3561bd2]
|
|
1774
|
+
- Updated dependencies [bf97b98]
|
|
1775
|
+
- Updated dependencies [320374d]
|
|
1776
|
+
- Updated dependencies [b0d308d]
|
|
1777
|
+
- Updated dependencies [1349400]
|
|
1778
|
+
- Updated dependencies [40f34b4]
|
|
1779
|
+
- Updated dependencies [8063bcb]
|
|
1780
|
+
- Updated dependencies [b74a859]
|
|
1781
|
+
- Updated dependencies [d4493fd]
|
|
1782
|
+
- Updated dependencies [240b80f]
|
|
1783
|
+
- Updated dependencies [77cb489]
|
|
1784
|
+
- Updated dependencies [bfaa158]
|
|
1785
|
+
- Updated dependencies [777e5c6]
|
|
1786
|
+
- Updated dependencies [0c386dd]
|
|
1787
|
+
- Updated dependencies [9e37d9b]
|
|
1788
|
+
- Updated dependencies [5ad86dd]
|
|
1789
|
+
- Updated dependencies [16a725f]
|
|
1790
|
+
- Updated dependencies [4dfdcc3]
|
|
1791
|
+
- Updated dependencies [6a449fc]
|
|
1792
|
+
- Updated dependencies [ce986aa]
|
|
1793
|
+
- Updated dependencies [446d93d]
|
|
1794
|
+
- Updated dependencies [ecd9cb2]
|
|
1795
|
+
- Updated dependencies [98d4108]
|
|
1796
|
+
- Updated dependencies [0e3b3be]
|
|
1797
|
+
- Updated dependencies [512bc90]
|
|
1798
|
+
- Updated dependencies [a29ae2d]
|
|
1799
|
+
- Updated dependencies [220c18d]
|
|
1800
|
+
- Updated dependencies [00d3f09]
|
|
1801
|
+
- Updated dependencies [4388f71]
|
|
1802
|
+
- Updated dependencies [0b1ac58]
|
|
1803
|
+
- Updated dependencies [c93b4d5]
|
|
1804
|
+
- Updated dependencies [c1fe272]
|
|
1805
|
+
- Updated dependencies [3cab570]
|
|
1806
|
+
- Updated dependencies [8ad218d]
|
|
1807
|
+
- Updated dependencies [3e41187]
|
|
1808
|
+
- Updated dependencies [5f78953]
|
|
1809
|
+
- Updated dependencies [639114c]
|
|
1810
|
+
- Updated dependencies [639114c]
|
|
1811
|
+
- Updated dependencies [639114c]
|
|
1812
|
+
- Updated dependencies [1490691]
|
|
1813
|
+
- Updated dependencies [1f31d3a]
|
|
1814
|
+
- Updated dependencies [d1842ab]
|
|
1815
|
+
- Updated dependencies [78ca238]
|
|
1816
|
+
- Updated dependencies [d8ec8d6]
|
|
1817
|
+
- Updated dependencies [351eb31]
|
|
1818
|
+
- Updated dependencies [866cd1d]
|
|
1819
|
+
- Updated dependencies [20c04b2]
|
|
1820
|
+
- Updated dependencies [84ffdbc]
|
|
1821
|
+
- Updated dependencies [a276480]
|
|
1822
|
+
- Updated dependencies [01c9023]
|
|
1823
|
+
- Updated dependencies [48c19bd]
|
|
1824
|
+
- Updated dependencies [a6d8b8d]
|
|
1825
|
+
- Updated dependencies [4b5bb95]
|
|
1826
|
+
- Updated dependencies [b652514]
|
|
1827
|
+
- Updated dependencies [adbda1b]
|
|
1828
|
+
- Updated dependencies [adbda1b]
|
|
1829
|
+
- Updated dependencies [adbda1b]
|
|
1830
|
+
- Updated dependencies [8952395]
|
|
1831
|
+
- Updated dependencies [e2b3826]
|
|
1832
|
+
- Updated dependencies [0348bc9]
|
|
1833
|
+
- Updated dependencies [e8c553b]
|
|
1834
|
+
- Updated dependencies [2e32ed4]
|
|
1835
|
+
- Updated dependencies [3ed3eec]
|
|
1836
|
+
- Updated dependencies [7c3df8f]
|
|
1837
|
+
- Updated dependencies [67dadd6]
|
|
1838
|
+
- Updated dependencies [e21308e]
|
|
1839
|
+
- Updated dependencies [a4514e8]
|
|
1840
|
+
- Updated dependencies [db3896c]
|
|
1841
|
+
- Updated dependencies [b9f5ff1]
|
|
1842
|
+
- Updated dependencies [e75f4c9]
|
|
1843
|
+
- Updated dependencies [19f1639]
|
|
1844
|
+
- Updated dependencies [4704aa4]
|
|
1845
|
+
- Updated dependencies [47547d0]
|
|
1846
|
+
- Updated dependencies [1bee5d0]
|
|
1847
|
+
- Updated dependencies [63a8828]
|
|
1848
|
+
- Updated dependencies [858cd72]
|
|
1849
|
+
- Updated dependencies [cfc9b6d]
|
|
1850
|
+
- Updated dependencies [554f2b6]
|
|
1851
|
+
- Updated dependencies [72f55c9]
|
|
1852
|
+
- Updated dependencies [26e06d7]
|
|
1853
|
+
- Updated dependencies [669d71b]
|
|
1854
|
+
- Updated dependencies [6a99bb2]
|
|
1855
|
+
- Updated dependencies [2d3fe73]
|
|
1856
|
+
- Updated dependencies [ed27d7c]
|
|
1857
|
+
- Updated dependencies [7dedec6]
|
|
1858
|
+
- Updated dependencies [52c8cf7]
|
|
1859
|
+
- Updated dependencies [2ceb43a]
|
|
1860
|
+
- Updated dependencies [0809f8a]
|
|
1861
|
+
- Updated dependencies [7cdd2b9]
|
|
1862
|
+
- Updated dependencies [52c8cf7]
|
|
1863
|
+
- Updated dependencies [3399704]
|
|
1864
|
+
- Updated dependencies [71a4a53]
|
|
1865
|
+
- Updated dependencies [7bf244b]
|
|
1866
|
+
- Updated dependencies [f0bb9fa]
|
|
1867
|
+
- Updated dependencies [81a2eb1]
|
|
1868
|
+
- Updated dependencies [caa0cd3]
|
|
1869
|
+
- Updated dependencies [caa0cd3]
|
|
1870
|
+
- Updated dependencies [20cb8db]
|
|
1871
|
+
- Updated dependencies [25c7d58]
|
|
1872
|
+
- Updated dependencies [00d2fa6]
|
|
1873
|
+
- Updated dependencies [77b2a18]
|
|
1874
|
+
- Updated dependencies [c6198c2]
|
|
1875
|
+
- Updated dependencies [721d1e0]
|
|
1876
|
+
- Updated dependencies [c2f0f48]
|
|
1877
|
+
- Updated dependencies [1237ae4]
|
|
1878
|
+
- Updated dependencies [2f61238]
|
|
1879
|
+
- Updated dependencies [51eb515]
|
|
1880
|
+
- Updated dependencies [c354ce5]
|
|
1881
|
+
- Updated dependencies [8fe8e5c]
|
|
1882
|
+
- Updated dependencies [feac439]
|
|
1883
|
+
- Updated dependencies [9ae871d]
|
|
1884
|
+
- Updated dependencies [efbd566]
|
|
1885
|
+
- Updated dependencies [2a5bf45]
|
|
1886
|
+
- Updated dependencies [9587fc9]
|
|
1887
|
+
- Updated dependencies [e62c44e]
|
|
1888
|
+
- Updated dependencies [daf9d57]
|
|
1889
|
+
- Updated dependencies [23b9958]
|
|
1890
|
+
- Updated dependencies [c15d7ec]
|
|
1891
|
+
- Updated dependencies [5d0876c]
|
|
1892
|
+
- Updated dependencies [f7ace0a]
|
|
1893
|
+
- Updated dependencies [b041b9c]
|
|
1894
|
+
- Updated dependencies [ce2aaef]
|
|
1895
|
+
- Updated dependencies [544ecba]
|
|
1896
|
+
- Updated dependencies [2ce2612]
|
|
1897
|
+
- Updated dependencies [bc640ec]
|
|
1898
|
+
- Updated dependencies [1e215c4]
|
|
1899
|
+
- Updated dependencies [da6e191]
|
|
1900
|
+
- Updated dependencies [3e377c9]
|
|
1901
|
+
- Updated dependencies [a3eb5d0]
|
|
1902
|
+
- Updated dependencies [4ce14f1]
|
|
1903
|
+
- Updated dependencies [aef97e5]
|
|
1904
|
+
- Updated dependencies [2af1fa7]
|
|
1905
|
+
- Updated dependencies [c14d3a0]
|
|
1906
|
+
- Updated dependencies [a137d0c]
|
|
1907
|
+
- Updated dependencies [caf477f]
|
|
1908
|
+
- Updated dependencies [f6375da]
|
|
1909
|
+
- Updated dependencies [967e5d8]
|
|
1910
|
+
- Updated dependencies [c907a9c]
|
|
1911
|
+
- Updated dependencies [a4611b3]
|
|
1912
|
+
- Updated dependencies [20316ba]
|
|
1913
|
+
- Updated dependencies [d3499b3]
|
|
1914
|
+
- Updated dependencies [91f9276]
|
|
1915
|
+
- Updated dependencies [309c75e]
|
|
1916
|
+
- Updated dependencies [c9f9bae]
|
|
1917
|
+
- Updated dependencies [18897a4]
|
|
1918
|
+
- Updated dependencies [8b7ea39]
|
|
1919
|
+
- Updated dependencies [a915064]
|
|
1920
|
+
- Updated dependencies [dcbf0b2]
|
|
1921
|
+
- Updated dependencies [52cac38]
|
|
1922
|
+
- Updated dependencies [93fea2e]
|
|
1923
|
+
- Updated dependencies [53ded82]
|
|
1924
|
+
- Updated dependencies [1422a92]
|
|
1925
|
+
- Updated dependencies [d05fe17]
|
|
1926
|
+
- Updated dependencies [a480f79]
|
|
1927
|
+
- Updated dependencies [f08d1a8]
|
|
1928
|
+
- Updated dependencies [64a252d]
|
|
1929
|
+
- Updated dependencies [786bc91]
|
|
1930
|
+
- Updated dependencies [75fca96]
|
|
1931
|
+
- Updated dependencies [7ca6ddd]
|
|
1932
|
+
- Updated dependencies [f1cd290]
|
|
1933
|
+
- Updated dependencies [5a41ce7]
|
|
1934
|
+
- Updated dependencies [8d50bc2]
|
|
1935
|
+
- Updated dependencies [604476d]
|
|
1936
|
+
- Updated dependencies [d1bebb0]
|
|
1937
|
+
- Updated dependencies [95bf128]
|
|
1938
|
+
- Updated dependencies [335abea]
|
|
1939
|
+
- Updated dependencies [edea22a]
|
|
1940
|
+
- Updated dependencies [0f5cadf]
|
|
1941
|
+
- Updated dependencies [4f9f1ee]
|
|
1942
|
+
- Updated dependencies [66e8b2a]
|
|
1943
|
+
- Updated dependencies [aa083cd]
|
|
1944
|
+
- Updated dependencies [12b5992]
|
|
1945
|
+
- Updated dependencies [b93e245]
|
|
1946
|
+
- Updated dependencies [c842594]
|
|
1947
|
+
- Updated dependencies [290de37]
|
|
1948
|
+
- Updated dependencies [e1c27e4]
|
|
1949
|
+
- Updated dependencies [8c8da45]
|
|
1950
|
+
- Updated dependencies [8cd8eb5]
|
|
1951
|
+
- Updated dependencies [cf1d29e]
|
|
1952
|
+
- Updated dependencies [1bd79c8]
|
|
1953
|
+
- Updated dependencies [af9e957]
|
|
1954
|
+
- Updated dependencies [b1030c7]
|
|
1955
|
+
- Updated dependencies [c974edf]
|
|
1956
|
+
- Updated dependencies [ad852b6]
|
|
1957
|
+
- Updated dependencies [6778809]
|
|
1958
|
+
- Updated dependencies [7fb22a1]
|
|
1959
|
+
- Updated dependencies [ad66d79]
|
|
1960
|
+
- Updated dependencies [0758bd8]
|
|
1961
|
+
- Updated dependencies [ee4d19f]
|
|
1962
|
+
- Updated dependencies [496d31d]
|
|
1963
|
+
- Updated dependencies [f57ca75]
|
|
1964
|
+
- Updated dependencies [0ea7054]
|
|
1965
|
+
- Updated dependencies [9a853f2]
|
|
1966
|
+
- Updated dependencies [cb847fd]
|
|
1967
|
+
- Updated dependencies [ee70287]
|
|
1968
|
+
- Updated dependencies [3e98e13]
|
|
1969
|
+
- Updated dependencies [a695f50]
|
|
1970
|
+
- Updated dependencies [fc32921]
|
|
1971
|
+
- Updated dependencies [4eaa835]
|
|
1972
|
+
- Updated dependencies [8f9d87a]
|
|
1973
|
+
- Updated dependencies [b1777ae]
|
|
1974
|
+
- Updated dependencies [24845c4]
|
|
1975
|
+
- Updated dependencies [6f864cf]
|
|
1976
|
+
- Updated dependencies [f4abff4]
|
|
1977
|
+
- Updated dependencies [24d1edd]
|
|
1978
|
+
- Updated dependencies [645087c]
|
|
1979
|
+
- Updated dependencies [33f4a19]
|
|
1980
|
+
- Updated dependencies [6e9a3d4]
|
|
1981
|
+
- Updated dependencies [4a292d2]
|
|
1982
|
+
- Updated dependencies [5323168]
|
|
1983
|
+
- Updated dependencies [841dd2b]
|
|
1984
|
+
- Updated dependencies [3014fc0]
|
|
1985
|
+
- Updated dependencies [dacb402]
|
|
1986
|
+
- Updated dependencies [846cec0]
|
|
1987
|
+
- Updated dependencies [91facae]
|
|
1988
|
+
- Updated dependencies [b38014e]
|
|
1989
|
+
- Updated dependencies [474797d]
|
|
1990
|
+
- Updated dependencies [704e695]
|
|
1991
|
+
- Updated dependencies [a407bd6]
|
|
1992
|
+
- Updated dependencies [317dbce]
|
|
1993
|
+
- Updated dependencies [309728c]
|
|
1994
|
+
- Updated dependencies [c03d03b]
|
|
1995
|
+
- Updated dependencies [aa08d7e]
|
|
1996
|
+
- Updated dependencies [3a43a15]
|
|
1997
|
+
- Updated dependencies [868e825]
|
|
1998
|
+
- Updated dependencies [f76f436]
|
|
1999
|
+
- Updated dependencies [ce45a03]
|
|
2000
|
+
- Updated dependencies [421544b]
|
|
2001
|
+
- Updated dependencies [fb01022]
|
|
2002
|
+
- Updated dependencies [e9d9212]
|
|
2003
|
+
- Updated dependencies [ecfb693]
|
|
2004
|
+
- Updated dependencies [40a7c53]
|
|
2005
|
+
- Updated dependencies [abc1b18]
|
|
2006
|
+
- Updated dependencies [81a51db]
|
|
2007
|
+
- Updated dependencies [67749c7]
|
|
2008
|
+
- Updated dependencies [507b61b]
|
|
2009
|
+
- Updated dependencies [270f282]
|
|
2010
|
+
- Updated dependencies [512c84b]
|
|
2011
|
+
- Updated dependencies [c300267]
|
|
2012
|
+
- Updated dependencies [fb3a101]
|
|
2013
|
+
- Updated dependencies [d4733f2]
|
|
2014
|
+
- Updated dependencies [7c9145f]
|
|
2015
|
+
- Updated dependencies [1570eac]
|
|
2016
|
+
- Updated dependencies [f391ede]
|
|
2017
|
+
- Updated dependencies [f5cfbbd]
|
|
2018
|
+
- Updated dependencies [f5cfbbd]
|
|
2019
|
+
- Updated dependencies [8b532cb]
|
|
2020
|
+
- Updated dependencies [64c3cdd]
|
|
2021
|
+
- Updated dependencies [4d65991]
|
|
2022
|
+
- Updated dependencies [c42554e]
|
|
2023
|
+
- Updated dependencies [555b4ec]
|
|
2024
|
+
- Updated dependencies [1ccfc23]
|
|
2025
|
+
- Updated dependencies [542718f]
|
|
2026
|
+
- Updated dependencies [7f27bc5]
|
|
2027
|
+
- Updated dependencies [0a174f3]
|
|
2028
|
+
- Updated dependencies [676f677]
|
|
2029
|
+
- Updated dependencies [0febe1a]
|
|
2030
|
+
- Updated dependencies [6fda1a9]
|
|
2031
|
+
- Updated dependencies [f95b140]
|
|
2032
|
+
- Updated dependencies [541ce4e]
|
|
2033
|
+
- Updated dependencies [6479086]
|
|
2034
|
+
- Updated dependencies [d79f525]
|
|
2035
|
+
- Updated dependencies [d1865d2]
|
|
2036
|
+
- Updated dependencies [c5c0e2a]
|
|
2037
|
+
- Updated dependencies [9662aca]
|
|
2038
|
+
- Updated dependencies [55ba3ff]
|
|
2039
|
+
- Updated dependencies [baf3776]
|
|
2040
|
+
- Updated dependencies [c489260]
|
|
2041
|
+
- Updated dependencies [f1190b0]
|
|
2042
|
+
- Updated dependencies [8fda009]
|
|
2043
|
+
- Updated dependencies [fd9bf26]
|
|
2044
|
+
- Updated dependencies [561abef]
|
|
2045
|
+
- Updated dependencies [ef52001]
|
|
2046
|
+
- Updated dependencies [b8a0068]
|
|
2047
|
+
- Updated dependencies [6a4680b]
|
|
2048
|
+
- Updated dependencies [c3a4273]
|
|
2049
|
+
- Updated dependencies [c5faf06]
|
|
2050
|
+
- Updated dependencies [abf710d]
|
|
2051
|
+
- Updated dependencies [093af32]
|
|
2052
|
+
- Updated dependencies [1bd1be7]
|
|
2053
|
+
- Updated dependencies [d234fa9]
|
|
2054
|
+
- Updated dependencies [adf5812]
|
|
2055
|
+
- Updated dependencies [e36acd4]
|
|
2056
|
+
- Updated dependencies [5058336]
|
|
2057
|
+
- Updated dependencies [2f6b2bf]
|
|
2058
|
+
- Updated dependencies [60e1f80]
|
|
2059
|
+
- Updated dependencies [2028b31]
|
|
2060
|
+
- Updated dependencies [63601ab]
|
|
2061
|
+
- Updated dependencies [c372b29]
|
|
2062
|
+
- Updated dependencies [152f0a7]
|
|
2063
|
+
- Updated dependencies [8693b85]
|
|
2064
|
+
- Updated dependencies [bbf068d]
|
|
2065
|
+
- Updated dependencies [e82dad1]
|
|
2066
|
+
- Updated dependencies [58b7b3d]
|
|
2067
|
+
- Updated dependencies [84defab]
|
|
2068
|
+
- Updated dependencies [681d3f1]
|
|
2069
|
+
- Updated dependencies [969d4f2]
|
|
2070
|
+
- Updated dependencies [358aff8]
|
|
2071
|
+
- Updated dependencies [f3bc481]
|
|
2072
|
+
- Updated dependencies [b79aac2]
|
|
2073
|
+
- Updated dependencies [93fc0e7]
|
|
2074
|
+
- Updated dependencies [a4b723f]
|
|
2075
|
+
- Updated dependencies [2b10ca0]
|
|
2076
|
+
- Updated dependencies [7db4a81]
|
|
2077
|
+
- Updated dependencies [19a0b0e]
|
|
2078
|
+
- Updated dependencies [526fc11]
|
|
2079
|
+
- Updated dependencies [f8e3e9a]
|
|
2080
|
+
- Updated dependencies [b9d47ec]
|
|
2081
|
+
- Updated dependencies [3b6bc69]
|
|
2082
|
+
- Updated dependencies [6214db6]
|
|
2083
|
+
- Updated dependencies [6732df4]
|
|
2084
|
+
- Updated dependencies [fe9e0d0]
|
|
2085
|
+
- Updated dependencies [63fb72c]
|
|
2086
|
+
- Updated dependencies [0b8c638]
|
|
2087
|
+
- Updated dependencies [804831c]
|
|
2088
|
+
- Updated dependencies [279e48e]
|
|
2089
|
+
- Updated dependencies [8700d6d]
|
|
2090
|
+
- Updated dependencies [8db2a0f]
|
|
2091
|
+
- Updated dependencies [689953a]
|
|
2092
|
+
- Updated dependencies [30443fb]
|
|
2093
|
+
- Updated dependencies [8d3dbb2]
|
|
2094
|
+
- Updated dependencies [efc1c9c]
|
|
2095
|
+
- Updated dependencies [da45e6b]
|
|
2096
|
+
- Updated dependencies [7533465]
|
|
2097
|
+
- Updated dependencies [835f0f3]
|
|
2098
|
+
- Updated dependencies [a9d97be]
|
|
2099
|
+
- Updated dependencies [ed35b44]
|
|
2100
|
+
- Updated dependencies [9ba7e9c]
|
|
2101
|
+
- Updated dependencies [729e851]
|
|
2102
|
+
- Updated dependencies [96919a4]
|
|
2103
|
+
- Updated dependencies [345e24a]
|
|
2104
|
+
- Updated dependencies [20b507a]
|
|
2105
|
+
- Updated dependencies [2e471dc]
|
|
2106
|
+
- Updated dependencies [6748587]
|
|
2107
|
+
- Updated dependencies [be50942]
|
|
2108
|
+
- Updated dependencies [775e079]
|
|
2109
|
+
- Updated dependencies [7e8b3c0]
|
|
2110
|
+
- Updated dependencies [53374dc]
|
|
2111
|
+
- Updated dependencies [f6fb83f]
|
|
2112
|
+
- Updated dependencies [2049b03]
|
|
2113
|
+
- Updated dependencies [2bf34f7]
|
|
2114
|
+
- Updated dependencies [15b33ae]
|
|
2115
|
+
- Updated dependencies [7ec600d]
|
|
2116
|
+
- Updated dependencies [7cbc724]
|
|
2117
|
+
- Updated dependencies [4a94c38]
|
|
2118
|
+
- Updated dependencies [7098eed]
|
|
2119
|
+
- Updated dependencies [3df7c5c]
|
|
2120
|
+
- Updated dependencies [fb91ac9]
|
|
2121
|
+
- Updated dependencies [fb91ac9]
|
|
2122
|
+
- Updated dependencies [641fb55]
|
|
2123
|
+
- Updated dependencies [8524372]
|
|
2124
|
+
- Updated dependencies [7cbefa5]
|
|
2125
|
+
- Updated dependencies [03370ce]
|
|
2126
|
+
- Updated dependencies [72d6587]
|
|
2127
|
+
- Updated dependencies [a272a4f]
|
|
2128
|
+
- Updated dependencies [55f39ee]
|
|
2129
|
+
- Updated dependencies [502eb58]
|
|
2130
|
+
- Updated dependencies [0ce32d5]
|
|
2131
|
+
- Updated dependencies [0970a0e]
|
|
2132
|
+
- Updated dependencies [e427e9c]
|
|
2133
|
+
- Updated dependencies [bbc9dc3]
|
|
2134
|
+
- Updated dependencies [02f1813]
|
|
2135
|
+
- Updated dependencies [1ef89c0]
|
|
2136
|
+
- Updated dependencies [ba0b61a]
|
|
2137
|
+
- Updated dependencies [ba0b61a]
|
|
2138
|
+
- Updated dependencies [ac716ff]
|
|
2139
|
+
- Updated dependencies [f0f3cd5]
|
|
2140
|
+
- Updated dependencies [ab856ed]
|
|
2141
|
+
- Updated dependencies [20f3e65]
|
|
2142
|
+
- Updated dependencies [bbba098]
|
|
2143
|
+
- Updated dependencies [87af769]
|
|
2144
|
+
- Updated dependencies [3be720e]
|
|
2145
|
+
- Updated dependencies [43c0d17]
|
|
2146
|
+
- Updated dependencies [c3df43a]
|
|
2147
|
+
- Updated dependencies [d16d0e9]
|
|
2148
|
+
- Updated dependencies [bbe57fd]
|
|
2149
|
+
- Updated dependencies [272a530]
|
|
2150
|
+
- Updated dependencies [1779e8d]
|
|
2151
|
+
- Updated dependencies [f7fcc2c]
|
|
2152
|
+
- Updated dependencies [f0f4d6c]
|
|
2153
|
+
- Updated dependencies [6df9141]
|
|
2154
|
+
- Updated dependencies [3e4f632]
|
|
2155
|
+
- Updated dependencies [4128188]
|
|
2156
|
+
- Updated dependencies [269880a]
|
|
2157
|
+
- Updated dependencies [b253c4e]
|
|
2158
|
+
- Updated dependencies [78a9c67]
|
|
2159
|
+
- Updated dependencies [4a7ef0d]
|
|
2160
|
+
- Updated dependencies [4598f6d]
|
|
2161
|
+
- Updated dependencies [dea17b4]
|
|
2162
|
+
- Updated dependencies [89bb77a]
|
|
2163
|
+
- Updated dependencies [06611e4]
|
|
2164
|
+
- Updated dependencies [44152c4]
|
|
2165
|
+
- Updated dependencies [3939545]
|
|
2166
|
+
- Updated dependencies [66abbde]
|
|
2167
|
+
- Updated dependencies [dc3893d]
|
|
2168
|
+
- Updated dependencies [20b5e36]
|
|
2169
|
+
- Updated dependencies [1bbaa16]
|
|
2170
|
+
- Updated dependencies [6ee259a]
|
|
2171
|
+
- Updated dependencies [7649f43]
|
|
2172
|
+
- Updated dependencies [63bf47d]
|
|
2173
|
+
- Updated dependencies [5a311a3]
|
|
2174
|
+
- Updated dependencies [99c4eb8]
|
|
2175
|
+
- Updated dependencies [e708426]
|
|
2176
|
+
- Updated dependencies [3b6d53b]
|
|
2177
|
+
- Updated dependencies [276d174]
|
|
2178
|
+
- Updated dependencies [19d1f24]
|
|
2179
|
+
- Updated dependencies [8f37c4e]
|
|
2180
|
+
- Updated dependencies [62597c5]
|
|
2181
|
+
- Updated dependencies [2982ed9]
|
|
2182
|
+
- Updated dependencies [741864f]
|
|
2183
|
+
- Updated dependencies [58d65c5]
|
|
2184
|
+
- Updated dependencies [8813335]
|
|
2185
|
+
- Updated dependencies [509f8ed]
|
|
2186
|
+
- Updated dependencies [de5d400]
|
|
2187
|
+
- Updated dependencies [31d34cb]
|
|
2188
|
+
- Updated dependencies [a8198de]
|
|
2189
|
+
- Updated dependencies [0c789a4]
|
|
2190
|
+
- Updated dependencies [05a49f2]
|
|
2191
|
+
- Updated dependencies [76f1543]
|
|
2192
|
+
- Updated dependencies [b234a84]
|
|
2193
|
+
- Updated dependencies [a78cd37]
|
|
2194
|
+
- Updated dependencies [5ea623e]
|
|
2195
|
+
- Updated dependencies [9f7e846]
|
|
2196
|
+
- Updated dependencies [5eabe86]
|
|
2197
|
+
- Updated dependencies [ca5d671]
|
|
2198
|
+
- Updated dependencies [32bf2d6]
|
|
2199
|
+
- Updated dependencies [ff0c384]
|
|
2200
|
+
- Updated dependencies [af4fb29]
|
|
2201
|
+
- Updated dependencies [c698a81]
|
|
2202
|
+
- Updated dependencies [ff5ef1c]
|
|
2203
|
+
- Updated dependencies [befd40c]
|
|
2204
|
+
- Updated dependencies [9a97800]
|
|
2205
|
+
- Updated dependencies [6bca0e4]
|
|
2206
|
+
- Updated dependencies [81c0bc4]
|
|
2207
|
+
- Updated dependencies [3c76801]
|
|
2208
|
+
- Updated dependencies [b2e85a9]
|
|
2209
|
+
- Updated dependencies [60500cb]
|
|
2210
|
+
- Updated dependencies [d5c1f52]
|
|
2211
|
+
- Updated dependencies [c7cd2b6]
|
|
2212
|
+
- Updated dependencies [b2065e7]
|
|
2213
|
+
- Updated dependencies [2fcefb9]
|
|
2214
|
+
- Updated dependencies [77f846a]
|
|
2215
|
+
- Updated dependencies [bc5870c]
|
|
2216
|
+
- Updated dependencies [b55a346]
|
|
2217
|
+
- Updated dependencies [065bba7]
|
|
2218
|
+
- Updated dependencies [f760064]
|
|
2219
|
+
- Updated dependencies [dd19463]
|
|
2220
|
+
- Updated dependencies [6791717]
|
|
2221
|
+
- Updated dependencies [8ea3bee]
|
|
2222
|
+
- Updated dependencies [100547e]
|
|
2223
|
+
- Updated dependencies [3a58149]
|
|
2224
|
+
- Updated dependencies [6d1c155]
|
|
2225
|
+
- Updated dependencies [d7573b3]
|
|
2226
|
+
- Updated dependencies [bf3edfe]
|
|
2227
|
+
- Updated dependencies [2c8474c]
|
|
2228
|
+
- Updated dependencies [6ce89da]
|
|
2229
|
+
- Updated dependencies [0e05aac]
|
|
2230
|
+
- Updated dependencies [ae61ad4]
|
|
2231
|
+
- Updated dependencies [5aed9e4]
|
|
2232
|
+
- Updated dependencies [83c77dc]
|
|
2233
|
+
- Updated dependencies [3c9fca3]
|
|
2234
|
+
- Updated dependencies [18a8e7d]
|
|
2235
|
+
- Updated dependencies [e7957ab]
|
|
2236
|
+
- Updated dependencies [f7e34ca]
|
|
2237
|
+
- Updated dependencies [e719ebd]
|
|
2238
|
+
- Updated dependencies [516583b]
|
|
2239
|
+
- Updated dependencies [f9e4f91]
|
|
2240
|
+
- Updated dependencies [6ef48b1]
|
|
2241
|
+
- Updated dependencies [fa429cf]
|
|
2242
|
+
- Updated dependencies [ed8df3e]
|
|
2243
|
+
- Updated dependencies [b470e91]
|
|
2244
|
+
- Updated dependencies [fe76ece]
|
|
2245
|
+
- Updated dependencies [8b446f5]
|
|
2246
|
+
- Updated dependencies [8e74b27]
|
|
2247
|
+
- Updated dependencies [7102b20]
|
|
2248
|
+
- Updated dependencies [8ebd57f]
|
|
2249
|
+
- Updated dependencies [617707a]
|
|
2250
|
+
- Updated dependencies [c40f3b8]
|
|
2251
|
+
- Updated dependencies [58770f3]
|
|
2252
|
+
- Updated dependencies [aefe428]
|
|
2253
|
+
- Updated dependencies [485f096]
|
|
2254
|
+
- Updated dependencies [7357447]
|
|
2255
|
+
- Updated dependencies [199d31b]
|
|
2256
|
+
- Updated dependencies [9e22085]
|
|
2257
|
+
- Updated dependencies [b655a9d]
|
|
2258
|
+
- Updated dependencies [8e67cc4]
|
|
2259
|
+
- Updated dependencies [c574dfb]
|
|
2260
|
+
- Updated dependencies [02f48b6]
|
|
2261
|
+
- Updated dependencies [3e01cb5]
|
|
2262
|
+
- Updated dependencies [7138bc1]
|
|
2263
|
+
- Updated dependencies [cef27e2]
|
|
2264
|
+
- Updated dependencies [4e8622b]
|
|
2265
|
+
- Updated dependencies [dffd752]
|
|
2266
|
+
- Updated dependencies [06973aa]
|
|
2267
|
+
- Updated dependencies [50798f3]
|
|
2268
|
+
- Updated dependencies [6a576c9]
|
|
2269
|
+
- Updated dependencies [105f3c5]
|
|
2270
|
+
- Updated dependencies [3ccd9e8]
|
|
2271
|
+
- Updated dependencies [689b979]
|
|
2272
|
+
- Updated dependencies [c269ed9]
|
|
2273
|
+
- Updated dependencies [c70f865]
|
|
2274
|
+
- Updated dependencies [e546222]
|
|
2275
|
+
- Updated dependencies [fd13f52]
|
|
2276
|
+
- Updated dependencies [d7bd274]
|
|
2277
|
+
- Updated dependencies [98c3a74]
|
|
2278
|
+
- Updated dependencies [fffa30d]
|
|
2279
|
+
- Updated dependencies [ebce5a3]
|
|
2280
|
+
- Updated dependencies [fb336df]
|
|
2281
|
+
- Updated dependencies [9d9040d]
|
|
2282
|
+
- Updated dependencies [20e317c]
|
|
2283
|
+
- Updated dependencies [425762e]
|
|
2284
|
+
- Updated dependencies [0fce2ef]
|
|
2285
|
+
- Updated dependencies [42df928]
|
|
2286
|
+
- Updated dependencies [8e00bfd]
|
|
2287
|
+
- Updated dependencies [8d37efb]
|
|
2288
|
+
- Updated dependencies [584eeca]
|
|
2289
|
+
- Updated dependencies [0e2ddd4]
|
|
2290
|
+
- Updated dependencies [73a3c89]
|
|
2291
|
+
- Updated dependencies [b7479ab]
|
|
2292
|
+
- Updated dependencies [9850c6e]
|
|
2293
|
+
- Updated dependencies [9118a31]
|
|
2294
|
+
- Updated dependencies [de570cc]
|
|
2295
|
+
- Updated dependencies [b2ea297]
|
|
2296
|
+
- Updated dependencies [5b5a5c3]
|
|
2297
|
+
- Updated dependencies [14582b8]
|
|
2298
|
+
- Updated dependencies [51e144e]
|
|
2299
|
+
- Updated dependencies [19cbf10]
|
|
2300
|
+
- Updated dependencies [ab92940]
|
|
2301
|
+
- Updated dependencies [a691c0b]
|
|
2302
|
+
- Updated dependencies [0b1326d]
|
|
2303
|
+
- Updated dependencies [1e66879]
|
|
2304
|
+
- Updated dependencies [c5200f0]
|
|
2305
|
+
- Updated dependencies [af3861f]
|
|
2306
|
+
- Updated dependencies [515f171]
|
|
2307
|
+
- Updated dependencies [1f4e029]
|
|
2308
|
+
- Updated dependencies [83ec618]
|
|
2309
|
+
- Updated dependencies [4f14ad7]
|
|
2310
|
+
- Updated dependencies [7b43319]
|
|
2311
|
+
- Updated dependencies [258d264]
|
|
2312
|
+
- Updated dependencies [4d963a2]
|
|
2313
|
+
- Updated dependencies [cac64b3]
|
|
2314
|
+
- Updated dependencies [8033ad1]
|
|
2315
|
+
- Updated dependencies [fa140b8]
|
|
2316
|
+
- Updated dependencies [71cba28]
|
|
2317
|
+
- Updated dependencies [190fbd0]
|
|
2318
|
+
- Updated dependencies [c00bf28]
|
|
2319
|
+
- Updated dependencies [93127bd]
|
|
2320
|
+
- Updated dependencies [f2158ec]
|
|
2321
|
+
- Updated dependencies [759606e]
|
|
2322
|
+
- Updated dependencies [fd8dace]
|
|
2323
|
+
- Updated dependencies [72ffc34]
|
|
2324
|
+
- Updated dependencies [a51fa0c]
|
|
2325
|
+
- Updated dependencies [51f3d8d]
|
|
2326
|
+
- Updated dependencies [bf28341]
|
|
2327
|
+
- Updated dependencies [78cbdb5]
|
|
2328
|
+
- Updated dependencies [b7543a9]
|
|
2329
|
+
- Updated dependencies [6c6cee7]
|
|
2330
|
+
- Updated dependencies [42887e0]
|
|
2331
|
+
- Updated dependencies [83fe6e7]
|
|
2332
|
+
- Updated dependencies [d1ab06f]
|
|
2333
|
+
- Updated dependencies [591bf27]
|
|
2334
|
+
- Updated dependencies [38a9568]
|
|
2335
|
+
- Updated dependencies [f90b8fb]
|
|
2336
|
+
- Updated dependencies [91783c4]
|
|
2337
|
+
- Updated dependencies [982885d]
|
|
2338
|
+
- Updated dependencies [dba7d84]
|
|
2339
|
+
- Updated dependencies [ca39427]
|
|
2340
|
+
- Updated dependencies [43ca9d5]
|
|
2341
|
+
- Updated dependencies [bd09957]
|
|
2342
|
+
- Updated dependencies [5a07e67]
|
|
2343
|
+
- Updated dependencies [2d36552]
|
|
2344
|
+
- Updated dependencies [45d8288]
|
|
2345
|
+
- Updated dependencies [b2437a7]
|
|
2346
|
+
- Updated dependencies [f157423]
|
|
2347
|
+
- Updated dependencies [7a90afd]
|
|
2348
|
+
- Updated dependencies [ba306e3]
|
|
2349
|
+
- Updated dependencies [eddc1dd]
|
|
2350
|
+
- Updated dependencies [490f482]
|
|
2351
|
+
- Updated dependencies [27308c5]
|
|
2352
|
+
- Updated dependencies [8689166]
|
|
2353
|
+
- Updated dependencies [c9327c9]
|
|
2354
|
+
- Updated dependencies [920165d]
|
|
2355
|
+
- Updated dependencies [26a2238]
|
|
2356
|
+
- Updated dependencies [9101be5]
|
|
2357
|
+
- Updated dependencies [f53a8d0]
|
|
2358
|
+
- Updated dependencies [5d79faf]
|
|
2359
|
+
- Updated dependencies [968dc1e]
|
|
2360
|
+
- Updated dependencies [57f9b07]
|
|
2361
|
+
- Updated dependencies [3c73d99]
|
|
2362
|
+
- Updated dependencies [d91aed9]
|
|
2363
|
+
- Updated dependencies [ed71d9e]
|
|
2364
|
+
- Updated dependencies [7776fc2]
|
|
2365
|
+
- Updated dependencies [e76634c]
|
|
2366
|
+
- Updated dependencies [c86185e]
|
|
2367
|
+
- Updated dependencies [fb96ecb]
|
|
2368
|
+
- Updated dependencies [1170ed1]
|
|
2369
|
+
- Updated dependencies [f75810e]
|
|
2370
|
+
- Updated dependencies [92814db]
|
|
2371
|
+
- Updated dependencies [4d73b07]
|
|
2372
|
+
- @object-ui/react@17.7.0
|
|
2373
|
+
- @object-ui/core@17.7.0
|
|
2374
|
+
- @object-ui/types@17.7.0
|
|
2375
|
+
- @object-ui/i18n@17.7.0
|
|
2376
|
+
- @object-ui/components@17.7.0
|
|
2377
|
+
- @object-ui/plugin-grid@17.7.0
|
|
2378
|
+
- @object-ui/layout@17.7.0
|
|
2379
|
+
- @object-ui/plugin-form@17.7.0
|
|
2380
|
+
- @object-ui/data-objectstack@17.7.0
|
|
2381
|
+
|
|
2382
|
+
## 17.6.0
|
|
2383
|
+
|
|
2384
|
+
### Minor Changes
|
|
2385
|
+
|
|
2386
|
+
- deb157a: Retire the field designer's `Indexed` toggle — the ObjectStack spec has no
|
|
2387
|
+
field-level index flag
|
|
2388
|
+
|
|
2389
|
+
`indexed` was never a `FieldSchema` key. The field-level flag built no index
|
|
2390
|
+
(objectstack#2377 removed it) and, since objectstack#4001 replaced silent
|
|
2391
|
+
drops with loud rejection, `FieldSchema.safeParse` refuses it by name. Ticking
|
|
2392
|
+
`Indexed` in Studio therefore made `PUT /api/v1/meta/object/:name` fail with
|
|
2393
|
+
`422 INVALID_METADATA`, and — because the key was stored — every later save of
|
|
2394
|
+
that object stayed blocked until the author found and cleared the toggle.
|
|
2395
|
+
|
|
2396
|
+
Both field designers stop offering the control and stop authoring the key
|
|
2397
|
+
(`ObjectFieldInspector`'s Advanced section; `FieldDesigner`'s advanced
|
|
2398
|
+
section, `MetadataFieldsPage`, `MetadataService`, `metadataConverters`), the
|
|
2399
|
+
`designer.field.indexed` / `appDesigner.fieldDesigner.indexed` labels retire
|
|
2400
|
+
with it across all ten locale packs, and `DesignerFieldDefinition.indexed` is
|
|
2401
|
+
removed from `@object-ui/types`.
|
|
2402
|
+
|
|
2403
|
+
Drafts and objects that already carry the key are un-poisoned on load rather
|
|
2404
|
+
than migrated, so an edit-and-save round-trip of previously blocked metadata
|
|
2405
|
+
now succeeds. The strip is keyed to the retired key alone — every other
|
|
2406
|
+
unknown key on a field definition still survives the round-trip.
|
|
2407
|
+
|
|
2408
|
+
Declare indexes on the object instead: `indexes: [{ name, fields, unique }]`.
|
|
2409
|
+
|
|
2410
|
+
### Patch Changes
|
|
2411
|
+
|
|
2412
|
+
- ad07b65: Four packages stop publishing tooling material in their `dist/`
|
|
2413
|
+
|
|
2414
|
+
Each of these packages spelled its build exclusions as `*.test.*`, while this repo's tooling convention is a directory one — `__tests__` / `__mocks__` / `__benchmarks__`, exactly as `TOOLING_FILE` in `scripts/check-phantom-dependencies.mjs` spells it. Any tooling file whose *name* is not `*.test.*` therefore stayed in the emit program and shipped in the tarball. This is the same shape and the same cause as objectui#4006, which fixed `@object-ui/fields` and `@object-ui/plugin-editor` by the filename criterion and so did not reach these four.
|
|
2415
|
+
|
|
2416
|
+
Measured by building each package from a cleared `dist/` on both sides of the change. Nine files disappear, none appears, and every surviving file is untouched — the totals move by exactly the count removed:
|
|
2417
|
+
|
|
2418
|
+
| package | `dist/` files | removed |
|
|
2419
|
+
| --- | --- | --- |
|
|
2420
|
+
| `@object-ui/core` | 176 to 174 | `dist/__benchmarks__/core.bench.js`, `core.bench.d.ts` |
|
|
2421
|
+
| `@object-ui/plugin-designer` | 70 to 66 | `dist/__tests__/__mocks__/plugin-form.d.ts`, `plugin-grid.d.ts`, and both `.d.ts.map` |
|
|
2422
|
+
| `@object-ui/plugin-grid` | 62 to 60 | `dist/__tests__/explainDouble.d.ts` and its `.d.ts.map` |
|
|
2423
|
+
| `@object-ui/plugin-view` | 13 to 12 | `dist/__tests__/explainDouble.d.ts` |
|
|
2424
|
+
|
|
2425
|
+
Only `@object-ui/core`'s had runtime weight. The other eight are declarations nothing resolves, but `core.bench.js` is a real emitted module whose first import is `import { bench, describe } from 'vitest'` — a runtime import of a package a consumer never installs, since `vitest` is a devDependency of `@object-ui/core` and devDependencies are not installed transitively. Nothing resolves it today either (it is not in the `exports` map), so no consumer breaks in either direction; this is the tarball shedding files nothing reached.
|
|
2426
|
+
|
|
2427
|
+
No type coverage leaves with the emit. The three plugins' helper and mock files are already program inputs of the `tsconfig.test.json` that each package's `type-check` chains, reached through the imports in the suites beside them — `tsc --listFiles` names all four files on both sides of the change. `core.bench.ts` had no such edge, since nothing imports a benchmark, so it is now named explicitly in `packages/core/tsconfig.test.json`. That move was deliberate rather than forced: `scripts/check-type-check-coverage.mjs` enumerates `*.test.ts(x)` only, so a benchmark that no program reads is invisible to it, and dropping the coverage silently would have been the "coverage that was right by accident" objectui#4006 recorded. Verified by appending a provably-false annotation to the benchmark, which turns `tsc -p packages/core/tsconfig.test.json` red at exit 2.
|
|
2428
|
+
- Updated dependencies [88085e3]
|
|
2429
|
+
- Updated dependencies [69251bf]
|
|
2430
|
+
- Updated dependencies [57e668f]
|
|
2431
|
+
- Updated dependencies [516663d]
|
|
2432
|
+
- Updated dependencies [41ac1b7]
|
|
2433
|
+
- Updated dependencies [1eaf0a1]
|
|
2434
|
+
- Updated dependencies [a09bc33]
|
|
2435
|
+
- Updated dependencies [feb6b16]
|
|
2436
|
+
- Updated dependencies [460c4d0]
|
|
2437
|
+
- Updated dependencies [0ae27f7]
|
|
2438
|
+
- Updated dependencies [9aecabe]
|
|
2439
|
+
- Updated dependencies [2533ec5]
|
|
2440
|
+
- Updated dependencies [78c0f9a]
|
|
2441
|
+
- Updated dependencies [bbe8b86]
|
|
2442
|
+
- Updated dependencies [8477be5]
|
|
2443
|
+
- Updated dependencies [279fb13]
|
|
2444
|
+
- Updated dependencies [2e82ab2]
|
|
2445
|
+
- Updated dependencies [ad07b65]
|
|
2446
|
+
- Updated dependencies [41f498b]
|
|
2447
|
+
- Updated dependencies [ef0d150]
|
|
2448
|
+
- Updated dependencies [1ef236e]
|
|
2449
|
+
- Updated dependencies [f34226e]
|
|
2450
|
+
- Updated dependencies [564b605]
|
|
2451
|
+
- Updated dependencies [e1d4251]
|
|
2452
|
+
- Updated dependencies [40d3a33]
|
|
2453
|
+
- Updated dependencies [9b20dea]
|
|
2454
|
+
- Updated dependencies [469b604]
|
|
2455
|
+
- Updated dependencies [8b9dc62]
|
|
2456
|
+
- Updated dependencies [d7be3bd]
|
|
2457
|
+
- Updated dependencies [a954b48]
|
|
2458
|
+
- Updated dependencies [bda9b12]
|
|
2459
|
+
- Updated dependencies [e354dd0]
|
|
2460
|
+
- Updated dependencies [1184192]
|
|
2461
|
+
- Updated dependencies [a2a9747]
|
|
2462
|
+
- Updated dependencies [65e88e6]
|
|
2463
|
+
- Updated dependencies [a1609a6]
|
|
2464
|
+
- Updated dependencies [53f23bc]
|
|
2465
|
+
- Updated dependencies [c4533dc]
|
|
2466
|
+
- Updated dependencies [be60815]
|
|
2467
|
+
- Updated dependencies [37f6844]
|
|
2468
|
+
- Updated dependencies [93de4f6]
|
|
2469
|
+
- Updated dependencies [2b50261]
|
|
2470
|
+
- Updated dependencies [384f30d]
|
|
2471
|
+
- Updated dependencies [ac600e5]
|
|
2472
|
+
- Updated dependencies [97fba31]
|
|
2473
|
+
- Updated dependencies [232f61a]
|
|
2474
|
+
- Updated dependencies [f68018d]
|
|
2475
|
+
- Updated dependencies [d374caf]
|
|
2476
|
+
- Updated dependencies [5673576]
|
|
2477
|
+
- Updated dependencies [c1ef923]
|
|
2478
|
+
- Updated dependencies [911ceaa]
|
|
2479
|
+
- Updated dependencies [98eab36]
|
|
2480
|
+
- Updated dependencies [375efb4]
|
|
2481
|
+
- Updated dependencies [af5e292]
|
|
2482
|
+
- Updated dependencies [3fbbea1]
|
|
2483
|
+
- Updated dependencies [0bffb18]
|
|
2484
|
+
- Updated dependencies [3e0214c]
|
|
2485
|
+
- Updated dependencies [800f455]
|
|
2486
|
+
- Updated dependencies [dbbd38a]
|
|
2487
|
+
- Updated dependencies [27c9cbd]
|
|
2488
|
+
- Updated dependencies [5458414]
|
|
2489
|
+
- Updated dependencies [3241559]
|
|
2490
|
+
- Updated dependencies [7f96b10]
|
|
2491
|
+
- Updated dependencies [167ec42]
|
|
2492
|
+
- Updated dependencies [cf4f8a6]
|
|
2493
|
+
- Updated dependencies [616a2a5]
|
|
2494
|
+
- Updated dependencies [6c68b13]
|
|
2495
|
+
- Updated dependencies [0046d8f]
|
|
2496
|
+
- Updated dependencies [3b03704]
|
|
2497
|
+
- Updated dependencies [f1d4748]
|
|
2498
|
+
- Updated dependencies [bea374e]
|
|
2499
|
+
- Updated dependencies [b1119ec]
|
|
2500
|
+
- Updated dependencies [5607092]
|
|
2501
|
+
- Updated dependencies [9f23d2b]
|
|
2502
|
+
- Updated dependencies [b4089be]
|
|
2503
|
+
- Updated dependencies [578e025]
|
|
2504
|
+
- Updated dependencies [b4bccc7]
|
|
2505
|
+
- Updated dependencies [af025ee]
|
|
2506
|
+
- Updated dependencies [d109a4d]
|
|
2507
|
+
- Updated dependencies [3d053bb]
|
|
2508
|
+
- Updated dependencies [598c89a]
|
|
2509
|
+
- Updated dependencies [4a0bd17]
|
|
2510
|
+
- Updated dependencies [b8b9af4]
|
|
2511
|
+
- Updated dependencies [31676be]
|
|
2512
|
+
- Updated dependencies [958d757]
|
|
2513
|
+
- Updated dependencies [8c0d52e]
|
|
2514
|
+
- Updated dependencies [bfb64ee]
|
|
2515
|
+
- Updated dependencies [e09f9e8]
|
|
2516
|
+
- Updated dependencies [03e5f97]
|
|
2517
|
+
- Updated dependencies [ae804ec]
|
|
2518
|
+
- Updated dependencies [b29488f]
|
|
2519
|
+
- Updated dependencies [9fbb9b5]
|
|
2520
|
+
- Updated dependencies [90517e1]
|
|
2521
|
+
- Updated dependencies [aff10e2]
|
|
2522
|
+
- Updated dependencies [70a774b]
|
|
2523
|
+
- Updated dependencies [9ce096f]
|
|
2524
|
+
- Updated dependencies [e05db88]
|
|
2525
|
+
- Updated dependencies [7458a41]
|
|
2526
|
+
- Updated dependencies [ad13d63]
|
|
2527
|
+
- Updated dependencies [5ffcc14]
|
|
2528
|
+
- Updated dependencies [d971e51]
|
|
2529
|
+
- Updated dependencies [97abb24]
|
|
2530
|
+
- Updated dependencies [deb157a]
|
|
2531
|
+
- Updated dependencies [9c60144]
|
|
2532
|
+
- Updated dependencies [e7747f1]
|
|
2533
|
+
- Updated dependencies [d2ce342]
|
|
2534
|
+
- Updated dependencies [a8411ad]
|
|
2535
|
+
- Updated dependencies [9695da7]
|
|
2536
|
+
- Updated dependencies [ac2f332]
|
|
2537
|
+
- Updated dependencies [a777058]
|
|
2538
|
+
- Updated dependencies [75444e3]
|
|
2539
|
+
- Updated dependencies [58b8346]
|
|
2540
|
+
- Updated dependencies [2d0bd16]
|
|
2541
|
+
- Updated dependencies [a9e17b4]
|
|
2542
|
+
- Updated dependencies [b8ce7dc]
|
|
2543
|
+
- Updated dependencies [dad51e5]
|
|
2544
|
+
- Updated dependencies [1c9c342]
|
|
2545
|
+
- Updated dependencies [787c738]
|
|
2546
|
+
- Updated dependencies [8396656]
|
|
2547
|
+
- Updated dependencies [dbbd38a]
|
|
2548
|
+
- Updated dependencies [2165d88]
|
|
2549
|
+
- Updated dependencies [8871c14]
|
|
2550
|
+
- Updated dependencies [93fe362]
|
|
2551
|
+
- Updated dependencies [dfc6975]
|
|
2552
|
+
- Updated dependencies [3cf4de0]
|
|
2553
|
+
- Updated dependencies [c9dc811]
|
|
2554
|
+
- Updated dependencies [144ef9b]
|
|
2555
|
+
- Updated dependencies [138ab04]
|
|
2556
|
+
- Updated dependencies [d871f8e]
|
|
2557
|
+
- Updated dependencies [a0b9e91]
|
|
2558
|
+
- Updated dependencies [99bd015]
|
|
2559
|
+
- Updated dependencies [21e4585]
|
|
2560
|
+
- @object-ui/types@17.6.0
|
|
2561
|
+
- @object-ui/fields@17.6.0
|
|
2562
|
+
- @object-ui/i18n@17.6.0
|
|
2563
|
+
- @object-ui/react@17.6.0
|
|
2564
|
+
- @object-ui/plugin-grid@17.6.0
|
|
2565
|
+
- @object-ui/components@17.6.0
|
|
2566
|
+
- @object-ui/core@17.6.0
|
|
2567
|
+
- @object-ui/data-objectstack@17.6.0
|
|
2568
|
+
- @object-ui/plugin-form@17.6.0
|
|
2569
|
+
|
|
3
2570
|
## 17.5.0
|
|
4
2571
|
|
|
5
2572
|
### Patch Changes
|