@seed-ship/mcp-ui-solid 1.0.43 → 1.2.0

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.
Files changed (57) hide show
  1. package/CHANGELOG.md +356 -142
  2. package/README.md +362 -21
  3. package/dist/components/FooterRenderer.cjs +75 -0
  4. package/dist/components/FooterRenderer.cjs.map +1 -0
  5. package/dist/components/FooterRenderer.js +75 -0
  6. package/dist/components/FooterRenderer.js.map +1 -0
  7. package/dist/components/GridRenderer.cjs +82 -0
  8. package/dist/components/GridRenderer.cjs.map +1 -0
  9. package/dist/components/GridRenderer.d.ts +49 -0
  10. package/dist/components/GridRenderer.d.ts.map +1 -0
  11. package/dist/components/GridRenderer.js +82 -0
  12. package/dist/components/GridRenderer.js.map +1 -0
  13. package/dist/components/UIResourceRenderer.cjs +88 -36
  14. package/dist/components/UIResourceRenderer.cjs.map +1 -1
  15. package/dist/components/UIResourceRenderer.d.ts.map +1 -1
  16. package/dist/components/UIResourceRenderer.js +90 -38
  17. package/dist/components/UIResourceRenderer.js.map +1 -1
  18. package/dist/context/MCPActionContext.cjs +149 -0
  19. package/dist/context/MCPActionContext.cjs.map +1 -0
  20. package/dist/context/MCPActionContext.d.ts +158 -0
  21. package/dist/context/MCPActionContext.d.ts.map +1 -0
  22. package/dist/context/MCPActionContext.js +149 -0
  23. package/dist/context/MCPActionContext.js.map +1 -0
  24. package/dist/context/index.d.ts +8 -0
  25. package/dist/context/index.d.ts.map +1 -0
  26. package/dist/hooks/index.d.ts +2 -0
  27. package/dist/hooks/index.d.ts.map +1 -1
  28. package/dist/hooks/useAction.cjs +49 -0
  29. package/dist/hooks/useAction.cjs.map +1 -0
  30. package/dist/hooks/useAction.d.ts +79 -0
  31. package/dist/hooks/useAction.d.ts.map +1 -0
  32. package/dist/hooks/useAction.js +49 -0
  33. package/dist/hooks/useAction.js.map +1 -0
  34. package/dist/hooks.cjs +3 -0
  35. package/dist/hooks.cjs.map +1 -1
  36. package/dist/hooks.d.ts +2 -0
  37. package/dist/hooks.js +4 -1
  38. package/dist/hooks.js.map +1 -1
  39. package/dist/index.cjs +8 -0
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.d.ts +5 -3
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +8 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/types/index.d.ts +41 -2
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types.d.ts +41 -2
  48. package/package.json +1 -1
  49. package/src/components/GridRenderer.tsx +140 -0
  50. package/src/components/UIResourceRenderer.tsx +65 -25
  51. package/src/context/MCPActionContext.tsx +350 -0
  52. package/src/context/index.ts +19 -0
  53. package/src/hooks/index.ts +4 -0
  54. package/src/hooks/useAction.ts +138 -0
  55. package/src/index.ts +14 -1
  56. package/src/types/index.ts +48 -1
  57. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,10 +1,352 @@
