Drop wall + fence feature flags: register unconditionally; remove verification logs
Parity comparison against deployed prod is now cleaner than juggling
env-var flag toggles locally. Both kinds enter builtinPlugin.nodes
unconditionally; the Phase 0 dispatch shims (<LegacySystem kind="X">
wrappers + NodeRenderer's registry-first branch) handle the cutover.
Files deleted:
- packages/nodes/src/wall/feature-flag.ts
- packages/nodes/src/fence/feature-flag.ts
Files changed:
- packages/nodes/src/index.ts: drops isWallRegistryEnabled /
isFenceRegistryEnabled gates; wallDefinition + fenceDefinition
land directly in builtinPlugin.nodes.
- packages/nodes/src/{wall,fence}/index.ts: drop the flag re-export.
- packages/nodes/src/{wall,fence}/renderer.tsx: drop the one-shot
verification console.info. Same for the system.tsx wrappers.
- packages/viewer/src/components/renderers/{wall,fence}/{wall,fence}-
renderer.tsx: drop the paired [X:legacy] verification logs (no
longer comparing flag-toggled paths).
Net DX: no env var to remember when starting `bun dev:community`. To
A/B test, compare against editor.pascal.app deployed prod.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
9883f1cdc1
commit
6a4de8cff5
@@ -1,15 +1,9 @@
|
||||
import { type FenceNode, useRegistry, useScene } from '@pascal-app/core'
|
||||
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react'
|
||||
import { useLayoutEffect, useMemo, useRef } from 'react'
|
||||
import type { Mesh } from 'three'
|
||||
import { useNodeEvents } from '../../../hooks/use-node-events'
|
||||
import { DEFAULT_STAIR_MATERIAL } from '../../../lib/materials'
|
||||
|
||||
// Phase 5 verification log — see matching `[fence:registry]` log in
|
||||
// nodes/src/fence/renderer.tsx. Fires once if the legacy path is active
|
||||
// (flag off or kind not registered). Drop alongside the legacy file at
|
||||
// Phase 6 cleanup.
|
||||
let didLogFirstLegacyFenceMount = false
|
||||
|
||||
export const FenceRenderer = ({ node }: { node: FenceNode }) => {
|
||||
const ref = useRef<Mesh>(null!)
|
||||
const handlers = useNodeEvents(node, 'fence')
|
||||
@@ -20,14 +14,6 @@ export const FenceRenderer = ({ node }: { node: FenceNode }) => {
|
||||
useScene.getState().markDirty(node.id)
|
||||
}, [node.id])
|
||||
|
||||
useEffect(() => {
|
||||
if (didLogFirstLegacyFenceMount) return
|
||||
didLogFirstLegacyFenceMount = true
|
||||
console.info(
|
||||
'[fence:legacy] first legacy FenceRenderer mounted — registry-driven FenceRenderer is NOT in use',
|
||||
)
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<mesh
|
||||
castShadow
|
||||
|
||||
@@ -5,12 +5,6 @@ import { useNodeEvents } from '../../../hooks/use-node-events'
|
||||
import { getVisibleWallMaterials } from '../../../systems/wall/wall-materials'
|
||||
import { NodeRenderer } from '../node-renderer'
|
||||
|
||||
// Phase 3 verification — see the matching `[wall:registry]` log in
|
||||
// nodes/src/wall/renderer.tsx. When this fires, wall is on the legacy
|
||||
// path; the registry-driven WallRenderer is not in use. Drop alongside
|
||||
// the legacy file at Phase 6.
|
||||
let didLogFirstLegacyWallMount = false
|
||||
|
||||
function createEmptyWallGeometry() {
|
||||
const geometry = new BufferGeometry()
|
||||
geometry.setAttribute('position', new Float32BufferAttribute([], 3))
|
||||
@@ -35,14 +29,6 @@ export const WallRenderer = ({ node }: { node: WallNode }) => {
|
||||
useScene.getState().markDirty(node.id)
|
||||
}, [node.id])
|
||||
|
||||
useEffect(() => {
|
||||
if (didLogFirstLegacyWallMount) return
|
||||
didLogFirstLegacyWallMount = true
|
||||
console.info(
|
||||
'[wall:legacy] first legacy WallRenderer mounted — registry-driven WallRenderer is NOT in use',
|
||||
)
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
return () => {
|
||||
placeholderGeometry.dispose()
|
||||
|
||||
Reference in New Issue
Block a user