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.
|
|
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",
|