diff --git a/bun.lock b/bun.lock
index 91afa2d..d087932 100644
--- a/bun.lock
+++ b/bun.lock
@@ -18,7 +18,6 @@
"react-dom": "19.2.7",
"tempus": "1.0.0-dev.17",
"three": "0.184.0",
- "tunnel-rat": "^0.1.2",
"zod": "^4.4.3",
"zustand": "^5.0.14",
},
diff --git a/lib/webgl/components/canvas/index.tsx b/lib/webgl/components/canvas/index.tsx
index 5b9e419..c365c6c 100644
--- a/lib/webgl/components/canvas/index.tsx
+++ b/lib/webgl/components/canvas/index.tsx
@@ -1,23 +1,13 @@
'use client'
import dynamic from 'next/dynamic'
-import { type ReactNode, useState } from 'react'
-import tunnel from 'tunnel-rat'
-import { CanvasContext } from '@/webgl/hooks/use-canvas'
+// R3F is client-only; ssr:false keeps it out of the server render.
const WebGLCanvas = dynamic(
() => import('./webgl').then((m) => m.WebGLCanvas),
{ ssr: false }
)
-export function Canvas({ children }: { children?: ReactNode }) {
- const [WebGLTunnel] = useState(() => tunnel())
- const [DOMTunnel] = useState(() => tunnel())
-
- return (
-
- {children}
-
-
- )
+export function Canvas() {
+ return
}
diff --git a/lib/webgl/components/canvas/webgl.tsx b/lib/webgl/components/canvas/webgl.tsx
index ddeff50..1b8eaa1 100644
--- a/lib/webgl/components/canvas/webgl.tsx
+++ b/lib/webgl/components/canvas/webgl.tsx
@@ -3,15 +3,12 @@
import { OrthographicCamera } from '@react-three/drei'
import { Canvas } from '@react-three/fiber'
import { Suspense } from 'react'
-import { useCanvas } from '@/webgl/hooks/use-canvas'
import { Content } from '../content'
import { PostProcessing } from '../postprocessing'
import { RAF } from '../raf'
import s from './webgl.module.css'
export function WebGLCanvas() {
- const { WebGLTunnel, DOMTunnel } = useCanvas()
-
return (
)
}
diff --git a/lib/webgl/components/raf.tsx b/lib/webgl/components/raf.tsx
index fe095a8..9cdcedd 100644
--- a/lib/webgl/components/raf.tsx
+++ b/lib/webgl/components/raf.tsx
@@ -4,12 +4,10 @@ import { useThree } from '@react-three/fiber'
import { useFrame } from '@/hooks'
/** Drives the manual render loop: tempus tick → R3F advance (frameloop="never"). */
-export function RAF({ render = true }: { render?: boolean }) {
+export function RAF() {
const advance = useThree((state) => state.advance)
- useFrame((time) => {
- if (render) advance(time / 1000)
- }, 1)
+ useFrame((time) => advance(time / 1000), 1)
return null
}
diff --git a/lib/webgl/hooks/use-canvas.ts b/lib/webgl/hooks/use-canvas.ts
deleted file mode 100644
index bd73fa2..0000000
--- a/lib/webgl/hooks/use-canvas.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-'use client'
-
-import { createContext, useContext } from 'react'
-import type tunnel from 'tunnel-rat'
-
-type TunnelInstance = ReturnType
-
-export interface CanvasContextValue {
- WebGLTunnel: TunnelInstance
- DOMTunnel: TunnelInstance
-}
-
-export const CanvasContext = createContext(null)
-
-export function useCanvas(): CanvasContextValue {
- const context = useContext(CanvasContext)
- if (!context) {
- throw new Error('useCanvas must be used within a