1
- # @mcp-ui/solid Changelog
1
+ # @seed-ship/mcp-ui-solid Changelog
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.2.0] - 2025-11-25
9
+
10
+ ### Added - Phase 5.0 Quick Wins
11
+
12
+ #### GridRenderer (NEW)
13
+ - **Nested CSS Grid layouts** for complex template builder layouts
14
+ - Supports `columns`, `gap`, `minRowHeight`, and `areas` configuration
15
+ - Recursive rendering of child components via `UIResourceRenderer`
16
+ - Enables sidebar + main + footer dashboard layouts
17
+
18
+ #### MCPActionContext + useAction() (NEW)
19
+ - **Context Provider pattern** replaces CustomEvent for action dispatch
20
+ - `MCPActionProvider` wrapper for orchestration (Mastra integration ready)
21
+ - `useAction()` hook with execute, isExecuting state, and error handling
22
+ - `useMCPActionSafe()` for components outside provider (fallback to CustomEvent)
23
+ - `useToolAction()` for binding to specific tool names
24
+ - Typed `ActionRequest` and `ActionResult` interfaces
25
+ - Support for audit callbacks (`onAction`) and webhook events (`onWebhook`)
26
+
27
+ #### FooterRenderer Auto-Injection (NEW)
28
+ - Automatically inject footer when layout has metadata (executionTime, sourceCount, llmModel)
29
+ - Opt-out via `layout.metadata.hideFooter: true`
30
+ - Respects explicit footer components if already present
31
+ - Shows "Powered by Deposium" with execution metrics
32
+
33
+ ### Changed
34
+ - **ActionRenderer refactored** to use `useAction()` hook internally
35
+ - Added loading spinner state during tool-call execution
36
+ - Button auto-disables while action is executing
37
+
38
+ ### Types
39
+ - Added `GridComponentParams` interface for grid configuration
40
+ - Added `footer`, `carousel`, `artifact` to `ComponentType` union
41
+ - Extended `UILayout.metadata` with `executionTime`, `sourceCount`, `hideFooter`
42
+ - New exports: `MCPActionProvider`, `MCPActionContext`, `useMCPAction`, `useAction`, `useToolAction`
43
+
44
+ ### Technical
45
+ - New directories: `src/context/`, `src/hooks/useAction.ts`
46
+ - Full TypeScript support with strict types
47
+ - SSR-compatible with `isServer` guards
48
+
49
+ ## [1.1.0] - 2025-11-25
50
+
51
+ ### Documentation
52
+ - **Comprehensive README Rewrite**: Complete documentation overhaul
53
+ - Added architecture diagram and SSR guide
54
+ - Documented all 12 component renderers with examples
55
+ - Added conditional export setup for SolidStart
56
+ - Included troubleshooting section for common SSR issues
57
+ - **CHANGELOG Catch-up**: Added 33 missing version entries (v1.0.11 to v1.0.43)
58
+ - **Phase 5 Roadmap**: Documented planned advanced components
59
+
60
+ ### Notes
61
+ - This minor version bump marks a documentation milestone
62
+ - No code changes - all functionality identical to v1.0.43
63
+
64
+ ## [1.0.43] - 2025-11-25
65
+
66
+ ### Fixed
67
+ - **Object-to-Link Conversion**: Handle object values in `renderCellValue()` for table cells
68
+ - Backend/LLM may send `{url, name}` objects instead of markdown strings
69
+ - Previous: `String(value)` produced `[object Object]` in cells and broken URLs
70
+ - Now: Auto-converts objects with `url` property to clickable HTML links
71
+ - Supports `name`, `label`, or `title` as link text (falls back to URL)
72
+ - Objects without `url` but with `name/label/title` render as plain text
73
+ - Other objects are serialized with `JSON.stringify()`
74
+
75
+ ### Technical Details
76
+ ```typescript
77
+ // Before: "[object Object]" displayed, broken links
78
+ // After: Proper clickable links
79
+ if (value.url) {
80
+ const label = value.name || value.label || value.title || value.url
81
+ return `<a href="${sanitizedUrl}">${sanitizedLabel}</a>`
82
+ }
83
+ ```
84
+
85
+ ## [1.0.42] - 2025-11-25
86
+
87
+ ### Added
88
+ - **Source Exports via "solid" Condition**: Add direct source exports for SolidStart SSR compatibility
89
+ - New `"solid"` condition in package.json exports points to TypeScript source files
90
+ - Allows Vite/SolidStart to compile components in the same context as the app
91
+ - Fixes SSR hydration mismatches when compiled separately
92
+ - **Requires**: Consuming app must add `conditions: ['solid']` in Vite config
93
+
94
+ ### Technical Details
95
+ ```json
96
+ {
97
+ "exports": {
98
+ ".": {
99
+ "solid": "./src/index.ts", // ← Source for SolidStart
100
+ "import": "./dist/index.js", // ← Compiled for other bundlers
101
+ }
102
+ }
103
+ }
104
+ ```
105
+
106
+ ### Migration Notes
107
+ For SolidStart users on Railway/SSR platforms, add to `app.config.ts`:
108
+ ```typescript
109
+ resolve: {
110
+ conditions: ['solid', 'development', 'browser']
111
+ }
112
+ ```
113
+
114
+ ## [1.0.41] - 2025-11-25
115
+
116
+ ### Changed
117
+ - Switch from SSR to DOM mode for client-side rendering experiments
118
+ - Reverted in v1.0.42
119
+
120
+ ## [1.0.40] - 2025-11-25
121
+
122
+ ### Improved
123
+ - **Smart Cell Rendering**: Enhanced `renderCellValue()` with better markdown/link detection
124
+ - Extract actual URL from markdown links before validation
125
+ - Support image URLs in markdown format
126
+ - Improved detection of URLs without protocol prefix
127
+
128
+ ## [1.0.39] - 2025-11-24
129
+
130
+ ### Fixed
131
+ - Rebuild with fresh `dist/` containing createEffect fix from v1.0.38
132
+ - Clean rebuild to ensure all SSR fixes are included in the package
133
+
134
+ ## [1.0.38] - 2025-11-24
135
+
136
+ ### Fixed
137
+ - **SSR Compatibility**: Replace `onMount` with `createEffect` for better SSR behavior
138
+ - `createEffect` runs on both server and client
139
+ - More predictable execution timing
140
+ - Fixes certain edge cases in streaming UI
141
+
142
+ ## [1.0.37] - 2025-11-24
143
+
144
+ ### Fixed
145
+ - **SSR Mode Restoration**: Restore `generate: 'ssr'` mode for Railway Node 22 compatibility
146
+ - Previous version accidentally reverted to DOM mode
147
+ - Re-enables proper SSR compilation for server environments
148
+
149
+ ## [1.0.36] - 2025-11-24
150
+
151
+ ### Fixed
152
+ - **SSR Guard Improvement**: Use `typeof window` check instead of `isServer` import
153
+ - More reliable detection in mixed environments
154
+ - Fixes edge cases where `isServer` wasn't properly tree-shaken
155
+
156
+ ## [1.0.35] - 2025-11-24
157
+
158
+ ### Fixed
159
+ - **SSR Guard in useStreamingUI**: Add SSR guard to `fetch()` calls in useStreamingUI hook
160
+ - Prevents SSR crashes when hook is instantiated during server render
161
+ - `fetch` is guarded to only execute client-side
162
+
163
+ ## [1.0.34] - 2025-11-24
164
+
165
+ ### Fixed
166
+ - **Client-Only API Guards**: Use `onMount` pattern for all client-only APIs in GenerativeUIErrorBoundary
167
+ - Consistent pattern across all components
168
+ - Prevents accidental server-side execution
169
+
170
+ ## [1.0.33] - 2025-11-24
171
+
172
+ ### Fixed
173
+ - **Railway SSR Fix**: Wrap client APIs in GenerativeUIErrorBoundary for Railway SSR
174
+ - Additional guards for browser-only code
175
+ - Improved compatibility with Railway's Node.js environment
176
+
177
+ ## [1.0.32] - 2025-11-24
178
+
179
+ ### Fixed
180
+ - **CustomEvent SSR Fix**: Wrap CustomEvent in `onMount` for Railway SSR compatibility
181
+ - `CustomEvent` constructor doesn't exist in Node.js
182
+ - Now only created client-side during mount
183
+
184
+ ## [1.0.31] - 2025-11-24
185
+
186
+ ### Fixed
187
+ - Fix build configuration and TypeScript declarations
188
+ - Update pnpm-lock.yaml for v1.0.31 dependencies
189
+ - Ensure all type definitions are properly exported
190
+
191
+ ## [1.0.30] - 2025-11-24
192
+
193
+ ### Improved
194
+ - **Table Rendering**: Improve table rendering with markdown support
195
+ - Tables now parse markdown links in cell values
196
+ - Better export path configuration
197
+ - Enhanced styling for table cells
198
+
199
+ ## [1.0.29] - 2025-11-24
200
+
201
+ ### Added
202
+ - **SSR-Safe Type Imports**: Add `/types-only` sub-export for SSR-safe type imports
203
+ - Allows importing types without triggering component code
204
+ - Useful for server-side type checking
205
+
206
+ ```typescript
207
+ // SSR-safe type import
208
+ import type { UIResource } from '@seed-ship/mcp-ui-solid/types-only'
209
+ ```
210
+
211
+ ## [1.0.28] - 2025-11-24
212
+
213
+ ### Fixed
214
+ - **Validation Entry Point**: Compile validation.ts as proper entry point
215
+ - Fixes import errors when using `/validation` export
216
+
217
+ ## [1.0.27] - 2025-11-24
218
+
219
+ ### Fixed
220
+ - **Validation Imports**: validation.ts imports from dist instead of src
221
+ - Prevents source-map resolution issues
222
+
223
+ ## [1.0.26] - 2025-11-24
224
+
225
+ ### Changed
226
+ - Version bump (synced with mcp-ui-spec v1.0.15, mcp-ui-cli v1.0.14)
227
+
228
+ ## [1.0.25] - 2025-11-23
229
+
230
+ ### Added
231
+ - **Validation Sub-Export**: Add `/validation` sub-export for SSR-safe imports
232
+ - Validation utilities available without loading UI components
233
+ - Useful for server-side schema validation
234
+
235
+ ```typescript
236
+ import { validateUIResource } from '@seed-ship/mcp-ui-solid/validation'
237
+ ```
238
+
239
+ ### Fixed
240
+ - Add SSR compatibility checks for client-only APIs throughout codebase
241
+
242
+ ## [1.0.24] - 2025-11-23
243
+
244
+ ### Improved
245
+ - **Table Styling**: Improve table rendering with better styling
246
+ - Enhanced header styling
247
+ - Better cell padding and borders
248
+ - Improved responsive behavior
249
+
250
+ ## [1.0.23] - 2025-11-23
251
+
252
+ ### Changed
253
+ - Version bump for npm publication with updated token
254
+ - Synchronized with mcp-ui-spec v1.0.12, mcp-ui-cli v1.0.11
255
+
256
+ ## [1.0.22] - 2025-11-23
257
+
258
+ ### Changed
259
+ - Version bump for npm publication
260
+ - Synchronized with mcp-ui-spec v1.0.11, mcp-ui-cli v1.0.10
261
+
262
+ ## [1.0.21] - 2025-11-23
263
+
264
+ ### Added
265
+ - **New Renderers**: Four new component renderers for enhanced UI capabilities
266
+ - `ActionRenderer`: Interactive buttons with callback support
267
+ - `ArtifactRenderer`: File/download artifact display
268
+ - `CarouselRenderer`: Image/content carousel with navigation
269
+ - `FooterRenderer`: Metadata and footer information display
270
+ - **Validation Enhancements**: Extended validation for new component types
271
+
272
+ ### Technical Details
273
+ ActionRenderer example:
274
+ ```typescript
275
+ <ActionRenderer
276
+ action={{
277
+ type: 'action',
278
+ label: 'Download Report',
279
+ actionType: 'download',
280
+ payload: { fileId: '123' }
281
+ }}
282
+ onAction={(action) => handleAction(action)}
283
+ />
284
+ ```
285
+
286
+ ## [1.0.18] - 2025-11-22
287
+
288
+ ### Changed
289
+ - Version bump for npm publication
290
+ - Synchronized with mcp-ui-spec v1.0.8, mcp-ui-cli v1.0.8
291
+
292
+ ## [1.0.17] - 2025-11-22
293
+
294
+ ### Added
295
+ - **Component Type Validation**: Add validation for iframe, image, link component types
296
+ - Schema validation for `iframe` with src and sandbox attributes
297
+ - Schema validation for `image` with src, alt, and dimensions
298
+ - Schema validation for `link` with href and text
299
+
300
+ ## [1.0.16] - 2025-11-22
301
+
302
+ ### Fixed
303
+ - **SSR Compatibility**: Fix SSR compatibility by using CSS strings instead of style objects
304
+ - Vite's solid plugin generates different code for style objects vs strings
305
+ - CSS strings avoid the `setStyleProperty` issue in SSR
306
+
307
+ ## [1.0.15] - 2025-11-22
308
+
309
+ ### Changed
310
+ - Version bump for npm publication
311
+
312
+ ## [1.0.13] - 2025-11-17
313
+
314
+ ### Added
315
+ - **New Renderers**: Add iframe, image, and link renderers to mcp-ui-solid
316
+ - `IframeRenderer`: Secure iframe embedding with sandbox support
317
+ - `ImageRenderer`: Responsive image display with lazy loading
318
+ - `LinkRenderer`: External link rendering with proper security attributes
319
+ - **Markdown Support**: Add markdown rendering to TextRenderer
320
+ - Uses `marked` library for parsing
321
+ - Sanitizes output with DOMPurify
322
+
323
+ ### Technical Details
324
+ ```typescript
325
+ // TextRenderer now supports markdown
326
+ <TextRenderer
327
+ component={{
328
+ type: 'text',
329
+ content: '# Hello\n\nThis is **markdown**!'
330
+ }}
331
+ />
332
+ ```
333
+
334
+ ## [1.0.12] - 2025-11-17
335
+
336
+ ### Added
337
+ - **Markdown in TextRenderer**: Basic markdown support using `marked` library
338
+ - Headings, bold, italic, links, lists
339
+ - Code blocks with syntax highlighting
340
+ - Sanitized HTML output
341
+
342
+ ### Fixed
343
+ - Composite layout detection in UIResourceRenderer
344
+ - Optional chaining for componentId in error display
345
+ - Defensive position check in validateGridPosition
346
+ - Defensive position checks in UIResourceRenderer
347
+
348
+ ---
349
+
8
350
  ## [1.0.10] - 2025-11-17
