@xh/hoist 81.0.0 β 81.0.2
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 +41 -28
- package/build/types/kit/blueprint/Wrappers.d.ts +6 -3
- package/docs/changelog-format.md +18 -8
- package/docs/upgrade-notes/v81-upgrade-notes.md +2 -5
- package/kit/blueprint/Wrappers.ts +13 -2
- package/kit/blueprint/index.ts +0 -8
- package/package.json +5 -2
- package/.claude/settings.json +0 -6
- package/.claude/skills/xh-update-doc-links/SKILL.md +0 -108
- package/.claude/skills/xh-update-docs/SKILL.md +0 -112
- package/.claude/skills/xh-update-docs/references/doc-conventions.md +0 -118
- package/.claude/skills/xh-upgrade-notes/SKILL.md +0 -201
- package/.claude/skills/xh-upgrade-notes/template.md +0 -144
- package/.husky/pre-commit +0 -2
- package/.nvmrc +0 -1
- package/.prettierignore +0 -11
- package/.prettierrc.json +0 -22
- package/AGENTS.md +0 -163
- package/CLAUDE.md +0 -13
- package/SECURITY.md +0 -28
- package/context7.json +0 -4
- package/tsconfig.tsbuildinfo +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 81.0.
|
|
3
|
+
## 81.0.2 - 2026-02-12
|
|
4
|
+
|
|
5
|
+
### π₯ Breaking Changes (upgrade difficulty: π’ LOW)
|
|
6
|
+
|
|
7
|
+
See [`docs/upgrade-notes/v81-upgrade-notes.md`](docs/upgrade-notes/v81-upgrade-notes.md) for
|
|
8
|
+
detailed, step-by-step upgrade instructions with before/after code examples.
|
|
9
|
+
|
|
10
|
+
* Requires hoist-core `v36.1` or greater.
|
|
11
|
+
* Renamed the CSS class on Panel's outer structural wrapper from `xh-panel__content` to
|
|
12
|
+
`xh-panel__inner`. The `xh-panel__content` class is now used on the new inner frame wrapping
|
|
13
|
+
content items (the target of `contentBoxProps`). Update any app CSS selectors targeting the old
|
|
14
|
+
`xh-panel__content` class accordingly.
|
|
15
|
+
* Changed the signatures of some `HoistAuthModel` methods to return `IdentityInfo` rather than
|
|
16
|
+
a `boolean`. For most apps this will require a trivial change to the signature of the
|
|
17
|
+
implementation of `HoistAuthModel.completeAuthAsync`.
|
|
18
|
+
* Renamed Blueprint `Card` exports to `BpCard` and `bpCard`.
|
|
4
19
|
|
|
5
20
|
### π New Features
|
|
6
21
|
|
|
@@ -14,20 +29,9 @@
|
|
|
14
29
|
`Card`.
|
|
15
30
|
* Added `scrollable` prop to desktop `Panel`, matching the existing mobile `Panel` API. Sets
|
|
16
31
|
`overflowY: 'auto'` on the content area.
|
|
17
|
-
*
|
|
18
|
-
shorthand: `true` resolves to the standard app padding CSS variable (`--xh-pad-px`,
|
|
19
|
-
`false`
|
|
20
|
-
|
|
21
|
-
### π₯ Breaking Changes
|
|
22
|
-
* Requires hoist-core `v36.1` or greater.
|
|
23
|
-
* The CSS class on Panel's outer structural wrapper has been renamed from `xh-panel__content` to
|
|
24
|
-
`xh-panel__inner`. The `xh-panel__content` class is now used on the new inner frame wrapping
|
|
25
|
-
content items (the target of `contentBoxProps`). Update any app CSS selectors targeting the old
|
|
26
|
-
`xh-panel__content` class accordingly.
|
|
27
|
-
* Change to the signatures of some `HoistAuthModel` methods to return `IdentityInfo` rather than
|
|
28
|
-
a `boolean`. For most apps this will require a trivial change to the signature of the
|
|
29
|
-
implementation of `HoistAuthModel.completeAuthAsync`.
|
|
30
|
-
* Renamed Blueprint `Card` exports to `BpCard` and `bpCard`.
|
|
32
|
+
* Enhanced layout props `padding`, `margin` (and their directional variants), and `gap` to accept a
|
|
33
|
+
boolean shorthand: `true` - resolves to the standard app padding CSS variable (`--xh-pad-px`,
|
|
34
|
+
default 10px), with `false` treated as unset.
|
|
31
35
|
|
|
32
36
|
### π Bug Fixes
|
|
33
37
|
|
|
@@ -42,19 +46,22 @@
|
|
|
42
46
|
|
|
43
47
|
### βοΈ Technical
|
|
44
48
|
|
|
45
|
-
*
|
|
46
|
-
|
|
49
|
+
* Improved the efficiency of initialization by reducing the number of fetch requests required to
|
|
50
|
+
load user identity.
|
|
47
51
|
|
|
48
52
|
## 80.0.1 - 2026-01-28
|
|
49
53
|
|
|
50
54
|
### βοΈ Technical
|
|
51
55
|
|
|
52
|
-
*
|
|
56
|
+
* Added `Cube.lastUpdated` and `View.cubeUpdated` properties to support more efficient updating of
|
|
53
57
|
connected cube views.
|
|
54
58
|
|
|
55
59
|
## 80.0.0 - 2026-01-27
|
|
56
60
|
|
|
57
|
-
### π₯ Breaking Changes
|
|
61
|
+
### π₯ Breaking Changes (upgrade difficulty: π’ LOW)
|
|
62
|
+
|
|
63
|
+
See [`docs/upgrade-notes/v80-upgrade-notes.md`](docs/upgrade-notes/v80-upgrade-notes.md) for
|
|
64
|
+
detailed, step-by-step upgrade instructions with before/after code examples.
|
|
58
65
|
|
|
59
66
|
* Modified several CSS classes related to `FormField` to better follow BEM conventions.
|
|
60
67
|
* β οΈThe commonly targeted `xh-form-field-label` class is now `xh-form-field__label`, although
|
|
@@ -88,7 +95,7 @@
|
|
|
88
95
|
* Added `AggregationContext` as an additional argument to `CubeField.canAggregateFn`.
|
|
89
96
|
* Added `filterMatchMode` option to `ColChooserModel`, allowing customizing match to `start`,
|
|
90
97
|
`startWord`, or `any`.
|
|
91
|
-
* Added support for reconnecting a `View` to its associated `Cube
|
|
98
|
+
* Added support for reconnecting a `View` to its associated `Cube`.
|
|
92
99
|
|
|
93
100
|
### βοΈ Typescript API Adjustments
|
|
94
101
|
|
|
@@ -122,11 +129,14 @@
|
|
|
122
129
|
* Added a direct dependency and forced resolution to pin to `jquery@3.x`. This is a transitive
|
|
123
130
|
dependency of the `golden-layout` library and is specified by that library very loosely as `*`,
|
|
124
131
|
causing a break if upgraded to jQuery's new 4.x release.
|
|
125
|
-
|
|
132
|
+
* β οΈApps will need to add their own resolution to ensure they stay on the last 3.x version.
|
|
126
133
|
|
|
127
134
|
## 79.0.0 - 2026-01-05
|
|
128
135
|
|
|
129
|
-
### π₯ Breaking Changes
|
|
136
|
+
### π₯ Breaking Changes (upgrade difficulty: π MEDIUM)
|
|
137
|
+
|
|
138
|
+
See [`docs/upgrade-notes/v79-upgrade-notes.md`](docs/upgrade-notes/v79-upgrade-notes.md) for
|
|
139
|
+
detailed, step-by-step upgrade instructions with before/after code examples.
|
|
130
140
|
|
|
131
141
|
Note that a server-side upgrade to `hoist-core >= 35` is recommended to support several changes in
|
|
132
142
|
this release, but is not strictly required.
|
|
@@ -206,7 +216,7 @@ this release, but is not strictly required.
|
|
|
206
216
|
### π Bug Fixes
|
|
207
217
|
|
|
208
218
|
* Fixed Highcharts timezone handling regression from version 77.
|
|
209
|
-
* Note that Highcharts has deprecated the `time.useUTC` option and its functioning
|
|
219
|
+
* Note that Highcharts has deprecated the `time.useUTC` option and its functioning seems
|
|
210
220
|
suspect - set `time.timezone` instead. See https://api.highcharts.com/highcharts/time.useUTC.
|
|
211
221
|
|
|
212
222
|
### βοΈ Technical
|
|
@@ -231,7 +241,10 @@ this release, but is not strictly required.
|
|
|
231
241
|
|
|
232
242
|
## 78.0.0 - 2025-11-21
|
|
233
243
|
|
|
234
|
-
### π₯ Breaking Changes
|
|
244
|
+
### π₯ Breaking Changes (upgrade difficulty: π TRIVIAL)
|
|
245
|
+
|
|
246
|
+
See [`docs/upgrade-notes/v78-upgrade-notes.md`](docs/upgrade-notes/v78-upgrade-notes.md) for
|
|
247
|
+
detailed, step-by-step upgrade instructions with before/after code examples.
|
|
235
248
|
|
|
236
249
|
* `GridModel.setColumnState` no longer patches existing column state, but instead replaces it
|
|
237
250
|
wholesale. Applications that were relying on the prior patching behavior will need to
|
|
@@ -248,7 +261,7 @@ this release, but is not strictly required.
|
|
|
248
261
|
### π Bug Fixes
|
|
249
262
|
|
|
250
263
|
* Fixed `GridModel` not appending children to the parents correctly when recs have numeric IDs.
|
|
251
|
-
* Fixed issue where newly added columns
|
|
264
|
+
* Fixed issue where newly added columns would appear in the Displayed Columns section of the column
|
|
252
265
|
chooser after loading grid state that was persisted before the columns were added to the grid.
|
|
253
266
|
* Removed a minor Cube `Query` annoyance - `dimensions` are now automatically added to the `fields`
|
|
254
267
|
list and do not need to be manually repeated there.
|
|
@@ -273,10 +286,10 @@ this release, but is not strictly required.
|
|
|
273
286
|
|
|
274
287
|
### π Bug Fixes
|
|
275
288
|
|
|
276
|
-
* Improved `StoreRecord.isModified` to
|
|
289
|
+
* Improved `StoreRecord.isModified` to not return `true` after a field has been edited but then
|
|
277
290
|
returned to its original value in a subsequent edit.
|
|
278
291
|
* Restored support for `TabModel.content` set to `null`, to support dynamic tab content.
|
|
279
|
-
* Fixed
|
|
292
|
+
* Fixed an issue where stray context menus could appear when clicking on column group headers and
|
|
280
293
|
other grid empty space.
|
|
281
294
|
|
|
282
295
|
## 77.0.1 - 2025-10-29
|
|
@@ -305,7 +318,7 @@ this release, but is not strictly required.
|
|
|
305
318
|
|
|
306
319
|
### βοΈ Technical
|
|
307
320
|
|
|
308
|
-
*
|
|
321
|
+
* Added support for Grails 7 service name conventions in admin client (backward compatible).
|
|
309
322
|
|
|
310
323
|
## 76.2.0 - 2025-10-22
|
|
311
324
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { Alert, Button, ButtonGroup, Callout, Card as BpCard, Checkbox, ControlGroup,
|
|
1
|
+
import { Alert, Button, ButtonGroup, Callout, Card as BpCard, Checkbox, ControlGroup, type DialogProps, Drawer, EditableText, FileInput, FormGroup, Hotkey, Hotkeys, InputGroup, Label, Menu, MenuDivider, MenuItem, Navbar, NavbarDivider, NavbarGroup, NavbarHeading, NumericInput, OverflowList, Overlay2 as Overlay, type PopoverProps, Radio, RadioGroup, RangeSlider, Slider, Switch, Tab, Tabs, Tag, TagInput, Text, TextArea, Tooltip, Tree } from '@blueprintjs/core';
|
|
2
2
|
import { DatePicker } from '@blueprintjs/datetime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
declare const Dialog: React.FC<DialogProps>;
|
|
5
|
+
declare const Popover: React.FC<PopoverProps>;
|
|
3
6
|
export { Alert, Button, ButtonGroup, Callout, BpCard, Checkbox, ControlGroup, DatePicker, Dialog, Drawer, EditableText, FileInput, FormGroup, Hotkeys, Hotkey, InputGroup, Label, Menu, MenuItem, MenuDivider, Navbar, NavbarDivider, NavbarGroup, NavbarHeading, NumericInput, OverflowList, Overlay, Popover, Radio, RadioGroup, RangeSlider, Slider, Switch, Tab, Tabs, Tag, TagInput, TextArea, Text, Tooltip, Tree };
|
|
4
|
-
export declare const alert: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").AlertProps>, button: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ButtonProps>, controlGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ControlGroupProps>, checkbox: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CheckboxProps>, dialog: import("@xh/hoist/core").ElementFactory<
|
|
5
|
-
export declare const buttonGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ButtonGroupProps>, callout: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CalloutProps>, bpCard: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CardProps>, drawer: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").DrawerProps>, editableText: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").EditableTextProps>, formGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").FormGroupProps>, hotkey: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").HotkeyProps>, hotkeys: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").HotkeysProps>, inputGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").InputGroupProps>, label: import("@xh/hoist/core").ElementFactory<
|
|
7
|
+
export declare const alert: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").AlertProps>, button: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ButtonProps>, controlGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ControlGroupProps>, checkbox: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CheckboxProps>, dialog: import("@xh/hoist/core").ElementFactory<DialogProps>, datePicker: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/datetime").DatePickerProps>, menuDivider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").MenuDividerProps>, menuItem: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").MenuItemProps>, navbarDivider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").NavbarDividerProps>, numericInput: import("@xh/hoist/core").ElementFactory<Omit<import("@blueprintjs/core").HTMLInputProps, "size"> & import("@blueprintjs/core").NumericInputProps>, overflowList: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").OverflowListProps<any>>, popover: import("@xh/hoist/core").ElementFactory<PopoverProps<import("@blueprintjs/core").DefaultPopoverTargetHTMLProps>>, radio: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ControlProps>, rangeSlider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").RangeSliderProps>, slider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").SliderProps>, switchControl: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").SwitchProps>, textArea: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TextAreaProps>, tree: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TreeProps<unknown>>, tagInput: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TagInputProps>, fileInput: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").FileInputProps>, overlay: import("@xh/hoist/core").ElementFactory<Omit<import("@blueprintjs/core").Overlay2Props, "ref"> & React.RefAttributes<import("@blueprintjs/core").OverlayInstance>>, tooltip: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TooltipProps<import("@blueprintjs/core").DefaultPopoverTargetHTMLProps>>;
|
|
8
|
+
export declare const buttonGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ButtonGroupProps>, callout: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CalloutProps>, bpCard: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CardProps>, drawer: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").DrawerProps>, editableText: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").EditableTextProps>, formGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").FormGroupProps>, hotkey: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").HotkeyProps>, hotkeys: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").HotkeysProps>, inputGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").InputGroupProps>, label: import("@xh/hoist/core").ElementFactory<React.AllHTMLAttributes<HTMLLabelElement> & React.RefAttributes<HTMLLabelElement>>, menu: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").MenuProps>, navbar: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").NavbarProps>, navbarHeading: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").NavbarHeadingProps>, navbarGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").NavbarGroupProps>, radioGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").RadioGroupProps>, tabs: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TabsProps>, tab: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TabProps>, tag: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TagProps>, text: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TextProps>;
|
package/docs/changelog-format.md
CHANGED
|
@@ -10,9 +10,11 @@ apply.
|
|
|
10
10
|
```markdown
|
|
11
11
|
## {VERSION} - {YYYY-MM-DD}
|
|
12
12
|
|
|
13
|
-
### π₯ Breaking Changes
|
|
13
|
+
### π₯ Breaking Changes (upgrade difficulty: {RATING})
|
|
14
|
+
|
|
15
|
+
See [`docs/upgrade-notes/v{NN}-upgrade-notes.md`](docs/upgrade-notes/v{NN}-upgrade-notes.md) for
|
|
16
|
+
detailed, step-by-step upgrade instructions with before/after code examples.
|
|
14
17
|
|
|
15
|
-
* {Introductory bullet with overview and link to upgrade notes}
|
|
16
18
|
* {Required change 1}
|
|
17
19
|
* {Required change 2}
|
|
18
20
|
* {Sub-detail if needed}
|
|
@@ -87,12 +89,20 @@ Bad:
|
|
|
87
89
|
|
|
88
90
|
## Breaking Changes Section
|
|
89
91
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
**Every major version with breaking changes MUST include all of the following.** Do not skip or
|
|
93
|
+
reorder these requirements:
|
|
94
|
+
|
|
95
|
+
1. **Difficulty rating in the header** β append `(upgrade difficulty: {RATING})` to the section
|
|
96
|
+
header. See Difficulty Ratings below for the rating scale.
|
|
97
|
+
2. **Upgrade notes link as a standalone sentence** β immediately after the header (before any
|
|
98
|
+
bullets), include a sentence linking to the upgrade notes file. This is **not** a bullet point β
|
|
99
|
+
it is a standalone paragraph. Use this exact format:
|
|
100
|
+
```markdown
|
|
101
|
+
See [`docs/upgrade-notes/v{NN}-upgrade-notes.md`](docs/upgrade-notes/v{NN}-upgrade-notes.md) for
|
|
102
|
+
detailed, step-by-step upgrade instructions with before/after code examples.
|
|
103
|
+
```
|
|
104
|
+
3. **List** every required app-level change as a separate bullet
|
|
105
|
+
4. **Be specific** β name exact classes, methods, and config keys
|
|
96
106
|
5. **Link** to relevant framework upgrade guides (e.g. Blueprint, AG Grid) when applicable
|
|
97
107
|
|
|
98
108
|
Each bullet should be concise (1-2 lines). The upgrade notes file handles expanded detail with
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
# Hoist React v81 Upgrade Notes
|
|
2
2
|
|
|
3
|
-
> **From:** v80.x β v81.0.
|
|
4
|
-
|
|
5
|
-
**Note:** This guide is a draft for the upcoming v81 release and may be updated before the final
|
|
6
|
-
release.
|
|
3
|
+
> **From:** v80.x β v81.0.2 | **Released:** 2026-02-12 | **Difficulty:** π’ LOW
|
|
7
4
|
|
|
8
5
|
## Overview
|
|
9
6
|
|
|
@@ -39,7 +36,7 @@ Before:
|
|
|
39
36
|
|
|
40
37
|
After:
|
|
41
38
|
```json
|
|
42
|
-
"@xh/hoist": "~81.0.
|
|
39
|
+
"@xh/hoist": "~81.0.2"
|
|
43
40
|
```
|
|
44
41
|
|
|
45
42
|
### 2. Update Panel CSS Class References
|
|
@@ -15,7 +15,8 @@ import {
|
|
|
15
15
|
Card as BpCard,
|
|
16
16
|
Checkbox,
|
|
17
17
|
ControlGroup,
|
|
18
|
-
Dialog,
|
|
18
|
+
Dialog as BpDialog,
|
|
19
|
+
type DialogProps,
|
|
19
20
|
Drawer,
|
|
20
21
|
EditableText,
|
|
21
22
|
FileInput,
|
|
@@ -34,7 +35,8 @@ import {
|
|
|
34
35
|
NumericInput,
|
|
35
36
|
OverflowList,
|
|
36
37
|
Overlay2 as Overlay,
|
|
37
|
-
Popover,
|
|
38
|
+
Popover as BpPopover,
|
|
39
|
+
type PopoverProps,
|
|
38
40
|
Radio,
|
|
39
41
|
RadioGroup,
|
|
40
42
|
RangeSlider,
|
|
@@ -51,6 +53,15 @@ import {
|
|
|
51
53
|
} from '@blueprintjs/core';
|
|
52
54
|
import {DatePicker} from '@blueprintjs/datetime';
|
|
53
55
|
import {elementFactory} from '@xh/hoist/core';
|
|
56
|
+
import React, {createElement as reactCreateElement} from 'react';
|
|
57
|
+
|
|
58
|
+
// Wrap Dialog and Popover to disable fade/scale-in transitions by default.
|
|
59
|
+
// See also popover & overlay related CSS overrides in ./styles.scss.
|
|
60
|
+
const Dialog: React.FC<DialogProps> = props =>
|
|
61
|
+
reactCreateElement(BpDialog, {transitionDuration: 0, transitionName: 'none', ...props});
|
|
62
|
+
|
|
63
|
+
const Popover: React.FC<PopoverProps> = props =>
|
|
64
|
+
reactCreateElement(BpPopover, {transitionDuration: 0, ...props});
|
|
54
65
|
|
|
55
66
|
//---------------------
|
|
56
67
|
// Re-exports
|
package/kit/blueprint/index.ts
CHANGED
|
@@ -7,11 +7,9 @@
|
|
|
7
7
|
import {
|
|
8
8
|
BlueprintProvider,
|
|
9
9
|
Classes,
|
|
10
|
-
Dialog,
|
|
11
10
|
FocusStyleManager,
|
|
12
11
|
type HotkeyConfig,
|
|
13
12
|
OverlayToaster,
|
|
14
|
-
Popover,
|
|
15
13
|
PopoverInteractionKind,
|
|
16
14
|
Position,
|
|
17
15
|
type ToasterPosition,
|
|
@@ -26,12 +24,6 @@ import './styles.scss';
|
|
|
26
24
|
// on focusable components when focused via mouse click.
|
|
27
25
|
FocusStyleManager.onlyShowFocusOnTabs();
|
|
28
26
|
|
|
29
|
-
// Disable fade/scale-in transitions.
|
|
30
|
-
// See also popover & overlay related overrides in ./styles.scss.
|
|
31
|
-
Dialog.defaultProps.transitionDuration = 0;
|
|
32
|
-
Dialog.defaultProps.transitionName = 'none';
|
|
33
|
-
Popover.defaultProps.transitionDuration = 0;
|
|
34
|
-
|
|
35
27
|
//---------------------
|
|
36
28
|
// Re-exports
|
|
37
29
|
//---------------------
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xh/hoist",
|
|
3
|
-
"version": "81.0.
|
|
3
|
+
"version": "81.0.2",
|
|
4
4
|
"description": "Hoist add-on for building and deploying React Applications.",
|
|
5
|
-
"repository":
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/xh/hoist-react.git"
|
|
8
|
+
},
|
|
6
9
|
"homepage": "https://xh.io",
|
|
7
10
|
"bugs": "https://github.com/xh/hoist-react/issues",
|
|
8
11
|
"author": "Extremely Heavy Industries, Inc.",
|
package/.claude/settings.json
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: xh-update-doc-links
|
|
3
|
-
description: Pre-commit documentation consistency check. Ensures docs/README.md index and docs/README-ROADMAP.md stay in sync with documentation files on disk, validates inter-doc links, and enhances cross-references when new docs are added. Invoke after editing READMEs or concept docs, before committing.
|
|
4
|
-
tools: Read, Glob, Grep, Bash, Edit, Write
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# xh-update-doc-links β Documentation Consistency Check
|
|
8
|
-
|
|
9
|
-
Pre-commit skill to ensure documentation index files, inter-doc links, and cross-references
|
|
10
|
-
stay consistent after editing READMEs or concept docs.
|
|
11
|
-
|
|
12
|
-
## Step 1: Discover Documentation Files
|
|
13
|
-
|
|
14
|
-
Build a complete inventory of documentation files on disk.
|
|
15
|
-
|
|
16
|
-
1. Use `Glob` to find all `**/README.md` files, excluding `node_modules/`, `public/`, and
|
|
17
|
-
`static/` directories.
|
|
18
|
-
2. Use `Glob` to find all files under `docs/`.
|
|
19
|
-
3. Run `git diff --name-only` and `git status --porcelain` to identify which docs were
|
|
20
|
-
recently changed or added.
|
|
21
|
-
4. Build a master list of all documentation files, noting which are new or recently modified.
|
|
22
|
-
|
|
23
|
-
## Step 2: Read Index Files
|
|
24
|
-
|
|
25
|
-
Read the two index files and parse their current entries.
|
|
26
|
-
|
|
27
|
-
1. Read `docs/README.md` β focus on the **Package Documentation** section (the tables under
|
|
28
|
-
"Core Framework", "Components", "Utilities", "Concepts", and "Other Packages").
|
|
29
|
-
- Parse each table row to extract the package path and linked README path.
|
|
30
|
-
- Parse the "Other Packages" paragraph to extract unlisted package names.
|
|
31
|
-
|
|
32
|
-
2. Read `docs/README-ROADMAP.md` β parse all priority tables and the Concepts table.
|
|
33
|
-
- Extract each package path, description, and status value.
|
|
34
|
-
- Note which entries are `Planned`, `Drafted`, or `[Done](link)`.
|
|
35
|
-
|
|
36
|
-
## Step 3: Reconcile Indexes
|
|
37
|
-
|
|
38
|
-
Compare documentation on disk against both index files.
|
|
39
|
-
|
|
40
|
-
### docs/README.md Reconciliation
|
|
41
|
-
|
|
42
|
-
For each README on disk:
|
|
43
|
-
- Check if it has an entry in the appropriate `docs/README.md` table (Core Framework, Components,
|
|
44
|
-
Utilities, Concepts, or Other Packages).
|
|
45
|
-
- **Missing entries:** Add a new table row in the correct section using this format:
|
|
46
|
-
```markdown
|
|
47
|
-
| [`/package/`](../package/README.md) | One-sentence description | Key, Topics, Here |
|
|
48
|
-
```
|
|
49
|
-
(Note: paths are relative from `docs/`, so package READMEs use `../` prefix.)
|
|
50
|
-
- **Stale entries:** If an entry links to a README that no longer exists, remove it.
|
|
51
|
-
- **Promotion:** If a package is listed in the "Other Packages" paragraph and now has a
|
|
52
|
-
README, move it to the appropriate table and remove it from the paragraph.
|
|
53
|
-
- **AGENTS.md directive:** Verify that `AGENTS.md` still contains the directive pointing
|
|
54
|
-
to `docs/README.md` (the "Hoist Documentation" section). Do not re-add package tables
|
|
55
|
-
to AGENTS.md.
|
|
56
|
-
|
|
57
|
-
### README-ROADMAP.md Reconciliation
|
|
58
|
-
|
|
59
|
-
For each README on disk:
|
|
60
|
-
- Check if it has an entry in the roadmap with the correct status.
|
|
61
|
-
- **Status updates:** Change `Planned` β `[Done](../path/README.md)` for newly completed docs.
|
|
62
|
-
Change `Drafted` β `[Done](../path/README.md)` if appropriate.
|
|
63
|
-
- **Missing entries:** Add entries for docs not yet on the roadmap.
|
|
64
|
-
- **Progress notes:** Add a progress note entry for the current date if doc changes are
|
|
65
|
-
detected. Follow the existing format in the "Progress Notes" section.
|
|
66
|
-
|
|
67
|
-
## Step 4: Validate Inter-Doc Links
|
|
68
|
-
|
|
69
|
-
Scan every documentation file (READMEs + concept docs) for relative markdown links.
|
|
70
|
-
|
|
71
|
-
1. For each file, extract all markdown links matching `[text](path)` where `path` is a
|
|
72
|
-
relative path (not a URL).
|
|
73
|
-
2. Resolve each relative path from the source file's directory.
|
|
74
|
-
3. Verify the target exists on disk.
|
|
75
|
-
4. **Broken links:** Report and fix. Common fixes include:
|
|
76
|
-
- Correcting `../` depth for moved files
|
|
77
|
-
- Updating paths for renamed files
|
|
78
|
-
- Removing links to deleted files
|
|
79
|
-
|
|
80
|
-
## Step 5: Enhance Cross-Links
|
|
81
|
-
|
|
82
|
-
When new or recently changed docs are detected, look for cross-linking opportunities.
|
|
83
|
-
|
|
84
|
-
1. **Topic-based linking:** Scan existing READMEs for sections that discuss the same topic
|
|
85
|
-
as a new doc. Where an existing README has a brief treatment of a topic that now has
|
|
86
|
-
dedicated documentation, add a contextual "See [`/package/`](path) for details" link.
|
|
87
|
-
|
|
88
|
-
2. **Related Packages sections:** Check if a new README was created for a package that is
|
|
89
|
-
referenced without a link in another doc's "Related Packages" section. Add the link using
|
|
90
|
-
the format:
|
|
91
|
-
```markdown
|
|
92
|
-
- [`/package/`](path) - Brief description
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
3. **Be conservative:** Only add links where the existing text already discusses the topic.
|
|
96
|
-
Do not restructure existing content or add new sections just to create links.
|
|
97
|
-
|
|
98
|
-
## Step 6: Report
|
|
99
|
-
|
|
100
|
-
Output a summary organized into these sections:
|
|
101
|
-
|
|
102
|
-
1. **Index Updates** β `docs/README.md` entries added, updated, or removed.
|
|
103
|
-
2. **Roadmap Updates** β Status changes, new entries, progress notes added.
|
|
104
|
-
3. **Broken Links Fixed** β Source file, broken target, and fix applied.
|
|
105
|
-
4. **New Cross-Links Added** β Source file, target doc, and surrounding context.
|
|
106
|
-
5. **Items Needing Review** β Ambiguities or items requiring human judgment.
|
|
107
|
-
|
|
108
|
-
If no changes were needed in a category, note "None" for that section.
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: xh-update-docs
|
|
3
|
-
description: Update hoist-react documentation after adding new components or features. Use when a developer has made changes to hoist-react and wants to update README files, AGENTS.md, and the documentation roadmap to reflect those changes. Invoke with a commit hash or PR number. Also use when you detect that recent commits or PRs have added new components, models, or services that are not yet reflected in the documentation.
|
|
4
|
-
tools: Read, Glob, Grep, Bash, Edit, Write
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# xh-update-docs β Documentation Update Skill
|
|
8
|
-
|
|
9
|
-
Update hoist-react documentation to reflect recent code changes. This skill analyzes
|
|
10
|
-
commits or PRs, identifies documentation-worthy changes, and proposes targeted updates
|
|
11
|
-
to package READMEs, AGENTS.md, and the documentation roadmap.
|
|
12
|
-
|
|
13
|
-
## Step 1: Resolve Input
|
|
14
|
-
|
|
15
|
-
Accept `$ARGUMENTS` as a commit hash or PR number.
|
|
16
|
-
|
|
17
|
-
**If arguments are provided:**
|
|
18
|
-
- If it looks like a PR number (digits only, typically 1-5 digits), use `gh pr diff <number>`
|
|
19
|
-
and `gh pr view <number>` to analyze
|
|
20
|
-
- Otherwise treat it as a commit hash and use `git diff <hash>~1..<hash>`
|
|
21
|
-
|
|
22
|
-
**If no arguments are provided:**
|
|
23
|
-
- Run `git log --oneline -6` to fetch the last 6 commits
|
|
24
|
-
- Present them to the user via `AskUserQuestion` as selectable options, where each option
|
|
25
|
-
label is the short hash + commit message
|
|
26
|
-
- The user picks the commit(s) that contain the changes to document
|
|
27
|
-
|
|
28
|
-
## Step 2: Analyze Changes
|
|
29
|
-
|
|
30
|
-
Analyze the diff to identify documentation-worthy changes:
|
|
31
|
-
|
|
32
|
-
1. **Identify new and modified files:**
|
|
33
|
-
- New files added (new components, models, services)
|
|
34
|
-
- Modified files (changed behavior, new props/config, new methods)
|
|
35
|
-
|
|
36
|
-
2. **Determine affected packages:**
|
|
37
|
-
- Map changed files to packages: `/cmp/`, `/core/`, `/data/`, `/svc/`, `/desktop/`,
|
|
38
|
-
`/mobile/`, `/admin/`, `/format/`, `/utils/`, etc.
|
|
39
|
-
|
|
40
|
-
3. **Read source files:**
|
|
41
|
-
- Don't just rely on the diff β read the actual source files to understand what was
|
|
42
|
-
added or changed, including class hierarchies and exported APIs
|
|
43
|
-
|
|
44
|
-
4. **Cross-reference CHANGELOG.md:**
|
|
45
|
-
- Check `CHANGELOG.md` for entries related to the commit/PR
|
|
46
|
-
- The changelog uses categorized sections under version headers:
|
|
47
|
-
`π₯ Breaking Changes`, `π New Features`, `βοΈ Technical`, `π Bug Fixes`
|
|
48
|
-
- Look for entries in the current SNAPSHOT version that describe the change
|
|
49
|
-
- These provide curated descriptions and are a strong signal of documentation-worthy changes
|
|
50
|
-
|
|
51
|
-
## Step 3: Inventory Existing Documentation
|
|
52
|
-
|
|
53
|
-
Check current documentation state for each affected package:
|
|
54
|
-
|
|
55
|
-
1. **Package READMEs** β Read the relevant README(s) to see what's already documented.
|
|
56
|
-
Use `Glob` to check for `<package>/README.md` files.
|
|
57
|
-
|
|
58
|
-
2. **Documentation Index** β Check for existing entries in the `docs/README.md` Package
|
|
59
|
-
Documentation tables. Read `docs/README.md` and look for the affected package paths.
|
|
60
|
-
|
|
61
|
-
3. **Documentation Roadmap** β Check `docs/README-ROADMAP.md` for status of affected packages.
|
|
62
|
-
|
|
63
|
-
## Step 4: Propose Updates
|
|
64
|
-
|
|
65
|
-
Generate a categorized list of proposed documentation changes. For each change, explain
|
|
66
|
-
**what** would be updated and **why**.
|
|
67
|
-
|
|
68
|
-
Categories:
|
|
69
|
-
|
|
70
|
-
### README Updates
|
|
71
|
-
Edits to existing package READMEs. Examples:
|
|
72
|
-
- New section for a newly added component or model
|
|
73
|
-
- Updated configuration table with new properties
|
|
74
|
-
- New usage pattern or code example
|
|
75
|
-
- Updated architecture diagram
|
|
76
|
-
- New entry in Common Pitfalls
|
|
77
|
-
|
|
78
|
-
### New READMEs
|
|
79
|
-
If a new sub-package was added that lacks a README, propose creating one following the
|
|
80
|
-
7-section structure defined in `references/doc-conventions.md`.
|
|
81
|
-
|
|
82
|
-
### Documentation Index Updates
|
|
83
|
-
New or updated entries in the `docs/README.md` Package Documentation tables. Each entry needs:
|
|
84
|
-
- Linked package path (relative from `docs/`, e.g., `../package/README.md`)
|
|
85
|
-
- One-sentence description
|
|
86
|
-
- Comma-separated list of key topics
|
|
87
|
-
|
|
88
|
-
### Roadmap Updates
|
|
89
|
-
Status changes in `docs/README-ROADMAP.md`:
|
|
90
|
-
- New package entries added to the appropriate priority tier
|
|
91
|
-
- Status changes (e.g., `Planned` β `Done` with link)
|
|
92
|
-
- New progress notes with date
|
|
93
|
-
|
|
94
|
-
## Step 5: Confirm with User
|
|
95
|
-
|
|
96
|
-
Present the full list of proposed changes in a clear summary. Ask the user to confirm
|
|
97
|
-
before applying any changes. Group by category and include enough context for the user
|
|
98
|
-
to evaluate each proposed change.
|
|
99
|
-
|
|
100
|
-
## Step 6: Apply Changes
|
|
101
|
-
|
|
102
|
-
After user confirmation, apply the approved documentation updates using Edit and Write tools.
|
|
103
|
-
|
|
104
|
-
Follow conventions from `references/doc-conventions.md`:
|
|
105
|
-
- Use the 7-section README structure for new READMEs
|
|
106
|
-
- Use element factory style in code examples (not JSX)
|
|
107
|
-
- Use `config` (not `props`) for model constructor args
|
|
108
|
-
- Fold defaults into description column (no separate Default column)
|
|
109
|
-
- Use β
/β markers for correct/incorrect code patterns
|
|
110
|
-
- Use `**Avoid:**` prefix for inline warnings
|
|
111
|
-
|
|
112
|
-
After applying changes, present a summary of what was updated.
|