sonance-brand-mcp 1.3.29 → 1.3.30

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.
@@ -260,6 +260,35 @@ export function SonanceDevTools() {
260
260
  }
261
261
  }, [mounted, DEVTOOLS_POSITION_KEY]);
262
262
 
263
+ // Restore apply-first session from localStorage on mount
264
+ // This allows the Accept/Revert UI to survive page refreshes
265
+ useEffect(() => {
266
+ if (!mounted) return;
267
+ try {
268
+ const savedSession = localStorage.getItem("sonance-apply-first-session");
269
+ if (savedSession) {
270
+ const session = JSON.parse(savedSession);
271
+ // Check if session is recent (< 1 hour old)
272
+ const MAX_SESSION_AGE = 60 * 60 * 1000; // 1 hour
273
+ if (session.timestamp && Date.now() - session.timestamp < MAX_SESSION_AGE) {
274
+ console.log("[Apply-First] Restoring session from localStorage:", session.sessionId);
275
+ setApplyFirstSession(session);
276
+ setApplyFirstStatus("reviewing");
277
+ // Auto-open the DevTools panel so user sees the Accept/Revert UI
278
+ setIsOpen(true);
279
+ setActiveTab("components");
280
+ } else {
281
+ // Session expired, clear it
282
+ console.log("[Apply-First] Session expired, clearing localStorage");
283
+ localStorage.removeItem("sonance-apply-first-session");
284
+ }
285
+ }
286
+ } catch (e) {
287
+ console.warn("[Apply-First] Failed to restore session:", e);
288
+ localStorage.removeItem("sonance-apply-first-session");
289
+ }
290
+ }, [mounted]);
291
+
263
292
  // Drag handlers for movable panel
264
293
  const headerRef = useRef<HTMLDivElement>(null);
265
294
 
@@ -1097,6 +1126,17 @@ export function SonanceDevTools() {
1097
1126
  setApplyFirstStatus("waiting-hmr");
1098
1127
  setVisionModeActive(false);
1099
1128
 
1129
+ // Persist session to localStorage so it survives page refreshes
1130
+ try {
1131
+ localStorage.setItem("sonance-apply-first-session", JSON.stringify({
1132
+ ...session,
1133
+ timestamp: Date.now(),
1134
+ }));
1135
+ console.log("[Apply-First] Session persisted to localStorage");
1136
+ } catch (e) {
1137
+ console.warn("[Apply-First] Failed to persist session:", e);
1138
+ }
1139
+
1100
1140
  // After a brief delay, assume HMR has completed
1101
1141
  setTimeout(() => {
1102
1142
  setApplyFirstStatus("reviewing");
@@ -1128,6 +1168,13 @@ export function SonanceDevTools() {
1128
1168
  setApplyFirstStatus("idle");
1129
1169
  setVisionFocusedElements([]);
1130
1170
  setChangedElements([]); // Clear highlights
1171
+ // Clear persisted session from localStorage
1172
+ try {
1173
+ localStorage.removeItem("sonance-apply-first-session");
1174
+ console.log("[Apply-First] Session cleared from localStorage");
1175
+ } catch (e) {
1176
+ console.warn("[Apply-First] Failed to clear session:", e);
1177
+ }
1131
1178
  } else {
1132
1179
  console.error("[Apply-First] Accept failed:", result.error);
1133
1180
  setApplyFirstStatus("error");
@@ -1164,6 +1211,13 @@ export function SonanceDevTools() {
1164
1211
  setVisionFocusedElements([]);
1165
1212
  setChangedElements([]); // Clear highlights
1166
1213
  // HMR will automatically refresh with restored files
1214
+ // Clear persisted session from localStorage
1215
+ try {
1216
+ localStorage.removeItem("sonance-apply-first-session");
1217
+ console.log("[Apply-First] Session cleared from localStorage");
1218
+ } catch (e) {
1219
+ console.warn("[Apply-First] Failed to clear session:", e);
1220
+ }
1167
1221
  } else {
1168
1222
  console.error("[Apply-First] Revert failed:", result.error);
1169
1223
  setApplyFirstStatus("error");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonance-brand-mcp",
3
- "version": "1.3.29",
3
+ "version": "1.3.30",
4
4
  "description": "MCP Server for Sonance Brand Guidelines and Component Library - gives Claude instant access to brand colors, typography, and UI components.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",