9
351
 
10
352
  ### Fixed
@@ -16,8 +358,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
358
 
17
359
  ### Technical Details
18
360
  **The Missing Piece in v1.0.9:**
19
- - v1.0.9 correctly changed `generate: 'ssr'` in vite.config.ts
20
- - BUT package.json exports didn't include the `"solid"` condition
361
+ - v1.0.9 correctly changed `generate: 'ssr'` in vite.config.ts
362
+ - BUT package.json exports didn't include the `"solid"` condition
21
363
  - This caused Vite to load the same build for both SSR and browser
22
364
  - Result: Module resolution conflicts with `solid-js/web` during SSR
23
365
 
@@ -25,35 +367,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
25
367
  ```json
26
368
  {
27
369
  "./components": {
28
- "solid": "./dist/components/index.js", // ← NEW: SolidJS-aware loaders use this
29
- "import": "./dist/components/index.js", // Fallback for standard ESM
30
- "require": "./dist/components/index.cjs" // CommonJS
370
+ "solid": "./dist/components/index.js",
371
+ "import": "./dist/components/index.js",
372
+ "require": "./dist/components/index.cjs"
31
373
  }
32
374
  }
33
375
  ```
34
376
 
35
- With the `"solid"` condition:
36
- - Vite recognizes this as a SolidJS-specific module
37
- - Applies correct resolution strategy for SSR context
38
- - No more "Client-only API called on the server side" errors
39
-
40
377
  ### Why This Matters
