@harborclient/sdk 1.2.5 → 1.2.7

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 ADDED
@@ -0,0 +1,483 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## Unreleased
6
+
7
+ ## 1.2.7 - 2026-07-25
8
+
9
+ - Update documentation deployment workflow and enhance UI components. (`a82232bd`)
10
+
11
+ ## 1.2.5 - 2026-07-25
12
+
13
+ - feat(CodeEditor): support diagnostic actions in lint hover tooltips. (`40c83c3`)
14
+
15
+ ## 1.2.4 - 2026-07-25
16
+
17
+ - fix(CodeEditor): keep lint hover tooltips open across diagnostic refreshes. (`8953212`)
18
+
19
+ ## 1.2.3 - 2026-07-25
20
+
21
+ - fix(SidebarHistoryItem): use status-dot-only metadata and strengthen label truncation so History sidebar rows ellipsize like Collections and Runs.
22
+
23
+ ## 1.2.2 - 2026-07-25
24
+
25
+ - feat(CodeEditor): add support for host diagnostics in CodeEditor component. (`597b60a`)
26
+
27
+ ## 1.2.1 - 2026-07-25
28
+
29
+ - chore: remove .eslintcache file. (`08ed38e`)
30
+ - fix(Breadcrumb): adjust SegmentShell width for better layout. (`ca8494e`)
31
+
32
+ ## 1.1.35 - 2026-07-25
33
+
34
+ - fix(SegmentedTabs): improve tab layout and wrapping behavior. (`88b3eb2`)
35
+
36
+ ## 1.1.34 - 2026-07-25
37
+
38
+ - fix(tests): update methodColorClass test to include badge class. (`f61eecf`)
39
+ - feat(theme): introduce metrics for typography and geometry in theme configuration. (`2df99d2`)
40
+
41
+ ## 1.1.33 - 2026-07-24
42
+
43
+ - refactor(FormDataEditor): improve file selection layout and remove unnecessary conditional rendering. (`6c897b4`)
44
+
45
+ ## 1.1.32 - 2026-07-23
46
+
47
+ - feat(types): add ApplyRequestDraftPayload interface and applyRequestDraft method. (`ab18b57`)
48
+
49
+ ## 1.1.30 - 2026-07-21
50
+
51
+ - Fix prettier formatting in React shim memo helper.. (`2ffea4d`)
52
+ - Export memo and useReducer from the React shim.. (`4d1cabc`)
53
+
54
+ ## 1.1.29 - 2026-07-21
55
+
56
+ - docs: update subscription management documentation and clarify disposal practices. (`b1d931a`)
57
+
58
+ ## 1.1.28 - 2026-07-21
59
+
60
+ - refactor: streamline subscription management in plugin context. (`6ae8e6b`)
61
+
62
+ ## 1.1.26 - 2026-07-21
63
+
64
+ - docs(renderer-ui): improve documentation formatting for MainViewContribution parameters. (`5e083b1`)
65
+ - feat(renderer): add optional icon property for MainViewContribution. (`642a1eb`)
66
+
67
+ ## 1.1.25 - 2026-07-20
68
+
69
+ - feat(API): enhance HTTP request handling and response structure. (`504e4c4`)
70
+
71
+ ## 1.1.24 - 2026-07-16
72
+
73
+ - feat(CodeEditor): add `css` language mode via `@codemirror/lang-css`.
74
+
75
+ ## 1.1.23 - 2026-07-15
76
+
77
+ - feat(theme): add ThemeColorToken values for sidebar toolbar/section text, footer chrome, toolbar active state, tab underline, resize handle, and variable token; wire FooterIcon, FooterButton, Toolbar, and SidebarSection to use them.
78
+
79
+ ## 1.1.22 - 2026-07-15
80
+
81
+ - feat(theme): add breadcrumb-background and breadcrumb-segment ThemeColorToken values and wire Breadcrumb to use them.
82
+
83
+ ## 1.1.21 - 2026-07-15
84
+
85
+ - feat(Sidebar): improve icon alignment and add GitChangeCollection story. (`f7398ec`)
86
+
87
+ ## 1.1.20 - 2026-07-15
88
+
89
+ - docs(Themes): enhance theme plugin documentation with JSON import details. (`e650013`)
90
+
91
+ ## 1.1.19 - 2026-07-15
92
+
93
+ - feat(Theme): add 'doc-markdown' color token for sidebar markdown document icon. (`5d46918`)
94
+
95
+ ## 1.1.18 - 2026-07-15
96
+
97
+ - feat(Sidebar): enhance commit item display with push status indicator. (`63f4f90`)
98
+
99
+ ## 1.1.15 - 2026-07-15
100
+
101
+ - feat(Sidebar): refactor Sidebar components and improve exports. (`7715453`)
102
+
103
+ ## 1.1.14 - 2026-07-15
104
+
105
+ - feat(Catalog): add CatalogCard and CatalogReadmeMarkdown components. (`6b815bb`)
106
+
107
+ ## 1.1.13 - 2026-07-14
108
+
109
+ - feat(Sidebar): add SidebarBadge component and integrate into SidebarRunItem. (`806fcca`)
110
+
111
+ ## 1.1.12 - 2026-07-14
112
+
113
+ - feat(VariableInput): enhance tooltip functionality and accessibility. (`ec05179`)
114
+
115
+ ## 1.1.11 - 2026-07-14
116
+
117
+ - feat(Breadcrumb): add Breadcrumb component and type exports. (`ceda104`)
118
+
119
+ ## 1.1.10 - 2026-07-14
120
+
121
+ - feat(Sidebar): enhance accessibility for sidebar items. (`96d3be2`)
122
+
123
+ ## 1.1.9 - 2026-07-14
124
+
125
+ - feat(Sidebar): enhance sidebar functionality with new components and accessibility improvements. (`1c84c6d`)
126
+
127
+ ## 1.1.8 - 2026-07-14
128
+
129
+ - feat(Sidebar): enhance sidebar with scrollable content and add empty state. (`e07d0c5`)
130
+
131
+ ## 1.1.6 - 2026-07-14
132
+
133
+ - feat(Sidebar): implement resizable sidebar with scrollbars. (`682d918`)
134
+
135
+ ## 1.1.5 - 2026-07-14
136
+
137
+ - fix(types): update git-related color tokens for accuracy. (`f6385df`)
138
+
139
+ ## 1.1.4 - 2026-07-14
140
+
141
+ - style(EmptySectionLabel): update border style for improved visual distinction. (`b6538c9`)
142
+
143
+ ## 1.1.3 - 2026-07-13
144
+
145
+ - style(EmptySectionLabel): reorder class names for improved readability. (`41ee1b0`)
146
+ - fix(EmptySectionLabel): change div to span and update styling. (`9b8013d`)
147
+
148
+ ## 1.1.2 - 2026-07-13
149
+
150
+ - feat(EmptySectionLabel): add EmptySectionLabel component and its props to exports. (`5d1c1d0`)
151
+
152
+ ## 1.1.1 - 2026-07-13
153
+
154
+ - feat(mcp): add support for remote MCP client server registration. (`e81054e`)
155
+
156
+ ## 1.1.0 - 2026-07-13
157
+
158
+ - feat(ci, release): enhance workflows with manual inputs for branch and version bump. (`bdffa6c`)
159
+
160
+ ## 1.0.77 - 2026-07-13
161
+
162
+ - feat(ColorPicker): set default value and onChange handler in ColorPicker story. (`19fda35`)
163
+
164
+ ## 1.0.75 - 2026-07-12
165
+
166
+ - fix(styles): standardize body text size and line height across components. (`772dd57`)
167
+
168
+ ## 1.0.74 - 2026-07-12
169
+
170
+ - refactor(KeyValueEditor, VariableTable): remove padding from table cells. (`895cd98`)
171
+
172
+ ## 1.0.73 - 2026-07-12
173
+
174
+ - feat(footer-panel, resizable): replace button with RoundButton component. (`e0714a4`)
175
+
176
+ ## 1.0.72 - 2026-07-12
177
+
178
+ - feat(types): add 'terminal' theme color token to ThemeColorToken type. (`00be7d1`)
179
+
180
+ ## 1.0.71 - 2026-07-11
181
+
182
+ - feat(row-actions-menu): add placement option for menu positioning. (`c44408e`)
183
+
184
+ ## 1.0.69 - 2026-07-11
185
+
186
+ - feat(row-actions-menu): enhance menu item functionality and styling. (`6a7a702`)
187
+
188
+ ## 1.0.68 - 2026-07-11
189
+
190
+ - feat(tab-bar): implement drag-and-drop functionality for tab reordering. (`6ac2b6e`)
191
+
192
+ ## 1.0.67 - 2026-07-11
193
+
194
+ - fix(footer-panel): update import path for FooterPanel component. (`3a4bdbe`)
195
+ - chore(.gitignore): remove .vscode directory from ignore list. (`c85f9c1`)
196
+ - feat(footer-button): make `active` and `controlsId` props optional. (`83bbd48`)
197
+
198
+ ## 1.0.66 - 2026-07-11
199
+
200
+ - docs: enhance documentation for import handlers and update related references. (`c1cc35b`)
201
+
202
+ ## 1.0.64 - 2026-07-10
203
+
204
+ - fix(tests): ensure consistent formatting in import handler test. (`e38c9a3`)
205
+ - fix(tests): update import handler test for consistent formatting. (`89509d1`)
206
+ - feat(imports): add file import handler registration functionality. (`8d85a8f`)
207
+
208
+ ## 1.0.63 - 2026-07-10
209
+
210
+ - feat(footer-icon): add `activeStyle` prop with toolbar-matching `selection` variant.
211
+
212
+ ## 1.0.61 - 2026-07-10
213
+
214
+ - feat(actions): introduce action registration for dynamic menu commands. (`5e78027`)
215
+
216
+ ## 1.0.60 - 2026-07-10
217
+
218
+ - feat(autocomplete): enhance AutocompleteInput and SuggestionList functionality. (`16907c0`)
219
+
220
+ ## 1.0.59 - 2026-07-10
221
+
222
+ - feat(code-editor): enhance selection action toolbar and tooltip functionality. (`5718362`)
223
+
224
+ ## 1.0.58 - 2026-07-10
225
+
226
+ - feat(toolbar): add support for right-aligned toggles and refactor action rendering. (`b2d4002`)
227
+
228
+ ## 1.0.57 - 2026-07-10
229
+
230
+ - feat(editor): enhance syntax-highlighted placeholder functionality. (`4d1fe81`)
231
+
232
+ ## 1.0.55 - 2026-07-10
233
+
234
+ - fix(variables): enhance variable substitution with filter support. (`3968373`)
235
+
236
+ ## 1.0.54 - 2026-07-09
237
+
238
+ - docs(snippets): standardize import syntax and improve formatting. (`b6b0630`)
239
+ - docs: add snippets documentation and update sidebar. (`83b61ad`)
240
+
241
+ ## 1.0.53 - 2026-07-09
242
+
243
+ - docs: enhance hc.data documentation and introduce new data property. (`ac16ba6`)
244
+
245
+ ## 1.0.52 - 2026-07-09
246
+
247
+ - feat(types): add new script stage accent colors to ThemeColorToken. (`35ff9d7`)
248
+
249
+ ## 1.0.50 - 2026-07-09
250
+
251
+ - style(PageSidebar): increase width of sidebar from 180px to 220px for improved layout. (`a6679c8`)
252
+
253
+ ## 1.0.49 - 2026-07-09
254
+
255
+ - docs: update React integration instructions across multiple documents. (`3268077`)
256
+
257
+ ## 1.0.43 - 2026-07-08
258
+
259
+ - chore(package): remove unused types entry from package.json. (`65bf340`)
260
+
261
+ ## 1.0.41 - 2026-07-07
262
+
263
+ - fix(docs): update variable references in API documentation and type definitions. (`110f9f1`)
264
+
265
+ ## 1.0.40 - 2026-07-07
266
+
267
+ - fix(snippets): correct indentation in HcExpectMatcher interface. (`82b249d`)
268
+
269
+ ## 1.0.39 - 2026-07-07
270
+
271
+ - chore(package): update keywords in package.json to include plugins, themes, and snippets. (`84a709e`)
272
+
273
+ ## 1.0.37 - 2026-07-07
274
+
275
+ - Enhance signing functionality to support snippets-only bundles. (`de418a0`)
276
+
277
+ ## 1.0.36 - 2026-07-05
278
+
279
+ - Refactor Toolbar component styles for improved consistency and added pressed state story. (`d1bc41d`)
280
+
281
+ ## 1.0.35 - 2026-07-04
282
+
283
+ - Enhance SegmentedTabs component styling for improved alignment. (`4e8ecea`)
284
+
285
+ ## 1.0.34 - 2026-07-04
286
+
287
+ - Update toolbar action button styles for improved visual consistency. (`221a733`)
288
+
289
+ ## 1.0.33 - 2026-07-04
290
+
291
+ - Refactor CLI signing functionality for improved path resolution and environment variable support. (`1f815dc`)
292
+
293
+ ## 1.0.32 - 2026-07-04
294
+
295
+ - Refactor SegmentedTabs component for improved code readability. (`ae5f9b0`)
296
+ - Refactor SegmentedTabs component for improved styling and layout. (`96a2f5f`)
297
+
298
+ ## 1.0.31 - 2026-07-04
299
+
300
+ - Update PageHeader component styles for improved visual consistency. (`eea60fb`)
301
+
302
+ ## 1.0.30 - 2026-07-04
303
+
304
+ - Refactor Modal, PageSidebar, and SegmentedTabs components for improved readability. (`f9fe5b8`)
305
+ - Refactor components to enhance type safety and props handling. (`c777731`)
306
+ - Refactor AsyncListState and Card components for improved structure and clarity. (`6a6024c`)
307
+ - Enhance project configuration and component utilities. (`eec167c`)
308
+
309
+ ## 1.0.29 - 2026-07-04
310
+
311
+ - Update documentation to clarify plugin and theme management. (`36bdeb7`)
312
+
313
+ ## 1.0.28 - 2026-07-03
314
+
315
+ - Update Toolbar component styles for improved UI consistency. (`488a52e`)
316
+
317
+ ## 1.0.27 - 2026-07-03
318
+
319
+ - Update RowActionsMenu styles for improved UI consistency. (`744e875`)
320
+
321
+ ## 1.0.26 - 2026-07-03
322
+
323
+ - Enhance CodeEditor with linting support and new story examples. (`ec17c1f`)
324
+
325
+ ## 1.0.25 - 2026-07-03
326
+
327
+ - Refactor CodeEditor component to simplify editor creation callback. (`7352dfa`)
328
+
329
+ ## 1.0.23 - 2026-07-02
330
+
331
+ - Fix export statement in styles.css.d.ts for consistency. (`7b2a250`)
332
+ - Update ESLint cache, enhance package.json exports, and copy TypeScript definitions for styles. (`fd163a5`)
333
+ - Refactor FormGroup component for improved ID resolution logic. (`820049b`)
334
+ - Update package version to 1.0.22 and enhance sideEffects configuration. (`3b2ff8f`)
335
+ - Update package description for clarity and consistency. (`d3c8e14`)
336
+ - Refactor component styles for improved consistency and accessibility. (`58090ba`)
337
+
338
+ ## 1.0.21 - 2026-07-02
339
+
340
+ - Update MethodSelect component styles for improved focus visibility. (`1077ed8`)
341
+
342
+ ## 1.0.20 - 2026-07-02
343
+
344
+ - Enhance TabCloseButton component with tabIndex prop for improved accessibility. (`4053939`)
345
+ - Enhance SegmentedTabs component with keyboard navigation improvements. (`6ec88d2`)
346
+
347
+ ## 1.0.19 - 2026-07-02
348
+
349
+ - Enhance MethodSelect component with dynamic method color classes. (`6fbc2f2`)
350
+
351
+ ## 1.0.18 - 2026-07-02
352
+
353
+ - Refactor SegmentedTabs component styles for improved layout and accessibility. (`5993349`)
354
+
355
+ ## 1.0.17 - 2026-07-02
356
+
357
+ - Refactor SegmentedTabs component for improved accessibility attributes. (`c11f504`)
358
+ - Enhance SegmentedTabs component with editable tab visibility features. (`144d978`)
359
+
360
+ ## 1.0.16 - 2026-07-02
361
+
362
+ - Enhance Radio component styling with new radioDot class. (`fe1ca3e`)
363
+
364
+ ## 1.0.15 - 2026-07-02
365
+
366
+ - Enhance VariableInput and form styles for improved usability. (`fc6eca5`)
367
+
368
+ ## 1.0.14 - 2026-07-02
369
+
370
+ - Refactor PageHeader component for improved readability. (`1654121`)
371
+ - Enhance FormGroup and PageHeader components for improved usability and styling. (`739a87b`)
372
+
373
+ ## 1.0.13 - 2026-07-02
374
+
375
+ - Refactor FormGroup component to improve ID resolution logic. (`6ad450d`)
376
+ - Enhance FormGroup and VariableInput components for improved usability and styling. (`673bf2b`)
377
+
378
+ ## 1.0.12 - 2026-07-01
379
+
380
+ - Enhance PageHeader component styling for improved visual hierarchy. (`d6dbfe6`)
381
+
382
+ ## 1.0.11 - 2026-07-01
383
+
384
+ - Enhance PageSidebar component styling for improved user interaction. (`b3c5fd9`)
385
+
386
+ ## 1.0.10 - 2026-07-01
387
+
388
+ - Update PageSidebar component styles for improved layout. (`3e63d44`)
389
+
390
+ ## 1.0.9 - 2026-07-01
391
+
392
+ - chore: update version to 1.0.8 and enhance BackButton component accessibility and styling. (`bec3759`)
393
+
394
+ ## 1.0.7 - 2026-07-01
395
+
396
+ - Refactor Modal and SegmentedTabs components for improved code clarity. (`0ac6fce`)
397
+ - Enhance component styling with consistent class prefixes. (`d86919a`)
398
+
399
+ ## 1.0.6 - 2026-07-01
400
+
401
+ - Refactor PageHeader and SidebarLayout components for improved styling. (`49caa57`)
402
+
403
+ ## 1.0.5 - 2026-07-01
404
+
405
+ - Update PageHeader component styles to improve padding and layout consistency. (`7205c06`)
406
+
407
+ ## 1.0.4 - 2026-07-01
408
+
409
+ - Add linting instructions to AGENTS.md. (`440e1de`)
410
+ - Update PageHeader component styles for improved layout. (`88aa4e7`)
411
+ - Test changelog hook. (`12b6780`)
412
+
413
+ ## 1.0.1 - 2026-06-30
414
+
415
+ - `createStorageStore` now hydrates from storage on creation.
416
+
417
+ ## 0.6.17 - 2026-06-30
418
+
419
+ - Add `@harborclient/sdk/react-dom` with host-delegated `createPortal` for plugin portals.
420
+ - Add `portalToBody` helper in `@harborclient/sdk/components` for modals that must escape overflow-hidden plugin webview containers.
421
+
422
+ ## 0.7.0 - 2026-06-30
423
+
424
+ - Add `registerTheme(hc, theme)` and `defineTheme(theme)` helpers for theme plugins — `registerTheme` registers a theme and pushes its disposable onto `hc.subscriptions`.
425
+ - Add `requestKey` to `RequestTabContext` and `ResponseTabContext` — stable per-request identifier for namespacing persistent plugin state (`req:<id>` for saved requests, `METHOD url` fallback for unsaved tabs).
426
+
427
+ ## 0.6.11 - 2026-06-29
428
+
429
+ - Fix Checkbox and Radio click target alignment: pass pointer events through the decorative box/circle and pin the wrapper to 18px so the overlay input matches the visible control.
430
+
431
+ ## 0.4.4 - 2026-06-26
432
+
433
+ - Document global variables for plugins: precedence chain, `RequestTabContext.variables`, and `harborclient:updateGlobalVariables` host command.
434
+ - Clarify `RequestTabContext.variables` JSDoc to include globals in the merge order.
435
+
436
+ ## 0.4.3 - 2026-06-25
437
+
438
+ - Rename npm package from `@harborclient/plugin-api` to `@harborclient/sdk`.
439
+ - Move documentation site from `harborclient.github.io/plugin-api/` to `harborclient.github.io/sdk/`.
440
+ - **Breaking:** Plugin authors must update imports, `jsxImportSource`, and esbuild `--jsx-import-source` to `@harborclient/sdk`, then rebuild plugin bundles.
441
+
442
+ ## 0.4.0 - 2026-06-25
443
+
444
+ - Add `@harborclient/sdk/signing` with `signPlugin`, `verifyPlugin`, and CLI tools (`hc-plugin-sign`, `hc-plugin-verify`).
445
+
446
+ ## 0.3.3 - 2026-06-25
447
+
448
+ - Add `hc.host.sendRequest()` to send the active request editor tab from plugins.
449
+
450
+ ## 0.3.1 - 2026-06-24
451
+
452
+ - Export utility subpaths: `./http`, `./ui`, `./storage`, `./clipboard`, `./runtime-utils`, and `./store`.
453
+ - Restore utility module sources under `src/` so `tsc` rebuilds them (previously only committed in `dist/`).
454
+
455
+ ## 0.3.0 - 2026-06-24
456
+
457
+ - Add renderer `hc.http.onAfterSend`, `hc.ipc.invoke`, and `hc.host` (`openRequestDraft`, `loadRequest`) to `PluginContext`.
458
+ - Add `OpenRequestDraftPayload`, `OpenRequestDraftParam`, `PluginRendererHttp`, `PluginIpcInvoker`, and `PluginHost` types.
459
+ - Extend `PluginHttpRequest` with `bodyType`, `params`, `sourceRequestId`, and `sourceRequestName`.
460
+
461
+ ## 0.2.5 - 2026-06-24
462
+
463
+ - Add React/JSX runtime (`installReact`, `createPluginComponent`, `@harborclient/sdk/react`, `@harborclient/sdk/jsx-runtime`).
464
+ - Add `pluginId` to `PluginContext`.
465
+
466
+ ## 0.2.1 - 2026-06-24
467
+
468
+ - Extend `RequestTabContext` with `variables` for merged collection and environment {{key}} substitution.
469
+
470
+ ## 0.2.0 - 2026-06-24
471
+
472
+ - Add `AuthType`, `AuthConfig`, and `BodyType` types for plugin authors.
473
+ - Extend `RequestDraft` with `auth` and `body_type` fields.
474
+ - Extend `RequestTabContext` with `collectionAuth` and `collectionHeaders` for send-time defaults.
475
+
476
+ ## 0.1.2 - 2026-06-24
477
+
478
+ - Add main-process types (`MainPluginContext`, `PluginHttp`, `PluginIpc`, `PluginHttpRequest`, `PluginHttpResponse`) and `@harborclient/sdk/main` subpath export.
479
+ - Add renderer `PluginFs` types and `fs` on `PluginContext`.
480
+
481
+ ## 0.1.1 - 2026-06-24
482
+
483
+ - Initial standalone npm package extracted from HarborClient monorepo.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sean H
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  TypeScript definitions, utility modules, and React runtime helpers for [HarborClient](https://harborclient.com/) development.
4
4
 
5
- **Documentation:** [https://harborclient.github.io/sdk/](https://harborclient.github.io/sdk/)
5
+ **Documentation:** [https://harborclient.github.io/harborclient/sdk/](https://harborclient.github.io/harborclient/sdk/)
6
6
 
7
7
  Install as a **dev dependency** in your plugin project. The package ships type declarations, HTTP/storage/UI helpers, and a JSX runtime that forwards to the host's React instance via `installReact(hc.react)`.
8
8
 
@@ -14,7 +14,7 @@ Requires HarborClient **>=1.9.0** when using `hc.pluginId`, renderer HTTP lifecy
14
14
  pnpm add -D @harborclient/sdk
15
15
  ```
16
16
 
17
- See the [install guide](https://harborclient.github.io/sdk/install) for version requirements.
17
+ See the [install guide](https://harborclient.github.io/harborclient/sdk/install) for version requirements.
18
18
 
19
19
  ## Quick start
20
20
 
@@ -28,11 +28,11 @@ export function activate(hc: PluginContext): void {
28
28
  }
29
29
  ```
30
30
 
31
- Full guides — package layout, manifest, APIs, examples, and dev workflow — live in the [plugin development docs](https://harborclient.github.io/sdk/).
31
+ Full guides — package layout, manifest, APIs, examples, and dev workflow — live in the [plugin development docs](https://harborclient.github.io/harborclient/sdk/).
32
32
 
33
33
  ## Trusted publishers
34
34
 
35
- HarborClient maintains a [trusted publisher registry](https://harborclient.com/plugins/trusted.json). Authors listed there must sign every plugin they publish; HarborClient rejects installs that claim a trusted author name without a valid signature. See the [signing guide](https://harborclient.github.io/sdk/signing) for key generation and verification.
35
+ HarborClient maintains a [trusted publisher registry](https://harborclient.com/plugins/trusted.json). Authors listed there must sign every plugin they publish; HarborClient rejects installs that claim a trusted author name without a valid signature. See the [signing guide](https://harborclient.github.io/harborclient/sdk/signing) for key generation and verification.
36
36
 
37
37
  To discuss becoming a trusted publisher, email [contact@harborclient.com](mailto:contact@harborclient.com).
38
38
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SegmentedTabs/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAiB,MAAM,OAAO,CAAC;AAM1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAgD1C,UAAU,KAAK,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CAC5C,wBAAwB,CAAC,KAAK,CAAC,EAC/B,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,CACrD;IACC;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC;IAEV;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;IAEvB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC;IAE9B;;OAEG;IACH,wBAAwB,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAEhC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,EAC9C,IAAI,EACJ,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,QAAe,EACf,gBAAgB,EAAE,oBAAoB,EACtC,uBAAuB,EACvB,wBAAwB,EACxB,SAAiB,EACjB,SAAS,EACT,OAAgB,EAChB,SAAS,EAAE,aAAa,EACxB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CA0PxB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SegmentedTabs/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAiB,MAAM,OAAO,CAAC;AAM1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAgD1C,UAAU,KAAK,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CAC5C,wBAAwB,CAAC,KAAK,CAAC,EAC/B,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,CACrD;IACC;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC;IAEV;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;IAEvB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC;IAE9B;;OAEG;IACH,wBAAwB,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAEhC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,EAC9C,IAAI,EACJ,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,QAAe,EACf,gBAAgB,EAAE,oBAAoB,EACtC,uBAAuB,EACvB,wBAAwB,EACxB,SAAiB,EACjB,SAAS,EACT,OAAgB,EAChB,SAAS,EAAE,aAAa,EACxB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CA4PxB"}
@@ -138,7 +138,7 @@ export function SegmentedTabs({ tabs, value: valueProp, onChange: onChangeProp,
138
138
  }
139
139
  }, [editable, onChange, value, visibleSet, visibleTabs]);
140
140
  const outerClassName = cn('hc-segmented-tabs', segmentGroup, 'items-start gap-1', fullWidth ? 'min-w-0 flex-1' : '', className);
141
- const tabListClassName = cn('hc-segmented-tabs-list flex w-full min-w-0 flex-1 flex-wrap items-center gap-y-2');
141
+ const tabListClassName = cn('hc-segmented-tabs-list flex min-w-0 flex-1 flex-wrap items-center gap-y-2');
142
142
  const isRadiogroup = pattern === 'radiogroup';
143
143
  /**
144
144
  * Moves selection with arrow, Home, and End keys and focuses the newly
@@ -191,7 +191,7 @@ export function SegmentedTabs({ tabs, value: valueProp, onChange: onChangeProp,
191
191
  }, [visibleTabs, value, onChange, isRadiogroup, context, getPanelId]);
192
192
  return (_jsxs("div", { ...props, className: outerClassName, children: [_jsx("div", { className: tabListClassName, role: isRadiogroup ? 'radiogroup' : 'tablist', "aria-label": ariaLabel, ...(!isRadiogroup ? { 'aria-orientation': 'horizontal' } : {}), onKeyDown: handleKeyDown, children: visibleTabs.map((tab) => {
193
193
  const selected = value === tab.value;
194
- const tabClassName = `hc-segmented-tabs-tab flex items-center justify-center ${segment(selected)}${fullWidth ? ' flex-1' : ''}`;
194
+ const tabClassName = cn('hc-segmented-tabs-tab flex items-center justify-center whitespace-nowrap', segment(selected), fullWidth ? 'flex-1' : 'shrink-0');
195
195
  return (_jsx("button", { ref: (element) => {
196
196
  if (element)
197
197
  tabRefs.current.set(tab.value, element);
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Shared macOS-style Tailwind class strings for SDK UI components.
3
3
  */
4
- export declare const segmentGroup = "inline-flex p-3 border-b border-separator w-full shadow-[inset_0_0.5px_1px_rgba(0,0,0,0.06)] app-no-drag";
4
+ export declare const segmentGroup = "flex min-w-0 max-w-full w-full p-3 border-b border-separator shadow-[inset_0_0.5px_1px_rgba(0,0,0,0.06)] app-no-drag";
5
5
  /**
6
6
  * Tailwind classes for a segmented control button.
7
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/components/classes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,6GACmF,CAAC;AAK7G;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAI/C;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAI/C"}
1
+ {"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/components/classes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,yHAC+F,CAAC;AAKzH;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAI/C;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAI/C"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Shared macOS-style Tailwind class strings for SDK UI components.
3
3
  */
4
- export const segmentGroup = 'inline-flex p-3 border-b border-separator w-full shadow-[inset_0_0.5px_1px_rgba(0,0,0,0.06)] app-no-drag';
4
+ export const segmentGroup = 'flex min-w-0 max-w-full w-full p-3 border-b border-separator shadow-[inset_0_0.5px_1px_rgba(0,0,0,0.06)] app-no-drag';
5
5
  const segmentFocusVisible = 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent';
6
6
  /**
7
7
  * Tailwind classes for a segmented control button.
package/dist/styles.css CHANGED
@@ -79,6 +79,20 @@
79
79
  scrollbar-gutter: stable;
80
80
  }
81
81
 
82
+ /**
83
+ * SegmentedTabs must size to the host width, not the one-line sum of its tabs.
84
+ * Without this, horizontal scroll parents expand to max-content and flex-wrap
85
+ * never triggers — tabs clip instead of wrapping to another row.
86
+ */
87
+ .hc-segmented-tabs {
88
+ box-sizing: border-box;
89
+ width: 100%;
90
+ max-width: 100%;
91
+ min-width: 0;
92
+ contain: inline-size;
93
+ overflow-x: clip;
94
+ }
95
+
82
96
  /**
83
97
  * Compact circular new-tab control in horizontal scroll mode. Lives in SDK styles
84
98
  * so the rule overrides Tailwind rounded utilities on the same element.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harborclient/sdk",
3
- "version": "1.2.5",
3
+ "version": "1.2.7",
4
4
  "description": "TypeScript SDK for HarborClient development.",
5
5
  "keywords": [
6
6
  "harborclient",
@@ -9,13 +9,14 @@
9
9
  "snippets",
10
10
  "typescript"
11
11
  ],
12
- "homepage": "https://github.com/harborclient/sdk",
12
+ "homepage": "https://harborclient.github.io/harborclient/sdk/",
13
13
  "bugs": {
14
- "url": "https://github.com/harborclient/sdk/issues"
14
+ "url": "https://github.com/harborclient/harborclient/issues"
15
15
  },
16
16
  "repository": {
17
17
  "type": "git",
18
- "url": "git+https://github.com/harborclient/sdk.git"
18
+ "url": "git+https://github.com/harborclient/harborclient.git",
19
+ "directory": "packages/sdk"
19
20
  },
20
21
  "license": "MIT",
21
22
  "author": {
@@ -161,11 +162,16 @@
161
162
  },
162
163
  "files": [
163
164
  "dist",
164
- "tsconfig.base.json"
165
+ "tsconfig.base.json",
166
+ "README.md",
167
+ "CHANGELOG.md"
165
168
  ],
166
169
  "publishConfig": {
167
170
  "access": "public"
168
171
  },
172
+ "engines": {
173
+ "node": ">=22"
174
+ },
169
175
  "peerDependencies": {
170
176
  "@dnd-kit/core": "^6.3.1",
171
177
  "@dnd-kit/sortable": "^10.0.0",
@@ -203,20 +209,17 @@
203
209
  "typescript-eslint": "^8.62.0"
204
210
  },
205
211
  "devDependencies": {
212
+ "@braintree/sanitize-url": "^7.1.2",
206
213
  "@dnd-kit/core": "^6.3.1",
207
214
  "@dnd-kit/sortable": "^10.0.0",
208
215
  "@dnd-kit/utilities": "^3.2.2",
209
- "@szhsin/react-accordion": "^1.4.2",
210
- "overlayscrollbars": "^2.16.0",
211
- "overlayscrollbars-react": "^0.5.6",
212
- "@braintree/sanitize-url": "^7.1.2",
213
- "@jest/globals": "^30.4.1",
214
216
  "@storybook/addon-docs": "^10.4.6",
215
217
  "@storybook/react-vite": "^10.4.6",
218
+ "@szhsin/react-accordion": "^1.4.2",
216
219
  "@tailwindcss/vite": "^4.3.1",
217
220
  "@trivago/prettier-plugin-sort-imports": "^6.0.2",
218
221
  "@types/chai": "^4.3.20",
219
- "@types/node": "^26.0.1",
222
+ "@types/node": "^22.10.0",
220
223
  "@types/react": "^19.1.2",
221
224
  "@types/react-dom": "^19.1.2",
222
225
  "concurrently": "^8.2.2",
@@ -225,9 +228,10 @@
225
228
  "dayjs": "^1.11.21",
226
229
  "debug": "^4.4.3",
227
230
  "eslint": "^10.5.0",
228
- "jest": "^30.4.2",
229
- "jest-environment-jsdom": "^30.4.1",
231
+ "jsdom": "^26.1.0",
230
232
  "mermaid": "^11.15.0",
233
+ "overlayscrollbars": "^2.16.0",
234
+ "overlayscrollbars-react": "^0.5.6",
231
235
  "prettier": "^3.8.4",
232
236
  "prettier-plugin-tailwindcss": "^0.8.0",
233
237
  "react": "^19.2.7",
@@ -236,11 +240,11 @@
236
240
  "remark-gfm": "^4.0.1",
237
241
  "storybook": "^10.4.6",
238
242
  "tailwindcss": "^4.3.1",
239
- "ts-jest": "^29.4.11",
240
243
  "typescript": "^5.8.3",
241
244
  "vite": "^8.1.0",
242
245
  "vitepress": "^1.6.4",
243
- "vitepress-plugin-mermaid": "^2.0.17"
246
+ "vitepress-plugin-mermaid": "^2.0.17",
247
+ "vitest": "^4.1.9"
244
248
  },
245
249
  "scripts": {
246
250
  "build": "tsc -p tsconfig.build.json && node scripts/copy-runtime.mjs && node scripts/assert-dist-publishable.mjs",
@@ -249,14 +253,14 @@
249
253
  "format:check": "prettier --check .",
250
254
  "lint": "eslint --cache .",
251
255
  "typecheck": "tsc --noEmit",
252
- "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
253
- "test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch",
256
+ "test": "vitest run",
257
+ "test:watch": "vitest",
254
258
  "clean": "rm -rf dist",
255
- "dev": "node scripts/copy-runtime.mjs && tsc -p tsconfig.build.json --watch --preserveWatchOutput",
256
- "release": "gh workflow run Release --ref main -f release_type=patch",
257
- "release:patch": "gh workflow run Release --ref main -f release_type=patch",
258
- "release:minor": "gh workflow run Release --ref main -f release_type=minor",
259
- "release:major": "gh workflow run Release --ref main -f release_type=major",
259
+ "dev": "node scripts/copy-runtime.mjs && concurrently --kill-others --prefixColors=auto -n runtime,tsc \"node scripts/watch-runtime.mjs\" \"tsc -p tsconfig.build.json --watch --preserveWatchOutput\"",
260
+ "release": "gh workflow run sdk-release.yml --ref main -f branch=main -f bump=patch",
261
+ "release:patch": "gh workflow run sdk-release.yml --ref main -f branch=main -f bump=patch",
262
+ "release:minor": "gh workflow run sdk-release.yml --ref main -f branch=main -f bump=minor",
263
+ "release:major": "gh workflow run sdk-release.yml --ref main -f branch=main -f bump=major",
260
264
  "storybook": "storybook dev -p 6006",
261
265
  "build-storybook": "storybook build -o docs/.vitepress/static/storybook",
262
266
  "docs:build": "pnpm docs:build:nav && pnpm build-storybook && vitepress build docs",