# Thob Observations: Task 3 - Product Option Switcher ### Thob Observations from Task Notes * **Possible**: Yes, implementing a geometric "Product Option" switcher that toggles the visibility of different 3D primitives (Cube/Sphere) via a central UI. * **Implementation used**: Structured a `RadioGroup` with a `For` loop to generate selection items. The selection state was linked to the `Visible` property of the corresponding Mesh nodes (Cube/Sphere) using conditional logic. * **What worked as expected**: Instantaneous visibility toggling. The builder engine handles "hiding/showing" meshes smoothly without losing their material or transform data. * **Main limitation observed**: Managing multiple distinct meshes (instead of just changing a material) increases the complexity of the Layers panel since each option requires its own Mesh node and geometry. * **Builder flow used**: UI Flex -> RadioGroup -> For Loop -> Visibility Binding on Mesh nodes in the 3D scene. * **Complexity**: Medium. Requires understanding "Visibility" state-binding and how to map specific Radio IDs to specific object visibility. * **Main limitation signals**: Cluster of `GetBindingData` redundancy logs and localized **Application Crashes** when interacting with specific primitive geometries like the Cylinder. * **Workaround status**: Fully native; achieved through standard visibility toggles in the Properties panel. ### Critical Failures & Application Crashes * **Geometric Property Crash**: A hard application crash (**Unexpected Application Error**) was observed when modifying properties of the **Cylinder geometry**. * *Error Trace*: `TypeError: Cannot convert a Symbol value to a number`. This suggests a breakdown in the builder's internal math/conversion logic when handling cylinder-specific parameters. * **Module Refresh Error**: Occasional failure to fetch dynamically imported modules (`builder._projectId-...js`). * *Effect*: Breaks the editor's interactive state and requires a full page refresh to recover. ### Console Warnings/Errors Seen (Deduplicated) and Probable Meaning 1. **Redundant Logic Registration**: `GetBindingData... method already registered`. * *Probable Meaning*: Triggered by the **For-loop** logic. The engine attempts to re-attach visibility listeners for all objects every time the selection is updated. 2. **GPU Crash**: `THREE.WebGLRenderer: Context Lost`. * *Probable Meaning*: Rapidly toggling visibility of different geometries appears to tax the memory/context management of the builder's renderer, occasionally leading to a context loss. 3. **Loading Error**: `404 Not Found (builder path)`. * *Probable Meaning*: Temporary failure to load internal builder thumbnails or non-essential project state files. ### Overall Read Task 3 demonstrates that Thob is effective for "Product Discovery" and "Part Selection" workflows where a user might want to swap entire components (like a Sphere for a Cube). While the logic is robust, the high volume of redundant console messages suggests the internal observer system is over-active during visibility state changes.