41
378
  - **v1.0.8**: Added `isServer` guards (fixed symptoms)
42
379
  - **v1.0.9**: Changed to SSR compilation mode (fixed compilation)
43
- - **v1.0.10**: Added conditional exports (fixed module resolution) ← **Complete fix!**
44
-
45
- ### Affected Exports
46
- All package entry points now have the `"solid"` condition:
47
- - `"."` - Main export
48
- - `"./components"` - Component exports
49
- - `"./hooks"` - Hook exports
50
- - `"./types"` - Type exports
51
-
52
- ### Migration Notes
53
- - No breaking changes for consumers
54
- - Drop-in replacement for v1.0.9
55
- - Fixes persistent SSR errors on Railway, Vercel, Netlify, etc.
56
- - **This is the final piece** for complete SSR compatibility
380
+ - **v1.0.10**: Added conditional exports (fixed module resolution)
57
381
 
58
382
  ## [1.0.9] - 2025-11-17
59
383
 
@@ -62,125 +386,35 @@ All package entry points now have the `"solid"` condition:
62
386
  - Updated `generate: 'dom'` → `generate: 'ssr'` in vite.config.ts
63
387
  - Updated `hydratable: false` → `hydratable: true` in vite.config.ts
64
388
  - This prevents module-level `template()` calls that crash in SSR environments
