From df3e217d0111c63432a94c8b12dc1cc19bbe5d31 Mon Sep 17 00:00:00 2001 From: Julien Calixte Date: Mon, 27 Apr 2026 10:22:20 +0200 Subject: [PATCH] fix(userRepo): unwrap reactive proxies before postMessage to worker Vue reactive Proxies cannot be serialized by the Structured Clone Algorithm used by postMessage/Comlink. Use toRaw() on this.files and this.userSettings before passing them to data.update() to avoid the DataCloneError. --- src/modules/repo/store/userRepo.store.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/repo/store/userRepo.store.ts b/src/modules/repo/store/userRepo.store.ts index 23b8789..1d7b81e 100644 --- a/src/modules/repo/store/userRepo.store.ts +++ b/src/modules/repo/store/userRepo.store.ts @@ -1,3 +1,4 @@ +import { toRaw } from "vue" import { defineStore } from "pinia" import { data, generateId } from "@/data/data" @@ -156,7 +157,7 @@ export const useUserRepoStore = defineStore("USER_REPO_STATE", { chosenFontSize: _s, chosenFontFamily: _f, ...repoConfig - } = this.userSettings + } = toRaw(this.userSettings) data.update({ ...repoConfig, _id: userSettingsId @@ -184,7 +185,7 @@ export const useUserRepoStore = defineStore("USER_REPO_STATE", { DataType.SavedRepo, `${this.user}-${this.repo}` ) - const newFiles = [...this.files.filter((f) => f.sha !== file.sha), file] + const newFiles = [...toRaw(this.files).filter((f) => f.sha !== file.sha), toRaw(file)] data.update({ _id: savedRepoId, $type: DataType.SavedRepo,