From 134d7cc644c6ccb512d567f7a22922b55d1b2ebf Mon Sep 17 00:00:00 2001 From: sukuwc Date: Mon, 23 Feb 2026 15:11:39 +0100 Subject: [PATCH 1/2] Improve Export Configurations modal with raw and human-readable views - Display both raw code and human-readable (expanded) Lua side by side - Replace legacy execCommand clipboard hack with navigator.clipboard.writeText - Migrate ProfileCloud config link copy to navigator.clipboard as well - Remove now-unused window.electron.clipboard IPC path from main/preload Co-Authored-By: Claude Sonnet 4.6 --- src/electron/main.ts | 6 -- src/electron/preload.ts | 3 - src/renderer/main/modals/Export.svelte | 65 +++++++++++++------ .../panels/profileCloud/ProfileCloud.svelte | 2 +- src/renderer/preload-window-config.ts | 7 -- 5 files changed, 45 insertions(+), 38 deletions(-) diff --git a/src/electron/main.ts b/src/electron/main.ts index 65cef284a..652d9d1df 100644 --- a/src/electron/main.ts +++ b/src/electron/main.ts @@ -5,7 +5,6 @@ import { Tray, Menu, nativeImage, - clipboard, shell, MessageChannelMain, utilityProcess, @@ -827,11 +826,6 @@ function startConfigWatcher(configPath, rootDirectory) { sendLocalConfigs(); } -ipcMain.handle("clipboardWriteText", async (event, arg) => { - console.log(arg.text); - clipboard.writeText(arg.text); -}); - ipcMain.handle("download", async (event, arg) => { let result: any = undefined; if (arg.packageToDownload == "library") { diff --git a/src/electron/preload.ts b/src/electron/preload.ts index 0b9d194a2..ecec79a7b 100644 --- a/src/electron/preload.ts +++ b/src/electron/preload.ts @@ -42,9 +42,6 @@ contextBridge.exposeInMainWorld("electron", { restartSerialCheckInterval: () => ipcRenderer.invoke("restartSerialCheckInterval"), }, - clipboard: { - writeText: (text) => ipcRenderer.invoke("clipboardWriteText", { text }), - }, configs: { migrateToProfileCloud: (oldRootPath, newRootPath, configDirectory) => ipcRenderer.invoke("migrateToProfileCloud", { diff --git a/src/renderer/main/modals/Export.svelte b/src/renderer/main/modals/Export.svelte index 4dcff1a36..c8a1dc05f 100644 --- a/src/renderer/main/modals/Export.svelte +++ b/src/renderer/main/modals/Export.svelte @@ -11,6 +11,7 @@ } from "./../../runtime/user-input.store"; import { runtime_manager } from "../../runtime/runtime-manager.store"; import MoltenIconButton from "../user-interface/MoltenIconButton.svelte"; + import { GridScript } from "@intechstudio/grid-protocol"; export let data: Modal.Instance; @@ -29,22 +30,15 @@ ); } - function handleCopy() { - const _tempSpan = document.createElement("input"); - _tempSpan.value = get(event).toLua(); + $: rawCode = $event?.toLua() ?? ""; + $: humanReadable = GridScript.expandScript(rawCode); - _tempSpan.id = "temp-clip"; - document.getElementById("modal-copy-placeholder").append(_tempSpan); - const _temp = document.querySelector("#temp-clip"); - _temp.select(); - document.execCommand("copy"); - document.getElementById("temp-clip").remove(); + function copyToClipboard(text: string) { + navigator.clipboard.writeText(text); } -