65
- - Fixes the root cause of ALL previous SSR issues (setStyleProperty, use directive, template exports)
66
- - Package now works seamlessly in both Node.js SSR and browser environments without configuration
67
389
 
68
390
  ### Technical Details
69
- - **SSR mode** compiles JSX to server-safe string rendering instead of DOM template cloning
391
+ - **SSR mode** compiles JSX to server-safe string rendering
70
392
  - **Hydratable mode** enables client-side hydration after SSR
71
393
  - No module-level browser API calls that crash in Node.js
72
- - Components render to HTML on server, then hydrate in browser
73
- - Fully compatible with SolidStart, Railway SSR, Vercel, Netlify, and all SSR platforms
74
- - **No `ssr.external` configuration needed** in consuming applications
75
-
76
- ### Why This Is The Definitive Fix
77
- Previous versions (1.0.5-1.0.8) fixed symptoms:
78
- - v1.0.5: Fixed `setStyleProperty` by using CSS strings
79
- - v1.0.7: Fixed `use()` directive by replacing ref callbacks
80
- - v1.0.8: Fixed browser APIs by adding `isServer` guards
81
-
82
- **v1.0.9 fixes the root cause:** The `generate: 'dom'` configuration that created client-only template calls.
83
-
84
- With `generate: 'ssr'` + `hydratable: true`, the compiler generates universal code that:
85
- - ✅ Renders on the server (Node.js)
86
- - ✅ Hydrates in the browser
87
- - ✅ Falls back to client-only rendering if needed
88
- - ✅ No module-level side effects
89
-
90
- ### Performance Impact
91
- - Minimal bundle size increase (~2-5KB)
92
- - Negligible runtime performance difference (<5%)
93
- - Server-side rendering is now possible (major win!)
94
-
95
- ### Migration Notes
96
- - No breaking changes for consumers
97
- - Drop-in replacement for v1.0.8
98
- - **Recommended:** Remove `@seed-ship/mcp-ui-solid` from `ssr.external` in app.config.ts (no longer needed)
99
- - Components will now SSR by default (better SEO, faster initial load)
100
-
101
- ### Best Practices for Component Libraries
102
- This is the **recommended configuration** for SolidJS component libraries per official documentation:
103
- ```typescript
104
- solidPlugin({
105
- solid: {
106
- generate: 'ssr', // Universal code generation
107
- hydratable: true, // Enable hydration
108
- },
109
- })
110
- ```
111
394
 
