From 2ec6a21cc0018be6677e4cbad6bf48dbf8b37786 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 31 Dec 2025 09:23:24 -0600 Subject: feat(desktop): unified diff toggle --- packages/ui/src/pierre/worker.ts | 47 ++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 12 deletions(-) (limited to 'packages/ui/src/pierre') diff --git a/packages/ui/src/pierre/worker.ts b/packages/ui/src/pierre/worker.ts index 2d2640674..0d117c368 100644 --- a/packages/ui/src/pierre/worker.ts +++ b/packages/ui/src/pierre/worker.ts @@ -1,16 +1,15 @@ -import { getOrCreateWorkerPoolSingleton, WorkerPoolManager } from "@pierre/diffs/worker" +import { WorkerPoolManager } from "@pierre/diffs/worker" import ShikiWorkerUrl from "@pierre/diffs/worker/worker.js?worker&url" +export type WorkerPoolStyle = "unified" | "split" + export function workerFactory(): Worker { return new Worker(ShikiWorkerUrl, { type: "module" }) } -export const workerPool: WorkerPoolManager | undefined = (() => { - if (typeof window === "undefined") { - return undefined - } - return getOrCreateWorkerPoolSingleton({ - poolOptions: { +function createPool(lineDiffType: "none" | "word-alt") { + const pool = new WorkerPoolManager( + { workerFactory, // poolSize defaults to 8. More workers = more parallelism but // also more memory. Too many can actually slow things down. @@ -19,10 +18,34 @@ export const workerPool: WorkerPoolManager | undefined = (() => { // boot up time for workers poolSize: 2, }, - highlighterOptions: { + { theme: "OpenCode", - // Optionally preload languages to avoid lazy-loading delays - // langs: ["typescript", "javascript", "css", "html"], + lineDiffType, }, - }) -})() + ) + + pool.initialize() + return pool +} + +let unified: WorkerPoolManager | undefined +let split: WorkerPoolManager | undefined + +export function getWorkerPool(style: WorkerPoolStyle | undefined): WorkerPoolManager | undefined { + if (typeof window === "undefined") return + + if (style === "split") { + if (!split) split = createPool("word-alt") + return split + } + + if (!unified) unified = createPool("none") + return unified +} + +export function getWorkerPools() { + return { + unified: getWorkerPool("unified"), + split: getWorkerPool("split"), + } +} -- cgit v1.2.3