@xh/hoist 73.0.0-SNAPSHOT.1747350426319 → 73.0.0-SNAPSHOT.1747359414796
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 +34 -32
- package/core/HoistAppModel.ts +7 -8
- package/desktop/appcontainer/VersionBar.scss +2 -1
- package/desktop/appcontainer/VersionBar.ts +5 -9
- package/mobile/appcontainer/VersionBar.ts +2 -2
- package/package.json +2 -2
- package/svc/ClientHealthService.ts +1 -5
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,48 +4,38 @@
|
|
|
4
4
|
|
|
5
5
|
### 💥 Breaking Changes (upgrade difficulty: 🟢 TRIVIAL - minor upgrade to Hoist Core)
|
|
6
6
|
|
|
7
|
-
* Requires `hoist-core >= 30.1
|
|
7
|
+
* Requires `hoist-core >= 30.1` with new APIs to support the consolidated Admin Console "Clients"
|
|
8
8
|
tab and new properties on `TrackLog`.
|
|
9
9
|
* Apps with a custom `AppModel` for their admin app that extends `@xh/hoist/admin/AppModel` must
|
|
10
10
|
ensure they call `super.initAsync()` within their override of that lifecycle method, if
|
|
11
11
|
applicable. This did not previously have any effect, but is required now for the superclass to
|
|
12
12
|
initialize a new `ViewManagerModel`.
|
|
13
|
-
|
|
14
|
-
* Requires call to `makeObservable(this)` in model constructors with `@bindable
|
|
15
|
-
|
|
16
|
-
been made.
|
|
17
|
-
* Requires @xh/hoist-dev-utils >= 11.0
|
|
18
|
-
* Apps must also rename their `.eslintrc` file to `eslint.config.js` and use the configuration
|
|
19
|
-
found in Toolbox's `eslint.config.js` as the new base example `eslint` configuration.
|
|
13
|
+
* [Here is where Toolbox makes that call](https://github.com/xh/toolbox/blob/f15a8018ce36c2ae998b45724b48a16320b88e49/client-app/src/admin/AppModel.ts#L12).
|
|
14
|
+
* Requires call to `makeObservable(this)` in model constructors with `@bindable`. Note that there
|
|
15
|
+
is a new dev-only runtime check on `HoistBase` to warn if this call has not been made.
|
|
20
16
|
|
|
21
17
|
### 🎁 New Features
|
|
22
18
|
|
|
23
|
-
*
|
|
24
|
-
|
|
25
|
-
*
|
|
26
|
-
* Persisted custom views via `ViewManager`.
|
|
27
|
-
* New ability to promote data in `data` block to grids for aggregation, reporting and charting.
|
|
28
|
-
* Enhanced track messages with new `tabId` and `loadId` properties, to disambiguate activity for
|
|
29
|
-
users with multiple browser tabs and multiple full refreshes/restarts of a client app within
|
|
30
|
-
the same tab.
|
|
31
|
-
* Improved charting, with a column chart used for both timeseries and category data and fixes to
|
|
32
|
-
the "skip weekends" option.
|
|
33
|
-
* Client Error reports and user feedback have also been consolidated into the new tracking
|
|
34
|
-
system for more integrated and powerful reporting.
|
|
19
|
+
* Updated and improved Grid column based filtering to better match the behavior of Excel.
|
|
20
|
+
* `GridFilterModel.commitOnChage` now `false` by default
|
|
21
|
+
* Added ability to append terms to active filter *only* when `commitOnChage:false`
|
|
35
22
|
* Added new `PopoverFilterChooser` component - wraps `FilterChooser` in a `Popover` to allow it to
|
|
36
23
|
expand vertically when used in a `Toolbar` or other space-constrained, single-line layout.
|
|
24
|
+
* Enhanced OAuth clients with a new `reloginEnabled` config. Set to true to allow the client to do a
|
|
25
|
+
potentially interactive popup login mid-session to re-establish auth if its refresh token has
|
|
26
|
+
expired or been invalidated. Strongly recommended for all OAuth usages.
|
|
27
|
+
* Significantly upgraded the Admin Console "User Activity" tab:
|
|
28
|
+
* Consolidated client error reports and user feedback into Activity Tracking.
|
|
29
|
+
* Added support for custom views via `ViewManager`.
|
|
30
|
+
* New ability to promote data in `data` block to grids for aggregation, reporting and charting.
|
|
31
|
+
* Enhanced track messages with new `tabId` and `loadId` properties, to disambiguate activity for
|
|
32
|
+
users across multiple browser tabs + loads of the app.
|
|
33
|
+
* Added a new Admin Console "Clients" tab - a consolidated view of all websocket-connected clients
|
|
34
|
+
across all instances in the cluster, with integrated activity detail viewer.
|
|
37
35
|
* Updated `FormModel` to support `persistWith` for storing and recalling its values, including
|
|
38
|
-
developer options to persist
|
|
39
|
-
* `
|
|
40
|
-
|
|
41
|
-
the login. This is especially useful to allow recovery from expired or invalidated refresh
|
|
42
|
-
tokens.
|
|
43
|
-
* New utility method `XH.openWindow()` for ensuring that new windows/tabs are opened without
|
|
44
|
-
an unintended `opener` relationship with the original window.
|
|
45
|
-
* Improvements to Grid columns `HeaderFilter` component:
|
|
46
|
-
* `GridFilterModel` `commitOnChage` now set to `false` by default
|
|
47
|
-
* Addition of ability to append terms to active filter **only** when `commitOnChage:false`
|
|
48
|
-
* Grid column header filtering functionality now similar to Excel on Windows
|
|
36
|
+
developer options to persist only a subset of fields.
|
|
37
|
+
* Added new `XH.openWindow()` util to ensure that new windows/tabs are opened without an unintended
|
|
38
|
+
`opener` relationship with the original window.
|
|
49
39
|
|
|
50
40
|
### 🐞 Bug Fixes
|
|
51
41
|
|
|
@@ -78,6 +68,18 @@
|
|
|
78
68
|
* Corrected `StoreCountLabelProps` interface.
|
|
79
69
|
* Corrected `textAlign` type across several `HoistInput` prop interfaces.
|
|
80
70
|
|
|
71
|
+
### 📚 Libraries
|
|
72
|
+
|
|
73
|
+
Note that all of the below are `devDependencies`, so they will not directly affect your application
|
|
74
|
+
build. That said, we *strongly* recommend taking these same changes into your app if you can.
|
|
75
|
+
|
|
76
|
+
* @xh/hoist-dev-utils `10.x → 11.x`
|
|
77
|
+
* eslint `8.x → 9.x`
|
|
78
|
+
* Apps making this update must also rename their `.eslintrc` file to `eslint.config.js`. See the
|
|
79
|
+
configuration found in Toolbox's `eslint.config.js` as your new baseline.
|
|
80
|
+
* eslint-config-prettier `9.x → 10.x`
|
|
81
|
+
* typescript `5.1 → 5.8`
|
|
82
|
+
|
|
81
83
|
## v72.5.1 - 2025-04-15
|
|
82
84
|
|
|
83
85
|
### 🐞 Bug Fixes
|
|
@@ -126,7 +128,7 @@
|
|
|
126
128
|
|
|
127
129
|
### 📚 Libraries
|
|
128
130
|
|
|
129
|
-
* @azure/msal-browser `3.28 → 4.8
|
|
131
|
+
* @azure/msal-browser `3.28 → 4.8`
|
|
130
132
|
|
|
131
133
|
## v72.2.0 - 2025-03-13
|
|
132
134
|
|
package/core/HoistAppModel.ts
CHANGED
|
@@ -66,21 +66,20 @@ export class HoistAppModel extends HoistModel {
|
|
|
66
66
|
*/
|
|
67
67
|
getAboutDialogItems(): AboutDialogItem[] {
|
|
68
68
|
const XH = window['XH'],
|
|
69
|
-
svc = XH.environmentService
|
|
70
|
-
|
|
69
|
+
svc = XH.environmentService,
|
|
70
|
+
clientVersionBuild = `${svc.get('clientVersion')} (build ${svc.get('clientBuild')})`,
|
|
71
|
+
serverVersionBuild = `${svc.get('appVersion')} (build ${svc.get('appBuild')})`;
|
|
71
72
|
return [
|
|
72
73
|
{label: 'App', value: `${svc.get('appName')} (${svc.get('appCode')})`},
|
|
73
74
|
{label: 'Current User', value: XH.identityService.username},
|
|
74
75
|
{label: 'Environment', value: svc.get('appEnvironment')},
|
|
75
|
-
{label: '
|
|
76
|
-
{label: '
|
|
77
|
-
{
|
|
78
|
-
label: 'Client',
|
|
79
|
-
value: `${svc.get('clientVersion')} (build ${svc.get('clientBuild')})`
|
|
80
|
-
},
|
|
76
|
+
{label: 'Server', value: serverVersionBuild},
|
|
77
|
+
{label: 'Client', value: clientVersionBuild},
|
|
81
78
|
{label: 'Hoist Core', value: svc.get('hoistCoreVersion')},
|
|
82
79
|
{label: 'Hoist React', value: svc.get('hoistReactVersion')},
|
|
83
80
|
{label: 'User Agent', value: window.navigator.userAgent},
|
|
81
|
+
{label: 'Tab/Load IDs', value: XH.tabId + ' / ' + XH.loadId},
|
|
82
|
+
{label: 'Server', value: svc.serverInstance},
|
|
84
83
|
{label: 'WebSockets', value: webSocketIndicator()}
|
|
85
84
|
];
|
|
86
85
|
}
|
|
@@ -19,24 +19,20 @@ export const versionBar = hoistCmp.factory({
|
|
|
19
19
|
envSvc = XH.environmentService,
|
|
20
20
|
env = envSvc.get('appEnvironment'),
|
|
21
21
|
version = envSvc.get('clientVersion'),
|
|
22
|
-
|
|
23
|
-
instance = envSvc.serverInstance,
|
|
24
|
-
isAdminApp = window.location.pathname?.startsWith('/admin/'),
|
|
25
|
-
versionAndBuild =
|
|
26
|
-
!build || build === 'UNKNOWN' ? version : `${version} (build ${build})`;
|
|
22
|
+
isAdminApp = window.location.pathname?.startsWith('/admin/');
|
|
27
23
|
|
|
28
24
|
return box({
|
|
29
25
|
className: `xh-version-bar xh-version-bar--${env.toLowerCase()}`,
|
|
30
26
|
items: [
|
|
31
|
-
[XH.appName, env,
|
|
27
|
+
[XH.appName, env, version].join(' • '),
|
|
32
28
|
span({
|
|
33
29
|
className: 'xh-version-bar__spacer',
|
|
34
30
|
items: '|'
|
|
35
31
|
}),
|
|
36
32
|
span({
|
|
37
|
-
className: 'xh-version-
|
|
38
|
-
title: '
|
|
39
|
-
|
|
33
|
+
className: 'xh-version-bar__tabid',
|
|
34
|
+
title: 'Tab ID',
|
|
35
|
+
item: XH.tabId
|
|
40
36
|
}),
|
|
41
37
|
span({
|
|
42
38
|
className: 'xh-version-bar__spacer',
|
|
@@ -20,7 +20,7 @@ export const versionBar = hoistCmp.factory({
|
|
|
20
20
|
const svc = XH.environmentService,
|
|
21
21
|
env = svc.get('appEnvironment'),
|
|
22
22
|
version = svc.get('clientVersion'),
|
|
23
|
-
|
|
23
|
+
tabId = XH.tabId
|
|
24
24
|
|
|
25
25
|
return box({
|
|
26
26
|
justifyContent: 'center',
|
|
@@ -28,7 +28,7 @@ export const versionBar = hoistCmp.factory({
|
|
|
28
28
|
flex: 'none',
|
|
29
29
|
className: `xh-version-bar xh-version-bar--${env.toLowerCase()}`,
|
|
30
30
|
items: [
|
|
31
|
-
[env, version,
|
|
31
|
+
[env, version, tabId].join(' • '),
|
|
32
32
|
button({
|
|
33
33
|
icon: Icon.info(),
|
|
34
34
|
minimal: true,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xh/hoist",
|
|
3
|
-
"version": "73.0.0-SNAPSHOT.
|
|
3
|
+
"version": "73.0.0-SNAPSHOT.1747359414796",
|
|
4
4
|
"description": "Hoist add-on for building and deploying React Applications.",
|
|
5
5
|
"repository": "github:xh/hoist-react",
|
|
6
6
|
"homepage": "https://xh.io",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@auth0/auth0-spa-js": "~2.1.3",
|
|
32
|
-
"@azure/msal-browser": "~4.
|
|
32
|
+
"@azure/msal-browser": "~4.12.0",
|
|
33
33
|
"@blueprintjs/core": "^5.10.5",
|
|
34
34
|
"@blueprintjs/datetime": "^5.3.7",
|
|
35
35
|
"@blueprintjs/datetime2": "^2.3.7",
|
|
@@ -141,11 +141,7 @@ export class ClientHealthService extends HoistService {
|
|
|
141
141
|
message: 'Submitted health report',
|
|
142
142
|
...rest,
|
|
143
143
|
...opts,
|
|
144
|
-
data:
|
|
145
|
-
loadId: XH.loadId,
|
|
146
|
-
tabId: XH.tabId,
|
|
147
|
-
...this.getReport()
|
|
148
|
-
}
|
|
144
|
+
data: this.getReport()
|
|
149
145
|
});
|
|
150
146
|
}
|
|
151
147
|
}
|