112
395
  ## [1.0.8] - 2025-11-16
113
396
 
114
397
  ### Fixed
115
398
  - **CRITICAL SSR FIX**: Added `isServer` guards to all browser APIs in `GenerativeUIErrorBoundary.tsx`
116
- - Previous versions crashed on Railway SSR with: `Error: Client-only API called on the server side`
117
- - Browser APIs used without guards: `performance.now()`, `navigator.userAgent`, `window.innerWidth/height`
118
- - These APIs don't exist in Node.js SSR environment, causing immediate crashes
119
- - Solution: Wrapped all browser API calls with `isServer` conditionals
120
- - Affected locations:
121
- - Line 114: `createSignal(isServer ? 0 : performance.now())`
122
- - Line 118: `const renderEndTime = isServer ? 0 : performance.now()`
123
- - Line 130: `userAgent: isServer ? 'server' : navigator.userAgent`
124
- - Lines 131-133: `viewport: isServer ? { width: 0, height: 0 } : { width: window.innerWidth, height: window.innerHeight }`
125
- - Line 203: `const renderStart = isServer ? 0 : performance.now()` (withPerformanceMonitoring)
126
- - Line 212: `if (!isServer && typeof window !== 'undefined')` (requestAnimationFrame guard)
127
- - Line 242: `const mountTime = isServer ? 0 : performance.now()` (useComponentTelemetry)
128
- - Line 252: `const lifetime = isServer ? 0 : performance.now() - mountTime`
129
-
130
- ### Technical Details
131
- - `isServer` is a compile-time constant from `solid-js/web`
132
- - On server: `isServer = true`, browser APIs return safe defaults (0, 'server', empty viewport)
133
- - On client: `isServer = false`, real browser APIs are used
134
- - No runtime overhead: dead code elimination removes unused branches
135
- - Fully compatible with SolidStart SSR on Railway and other Node.js platforms
136
-
137
- ### Migration Notes
138
- - No breaking changes for consumers
139
- - Drop-in replacement for v1.0.7
140
- - Fixes production SSR crashes on Railway and similar Node.js SSR platforms
141
- - Telemetry data will show default values on server-side renders (expected behavior)
399
+ - Browser APIs: `performance.now()`, `navigator.userAgent`, `window.innerWidth/height`
400
+ - These APIs don't exist in Node.js SSR environment
142
401
 
