# Builder Notes (Thob) — Task 3: Duplicate Object / Duplicate Group ## Thob Observations from Task Notes - **Possible:** Yes - **Implementation used:** Duplicate shortcut for both single object and grouped structure. - **What worked as expected:** - Duplicating a single object creates a visible copy. - Duplicating a group also creates a full copied hierarchy. - Transforms are preserved at duplication time. - **Key behavior observed:** - Both object duplicate and group duplicate behave as copy-paste. - Duplicates are independent; no linking/reference relationship is maintained with source. - **UX quality:** - Shortcut-based duplication is fast. - Missing duplicate mode (linked vs independent) makes behavior limiting for synchronized edits. - **Builder flow used:** 1. Create base object. 2. Duplicate object using editor shortcut. 3. Create grouped hierarchy. 4. Duplicate the group. 5. Verify copied transforms/structure and check whether source and duplicate remain linked. - **Complexity:** Medium - **Main limitation signals:** Editor UX + Schema/Data model. - **Workaround status:** Use independent duplicate copies only; no linked duplication path found. ## Console Warnings/Errors Seen (Deduplicated) and Probable Meaning ### warn: `Permissions-Policy header unrecognized feature ('browsing-topics')` - **Type:** Browser/header compatibility warning. - **Probable meaning:** Server sends a policy directive unsupported by current browser runtime. - **Impact:** Usually low for duplication behavior; mostly environmental noise. ### warn: `GetBindingData... method already registered` (many IDs) - **Type:** Duplicate registration warning. - **Probable meaning:** Binding handlers are re-registered on rerender/reconnect without cleanup. - **Impact:** High log noise, duplicate callback execution risk, and possible unstable editor reactions. ### warn: `resetPOI method already registered` - **Type:** Duplicate command registration. - **Probable meaning:** Camera/POI command pipeline attached multiple times. - **Impact:** One user action may run multiple times, causing state drift. ### warn: `update-static-component-prop method already registered` - **Type:** Duplicate update-pipeline registration. - **Probable meaning:** Static prop update handlers are mounted repeatedly. - **Impact:** Duplicate writes and inconsistent property panel behavior. ### warn: `Component changing from uncontrolled to controlled` (Popover / RadioGroup / undefined) - **Type:** React form-state warning. - **Probable meaning:** Controls mount with unstable/undefined value and later switch to controlled mode. - **Impact:** UI flicker, unstable inspector controls, and harder-to-trust edit state. ### error: `THREE.GLTFLoader: Invalid plugin found: missing name` - **Type:** Asset loader/plugin configuration error. - **Probable meaning:** GLTF plugin object shape is invalid or missing required metadata. - **Impact:** Import pipeline may partially fail and generate secondary rendering issues. ### warn: `THREE.MaterialLoader: Undefined texture null` - **Type:** Asset/material reference warning. - **Probable meaning:** Material references missing texture slot(s). - **Impact:** Incorrect materials or degraded visual fidelity; usually non-fatal. ### info/warn: `ReconnectingWebSocket reconnecting/open/syncing/...` - **Type:** Transport/sync lifecycle logs. - **Probable meaning:** Session reconnect and state sync handshakes are occurring. - **Impact:** Usually informational, but repeated reconnects can amplify duplicate registration side effects. ### error: `Cannot read properties of null (reading 'contentWindow')` - **Type:** Runtime exception. - **Probable meaning:** Message post attempted against iframe/window not mounted or already disposed. - **Impact:** Preview communication can fail and editor state can desynchronize. ### warn: `Icon component has been deprecated` - **Type:** Deprecation warning. - **Probable meaning:** Legacy UI API still in use. - **Impact:** Low immediate risk; medium future maintenance risk. ### error: `R3F: Div is not part of the THREE namespace` - **Type:** Critical render-tree composition error. - **Probable meaning:** DOM node rendered in R3F scene tree without proper bridge/extension. - **Impact:** Scene subtree can fail rendering, affecting reliability of duplication validation. ### error: `THREE.WebGLRenderer: Context Lost` - **Type:** Graphics runtime error. - **Probable meaning:** WebGL context dropped (resource pressure, repeated remounts, browser/GPU reset). - **Impact:** Canvas interruptions and unreliable editor preview behavior. ### error: `Failed to load resource: 404` - **Type:** Network/resource error. - **Probable meaning:** Asset/resource path missing or stale. - **Impact:** Missing resources can cascade into loader/material warnings. ### warn/error: `Konva has no node with type ambientLight/meshStandardMaterial/boxGeometry/mesh` and layer width/height warnings - **Type:** Renderer mismatch/runtime warnings. - **Probable meaning:** Non-Konva scene nodes are being interpreted in a Konva path; invalid layer size updates applied. - **Impact:** Rendering fallback behavior and layout/render correctness risk. ## Overall Read - Task objective is functionally reachable in builder: object and group duplication both produce full copies. - Behavior is strictly independent copy-paste; no linked duplicate mode is currently available. - Transform and structure preservation are acceptable at duplicate time, but advanced synchronized editing workflows are not supported. - Console profile indicates substantial runtime/editor noise (duplicate registrations, state-control warnings, renderer/path mismatches), which can reduce confidence in complex scene editing even though basic duplication works.