From 11de746c013671cdb8f2333e3ff52346b93f2e4b Mon Sep 17 00:00:00 2001 From: Max Richter Date: Mon, 19 Jan 2026 14:22:14 +0100 Subject: [PATCH] feat(app): allow disabling of runtime/registry caches --- app/src/lib/runtime/runtime-executor.ts | 2 +- .../runtime/worker-runtime-executor-backend.ts | 16 ++++++++++++++++ app/src/lib/runtime/worker-runtime-executor.ts | 6 ++++++ app/src/lib/settings/app-settings.svelte.ts | 13 +++++++++++++ app/src/routes/+page.svelte | 15 +++++++++++++++ packages/registry/src/node-registry-client.ts | 2 +- 6 files changed, 52 insertions(+), 2 deletions(-) diff --git a/app/src/lib/runtime/runtime-executor.ts b/app/src/lib/runtime/runtime-executor.ts index c7ff8c9..bf09954 100644 --- a/app/src/lib/runtime/runtime-executor.ts +++ b/app/src/lib/runtime/runtime-executor.ts @@ -64,7 +64,7 @@ export class MemoryRuntimeExecutor implements RuntimeExecutor { constructor( private registry: NodeRegistry, - private cache?: SyncCache, + public cache?: SyncCache, ) { this.cache = undefined; } diff --git a/app/src/lib/runtime/worker-runtime-executor-backend.ts b/app/src/lib/runtime/worker-runtime-executor-backend.ts index b26cc07..2c896e7 100644 --- a/app/src/lib/runtime/worker-runtime-executor-backend.ts +++ b/app/src/lib/runtime/worker-runtime-executor-backend.ts @@ -13,6 +13,22 @@ const executor = new MemoryRuntimeExecutor(nodeRegistry, cache); const performanceStore = createPerformanceStore(); executor.perf = performanceStore; +export async function setUseRegistryCache(useCache: boolean) { + if (useCache) { + nodeRegistry.cache = indexDbCache; + } else { + nodeRegistry.cache = undefined; + } +} + +export async function setUseRuntimeCache(useCache: boolean) { + if (useCache) { + executor.cache = cache; + } else { + executor.cache = undefined; + } +} + export async function executeGraph( graph: Graph, settings: Record, diff --git a/app/src/lib/runtime/worker-runtime-executor.ts b/app/src/lib/runtime/worker-runtime-executor.ts index 49ee7ba..8a2594f 100644 --- a/app/src/lib/runtime/worker-runtime-executor.ts +++ b/app/src/lib/runtime/worker-runtime-executor.ts @@ -11,5 +11,11 @@ export class WorkerRuntimeExecutor implements RuntimeExecutor { async getPerformanceData() { return this.worker.getPerformanceData(); } + set useRuntimeCache(useCache: boolean) { + this.worker.setUseRuntimeCache(useCache); + } + set useRegistryCache(useCache: boolean) { + this.worker.setUseRegistryCache(useCache); + } } diff --git a/app/src/lib/settings/app-settings.svelte.ts b/app/src/lib/settings/app-settings.svelte.ts index 54178b1..d5f5829 100644 --- a/app/src/lib/settings/app-settings.svelte.ts +++ b/app/src/lib/settings/app-settings.svelte.ts @@ -87,6 +87,19 @@ export const AppSettingTypes = { label: "Show Graph Source", value: false, }, + cache: { + title: "Cache", + useRuntimeCache: { + type: "boolean", + label: "Node Results", + value: true, + }, + useRegistryCache: { + type: "boolean", + label: "Node Source", + value: true, + }, + }, stressTest: { title: "Stress Test", amount: { diff --git a/app/src/routes/+page.svelte b/app/src/routes/+page.svelte index aee5f4b..aa8b9ab 100644 --- a/app/src/routes/+page.svelte +++ b/app/src/routes/+page.svelte @@ -42,6 +42,21 @@ appSettings.value.debug.useWorker ? workerRuntime : memoryRuntime, ); + $effect(() => { + if (appSettings.value.debug.cache.useRegistryCache) { + nodeRegistry.cache = registryCache; + } else { + nodeRegistry.cache = undefined; + } + + workerRuntime.setUseCache(appSettings.value.debug.cache.useRuntimeCache); + if (appSettings.value.debug.cache.useRuntimeCache) { + memoryRuntime.cache = runtimeCache; + } else { + memoryRuntime.cache = undefined; + } + }); + let activeNode = $state(undefined); let scene = $state(null!); diff --git a/packages/registry/src/node-registry-client.ts b/packages/registry/src/node-registry-client.ts index e10d9ce..7a3cf77 100644 --- a/packages/registry/src/node-registry-client.ts +++ b/packages/registry/src/node-registry-client.ts @@ -16,7 +16,7 @@ export class RemoteNodeRegistry implements NodeRegistry { constructor( private url: string, - private cache?: AsyncCache, + public cache?: AsyncCache, ) { } async fetchJson(url: string, skipCache = false) {