143
402
  ## [1.0.7] - 2025-11-16
144
403
 
145
404
  ### Fixed
146
405
  - **CRITICAL SSR FIX**: Replaced `ref` callback with `onMount` to eliminate `use()` directive
147
- - Previous versions (1.0.5, 1.0.6) used `ref={() => handleComponentRender(component.id)}`
148
- - vite-plugin-solid@2.11.8 transforms ref callbacks into `use()` directive calls
149
- - `use` is NOT exported from `solid-js/web` in Node/SSR environment (only in browser)
150
- - This caused SSR crashes on Railway: `SyntaxError: The requested module 'solid-js/web' does not provide an export named 'use'`
406
+ - `use` is NOT exported from `solid-js/web` in Node/SSR environment
151
407
  - Solution: Replaced `ref` callback with `onMount()` which is SSR-safe
152
- - Affected file: `StreamingUIRenderer.tsx` (line 207)
153
-
154
- ### Technical Details
155
- - `onMount` only executes client-side (after hydration), perfect for animations
156
- - No `use()` directive needed, no SSR/browser export mismatch
157
- - Maintains same functionality: animation triggers when component mounts
158
- - Fully compatible with solid-js@1.9.10 in both browser and Node environments
159
-
160
- ### Migration Notes
161
- - No breaking changes for consumers
162
- - Drop-in replacement for v1.0.6
163
- - Fixes production SSR crashes on Railway and similar Node.js SSR platforms
164
408
 
