summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/pierre
diff options
context:
space:
mode:
authorAmadeus Demarzi <[email protected]>2025-12-17 05:33:46 -0800
committerGitHub <[email protected]>2025-12-17 07:33:46 -0600
commit5c490c51edd5a8e3953fcc439d46c0e138294073 (patch)
tree29f538fa1ad1666507960e30830b0f07db9de44a /packages/ui/src/pierre
parent5da1c0087b7a0216bf633d12ff038422727ff235 (diff)
downloadopencode-5c490c51edd5a8e3953fcc439d46c0e138294073.tar.gz
opencode-5c490c51edd5a8e3953fcc439d46c0e138294073.zip
Diffs Performance Improvements (#5653)
Co-authored-by: Adam <[email protected]>
Diffstat (limited to 'packages/ui/src/pierre')
-rw-r--r--packages/ui/src/pierre/worker.ts36
1 files changed, 22 insertions, 14 deletions
diff --git a/packages/ui/src/pierre/worker.ts b/packages/ui/src/pierre/worker.ts
index e47268d4e..2d2640674 100644
--- a/packages/ui/src/pierre/worker.ts
+++ b/packages/ui/src/pierre/worker.ts
@@ -1,20 +1,28 @@
-import { getOrCreateWorkerPoolSingleton } from "@pierre/diffs/worker"
+import { getOrCreateWorkerPoolSingleton, WorkerPoolManager } from "@pierre/diffs/worker"
import ShikiWorkerUrl from "@pierre/diffs/worker/worker.js?worker&url"
export function workerFactory(): Worker {
return new Worker(ShikiWorkerUrl, { type: "module" })
}
-export const workerPool = getOrCreateWorkerPoolSingleton({
- poolOptions: {
- workerFactory,
- // poolSize defaults to 8. More workers = more parallelism but
- // also more memory. Too many can actually slow things down.
- // poolSize: 8,
- },
- highlighterOptions: {
- theme: "OpenCode",
- // Optionally preload languages to avoid lazy-loading delays
- // langs: ["typescript", "javascript", "css", "html"],
- },
-})
+export const workerPool: WorkerPoolManager | undefined = (() => {
+ if (typeof window === "undefined") {
+ return undefined
+ }
+ return getOrCreateWorkerPoolSingleton({
+ poolOptions: {
+ workerFactory,
+ // poolSize defaults to 8. More workers = more parallelism but
+ // also more memory. Too many can actually slow things down.
+ // NOTE: 2 is probably better for OpenCode, as I think 8 might be
+ // a bit overkill, especially because Safari has a significantly slower
+ // boot up time for workers
+ poolSize: 2,
+ },
+ highlighterOptions: {
+ theme: "OpenCode",
+ // Optionally preload languages to avoid lazy-loading delays
+ // langs: ["typescript", "javascript", "css", "html"],
+ },
+ })
+})()