@snowcone-app/ui 0.3.0 → 0.4.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#765](https://github.com/snowcone-app/snowcone-monorepo/pull/765) [`1d73014`](https://github.com/snowcone-app/snowcone-monorepo/commit/1d73014fef7c9eadb499c14677f85620df5f80c4) Thanks [@kevinsproles](https://github.com/kevinsproles)! - Surface realtime render errors as structured, machine-readable state instead of swallowing them.
8
+ - sdk: new `RealtimeRenderError` (`{code, message}`) mirrors the server's `{type:'error', code}` frame. Exposed as `renderError` on `RealtimeMockupState` / the `useRealtimeMockup` hook return, passed as a second `detail` argument to `onError` callbacks (hook, service callbacks, and `RenderSession.onError`), and cleared automatically once a later render succeeds. `mockupResults` intentionally keeps the last good renders on error so hosts can show "stale + error badge" instead of a blank panel.
9
+ - ui: `RealtimeProvider` exposes `renderError` on its context, and `HeroProductImage` renders a visible error badge with a stable `data-render-error="<code>"` attribute over the (kept) stale mockup when the realtime renderer rejects a render (e.g. `asset_not_allowed`).
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [[`1d73014`](https://github.com/snowcone-app/snowcone-monorepo/commit/1d73014fef7c9eadb499c14677f85620df5f80c4)]:
14
+ - @snowcone-app/sdk@0.17.0
15
+
16
+ ## 0.3.1
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [[`89893bc`](https://github.com/snowcone-app/snowcone-monorepo/commit/89893bc6e492d152dbd42d4887b5cd5c4cd51eb8)]:
21
+ - @snowcone-app/sdk@0.16.1
22
+
3
23
  ## 0.3.0
4
24
 
5
25
  ### Minor Changes
package/dist/index.cjs CHANGED
@@ -5979,8 +5979,8 @@ function RealtimeProvider({
5979
5979
  },
5980
5980
  onAllMockupsRendered: (results) => {
5981
5981
  },
5982
- onError: (error) => {
5983
- console.error("[RealtimeProvider] Error:", error);
5982
+ onError: (error, detail) => {
5983
+ console.error(`[RealtimeProvider] Render error [${detail.code}]:`, error);
5984
5984
  }
5985
5985
  });
5986
5986
  const subscribeRTCTiming = (0, import_react24.useCallback)((_callback) => {
@@ -5990,6 +5990,7 @@ function RealtimeProvider({
5990
5990
  const {
5991
5991
  isConnected,
5992
5992
  isConfigured,
5993
+ renderError,
5993
5994
  mockupResults: rawMockupResults,
5994
5995
  sendCanvasBlob: sendCanvasBlobRaw,
5995
5996
  sendCanvasState: sendCanvasStateRaw,
@@ -6509,6 +6510,7 @@ function RealtimeProvider({
6509
6510
  isEnabled,
6510
6511
  isConnected,
6511
6512
  isConfigured,
6513
+ renderError,
6512
6514
  // Read from ref - this is a snapshot at render time, NOT reactive
6513
6515
  // For reactive updates, use getMockupResultsImmediate() or subscribe functions
6514
6516
  get mockupResults() {
@@ -6552,6 +6554,7 @@ function RealtimeProvider({
6552
6554
  isEnabled,
6553
6555
  isConnected,
6554
6556
  isConfigured,
6557
+ renderError,
6555
6558
  // mockupResults removed from deps - it's a getter that reads from ref
6556
6559
  canvasExportSize,
6557
6560
  mockupWidth,
@@ -10524,6 +10527,15 @@ var HeroProductImage = (0, import_react45.memo)(function HeroProductImage2({
10524
10527
  }
10525
10528
  }
10526
10529
  ),
10530
+ realtimeContext?.renderError && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
10531
+ "div",
10532
+ {
10533
+ role: "alert",
10534
+ "data-render-error": realtimeContext.renderError.code,
10535
+ className: "absolute inset-x-0 bottom-0 z-20 bg-red-600/90 text-white text-xs font-medium px-3 py-2 pointer-events-none",
10536
+ children: `Render blocked: ${realtimeContext.renderError.code} \u2014 ${realtimeContext.renderError.message}`
10537
+ }
10538
+ ),
10527
10539
  prevUrl && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
10528
10540
  "img",
10529
10541
  {