165
409
  ## [1.0.6] - 2025-11-16
166
410
 
167
411
  ### Fixed
168
412
  - Add `solid-js` to devDependencies for tests to pass in CI/CD
169
- - CI was failing because `solid-js` (peerDependency) wasn't available for tests
170
413
 
171
- ### Technical Details
172
- - `solid-js` remains a peerDependency for consuming apps
173
- - Added to devDependencies for package development and testing
174
- - No functional changes to the package itself
175
-
176
- ## [1.0.5] - 2025-11-16 (UNPUBLISHED - CI Failed)
414
+ ## [1.0.5] - 2025-11-16 (UNPUBLISHED)
177
415
 
178
416
  ### Fixed
179
- - **CRITICAL SSR FIX**: Replaced dynamic style objects with CSS strings to eliminate `setStyleProperty` usage
180
- - `setStyleProperty` was being generated by vite-plugin-solid but doesn't exist in solid-js/web API
181
- - This caused SSR crashes on Railway with error: `SyntaxError: The requested module 'solid-js/web' does not provide an export named 'setStyleProperty'`
182
- - Affected files: `UIResourceRenderer.tsx`, `StreamingUIRenderer.tsx`
183
- - Solution: Convert style objects to CSS strings (e.g., `style="width: 100%"` instead of `style={{ width: '100%' }}`)
417
+ - **CRITICAL SSR FIX**: Replaced dynamic style objects with CSS strings
184
418
 
185
419
  ### Changed
186
420
  - Updated `vite` from ^5.0.10 to ^6.3.6
@@ -188,29 +422,16 @@ solidPlugin({
188
422
  - Updated `vitest` from ^1.1.0 to ^4.0.8
189
423
  - Updated `solid-js` peerDependency from ^1.8.0 to ^1.9.0
190
424
 
191
- ### Technical Details
192
- The issue occurred because:
193
- 1. Old `vite-plugin-solid@2.8.2` compiled JSX style objects into calls to `setStyleProperty()`
194
- 2. `setStyleProperty` is not exported by `solid-js/web` in any version
195
- 3. The error only appeared in production SSR (Railway) because dev mode doesn't do full SSR
196
- 4. Local builds may have worked due to cached node_modules or different build artifacts
197
-
198
- ### Migration Notes
199
- - No breaking changes for consumers
200
- - Drop-in replacement for v1.0.4
201
- - Fully compatible with solid-js@1.9.x
202
-
203
425
  ## [1.0.0] - 2025-01-14
204
426
 
205
427
  ### Added
206
- - Initial release of `@mcp-ui/solid` package
428
+ - Initial release of `@seed-ship/mcp-ui-solid` package
207
429
  - `UIResourceRenderer` component for static dashboard rendering
208
430
  - `StreamingUIRenderer` component for progressive streaming rendering
209
431
  - `GenerativeUIErrorBoundary` for error isolation and retry logic
210
432
  - `useStreamingUI` hook for SSE connection management
211
433
  - Component validation and layout validation services
212
434
  - Component registry system
213
- - Internal logger utility (self-contained)
214
435
  - Full TypeScript support with comprehensive types
215
436
  - 12-column responsive grid layout system
216
437
  - Support for chart, table, metric, and text components
@@ -222,10 +443,3 @@ The issue occurred because:
222
443
  - **Type Safety**: Full TypeScript definitions
223
444
  - **Performance**: TTFB <500ms, optimized rendering
224
445
  - **Responsive**: 12-column grid with flexible positioning
225
- - **Clean API**: Simple, intuitive component interfaces
226
- - **Zero Config**: Works out of the box with sensible defaults
227
-
228
- ### Documentation
229
- - README with installation and usage examples
230
- - JSDoc comments for all public APIs
231
- - TypeScript definitions for IntelliSense support