@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 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.0` with new APIs to support the consolidated Admin Console "Clients"
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
- * For clarity, [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` (see below).
15
- Note that there is a new runtime check on all instances of `HoistBase` to warn if this call has not
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
- * Added a new Admin Console "Clients" tab - a consolidated view of all websocket-connected clients
24
- across all instances in the cluster.
25
- * Significantly upgraded the Admin Console "User Activity" tab with:
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 all or a provided subset of fields.
39
- * `BaseOAuthClientConfig` now supports a new `reloginEnabled` property. Use this property to
40
- allow the client to do a potentially interactive popup login during the session to re-establish
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.0`
131
+ * @azure/msal-browser `3.28 → 4.8`
130
132
 
131
133
  ## v72.2.0 - 2025-03-13
132
134
 
@@ -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: 'Instance', value: svc.serverInstance},
76
- {label: 'Server', value: `${svc.get('appVersion')} (build ${svc.get('appBuild')})`},
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
  }
@@ -42,7 +42,8 @@
42
42
  margin-left: var(--xh-pad-px);
43
43
  }
44
44
 
45
- &__instance {
45
+ &__tabid {
46
+ margin-left: var(--xh-pad-px);
46
47
  cursor: pointer;
47
48
  }
48
49
 
@@ -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
- build = envSvc.get('clientBuild'),
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, versionAndBuild].join(' • '),
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-bar__instance',
38
- title: 'Currently Connected Server Instance',
39
- items: [Icon.server(), instance]
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
- instance = svc.serverInstance;
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, instance].join(' • '),
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.1747350426319",
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.8.0",
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
  }