@xh/hoist 86.4.0 → 87.0.0-SNAPSHOT.1785528296623
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 +270 -199
- package/build/types/cmp/layout/Tags.d.ts +1 -3
- package/build/types/core/XH.d.ts +6 -1
- package/build/types/core/types/Types.d.ts +2 -0
- package/build/types/data/Store.d.ts +54 -4
- package/build/types/data/StoreRecord.d.ts +17 -2
- package/build/types/data/cube/Cube.d.ts +10 -4
- package/build/types/data/cube/View.d.ts +14 -2
- package/build/types/data/cube/row/AggregateRow.d.ts +2 -0
- package/build/types/data/cube/row/BaseRow.d.ts +1 -1
- package/build/types/data/cube/row/BucketRow.d.ts +2 -0
- package/build/types/data/cube/row/LeafRow.d.ts +31 -3
- package/build/types/desktop/cmp/appOption/AutoRefreshAppOption.d.ts +24 -10
- package/build/types/desktop/cmp/appOption/ThemeAppOption.d.ts +24 -10
- package/build/types/desktop/cmp/grid/impl/filter/ColumnHeaderFilterModel.d.ts +1 -1
- package/build/types/desktop/hooks/UseContextMenu.d.ts +1 -1
- package/build/types/desktop/hooks/UseHotkeys.d.ts +1 -1
- package/build/types/kit/swiper/index.d.ts +2 -2
- package/build/types/mobile/cmp/popover/Popover.d.ts +3 -5
- package/build/types/svc/FetchService.d.ts +139 -1
- package/build/types/svc/impl/NdjsonResultImpl.d.ts +57 -0
- package/build/types/svc/impl/StringInterner.d.ts +54 -0
- package/cmp/grid/columns/Column.ts +2 -1
- package/cmp/input/HoistInputModel.ts +4 -7
- package/core/XH.ts +10 -0
- package/core/types/Types.ts +3 -0
- package/data/Field.ts +15 -3
- package/data/README.md +15 -0
- package/data/Store.ts +135 -36
- package/data/StoreRecord.ts +32 -11
- package/data/cube/Cube.ts +21 -5
- package/data/cube/README.md +5 -0
- package/data/cube/View.ts +31 -5
- package/data/cube/row/AggregateRow.ts +5 -0
- package/data/cube/row/BaseRow.ts +4 -4
- package/data/cube/row/BucketRow.ts +5 -0
- package/data/cube/row/LeafRow.ts +76 -14
- package/data/impl/RecordSet.ts +4 -1
- package/desktop/cmp/dash/canvas/widgetchooser/DashCanvasWidgetChooser.ts +6 -1
- package/desktop/cmp/filter/FilterChooser.scss +2 -2
- package/desktop/cmp/input/CodeInput.ts +4 -1
- package/desktop/cmp/tab/dynamic/DynamicTabSwitcher.ts +1 -1
- package/desktop/cmp/tab/dynamic/scroller/Scroller.ts +2 -2
- package/desktop/hooks/UseContextMenu.ts +1 -1
- package/desktop/hooks/UseHotkeys.ts +1 -1
- package/kit/blueprint/Wrappers.ts +6 -2
- package/kit/onsen/index.ts +32 -13
- package/mcp/README.md +4 -1
- package/mobile/cmp/popover/Popover.ts +31 -47
- package/package.json +12 -12
- package/svc/FetchService.ts +236 -11
- package/svc/impl/NdjsonResultImpl.ts +165 -0
- package/svc/impl/StringInterner.ts +141 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,78 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 87.0.0-SNAPSHOT - unreleased
|
|
4
|
+
|
|
5
|
+
### 💥 Breaking Changes (upgrade difficulty: 🟠 MEDIUM - React 19 upgrade.)
|
|
6
|
+
|
|
7
|
+
* Hoist v87 updates to React 19. Apps may require minor adjustments and should be tested carefully.
|
|
8
|
+
* Apply any type adjustments needed to meet React 19's stricter typing. See
|
|
9
|
+
https://react.dev/blog/2024/04/25/react-19-upgrade-guide#typescript-changes for more info.
|
|
10
|
+
* Both desktop and mobile `Popover` implementations now render on Floating UI, rather than
|
|
11
|
+
Popper.js, which is not React-19 compatible. This changes the underlying DOM and CSS classes
|
|
12
|
+
for popovers. Test popover-based UI (menus, selects, date inputs, filter choosers) and adjust
|
|
13
|
+
any custom styling that targeted Blueprint or Popper CSS classes (e.g. `bp6-minimal`).
|
|
14
|
+
* The `popperOptions` escape-hatch prop has been removed from the mobile `Popover`.
|
|
15
|
+
* `View.result.leafMap` is now null unless the `Query` sets `includeLeaves` or `provideLeaves`. Set
|
|
16
|
+
either flag if an aggregate-only view needs leaf access, or read source records from `Cube.store`.
|
|
17
|
+
|
|
18
|
+
### 🎁 New Features
|
|
19
|
+
|
|
20
|
+
* Added `Store.retainRaw` config (default `true`). Set to `false` to drop each record's reference to
|
|
21
|
+
its raw source data object after parsing, reducing memory usage on large stores where
|
|
22
|
+
`StoreRecord.raw` is not needed. Not compatible with `reuseRecords`.
|
|
23
|
+
* Added `Store.loadDataAsync()` to load a complete dataset from a streaming source - a sync or
|
|
24
|
+
async iterable yielding raw records. Creates records incrementally without buffering
|
|
25
|
+
the complete raw dataset in memory, then installs them in a single transaction once the source
|
|
26
|
+
completes. `Cube.loadDataAsync()` likewise accepts a streaming source.
|
|
27
|
+
* Added `XH.fetchNdjson()` to consume an NDJSON (newline-delimited JSON) response incrementally.
|
|
28
|
+
Returns a `lines` async iterable of parsed records - the natural streaming source for
|
|
29
|
+
`Store.loadDataAsync()` - plus a `meta` promise for an optional leading metadata record.
|
|
30
|
+
Optionally pairs with hoist-core v41's `BaseController.renderNdjson()`.
|
|
31
|
+
* Added `FetchOptions.internStrings` to intern (deduplicate) repeated string values within large
|
|
32
|
+
JSON and NDJSON responses, reducing retained memory for high-volume tabular datasets. Interned
|
|
33
|
+
values may also be shared across successive fetches of the same logical dataset, as identified
|
|
34
|
+
by a required app-provided key, per a configurable `retainMode`.
|
|
35
|
+
* Cube `View`s no longer copy leaf row data when leaves are not exposed on their results (neither
|
|
36
|
+
`includeLeaves` nor `provideLeaves` set) - leaf rows read directly from cube records, eliminating
|
|
37
|
+
per-View leaf data objects and speeding up view builds for aggregate-only views over large
|
|
38
|
+
datasets. Such views no longer publish a `View.result.leafMap` - see Breaking Changes.
|
|
39
|
+
* Added an opt-in `Store.useRawAsData` config for projections of already-parsed data - most notably
|
|
40
|
+
a connected Cube `View` feeding a (tree) grid, or an endpoint returning data in its final
|
|
41
|
+
client-side form. Records use the provider's row object as their `data` by reference rather than
|
|
42
|
+
re-parsing and copying it, collapsing the usual two per-row objects to one and skipping the
|
|
43
|
+
per-row parse on every load and update. Requires that raw data already match the Store's Field
|
|
44
|
+
definitions - see the `useRawAsData` config docs for the full contract.
|
|
45
|
+
|
|
46
|
+
### 🐞 Bug Fixes
|
|
47
|
+
|
|
48
|
+
* Fixed `View.getDimensionValues()` returning sets of `undefined` rather than the actual unique
|
|
49
|
+
values for each dimension.
|
|
50
|
+
|
|
51
|
+
### ⚙️ Technical
|
|
52
|
+
|
|
53
|
+
* Moved both desktop and mobile popover implementations off the deprecated, React-18-capped
|
|
54
|
+
Popper.js onto Floating UI for React 19 compatibility. The Hoist `Popover` components (mobile and
|
|
55
|
+
desktop) have been updated so no app call-site changes are required.
|
|
56
|
+
* Applied type adjustments to meet React 19's stricter `@types/react` typing.
|
|
57
|
+
* Field XSS protection now preserves the reference identity of string values that sanitization
|
|
58
|
+
does not modify (the common case). Previously every parsed string value was replaced with a
|
|
59
|
+
freshly-allocated copy, doubling string memory on stores retaining raw data and defeating any
|
|
60
|
+
upstream deduplication of repeated values.
|
|
61
|
+
|
|
62
|
+
### ⚙️ Typescript API Adjustments
|
|
63
|
+
|
|
64
|
+
* Retyped `BaseRow.data` from `ViewRowData` to `PlainObject`, reflecting that custom `Aggregator`
|
|
65
|
+
implementations may only rely on queried field values - not `ViewRowData` metadata - when reading
|
|
66
|
+
row data. Use row-level getters such as `BaseRow.isLeaf` in place of `data.cubeRowType`.
|
|
67
|
+
* Corrected `ChildRawData.rawData` type from `PlainObject[]` to `PlainObject` - the runtime has
|
|
68
|
+
always expected a single raw record per object, and an array would throw on load.
|
|
69
|
+
|
|
70
|
+
### 📚 Libraries
|
|
71
|
+
|
|
72
|
+
* @auth0/auth0-spa-js `2.23 → 2.24`
|
|
73
|
+
* react `18.2 → 19.2`
|
|
74
|
+
* react-window `2.2 → 2.3`
|
|
75
|
+
|
|
3
76
|
## 86.4.0 - 2026-07-15
|
|
4
77
|
|
|
5
78
|
### 🎁 New Features
|
|
@@ -26,13 +99,13 @@
|
|
|
26
99
|
ensuring such values render with their proper label rather than falling back to the raw value.
|
|
27
100
|
* `SegmentedControl` options (desktop and mobile) now accept a `testId`, emitted on the option's
|
|
28
101
|
rendered button as `data-testid` for E2E targeting. If an option omits its own `testId` but the
|
|
29
|
-
control has one, an id is auto-derived as `${controlTestId}-${value}` - restoring parity with
|
|
30
|
-
|
|
102
|
+
control has one, an id is auto-derived as `${controlTestId}-${value}` - restoring parity with the
|
|
103
|
+
legacy `ButtonGroupInput` test-hook pattern for apps migrating between the two.
|
|
31
104
|
|
|
32
105
|
### 🐞 Bug Fixes
|
|
33
106
|
|
|
34
|
-
* Fixed grid columns configured as `hidden` becoming visible after being grouped and then
|
|
35
|
-
|
|
107
|
+
* Fixed grid columns configured as `hidden` becoming visible after being grouped and then ungrouped.
|
|
108
|
+
`GridModel` now re-asserts each column's configured visibility whenever `groupBy`
|
|
36
109
|
changes, keeping AG Grid's column state in sync with `columnState`.
|
|
37
110
|
* Fixed `StoreFilterField` and grid Find so an active quick-filter or find query no longer returns
|
|
38
111
|
different results when the grid's `groupBy` changes.
|
|
@@ -48,9 +121,9 @@
|
|
|
48
121
|
* Fixed `FilterChooser` popover mode (formerly `PopoverFilterChooser`) so its collapsed control no
|
|
49
122
|
longer disappears when opened - it now always occupies its place in the layout, so surrounding
|
|
50
123
|
elements no longer shift. Its clear and favorites controls also respond to a single click rather
|
|
51
|
-
than requiring the popover to be opened first. This mode is now enabled more naturally via
|
|
52
|
-
|
|
53
|
-
|
|
124
|
+
than requiring the popover to be opened first. This mode is now enabled more naturally via a new
|
|
125
|
+
option `filterChooser({popover: true})`, deprecating `PopoverFilterChooser`, which remains as a
|
|
126
|
+
thin alias.
|
|
54
127
|
* Fixed "not a valid MIME type" console warnings from `FileChooser`. Accepted extensions are now
|
|
55
128
|
passed under a dummy MIME type key, silencing the warnings while continuing to filter selected
|
|
56
129
|
files by extension.
|
|
@@ -66,8 +139,8 @@
|
|
|
66
139
|
### 🤖 AI Docs + Tooling
|
|
67
140
|
|
|
68
141
|
* Fixed the MCP server and `hoist-ts` CLI TypeScript symbol tools (`search`, `symbol`, `members`)
|
|
69
|
-
returning no results on Windows, where a path-separator mismatch left the symbol index empty.
|
|
70
|
-
|
|
142
|
+
returning no results on Windows, where a path-separator mismatch left the symbol index empty. Path
|
|
143
|
+
handling is now normalized so the developer tools work on Windows as well as macOS/Linux.
|
|
71
144
|
|
|
72
145
|
### 📚 Libraries
|
|
73
146
|
|
|
@@ -85,8 +158,8 @@
|
|
|
85
158
|
button. For `readonly` inputs it defaults to true, so applications can bind directly to raw source
|
|
86
159
|
values and drop their pre-formatting logic, simplifying call sites substantially.
|
|
87
160
|
* Grid column filter specs now support a `sortValue` config, letting the Values tab of the filter
|
|
88
|
-
dialog sort its entries the same way the underlying grid column sorts them. When not provided,
|
|
89
|
-
|
|
161
|
+
dialog sort its entries the same way the underlying grid column sorts them. When not provided, the
|
|
162
|
+
column's own `sortValue` is used.
|
|
90
163
|
* `GridModel.levelLabels` now accepts a partial array covering only the top levels of a tree or
|
|
91
164
|
grouped grid. The "Expand to..." menu and `ExpandToLevelButton` offer one entry per labelled
|
|
92
165
|
level, so deeper, unlabelled levels (e.g. system-managed) are no longer required and are omitted
|
|
@@ -147,11 +220,11 @@
|
|
|
147
220
|
horizontal scrolling when both `enableFullWidthScroll` and `useVirtualColumns` were enabled.
|
|
148
221
|
* Updated `DynamicTabSwitcher` to properly apply `testId` passed down by `TabContainer`.
|
|
149
222
|
* Ensure publication of `router5-plugin-browser` TS module augmentation.
|
|
150
|
-
* Set an explicit `%` unit on the `flex-basis: 0` of `TabContainer`'s flex shorthand to ensure
|
|
151
|
-
|
|
223
|
+
* Set an explicit `%` unit on the `flex-basis: 0` of `TabContainer`'s flex shorthand to ensure that
|
|
224
|
+
the `0` is not interpreted as a `0px` basis and that the container sizes as expected.
|
|
152
225
|
* ⚠️Apps that upgrade to `hoist-dev-utils v13.x` and use `flex: 1 1 0` or `flex-basis: 0` should
|
|
153
|
-
verify that their flex layouts continue to work as expected and add an explicit unit if
|
|
154
|
-
|
|
226
|
+
verify that their flex layouts continue to work as expected and add an explicit unit if not
|
|
227
|
+
(e.g. `flex: 1 1 0%` or `flex-basis: 0%`).
|
|
155
228
|
|
|
156
229
|
### ⚙️ Technical
|
|
157
230
|
|
|
@@ -201,9 +274,9 @@
|
|
|
201
274
|
See [`docs/upgrade-notes/v86-upgrade-notes.md`](docs/upgrade-notes/v86-upgrade-notes.md) for
|
|
202
275
|
detailed, step-by-step upgrade instructions with before/after code examples.
|
|
203
276
|
|
|
204
|
-
* Deprecated `HoistBase.withSpan()` and the `FetchOptions.span` / `loadSpec` fields, in favor of
|
|
205
|
-
|
|
206
|
-
|
|
277
|
+
* Deprecated `HoistBase.withSpan()` and the `FetchOptions.span` / `loadSpec` fields, in favor of the
|
|
278
|
+
`Runner` chain (`runner().span()`) and the new `CallContext` argument to fetch methods (see below
|
|
279
|
+
for more details). Both log a warning and are scheduled for removal in v88.
|
|
207
280
|
* Upgraded `CodeInput` to CodeMirror v6 (upgraded from v5).
|
|
208
281
|
* Removed `editorProps` prop - most use cases now supported via first-class `CodeInput` props
|
|
209
282
|
such as `readonly`, `language`, `lineNumbers`, and `lineWrapping`.
|
|
@@ -225,16 +298,16 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
225
298
|
* `DashContainerModel` no longer persists per-view `icon` in its layout state, aligning with
|
|
226
299
|
`DashCanvasModel`. Icons now always come from the `DashViewSpec`. Apps that set
|
|
227
300
|
`DashViewModel.icon` at runtime still see it render, but the override is no longer saved.
|
|
228
|
-
* Removed the `serializeIcon()` / `deserializeIcon()` helpers from `@xh/hoist/icon`, which
|
|
229
|
-
|
|
230
|
-
* Replaced the mobile `DateInput`'s picker with the browser's native `<input type="date">`,
|
|
231
|
-
|
|
301
|
+
* Removed the `serializeIcon()` / `deserializeIcon()` helpers from `@xh/hoist/icon`, which existed
|
|
302
|
+
only to support the above.
|
|
303
|
+
* Replaced the mobile `DateInput`'s picker with the browser's native `<input type="date">`, dropping
|
|
304
|
+
the abandoned `react-dates` dependency. Removed the obsolete `formatString`,
|
|
232
305
|
`initialMonth`, `placeholder`, and `singleDatePickerProps` props from `DateInputProps`.
|
|
233
306
|
|
|
234
307
|
### 🎁 New Features
|
|
235
308
|
|
|
236
|
-
* `FileChooser` gained extensive new capabilities as part of its redesign: a `maxFiles` limit,
|
|
237
|
-
|
|
309
|
+
* `FileChooser` gained extensive new capabilities as part of its redesign: a `maxFiles` limit, fully
|
|
310
|
+
customizable `emptyDisplay` / `fileDisplay` content, `onFileAccepted` / `onFileRejected`
|
|
238
311
|
callbacks, configurable rejection toasts, `maskOnDrag` / `maskOnDisabled` options, and a
|
|
239
312
|
programmatic `openFileBrowser()` method. In multi-file mode a persistent drop target sits
|
|
240
313
|
alongside the grid - placement set via the `dropTargetPlacement` prop (`left`, `top`, or
|
|
@@ -245,23 +318,23 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
245
318
|
now accept as an optional argument.
|
|
246
319
|
* Added a client-side `MetricsService` (`XH.metricsService`) for recording timers and counters,
|
|
247
320
|
batched to the server's Micrometer registry. Recording requires `hoist-core >= 40.0.1`.
|
|
248
|
-
* Trace spans can now chain onto a remote `traceparent` received off-channel (e.g. a WebSocket,
|
|
249
|
-
|
|
250
|
-
* Desktop `DateInput` now supports a `commitOnChange` prop (default `true`). Set to `false` to
|
|
251
|
-
|
|
321
|
+
* Trace spans can now chain onto a remote `traceparent` received off-channel (e.g. a WebSocket, SSE,
|
|
322
|
+
or queue message), in addition to a local parent span.
|
|
323
|
+
* Desktop `DateInput` now supports a `commitOnChange` prop (default `true`). Set to `false` to defer
|
|
324
|
+
parsing and value commit until blur, Enter, or picker selection. Useful when configuring
|
|
252
325
|
`parseStrings` such that one format is a prefix of another (e.g. `MM/DD/YY` and `MM/DD/YYYY`),
|
|
253
326
|
where the eager default would reformat the user's text mid-typing.
|
|
254
327
|
* `SegmentedControl` now supports a per-option `intent`, with an option's own intent taking
|
|
255
328
|
precedence over the control-level default. Its control-level `intent` prop was widened from
|
|
256
|
-
`'none' | 'primary'` to `'none' | Intent`, now accepting `success` / `warning` / `danger` as
|
|
257
|
-
|
|
329
|
+
`'none' | 'primary'` to `'none' | Intent`, now accepting `success` / `warning` / `danger` as well
|
|
330
|
+
(a backward-compatible widening).
|
|
258
331
|
* Added `pathPrefix` to `PersistOptions` - an inheritable prefix prepended to the resolved `path`,
|
|
259
332
|
concatenated through `persistOptions()`. Enables hierarchical namespacing of persistence so a
|
|
260
333
|
parent model can scope all descendants (`@persist` properties, `markPersist` calls, child
|
|
261
334
|
`GridModel` / `PanelModel` / etc.) under a single shared key in one backing store. See
|
|
262
335
|
[`docs/persistence.md`](docs/persistence.md#hierarchical-namespacing-with-pathprefix).
|
|
263
|
-
* Added exported `persistOptions()` function for merging one or more `PersistOptions` objects,
|
|
264
|
-
|
|
336
|
+
* Added exported `persistOptions()` function for merging one or more `PersistOptions` objects, with
|
|
337
|
+
later arguments overriding earlier ones. Replaces the now-deprecated
|
|
265
338
|
`PersistenceProvider.mergePersistOptions`.
|
|
266
339
|
|
|
267
340
|
### 🐞 Bug Fixes
|
|
@@ -270,8 +343,8 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
270
343
|
modern `chart.zooming.type` Highcharts option, in addition to the legacy `chart.zoomType`.
|
|
271
344
|
* Improved desktop `Select` to no longer hijack `Home`/`End` keys, allowing native caret movement in
|
|
272
345
|
the input. See [#3930](https://github.com/xh/hoist-react/issues/3930).
|
|
273
|
-
* Fixed `GridFilter` column header values tab crashing with a duplicate-ID error when re-opened
|
|
274
|
-
|
|
346
|
+
* Fixed `GridFilter` column header values tab crashing with a duplicate-ID error when re-opened for
|
|
347
|
+
a `tags`-typed field with an active filter.
|
|
275
348
|
* Fixed `RelativeTimestamp` ignoring an explicitly passed `model` prop when resolving its `bind`
|
|
276
349
|
source - the prop is now honored, falling back to the context model only when unset.
|
|
277
350
|
* Fixed `UniqueAggregator` permanently caching `null` on grouped cube rows after a diverge →
|
|
@@ -360,30 +433,30 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
360
433
|
Note that `hoist-core >= 39.0` is recommended (not required) to pair with the span-sampling and
|
|
361
434
|
app-load span changes in this release.
|
|
362
435
|
|
|
363
|
-
* `XH.installServicesAsync()` no longer accepts the spread-args form. Callers must pass an
|
|
364
|
-
|
|
436
|
+
* `XH.installServicesAsync()` no longer accepts the spread-args form. Callers must pass an array of
|
|
437
|
+
service classes plus the current phase's `InitContext`:
|
|
365
438
|
```ts
|
|
366
439
|
// before
|
|
367
440
|
await XH.installServicesAsync(MyServiceA, MyServiceB);
|
|
368
441
|
// after
|
|
369
442
|
await XH.installServicesAsync([MyServiceA, MyServiceB], ctx);
|
|
370
443
|
```
|
|
371
|
-
The `ctx` is the one passed to your `AppModel.initAsync(ctx)` override. Forwarding it
|
|
372
|
-
|
|
444
|
+
The `ctx` is the one passed to your `AppModel.initAsync(ctx)` override. Forwarding it ensures
|
|
445
|
+
service-init spans nest under the current phase's root span (e.g. `xh.client.appInit`
|
|
373
446
|
for app-level services, `xh.client.hoistInit` for Hoist-internal services).
|
|
374
447
|
* `HoistService.initAsync()` and `HoistAppModel.initAsync()` signatures now take an
|
|
375
|
-
`InitContext` argument. Override signatures must be updated to `initAsync(ctx: InitContext)` -
|
|
376
|
-
|
|
448
|
+
`InitContext` argument. Override signatures must be updated to `initAsync(ctx: InitContext)` - the
|
|
449
|
+
upgrade notes cover the mechanical changes and recommended ways to forward `ctx.span`
|
|
377
450
|
into init-time fetch and async work.
|
|
378
451
|
* `HoistBase.withSpan()` / `withSpanAsync()` have been removed in favor of the new
|
|
379
452
|
`HoistBase.span()` builder. Replace `this.withSpanAsync(cfg, fn)` with
|
|
380
|
-
`this.span(cfg).run(fn)`. The underlying `XH.traceService.withSpan()` API remains for
|
|
381
|
-
|
|
453
|
+
`this.span(cfg).run(fn)`. The underlying `XH.traceService.withSpan()` API remains for advanced
|
|
454
|
+
use - now a single async method (the prior sync `withSpan` and async
|
|
382
455
|
`withSpanAsync` on `TraceService` have been merged).
|
|
383
456
|
* `TraceService` no longer supports the `alwaysSampleErrors` flag, which was deemed inappropriate
|
|
384
457
|
for head-based sampling. This change is consistent with a similar update in hoist-core v39. Apps
|
|
385
|
-
requiring full visibility into error spans for a particular set of errors should ensure they
|
|
386
|
-
|
|
458
|
+
requiring full visibility into error spans for a particular set of errors should ensure they are
|
|
459
|
+
sampled via the existing rules.
|
|
387
460
|
* Removed several APIs that had been deprecated for one or more prior versions - including
|
|
388
461
|
`loadModel` getters across model/service/store classes, static defaults setters on `GridModel`/
|
|
389
462
|
`ChartModel`/`ExceptionHandler`/`FetchService`, and the legacy `withFilterByField`/
|
|
@@ -392,12 +465,11 @@ app-load span changes in this release.
|
|
|
392
465
|
|
|
393
466
|
### 🎁 New Features
|
|
394
467
|
|
|
395
|
-
* Added `Span.setTag()`/`setTags()`. Span passed to spanned functions is now non-nullable,
|
|
396
|
-
|
|
397
|
-
* `LoadSpecConfig.span` lets callers seed the parent trace context for a managed load via
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
properly nesting fetch calls.
|
|
468
|
+
* Added `Span.setTag()`/`setTags()`. Span passed to spanned functions is now non-nullable, matching
|
|
469
|
+
the server-side API.
|
|
470
|
+
* `LoadSpecConfig.span` lets callers seed the parent trace context for a managed load via loadAsync
|
|
471
|
+
(). This span will be made available on the LoadSpec and automatically picked up by FetchService
|
|
472
|
+
for properly nesting fetch calls.
|
|
401
473
|
* `HoistService.initAsync()` and `HoistAppModel.initAsync()` now receive an `InitContext`
|
|
402
474
|
argument carrying the current phase's `span`, so service init spans can nest under the caller's
|
|
403
475
|
span. Pass it along to any `loadAsync()` calls via `LoadSpecConfig.span` to continue the chain.
|
|
@@ -414,15 +486,15 @@ app-load span changes in this release.
|
|
|
414
486
|
|
|
415
487
|
### 🐞 Bug Fixes
|
|
416
488
|
|
|
417
|
-
* Updated `HoistBase.withSpan` to auto-populate `caller` with `this`, ensuring
|
|
418
|
-
|
|
489
|
+
* Updated `HoistBase.withSpan` to auto-populate `caller` with `this`, ensuring emitted spans
|
|
490
|
+
correctly stamp `code.namespace`.
|
|
419
491
|
* Fixes to built-in fetch CLIENT span: install `http.response.status_code` and `url.full` tags.
|
|
420
492
|
* Fixed downstream app type-check failures on hoist-react asset imports by adding triple-slash
|
|
421
|
-
references to `assets.d.ts` from the files that import PNGs. The ambient declarations were
|
|
422
|
-
|
|
423
|
-
* Upgraded Swiper `11 → 12` to resolve CVE-2026-27212, a critical prototype pollution
|
|
424
|
-
|
|
425
|
-
|
|
493
|
+
references to `assets.d.ts` from the files that import PNGs. The ambient declarations were not
|
|
494
|
+
reachable from consumer tsconfigs with narrower `include` patterns.
|
|
495
|
+
* Upgraded Swiper `11 → 12` to resolve CVE-2026-27212, a critical prototype pollution vulnerability
|
|
496
|
+
in `Swiper.extendDefaults()`. Apps consuming Swiper's own SCSS should update imports from
|
|
497
|
+
`swiper/scss` to `swiper/css` - Swiper 12 ships CSS sources only.
|
|
426
498
|
|
|
427
499
|
### 🤖 AI Docs + Tooling
|
|
428
500
|
|
|
@@ -430,8 +502,8 @@ app-load span changes in this release.
|
|
|
430
502
|
(e.g. `"StoreRecord raw"`).
|
|
431
503
|
* Expanded member-index coverage to every exported class and every exported `*Config` interface.
|
|
432
504
|
* Added an `@mcpHint` JSDoc tag for attaching short hints to indexed classes/interfaces.
|
|
433
|
-
* All MCP tools now expose structured output via `outputSchema` / `structuredContent`; matching
|
|
434
|
-
|
|
505
|
+
* All MCP tools now expose structured output via `outputSchema` / `structuredContent`; matching CLI
|
|
506
|
+
subcommands gained a `--json` flag.
|
|
435
507
|
* `hoist-get-members` surfaces `@param` and `@returns` JSDoc, including via `implements` fallback.
|
|
436
508
|
* Added a disk-persisted index cache at `node_modules/.cache/hoist-mcp/`, dropping cold CLI search
|
|
437
509
|
invocations from multi-second builds to sub-second loads. `HOIST_MCP_NO_CACHE=1` to bypass.
|
|
@@ -440,8 +512,8 @@ app-load span changes in this release.
|
|
|
440
512
|
|
|
441
513
|
### ⚙️ Technical
|
|
442
514
|
|
|
443
|
-
* Improvements to the naming and tagging of hoist-created spans for consistency with hoist-core
|
|
444
|
-
|
|
515
|
+
* Improvements to the naming and tagging of hoist-created spans for consistency with hoist-core and
|
|
516
|
+
easier tag-based sampling.
|
|
445
517
|
* Suppressed `Trace ID` display in exception dialogs/toasts for routine or unsampled exceptions.
|
|
446
518
|
|
|
447
519
|
### 📚 Libraries
|
|
@@ -453,8 +525,8 @@ app-load span changes in this release.
|
|
|
453
525
|
* resize-observer-polyfill `removed`
|
|
454
526
|
|
|
455
527
|
Removed dependencies were obsolete or no longer used by hoist-react internals. No app impact
|
|
456
|
-
expected - none were part of the public API surface. Apps that imported these directly (relying
|
|
457
|
-
|
|
528
|
+
expected - none were part of the public API surface. Apps that imported these directly (relying on
|
|
529
|
+
them as transitive hoist-react dependencies) must add their own direct dependencies.
|
|
458
530
|
|
|
459
531
|
## 84.0.2 - 2026-05-13
|
|
460
532
|
|
|
@@ -462,16 +534,16 @@ on them as transitive hoist-react dependencies) must add their own direct depend
|
|
|
462
534
|
|
|
463
535
|
* Fixed downstream app type-check failures on hoist-react asset imports by adding triple-slash
|
|
464
536
|
references to `assets.d.ts` from the files that import PNGs. The ambient declarations were not
|
|
465
|
-
reachable from consumer tsconfigs with narrower `include` patterns. Backport of the fix
|
|
466
|
-
|
|
537
|
+
reachable from consumer tsconfigs with narrower `include` patterns. Backport of the fix originally
|
|
538
|
+
shipped in v85.0.0.
|
|
467
539
|
|
|
468
540
|
## 84.0.1 - 2026-04-20
|
|
469
541
|
|
|
470
542
|
### 🐞 Bug Fixes
|
|
471
543
|
|
|
472
544
|
* Fixed an unrecoverable crash when calling `XH.prompt()` (and any other `FormField` rendered
|
|
473
|
-
without an explicit `model` prop). `InstanceManager.registerModelWithTestId()` dereferenced a
|
|
474
|
-
|
|
545
|
+
without an explicit `model` prop). `InstanceManager.registerModelWithTestId()` dereferenced a null
|
|
546
|
+
model when a `testId` was supplied, introduced by the v84 expansion of `testId` coverage on
|
|
475
547
|
built-in appcontainer components.
|
|
476
548
|
|
|
477
549
|
## 84.0.0 - 2026-04-15
|
|
@@ -482,8 +554,8 @@ See [`docs/upgrade-notes/v84-upgrade-notes.md`](docs/upgrade-notes/v84-upgrade-n
|
|
|
482
554
|
detailed, step-by-step upgrade instructions with before/after code examples.
|
|
483
555
|
|
|
484
556
|
* Requires `hoist-core >= 38.0`.
|
|
485
|
-
* Removed the `getClassName()` utility from `@xh/hoist/utils/react`. This function had no
|
|
486
|
-
|
|
557
|
+
* Removed the `getClassName()` utility from `@xh/hoist/utils/react`. This function had no remaining
|
|
558
|
+
usages in the framework — the `className` spec field on `hoistCmp.factory()` /
|
|
487
559
|
`hoistCmp.withFactory()` handles base class merging automatically.
|
|
488
560
|
|
|
489
561
|
### 🎁 New Features
|
|
@@ -491,46 +563,46 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
491
563
|
* Updated FontAwesome to v7, bringing subtle visual tweaks and performance optimizations to Hoist's
|
|
492
564
|
icon library. All previously supported icons remain and no app changes should be required.
|
|
493
565
|
* Replaced animated PNG `Spinner` with a FontAwesome icon-based spinner, making it scalable,
|
|
494
|
-
themeable, and consistent with the rest of the icon system. The icon and weight can be
|
|
495
|
-
|
|
496
|
-
|
|
566
|
+
themeable, and consistent with the rest of the icon system. The icon and weight can be configured
|
|
567
|
+
globally via `Spinner.defaults` or per-instance via props. A `usePng` flag is available to
|
|
568
|
+
preserve the original PNG appearance if desired.
|
|
497
569
|
* Added client-side span sampling to `TraceService`. Evaluates `xhTraceConfig.sampleRules` at span
|
|
498
570
|
creation, with child spans inheriting their parent's decision. The `traceparent` header now
|
|
499
571
|
propagates the sampling flag to the server.
|
|
500
|
-
* `FetchOptions.span` now accepts a `string` or `SpanConfig` in addition to an existing `Span`.
|
|
501
|
-
|
|
502
|
-
|
|
572
|
+
* `FetchOptions.span` now accepts a `string` or `SpanConfig` in addition to an existing `Span`. When
|
|
573
|
+
a string or config is provided, `FetchService` creates and manages the parent span internally,
|
|
574
|
+
simplifying a common tracing pattern for fetch calls.
|
|
503
575
|
|
|
504
576
|
### 🤖 AI Docs + Tooling
|
|
505
577
|
|
|
506
|
-
* Added JSDoc to ~60 exported Config/Spec interfaces and improved class-level docs on key
|
|
507
|
-
|
|
508
|
-
|
|
578
|
+
* Added JSDoc to ~60 exported Config/Spec interfaces and improved class-level docs on key framework
|
|
579
|
+
classes. Added README cross-references, when-to-use guidance, and `@see` navigation links
|
|
580
|
+
throughout.
|
|
509
581
|
* Split Cube documentation into dedicated `data/cube/README.md` with expanded query patterns
|
|
510
582
|
covering grand totals, leaf drill-down, dynamic updates, and `executeQuery()`.
|
|
511
583
|
* Enhanced MCP/CLI symbol search to match JSDoc content with multi-word AND queries (e.g.
|
|
512
|
-
`"panel modal"` finds `ModalSupportModel`). Added disambiguation hints for duplicate symbol
|
|
513
|
-
|
|
584
|
+
`"panel modal"` finds `ModalSupportModel`). Added disambiguation hints for duplicate symbol names
|
|
585
|
+
and fixed resolution of symbols shadowed by dynamics stubs.
|
|
514
586
|
|
|
515
587
|
### ⚙️ Technical
|
|
516
588
|
|
|
517
|
-
* Added support for a typed `defaults` object on `hoistCmp` components — static config that apps
|
|
518
|
-
|
|
519
|
-
|
|
589
|
+
* Added support for a typed `defaults` object on `hoistCmp` components — static config that apps can
|
|
590
|
+
override at bootstrap (e.g. `Button.defaults.minimal = false`). Instance props take precedence.
|
|
591
|
+
Added initial defaults to `Button`, `Panel`, `Spinner`, and `Toolbar`.
|
|
520
592
|
* Added `suppressStackTrace` and `includeStartMessages` fields to the Log Levels admin panel,
|
|
521
593
|
supporting the new hoist-core per-logger logging behavior overrides.
|
|
522
594
|
* Added `assets.d.ts` type declarations for image and markdown imports (`*.png`, `*.gif`, `*.jpg`,
|
|
523
595
|
`*.svg`, `*.md`), removing the need for `@ts-ignore` on asset imports.
|
|
524
596
|
* Added hardcoded `xh-` prefixed `testId` props to all desktop and mobile appcontainer components
|
|
525
597
|
for Playwright testing support.
|
|
526
|
-
* Namespaced auto-installed `TraceService` span and metric tags with an `xh.` prefix, aligning
|
|
527
|
-
|
|
598
|
+
* Namespaced auto-installed `TraceService` span and metric tags with an `xh.` prefix, aligning with
|
|
599
|
+
OTEL semantic conventions.
|
|
528
600
|
|
|
529
601
|
### ✨ Styles
|
|
530
602
|
|
|
531
|
-
* Improved default grid tooltip styling — long strings now wrap at a configurable max-width
|
|
532
|
-
|
|
533
|
-
|
|
603
|
+
* Improved default grid tooltip styling — long strings now wrap at a configurable max-width (`400px`
|
|
604
|
+
default) using `pre-wrap`. New `--xh-grid-tooltip-*` CSS variables added for app-level
|
|
605
|
+
customization of background, border, border-radius, padding, and max-width.
|
|
534
606
|
|
|
535
607
|
### 📚 Libraries
|
|
536
608
|
|
|
@@ -551,10 +623,10 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
551
623
|
|
|
552
624
|
### 🤖 AI Docs + Tooling
|
|
553
625
|
|
|
554
|
-
* Improved MCP/CLI TypeScript symbol tools to surface full JSDoc documentation in search results
|
|
555
|
-
|
|
556
|
-
now includes JSDoc snippets with each result. Props interfaces (e.g. `PanelProps`) without
|
|
557
|
-
|
|
626
|
+
* Improved MCP/CLI TypeScript symbol tools to surface full JSDoc documentation in search results and
|
|
627
|
+
resolve a discoverability gap around component Props interfaces. `hoist-search-symbols`
|
|
628
|
+
now includes JSDoc snippets with each result. Props interfaces (e.g. `PanelProps`) without their
|
|
629
|
+
own JSDoc inherit documentation from their companion component via naming convention.
|
|
558
630
|
`hoist-get-symbol` now cross-references between Props interfaces and their components.
|
|
559
631
|
|
|
560
632
|
## 83.0.2 - 2026-03-30
|
|
@@ -578,13 +650,13 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
578
650
|
See [`docs/upgrade-notes/v83-upgrade-notes.md`](docs/upgrade-notes/v83-upgrade-notes.md) for
|
|
579
651
|
detailed, step-by-step upgrade instructions with before/after code examples.
|
|
580
652
|
|
|
581
|
-
* Requires `hoist-core >= 37.0` (paired major release — tracing and metrics features depend on
|
|
582
|
-
|
|
653
|
+
* Requires `hoist-core >= 37.0` (paired major release — tracing and metrics features depend on new
|
|
654
|
+
server-side infrastructure).
|
|
583
655
|
* Deprecated ad-hoc static properties on `GridModel`, `ChartModel`, `ExceptionHandler`, and
|
|
584
|
-
`FetchService` in favor of the new `static defaults` pattern. Old properties log warnings
|
|
585
|
-
|
|
586
|
-
* Removed `downloadjs` dependency. Apps that imported `downloadjs` directly (relying on it
|
|
587
|
-
|
|
656
|
+
`FetchService` in favor of the new `static defaults` pattern. Old properties log warnings and are
|
|
657
|
+
scheduled for removal in v85.
|
|
658
|
+
* Removed `downloadjs` dependency. Apps that imported `downloadjs` directly (relying on it as a
|
|
659
|
+
transitive hoist-react dependency) must replace those usages. Use the new
|
|
588
660
|
`downloadBlob(blob, filename)` or `downloadViaUrl(url, filename?)`
|
|
589
661
|
utilities from `@xh/hoist/utils/js` instead.
|
|
590
662
|
|
|
@@ -602,27 +674,27 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
602
674
|
* Added `CheckboxButton` desktop input component — a button-based boolean toggle matching the
|
|
603
675
|
existing mobile component. Added `checkedIcon` and `uncheckedIcon` props to both desktop and
|
|
604
676
|
mobile versions for custom icon support.
|
|
605
|
-
* Added publish controls to the Admin Metrics tab, supporting the new opt-in metrics export
|
|
606
|
-
|
|
607
|
-
* Added `activeFilterIcon` config to `GridFilterModel` to customize the icon displayed in
|
|
608
|
-
|
|
609
|
-
|
|
677
|
+
* Added publish controls to the Admin Metrics tab, supporting the new opt-in metrics export feature
|
|
678
|
+
in `hoist-core >= 37.0`.
|
|
679
|
+
* Added `activeFilterIcon` config to `GridFilterModel` to customize the icon displayed in column
|
|
680
|
+
headers when a filter is active. Accepts any `Icon` element, enabling use of a different icon,
|
|
681
|
+
prefix (e.g. solid), or intent (e.g. warning).
|
|
610
682
|
|
|
611
683
|
### ⚙️ Technical
|
|
612
684
|
|
|
613
685
|
* Introduced a standard `static defaults` pattern for app configuration overrides across several
|
|
614
|
-
core models. `GridModel.defaults` is the prime example — see `GridModelDefaults` for the
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
686
|
+
core models. `GridModel.defaults` is the prime example — see `GridModelDefaults` for the full set
|
|
687
|
+
of visual, behavioral, and structural props now available. Apps should review available defaults
|
|
688
|
+
and set them at startup to reduce per-instance boilerplate. Instance-level config always takes
|
|
689
|
+
precedence. Previous ad-hoc static properties (e.g.
|
|
618
690
|
`GridModel.DEFAULT_AUTOSIZE_MODE`) are deprecated — update to the new
|
|
619
691
|
`ModelClassName.defaults.propName` form.
|
|
620
|
-
* Added `TabContainerModel.setActiveTabId()` for programmatic tab activation, suitable for use
|
|
621
|
-
|
|
692
|
+
* Added `TabContainerModel.setActiveTabId()` for programmatic tab activation, suitable for use as a
|
|
693
|
+
`bind` target (e.g. with `SegmentedControl`). Previously required calling `activateTab()`.
|
|
622
694
|
* Switched `sizingModeAppOption` and `themeAppOption` app option control presets to use new
|
|
623
695
|
`SegmentedControl` and set new `refreshRequired: false` flag to avoid data refresh when changed.
|
|
624
|
-
* Made `DashCanvasModel.loadState()` public, allowing applications to restore canvas state
|
|
625
|
-
|
|
696
|
+
* Made `DashCanvasModel.loadState()` public, allowing applications to restore canvas state directly
|
|
697
|
+
from a `DashCanvasItemState[]` array without wrapping as `PersistableState`.
|
|
626
698
|
* Updated `FieldFilter` to log console warning for any field not found in linked `Store`.
|
|
627
699
|
|
|
628
700
|
### 🤖 AI Docs + Tooling
|
|
@@ -644,9 +716,8 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
644
716
|
from offering a [blank] option.
|
|
645
717
|
* Fixed `FilterChooser` `QueryEngine` to handle null values in suggestion generation without
|
|
646
718
|
throwing. Added error logging so failures in `queryAsync` surface in the console rather than
|
|
647
|
-
silently killing the dropdown. The 'is' pseudo-operator is now listed in the e.g. operator
|
|
648
|
-
|
|
649
|
-
values.
|
|
719
|
+
silently killing the dropdown. The 'is' pseudo-operator is now listed in the e.g. operator hints,
|
|
720
|
+
and 'is blank' / 'is not blank' suggestions are offered when a field contains null values.
|
|
650
721
|
|
|
651
722
|
## 82.0.3 - 2026-03-02
|
|
652
723
|
|
|
@@ -689,21 +760,21 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
689
760
|
`Bootstrap` module to ensure correlation IDs are active from the very first request, including
|
|
690
761
|
early hoist core init calls. Apps that configure these properties should update references from
|
|
691
762
|
`XH.fetchService.<prop>` to `FetchService.<prop>`.
|
|
692
|
-
* Added additional `div` with `xh-dash-tab__content` class around `DashContainerView` content.
|
|
693
|
-
|
|
763
|
+
* Added additional `div` with `xh-dash-tab__content` class around `DashContainerView` content. Apps
|
|
764
|
+
with custom CSS targeting `xh-dash-tab` may need to adjust their selectors.
|
|
694
765
|
* Removed the `xh-popup--framed` CSS class. Apps applying this class to popovers should remove it —
|
|
695
766
|
popover borders are now themed globally via the `--xh-popup-border-color` CSS variable.
|
|
696
767
|
|
|
697
768
|
### 🎁 New Features
|
|
698
769
|
|
|
699
770
|
* Added `DashCanvasWidgetChooser` component — a draggable widget well for adding views to a
|
|
700
|
-
`DashCanvas` via drag-and-drop from an external container. Added `allowsDrop`, `onDropDone`,
|
|
701
|
-
|
|
771
|
+
`DashCanvas` via drag-and-drop from an external container. Added `allowsDrop`, `onDropDone`, and
|
|
772
|
+
`onDropDragOver` config options to `DashCanvasModel` to support this, along with
|
|
702
773
|
`showGridBackground` and `showAddViewButtonWhenEmpty` configs and a `'wrap'` compaction strategy.
|
|
703
|
-
* Added `Picker` desktop input component — a popover-based option picker for
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
774
|
+
* Added `Picker` desktop input component — a popover-based option picker for space-constrained areas
|
|
775
|
+
like toolbars. Renders a trigger button that opens a dropdown checklist, with support for single
|
|
776
|
+
and multi-select modes, built-in filtering, custom option and button renderers, and virtualized
|
|
777
|
+
scrolling for large option lists.
|
|
707
778
|
* Added new Admin Console Cluster > Metrics tab, providing a cluster-wide view of all registered
|
|
708
779
|
Micrometer meters, part of Hoist's ongoing observability updates.
|
|
709
780
|
* Feature requires `hoist-core >= 36.3`.
|
|
@@ -732,31 +803,31 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
732
803
|
* Improved `DashCanvas` and `DashContainer` persistence such that individual `ViewModel` state can
|
|
733
804
|
be updated without reloading the entire dashboard and owned views.
|
|
734
805
|
* Fixed `GroupingChooser` to support multiple instances sharing the same `GroupingChooserModel`.
|
|
735
|
-
Transient UI state (e.g. editor open/closed, pending value) is now held per-component, so
|
|
736
|
-
|
|
806
|
+
Transient UI state (e.g. editor open/closed, pending value) is now held per-component, so opening
|
|
807
|
+
one chooser no longer opens all others bound to the same model.
|
|
737
808
|
|
|
738
809
|
### ⚙️ Technical
|
|
739
810
|
|
|
740
811
|
* Added instance methods to the `Filter` class hierarchy for removing child filters by type or
|
|
741
812
|
field, plus a new `appendFilter()` utility for composing filters via AND. These replace the
|
|
742
|
-
standalone `withFilterByField`, `withFilterByKey`, and `withFilterByTypes` utilities, which
|
|
743
|
-
|
|
744
|
-
* Transitioned the hoist-react build itself to GitHub Actions (from our previous Teamcity build).
|
|
745
|
-
|
|
813
|
+
standalone `withFilterByField`, `withFilterByKey`, and `withFilterByTypes` utilities, which have
|
|
814
|
+
been deprecated. Internal callers have been migrated to the new API.
|
|
815
|
+
* Transitioned the hoist-react build itself to GitHub Actions (from our previous Teamcity build). No
|
|
816
|
+
change to library consumers - Hoist continues to be published to npm.
|
|
746
817
|
* Catches and logs an occasional, non-fatal race condition error on `DashContainer` state changes.
|
|
747
818
|
|
|
748
819
|
### 🤖 AI Docs + Tooling
|
|
749
820
|
|
|
750
821
|
* Added an embedded MCP (Model Context Protocol) server that gives AI coding tools structured access
|
|
751
822
|
to hoist-react documentation and TypeScript type information. Includes tools for keyword search
|
|
752
|
-
across docs, symbol lookup, and class/interface member inspection.
|
|
753
|
-
|
|
823
|
+
across docs, symbol lookup, and class/interface member inspection. See [
|
|
824
|
+
`mcp/README.md`](mcp/README.md) for setup and usage details.
|
|
754
825
|
|
|
755
826
|
### ✨ Styles
|
|
756
827
|
|
|
757
828
|
* Overrode Blueprint's hardcoded popover border and arrow colors to use Hoist's themed
|
|
758
|
-
`--xh-popup-border-color` CSS variable. Popover borders and arrows now match the rest of
|
|
759
|
-
|
|
829
|
+
`--xh-popup-border-color` CSS variable. Popover borders and arrows now match the rest of the Hoist
|
|
830
|
+
theme in both light and dark modes.
|
|
760
831
|
|
|
761
832
|
### 📚 Libraries
|
|
762
833
|
|
|
@@ -778,9 +849,9 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
778
849
|
`xh-panel__inner`. The `xh-panel__content` class is now used on the new inner frame wrapping
|
|
779
850
|
content items (the target of `contentBoxProps`). Update any app CSS selectors targeting the old
|
|
780
851
|
`xh-panel__content` class accordingly.
|
|
781
|
-
* Changed the signatures of some `HoistAuthModel` methods to return `IdentityInfo` rather than
|
|
782
|
-
|
|
783
|
-
|
|
852
|
+
* Changed the signatures of some `HoistAuthModel` methods to return `IdentityInfo` rather than a
|
|
853
|
+
`boolean`. For most apps this will require a trivial change to the signature of the implementation
|
|
854
|
+
of `HoistAuthModel.completeAuthAsync`.
|
|
784
855
|
* Renamed Blueprint `Card` exports to `BpCard` and `bpCard`.
|
|
785
856
|
|
|
786
857
|
### 🎁 New Features
|
|
@@ -875,8 +946,8 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
875
946
|
* Applied the app-wide `--xh-font-family` to `input` elements. Previously these had continued to
|
|
876
947
|
take a default font defined by the browser stylesheet.
|
|
877
948
|
* Customize for inputs if needed via `--xh-input-font-family`.
|
|
878
|
-
* Note that the switch to Hoist's default Inter font w/tabular numbers might require some
|
|
879
|
-
|
|
949
|
+
* Note that the switch to Hoist's default Inter font w/tabular numbers might require some inputs
|
|
950
|
+
w/tight sizing to be made wider to avoid clipping (e.g. `DateInputs` sized to fit).
|
|
880
951
|
* Updated + added validation-related `FormField` CSS classes and variables to account for new `info`
|
|
881
952
|
and `warning` validation levels. Additionally validation messages and the `info` text element no
|
|
882
953
|
longer clip at a single line - they will wrap as needed.
|
|
@@ -917,8 +988,8 @@ this release, but is not strictly required.
|
|
|
917
988
|
* Renamed `GridModel.applyColumnStateChanges()` to `updateColumnState()` for clarity and better
|
|
918
989
|
symmetry with `setColumnState()`.
|
|
919
990
|
* The prior method remains as an alias but is deprecated and scheduled for removal in v82.
|
|
920
|
-
* Moved `TabSwitcherProps` to `cmp/tab/Types.ts` but maintained export from `cmp/tab/index.ts`.
|
|
921
|
-
|
|
991
|
+
* Moved `TabSwitcherProps` to `cmp/tab/Types.ts` but maintained export from `cmp/tab/index.ts`. Some
|
|
992
|
+
apps may need to update their imports.
|
|
922
993
|
* Repurposed `TabContainerConfig.switcher` to accept a `TabSwitcherConfig`. To pass
|
|
923
994
|
`TabSwitcherProps` via a parent `TabContainer`, use `TabContainerProps.switcher`.
|
|
924
995
|
* Tightened the typing of `LocalDate` adjustment methods with new `LocalDateUnit` type. Some less
|
|
@@ -1011,8 +1082,8 @@ See [`docs/upgrade-notes/v78-upgrade-notes.md`](docs/upgrade-notes/v78-upgrade-n
|
|
|
1011
1082
|
detailed, step-by-step upgrade instructions with before/after code examples.
|
|
1012
1083
|
|
|
1013
1084
|
* `GridModel.setColumnState` no longer patches existing column state, but instead replaces it
|
|
1014
|
-
wholesale. Applications that were relying on the prior patching behavior will need to
|
|
1015
|
-
|
|
1085
|
+
wholesale. Applications that were relying on the prior patching behavior will need to call
|
|
1086
|
+
`GridModel.applyColumnStateChanges` instead.
|
|
1016
1087
|
* `GridModel.cleanColumnState` is now private (not expected to impact applications).
|
|
1017
1088
|
|
|
1018
1089
|
### 🎁 New Features
|
|
@@ -1077,8 +1148,8 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
1077
1148
|
* Note: AG Grid v34+ no longer supports HTML markup in context menus. Applications setting the
|
|
1078
1149
|
`text` or `secondaryText` properties of `RecordGridAction` to markup should be sure to use
|
|
1079
1150
|
React nodes for formatting instead.
|
|
1080
|
-
* Fixed `AgGridModel.getExpandState()` not returning a full representation of expanded groups -
|
|
1081
|
-
|
|
1151
|
+
* Fixed `AgGridModel.getExpandState()` not returning a full representation of expanded groups - an
|
|
1152
|
+
issue that primarily affected linked tree map visualizations.
|
|
1082
1153
|
|
|
1083
1154
|
### ⚙️ Technical
|
|
1084
1155
|
|
|
@@ -1122,8 +1193,8 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
1122
1193
|
very minimal changes, although there are required adjustments to app-level `package.json` to
|
|
1123
1194
|
install updated grid dependencies and `Bootstrap.ts` to import and register your licensed grid
|
|
1124
1195
|
modules at their new import paths.
|
|
1125
|
-
* Applications implementing `groupRowRenderer` should note that the `value` property passed
|
|
1126
|
-
|
|
1196
|
+
* Applications implementing `groupRowRenderer` should note that the `value` property passed to
|
|
1197
|
+
this function is no longer stringified, but is instead the raw field value for the group.
|
|
1127
1198
|
* See AG's upgrade guides for more details:
|
|
1128
1199
|
* [Upgrade to v32](https://www.ag-grid.com/react-data-grid/upgrading-to-ag-grid-32/)
|
|
1129
1200
|
* [Upgrade to v33](https://www.ag-grid.com/react-data-grid/upgrading-to-ag-grid-33/)
|
|
@@ -1162,8 +1233,8 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
1162
1233
|
its configured `initialViewSpec` function as expected in this case.
|
|
1163
1234
|
* Updated `XH.restoreDefaultsAsync` to clear basic view state, including the user's last selected
|
|
1164
1235
|
view. Views themselves will be preserved. Requires `hoist-core >= 32.0`.
|
|
1165
|
-
* Fixed bug where `GridModel.persistableColumnState` was not including default column `widths`.
|
|
1166
|
-
|
|
1236
|
+
* Fixed bug where `GridModel.persistableColumnState` was not including default column `widths`. This
|
|
1237
|
+
led to columns not being set to their expected widths when switching `ViewManager` views.
|
|
1167
1238
|
* Fixed bug where a `Grid` with managed autosizing was not triggering an autosize as expected when
|
|
1168
1239
|
new column state was loaded (e.g. via `ViewManager`).
|
|
1169
1240
|
|
|
@@ -1199,8 +1270,8 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
1199
1270
|
* The default grid context menu now supports a new item to allow users to expand/collapse out to
|
|
1200
1271
|
a specific level/depth. Set `GridModel.levelLabels` to activate this feature.
|
|
1201
1272
|
* A new `ExpandToLevelButton` menu component is also available for both desktop and mobile.
|
|
1202
|
-
Provides easier discoverability on desktop and supports this feature on mobile, where we
|
|
1203
|
-
|
|
1273
|
+
Provides easier discoverability on desktop and supports this feature on mobile, where we don't
|
|
1274
|
+
have context menus.
|
|
1204
1275
|
* Enhanced `FilterChooser` to better handle filters with different `op`s on the same field.
|
|
1205
1276
|
* Multiple "inclusive" ops (e.g. `=`, `like`) will be OR'ed together.
|
|
1206
1277
|
* Multiple "exclusive" ops (e.g. `!=`, `not like`) will be AND'ed together.
|
|
@@ -1256,9 +1327,9 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
1256
1327
|
|
|
1257
1328
|
### ✨ Styles
|
|
1258
1329
|
|
|
1259
|
-
* Upgraded the version of Hoist's default Inter UI font to a new major version, now v4.1. Note
|
|
1260
|
-
|
|
1261
|
-
|
|
1330
|
+
* Upgraded the version of Hoist's default Inter UI font to a new major version, now v4.1. Note that
|
|
1331
|
+
this brings slight differences to the font's appearance, including tweaks to internal spacing and
|
|
1332
|
+
letterforms for tabular numbers. The name of the font face has also changed, from
|
|
1262
1333
|
`Inter Var` to `InterVariable`. The default value of the `--xh-font-family` CSS variable has been
|
|
1263
1334
|
updated to match, making this change transparent for most applications.
|
|
1264
1335
|
|
|
@@ -1360,8 +1431,8 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
1360
1431
|
applicable. This did not previously have any effect, but is required now for the superclass to
|
|
1361
1432
|
initialize a new `ViewManagerModel`.
|
|
1362
1433
|
* [Here is where Toolbox makes that call](https://github.com/xh/toolbox/blob/f15a8018ce36c2ae998b45724b48a16320b88e49/client-app/src/admin/AppModel.ts#L12).
|
|
1363
|
-
* Requires call to `makeObservable(this)` in model constructors with `@bindable`. Note that there
|
|
1364
|
-
|
|
1434
|
+
* Requires call to `makeObservable(this)` in model constructors with `@bindable`. Note that there is
|
|
1435
|
+
a new dev-only runtime check on `HoistBase` to warn if this call has not been made.
|
|
1365
1436
|
|
|
1366
1437
|
### 🎁 New Features
|
|
1367
1438
|
|
|
@@ -1405,10 +1476,10 @@ detailed, step-by-step upgrade instructions with before/after code examples.
|
|
|
1405
1476
|
* The two versions *should* be the same, but in cases where a browser "restores" a tab and
|
|
1406
1477
|
re-inits an app without reloading the code itself, the upgrade check would miss the fact that
|
|
1407
1478
|
the client remained on an older version.
|
|
1408
|
-
* ⚠️ NOTE that a misconfigured build - where the client version is not set to the same value
|
|
1409
|
-
|
|
1410
|
-
* Calls to `Promise.track()` that are rejected with an exception will be tracked with new
|
|
1411
|
-
|
|
1479
|
+
* ⚠️ NOTE that a misconfigured build - where the client version is not set to the same value as
|
|
1480
|
+
the server - would result in a false positive for an upgrade. The two should always match.
|
|
1481
|
+
* Calls to `Promise.track()` that are rejected with an exception will be tracked with new severity
|
|
1482
|
+
level of `TrackSeverity.ERROR`.
|
|
1412
1483
|
|
|
1413
1484
|
### ⚙️ Typescript API Adjustments
|
|
1414
1485
|
|
|
@@ -1504,8 +1575,8 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1504
1575
|
### 🎁 New Features
|
|
1505
1576
|
|
|
1506
1577
|
* Introduced a new "JSON Search" feature to the Hoist Admin Console, accessible from the Config,
|
|
1507
|
-
User Preference, and JSON Blob tabs. Supports searching JSON values stored within these objects
|
|
1508
|
-
|
|
1578
|
+
User Preference, and JSON Blob tabs. Supports searching JSON values stored within these objects to
|
|
1579
|
+
filter and match data using JSON Path expressions.
|
|
1509
1580
|
* ⚠️Requires `hoist-core >= 28.1` with new APIs for this (optional) feature to function.
|
|
1510
1581
|
* Added new getters `StoreRecord.isDirty`, `Store.dirtyRecords`, and `Store.isDirty` to provide a
|
|
1511
1582
|
more consistent API in the data package. The pre-existing `isModified` getters are retained as
|
|
@@ -1559,8 +1630,8 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1559
1630
|
* `LoadingIndicator` is now cross-platform - update imports from
|
|
1560
1631
|
`@xh/hoist/desktop/cmp/loadingindicator` or `@xh/hoist/mobile/cmp/loadingindicator` to
|
|
1561
1632
|
`@xh/hoist/cmp/loadingindicator`.
|
|
1562
|
-
* `TreeMap` and `SplitTreeMap` are now cross-platform and can be used in mobile applications.
|
|
1563
|
-
|
|
1633
|
+
* `TreeMap` and `SplitTreeMap` are now cross-platform and can be used in mobile applications. Update
|
|
1634
|
+
imports from `@xh/hoist/desktop/cmp/treemap` to `@xh/hoist/cmp/treemap`.
|
|
1564
1635
|
* Renamed `RefreshButton.model` prop to `target` for clarity and consistency.
|
|
1565
1636
|
|
|
1566
1637
|
### 🎁 New Features
|
|
@@ -1572,8 +1643,8 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1572
1643
|
* Improved handling of delete / update collisions.
|
|
1573
1644
|
* New `ViewManagerModel.settleTime` config, to allow persisted components such as dashboards to
|
|
1574
1645
|
fully resolve their rendered state before capturing a baseline for dirty checks.
|
|
1575
|
-
* Added `SessionStorageService` and associated persistence provider to support saving tab-local
|
|
1576
|
-
|
|
1646
|
+
* Added `SessionStorageService` and associated persistence provider to support saving tab-local data
|
|
1647
|
+
across reloads. Exact analog to `LocalStorageService`, but scoped to lifetime of current tab.
|
|
1577
1648
|
* Added `AuthZeroClientConfig.audience` config to support improved flow for Auth0 OAuth clients that
|
|
1578
1649
|
request access tokens. Specify your access token audience here to allow the client to fetch both
|
|
1579
1650
|
ID and access tokens in a single request and to use refresh tokens to maintain access without
|
|
@@ -1589,8 +1660,8 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1589
1660
|
* Fixed sizing and position of mobile `TabContainer` switcher, particularly when the switcher is
|
|
1590
1661
|
positioned with `top` orientation.
|
|
1591
1662
|
* Fixed styling of `ButtonGroup` in vertical orientations.
|
|
1592
|
-
* Improved handling of calls to `DashContainerModel.loadStateAsync()` when the component has yet
|
|
1593
|
-
|
|
1663
|
+
* Improved handling of calls to `DashContainerModel.loadStateAsync()` when the component has yet to
|
|
1664
|
+
be rendered. Requested state updates are no longer dropped, and will be applied as soon as the
|
|
1594
1665
|
component is ready to do so.
|
|
1595
1666
|
|
|
1596
1667
|
### ⚙️ Technical
|
|
@@ -1655,10 +1726,10 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1655
1726
|
its bound `Persistable` when changes are detected.
|
|
1656
1727
|
* In its constructor, `PersistenceProvider` also stores the initial state of its bound
|
|
1657
1728
|
`Persistable` and clears its persisted state when structurally equal to the initial state.
|
|
1658
|
-
* Updated persistable components to support specifying distinct `PersistOptions` for individual
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1729
|
+
* Updated persistable components to support specifying distinct `PersistOptions` for individual bits
|
|
1730
|
+
of persisted state. E.g. you can now configure a `GroupingChooserModel` used within a dashboard
|
|
1731
|
+
widget to persist its value to that particular widget's `DashViewModel` while saving the user's
|
|
1732
|
+
favorites to a global preference.
|
|
1662
1733
|
|
|
1663
1734
|
### ⚙️ Typescript API Adjustments
|
|
1664
1735
|
|
|
@@ -1696,8 +1767,8 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1696
1767
|
|
|
1697
1768
|
### 💥 Breaking Changes (upgrade difficulty: 🟢 LOW - Hoist core update)
|
|
1698
1769
|
|
|
1699
|
-
* Requires `hoist-core >= 24` to support batch upload of activity tracking logs to server and
|
|
1700
|
-
|
|
1770
|
+
* Requires `hoist-core >= 24` to support batch upload of activity tracking logs to server and new
|
|
1771
|
+
memory monitoring persistence.
|
|
1701
1772
|
* Replaced `AppState.INITIALIZING` with finer-grained states (not expected to impact most apps).
|
|
1702
1773
|
|
|
1703
1774
|
### 🎁 New Features
|
|
@@ -1731,8 +1802,8 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1731
1802
|
|
|
1732
1803
|
### 🎁 New Features
|
|
1733
1804
|
|
|
1734
|
-
* `Markdown` now supports a `reactMarkdownOptions` prop to allow passing React Markdown
|
|
1735
|
-
|
|
1805
|
+
* `Markdown` now supports a `reactMarkdownOptions` prop to allow passing React Markdown props to the
|
|
1806
|
+
underlying `reactMarkdown` instance.
|
|
1736
1807
|
|
|
1737
1808
|
### ⚙️ Technical
|
|
1738
1809
|
|
|
@@ -1779,19 +1850,19 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1779
1850
|
* Correlation IDs are assigned via:
|
|
1780
1851
|
* `FetchOptions.correlationId` - specify an ID to be used on a particular request or `true`
|
|
1781
1852
|
to use a UUID generated by Hoist (see `FetchService.genCorrelationId()`).
|
|
1782
|
-
* `TrackOptions.correlationId` - specify an ID for a tracked activity, if not using the
|
|
1783
|
-
|
|
1853
|
+
* `TrackOptions.correlationId` - specify an ID for a tracked activity, if not using the new
|
|
1854
|
+
`FetchOptions.track` API (see below).
|
|
1784
1855
|
* If set on a fetch request, Correlation IDs are passed through to downstream error reporting
|
|
1785
1856
|
and are available for review in the Admin Console.
|
|
1786
1857
|
* Added `FetchOptions.track` as streamlined syntax to track a request via Hoist activity tracking.
|
|
1787
1858
|
Prefer this option (vs. a chained `.track()` call) to relay the request's `correlationId` and
|
|
1788
1859
|
`loadSpec` automatically.
|
|
1789
|
-
* Added `FetchOptions.asJson` to instruct `FetchService` to decode an HTTP response as JSON.
|
|
1790
|
-
|
|
1860
|
+
* Added `FetchOptions.asJson` to instruct `FetchService` to decode an HTTP response as JSON. Note
|
|
1861
|
+
that `FetchService` methods suffixed with `Json` will set this property automatically.
|
|
1791
1862
|
* Added global interceptors on `FetchService`. See `FetchService.addInterceptor()`.
|
|
1792
1863
|
* `GridModel` will now accept `contextMenu: false` to omit context menus.
|
|
1793
|
-
* Added bindable `AppContainerModel.intializingLoadMaskMessage` to allow apps to customize the
|
|
1794
|
-
|
|
1864
|
+
* Added bindable `AppContainerModel.intializingLoadMaskMessage` to allow apps to customize the load
|
|
1865
|
+
mask message shown during app initialization.
|
|
1795
1866
|
* Enhanced `select` component with new `emptyValue` prop, allowing for a custom value to be returned
|
|
1796
1867
|
when the control is empty (vs `null`). Expected usage is `[]` when `enableMulti:true`.
|
|
1797
1868
|
* Added `GroupingChooserModel.setDimensions()` API, to support updating available dimensions on an
|
|
@@ -1880,8 +1951,8 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1880
1951
|
### 💥 Breaking Changes (upgrade difficulty: 🟢 LOW - minor adjustments to client-side auth)
|
|
1881
1952
|
|
|
1882
1953
|
* New `HoistAuthModel` exposes the client-side authentication lifecycle via a newly consolidated,
|
|
1883
|
-
overridable API. This new API provides more easy customization of auth across all client-side
|
|
1884
|
-
|
|
1954
|
+
overridable API. This new API provides more easy customization of auth across all client-side apps
|
|
1955
|
+
by being easily overrideable and specified via the `AppSpec` passed to `XH.renderApp()`.
|
|
1885
1956
|
* In most cases, upgrading should be a simple matter of moving code from `HoistAppModel` methods
|
|
1886
1957
|
`preAuthInitAsync()` and `logoutAsync()` (removed by this change) to new `HoistAuthModel`
|
|
1887
1958
|
methods `completeAuthAsync()` and `logoutAsync()`.
|
|
@@ -1894,9 +1965,9 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1894
1965
|
### 🐞 Bug Fixes
|
|
1895
1966
|
|
|
1896
1967
|
* Updated `.xh-viewport` sizing styles and mobile `dialog` sizing to use `dvw/dvh` instead of prior
|
|
1897
|
-
`svw/svh` - resolves edge case mobile issue where redirects back from an OAuth flow could leave
|
|
1898
|
-
|
|
1899
|
-
|
|
1968
|
+
`svw/svh` - resolves edge case mobile issue where redirects back from an OAuth flow could leave an
|
|
1969
|
+
unexpected gap across the bottom of the screen. Includes fallback for secure client browsers that
|
|
1970
|
+
don't support dynamic viewport units.
|
|
1900
1971
|
* Updated mobile `TabContainer` to flex properly within flexbox containers.
|
|
1901
1972
|
* Fixed timing issue with missing validation for records added immediately to a new `Store`.
|
|
1902
1973
|
* Fixed CSS bug in which date picker dates wrapped when `dateEditor` used in a grid in a dialog.
|
|
@@ -1905,8 +1976,8 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1905
1976
|
|
|
1906
1977
|
### 💥 Breaking Changes (upgrade difficulty: 🟢 TRIVIAL - dependencies only)
|
|
1907
1978
|
|
|
1908
|
-
* Requires update to `hoist-dev-utils >= v9.0.0` with updated handling of static/public assets.
|
|
1909
|
-
|
|
1979
|
+
* Requires update to `hoist-dev-utils >= v9.0.0` with updated handling of static/public assets. This
|
|
1980
|
+
should be a drop-in change for applications.
|
|
1910
1981
|
* iOS < 16.4 is no longer supported, due to the use of complex RegExes in GFM parsing.
|
|
1911
1982
|
|
|
1912
1983
|
### 🎁 New Features
|
|
@@ -1915,8 +1986,8 @@ build. That said, we *strongly* recommend taking these same changes into your ap
|
|
|
1915
1986
|
|
|
1916
1987
|
### ✨ Styles
|
|
1917
1988
|
|
|
1918
|
-
* Refactored CSS classnames applied to the primary application (☰) menu on desktop and mobile.
|
|
1919
|
-
|
|
1989
|
+
* Refactored CSS classnames applied to the primary application (☰) menu on desktop and mobile. On
|
|
1990
|
+
both platforms the button itself now has an `xh-app-menu-button` class, the popover has
|
|
1920
1991
|
`xh-app-menu-popover`, and the menu itself has `xh-app-menu`.
|
|
1921
1992
|
|
|
1922
1993
|
### ⚙️ Technical
|
|
@@ -2024,27 +2095,27 @@ for more details.
|
|
|
2024
2095
|
|
|
2025
2096
|
* Removed support for passing a plain object to the `model` prop of Hoist Components (previously
|
|
2026
2097
|
deprecated back in v58). Use the `modelConfig` prop instead.
|
|
2027
|
-
* Removed the `multiFieldRenderer` utility function. This has been made internal and renamed
|
|
2028
|
-
|
|
2029
|
-
* Updated CSS variables related to the `ZoneGrid` component - vars formerly prefixed
|
|
2030
|
-
|
|
2098
|
+
* Removed the `multiFieldRenderer` utility function. This has been made internal and renamed to
|
|
2099
|
+
`zoneGridRenderer` for exclusive use by the `ZoneGrid` component.
|
|
2100
|
+
* Updated CSS variables related to the `ZoneGrid` component - vars formerly prefixed by
|
|
2101
|
+
`--xh-grid-multifield` are now prefixed by `--xh-zone-grid`, several vars have been added, and
|
|
2031
2102
|
some defaults have changed.
|
|
2032
2103
|
* Removed obsolete `AppSpec.isSSO` property in favor of two new properties `AppSpec.enableLogout`
|
|
2033
2104
|
and `AppSpec.enableLoginForm`. This should have no effect on the vast majority of apps which had
|
|
2034
|
-
`isSSO` set to `true`. For apps where `isSSO` was set to `false`, the new flags should be
|
|
2035
|
-
|
|
2105
|
+
`isSSO` set to `true`. For apps where `isSSO` was set to `false`, the new flags should be used to
|
|
2106
|
+
more clearly indicate the desired auth behavior.
|
|
2036
2107
|
|
|
2037
2108
|
### 🎁 New Features
|
|
2038
2109
|
|
|
2039
2110
|
* Improved mobile viewport handling to ensure that both standard pages and full screen dialogs
|
|
2040
2111
|
respect "safe area" boundaries, avoiding overlap with system UI elements such as the iOS task
|
|
2041
|
-
switcher at the bottom of the screen. Also set background letterboxing color (to black) when
|
|
2042
|
-
|
|
2112
|
+
switcher at the bottom of the screen. Also set background letterboxing color (to black) when in
|
|
2113
|
+
landscape mode for a more resolved-looking layout.
|
|
2043
2114
|
* Improved the inline grid `selectEditor` to commit its value to the backing record as soon as an
|
|
2044
2115
|
option is selected, rather than waiting for the user to click away from the cell.
|
|
2045
2116
|
* Improved the display of Role details in the Admin Console. The detail panel for the selected role
|
|
2046
|
-
now includes a sub-tab listing all other roles inherited by the selected role, something that
|
|
2047
|
-
|
|
2117
|
+
now includes a sub-tab listing all other roles inherited by the selected role, something that was
|
|
2118
|
+
previously accessible only via the linked graph visualization.
|
|
2048
2119
|
* Added new `checkboxRenderer` for rendering booleans with a checkbox input look and feel.
|
|
2049
2120
|
* Added new mobile `checkboxButton`, an alternate input component for toggling boolean values.
|
|
2050
2121
|
* Added beta version of a new Hoist `security` package, providing built-in support for OAuth flows.
|