add: Week-2 Project setup

This commit is contained in:
anshk 2026-03-31 15:56:38 +05:30
parent 6f00dddd73
commit 9c381ac314
63 changed files with 5202 additions and 189 deletions

View File

@ -1,26 +1,30 @@
# Ansh — Week 1 Summary
## Tasks Completed
-Task 1:
-Task 2:
-Task 3:
-Task 4:
- Task 1: Built and compared a parent-child hierarchy (Sun -> Earth) in Vanilla, R3F, and Thob. Confirmed that basic parent transform inheritance works in all three, while Thob showed visual instability when editing child local position under transformed parent setups.
- Task 2: Built and compared a 3-level hierarchy (Sun -> Earth -> Moon). Vanilla and R3F stayed predictable for local vs inherited transforms. Thob was partially successful, but deeper nesting made transform behavior harder to reason about and trust.
- Task 3: Tested duplicate object and duplicate group behavior. All three supported duplication and preserved structure/transforms. Thob duplication was fast but always independent copy-paste, with no linked duplication mode.
- Task 4: Tested basic rotation/motion. Vanilla and R3F supported full custom per-frame animation. Thob supported only preset animations, so motion was possible but not truly customizable.
## What Thob Supports Well
-1.
-2.
-3.
- 1. Very fast visual setup for basic scenes and hierarchy creation without code.
- 2. Quick duplicate workflow for both single objects and grouped structures.
- 3. Easy entry-level motion using built-in presets for non-technical users.
## What Feels Weak / Awkward
-1.
-2.
-3.
- 1. Local vs inherited transform behavior is not transparent enough in nested hierarchies, making debugging difficult.
- 2. No linked duplication option (only independent copies), which limits synchronized editing workflows.
- 3. Motion tooling is preset-only, so custom animation logic is not possible for use cases beyond simple demos.
## Most Product-Relevant Discovery
-
- Builder speed is valuable, but trust depends on transform predictability and controllability. As soon as hierarchy depth increases or motion needs become custom, reliability and clarity matter more than fast setup.
## Best Improvement Recommendation
-
- Prioritize transform reliability and visibility first: add a clear local/world transform inspector, inheritance path visibility for nested objects, and stable parent-child-grandchild behavior when editing position and scale. This would remove the biggest source of confusion across multiple tasks and unlock more advanced scene authoring confidence.
## What I Learned About Vanilla vs R3F vs Thob
-
- Vanilla three.js gives maximum control and predictable behavior, but requires more setup and deeper technical understanding.
- R3F keeps most of Vanilla's control while making scene structure and updates cleaner through declarative components.
- Thob is the fastest for initial visual authoring, but currently feels constrained for advanced workflows due to transform debugging gaps, limited duplication semantics, and lack of custom animation authoring.
Overall, Week 1 showed that Thob already has strong foundations for beginner and rapid prototyping workflows, but needs stronger transform tooling and deeper control surfaces to support production-level 3D interaction design.

View File

@ -0,0 +1,5 @@
## Product Lens
- Is this pattern useful for real customers? Yes / Partial / No
- What kind of customer use case does this support?
- Does Thob feel strong enough for this use case?
- What would improve the experience?

View File

@ -0,0 +1,60 @@
# Task: [Feature Name]
## Objective
What is the feature trying to do?
## Vanilla three.js
-Possible: Yes / Partial / No
-Notes:
-Key concepts:
-Complexity: Easy / Medium / Hard
## R3F
-Possible: Yes / Partial / No
-Notes:
-What R3F abstracted:
-Complexity: Easy / Medium / Hard
## Thob Page Builder
-Possible: Yes / Partial / No
-Notes:
-Builder steps:
-Complexity: Easy / Medium / Hard
## Comparison Summary
-Possible in all 3? Yes / Partial / No
-Main differences:
-Where Thob is better:
-Where Thob is weaker:
-What feels awkward or unclear:
## Limitation Type (if any)
-[ ] Editor UX limitation
-[ ] Runtime limitation
-[ ] Schema / data model limitation
-[ ] Component limitation
-[ ] Event system limitation
-[ ] Asset pipeline limitation
-[ ] Unknown / needs investigation
## Workaround
-Is there a workaround?
-If yes, what is it?
## Suggested Improvement
-What should improve in Thob?
-Is it:
-editor
-runtime
-component
-UX
-schema/data
## Difficulty Estimate
-Easy / Medium / Hard
## Business Value
-Low / Medium / High
## Recommendation
Should Thob support this better? Why?

24
Week-2/Task-1/r3f/Cammera/.gitignore vendored Normal file
View File

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View File

@ -0,0 +1,16 @@
# React + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
## React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
## Expanding the ESLint configuration
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project.

View File

@ -0,0 +1,29 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import { defineConfig, globalIgnores } from 'eslint/config'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{js,jsx}'],
extends: [
js.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
parserOptions: {
ecmaVersion: 'latest',
ecmaFeatures: { jsx: true },
sourceType: 'module',
},
},
rules: {
'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }],
},
},
])

View File

@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Task1 R3f</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>

View File

@ -0,0 +1,30 @@
{
"name": "cammera",
"private": true,
"version": "0.0.0",
"type": "module",
"packageManager": "yarn@1.22.22",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "eslint .",
"preview": "vite preview"
},
"dependencies": {
"@react-three/fiber": "^9.5.0",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"three": "^0.183.2"
},
"devDependencies": {
"@eslint/js": "^9.39.4",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.0",
"eslint": "^9.39.4",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.5.2",
"globals": "^17.4.0",
"vite": "^8.0.0"
}
}

View File

@ -0,0 +1,9 @@
function App() {
return (
<>
</>
)
}
export default App

View File

@ -0,0 +1,15 @@
* {
box-sizing: border-box;
}
html,
body,
#root {
margin: 0;
width: 100%;
height: 100%;
}
body {
overflow: hidden;
}

View File

@ -0,0 +1,10 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.jsx'
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>,
)

View File

@ -0,0 +1,7 @@
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
// https://vite.dev/config/
export default defineConfig({
plugins: [react()],
})

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
{
"name": "week-1-task-1-r3f",
"private": true,
"version": "0.0.0",
"packageManager": "yarn@1.22.22",
"scripts": {
"dev": "echo 'Add your React Three Fiber dev script here'",
"build": "echo 'Add your React Three Fiber build script here'",
"lint": "echo 'Add your lint script here'",
"clean": "rm -rf dist build .next"
}
}

View File

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Task1 vanilla </title>
<style>
body {
margin: 0;
background: white;
}
</style>
</head>
<body>
<script type="module" src="/main.js"></script>
</body>
</html>

View File

View File

@ -0,0 +1,18 @@
{
"name": "week-1-task-1-vanilla",
"private": true,
"version": "0.0.0",
"packageManager": "yarn@1.22.22",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "echo 'Add your lint script here'",
"clean": "rm -rf dist build"
},
"dependencies": {
"three": "^0.183.2"
},
"devDependencies": {
"vite": "^8.0.2"
}
}

View File

@ -0,0 +1,5 @@
## Product Lens
- Is this pattern useful for real customers? Yes / Partial / No
- What kind of customer use case does this support?
- Does Thob feel strong enough for this use case?
- What would improve the experience?

View File

@ -0,0 +1,60 @@
# Task: [Feature Name]
## Objective
What is the feature trying to do?
## Vanilla three.js
-Possible: Yes / Partial / No
-Notes:
-Key concepts:
-Complexity: Easy / Medium / Hard
## R3F
-Possible: Yes / Partial / No
-Notes:
-What R3F abstracted:
-Complexity: Easy / Medium / Hard
## Thob Page Builder
-Possible: Yes / Partial / No
-Notes:
-Builder steps:
-Complexity: Easy / Medium / Hard
## Comparison Summary
-Possible in all 3? Yes / Partial / No
-Main differences:
-Where Thob is better:
-Where Thob is weaker:
-What feels awkward or unclear:
## Limitation Type (if any)
-[ ] Editor UX limitation
-[ ] Runtime limitation
-[ ] Schema / data model limitation
-[ ] Component limitation
-[ ] Event system limitation
-[ ] Asset pipeline limitation
-[ ] Unknown / needs investigation
## Workaround
-Is there a workaround?
-If yes, what is it?
## Suggested Improvement
-What should improve in Thob?
-Is it:
-editor
-runtime
-component
-UX
-schema/data
## Difficulty Estimate
-Easy / Medium / Hard
## Business Value
-Low / Medium / High
## Recommendation
Should Thob support this better? Why?

View File

View File

@ -0,0 +1,12 @@
{
"name": "week-1-task-2-r3f",
"private": true,
"version": "0.0.0",
"packageManager": "yarn@1.22.22",
"scripts": {
"dev": "echo 'Add your React Three Fiber dev script here'",
"build": "echo 'Add your React Three Fiber build script here'",
"lint": "echo 'Add your lint script here'",
"clean": "rm -rf dist build .next"
}
}

24
Week-2/Task-2/r3f/sceene/.gitignore vendored Normal file
View File

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View File

@ -0,0 +1,16 @@
# React + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
## React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
## Expanding the ESLint configuration
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project.

View File

@ -0,0 +1,29 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import { defineConfig, globalIgnores } from 'eslint/config'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{js,jsx}'],
extends: [
js.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
parserOptions: {
ecmaVersion: 'latest',
ecmaFeatures: { jsx: true },
sourceType: 'module',
},
},
rules: {
'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }],
},
},
])

View File

@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Task2 R3f</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>

2815
Week-2/Task-2/r3f/sceene/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,29 @@
{
"name": "sceene",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "eslint .",
"preview": "vite preview"
},
"dependencies": {
"@react-three/fiber": "^9.5.0",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"three": "^0.183.2"
},
"devDependencies": {
"@eslint/js": "^9.39.4",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.0",
"eslint": "^9.39.4",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.5.2",
"globals": "^17.4.0",
"vite": "^8.0.0"
}
}

View File

@ -0,0 +1,8 @@
function App() {
return (
<></>
)
}
export default App

View File

@ -0,0 +1,15 @@
html,
body,
#root {
width: 100%;
height: 100%;
margin: 0;
}
body {
overflow: hidden;
}
canvas {
display: block;
}

View File

@ -0,0 +1,10 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.jsx'
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>,
)

View File

@ -0,0 +1,7 @@
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
// https://vite.dev/config/
export default defineConfig({
plugins: [react()],
})

View File

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Task2 vanilla</title>
<style>
html,
body {
margin: 0;
background: white;
width: 100%;
height: 100%;
overflow: hidden;
}
canvas {
display: block;
width: 100%;
height: 100%;
}
</style>
</head>
<body> <script type="module" src="/main.js"></script>
</body>
</html>

View File

View File

@ -0,0 +1,18 @@
{
"name": "week-1-task-2-vanilla",
"private": true,
"version": "0.0.0",
"packageManager": "yarn@1.22.22",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "echo 'Add your lint script here'",
"clean": "rm -rf dist build"
},
"dependencies": {
"three": "^0.183.2"
},
"devDependencies": {
"vite": "^8.0.3"
}
}

View File

@ -0,0 +1,5 @@
## Product Lens
- Is this pattern useful for real customers? Yes / Partial / No
- What kind of customer use case does this support?
- Does Thob feel strong enough for this use case?
- What would improve the experience?

View File

@ -0,0 +1,60 @@
# Task: [Feature Name]
## Objective
What is the feature trying to do?
## Vanilla three.js
-Possible: Yes / Partial / No
-Notes:
-Key concepts:
-Complexity: Easy / Medium / Hard
## R3F
-Possible: Yes / Partial / No
-Notes:
-What R3F abstracted:
-Complexity: Easy / Medium / Hard
## Thob Page Builder
-Possible: Yes / Partial / No
-Notes:
-Builder steps:
-Complexity: Easy / Medium / Hard
## Comparison Summary
-Possible in all 3? Yes / Partial / No
-Main differences:
-Where Thob is better:
-Where Thob is weaker:
-What feels awkward or unclear:
## Limitation Type (if any)
-[ ] Editor UX limitation
-[ ] Runtime limitation
-[ ] Schema / data model limitation
-[ ] Component limitation
-[ ] Event system limitation
-[ ] Asset pipeline limitation
-[ ] Unknown / needs investigation
## Workaround
-Is there a workaround?
-If yes, what is it?
## Suggested Improvement
-What should improve in Thob?
-Is it:
-editor
-runtime
-component
-UX
-schema/data
## Difficulty Estimate
-Easy / Medium / Hard
## Business Value
-Low / Medium / High
## Recommendation
Should Thob support this better? Why?

View File

View File

@ -0,0 +1,15 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Task 3 R3F</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>

View File

@ -0,0 +1,24 @@
{
"name": "week-1-task-3-r3f",
"private": true,
"version": "0.0.0",
"type": "module",
"packageManager": "yarn@1.22.22",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "echo 'Lint not configured yet'",
"preview": "vite preview",
"clean": "rm -rf dist build .next"
},
"dependencies": {
"@react-three/fiber": "^9.5.0",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"three": "^0.183.2"
},
"devDependencies": {
"@vitejs/plugin-react": "^6.0.0",
"vite": "^8.0.3"
}
}

View File

@ -0,0 +1,6 @@
export default function App() {
return (
<></>
)
}

View File

@ -0,0 +1,18 @@
html,
body,
#root {
margin: 0;
width: 100%;
height: 100%;
}
body {
overflow: hidden;
background: #101418;
}
canvas {
display: block;
width: 100%;
height: 100%;
}

View File

@ -0,0 +1,10 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.jsx'
import './index.css'
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>,
)

View File

@ -0,0 +1,6 @@
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
})

View File

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Task 3 Vanilla</title>
<style>
html,
body {
margin: 0;
width: 100%;
height: 100%;
overflow: hidden;
background: #101418;
}
</style>
</head>
<body>
<script type="module" src="/main.js"></script>
</body>
</html>

View File

View File

@ -0,0 +1,12 @@
{
"name": "week-1-task-3-vanilla",
"private": true,
"version": "0.0.0",
"packageManager": "yarn@1.22.22",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "echo 'Add your lint script here'",
"clean": "rm -rf dist build"
}
}

View File

@ -0,0 +1,5 @@
## Product Lens
- Is this pattern useful for real customers? Yes / Partial / No
- What kind of customer use case does this support?
- Does Thob feel strong enough for this use case?
- What would improve the experience?

View File

@ -0,0 +1,60 @@
# Task: [Feature Name]
## Objective
What is the feature trying to do?
## Vanilla three.js
-Possible: Yes / Partial / No
-Notes:
-Key concepts:
-Complexity: Easy / Medium / Hard
## R3F
-Possible: Yes / Partial / No
-Notes:
-What R3F abstracted:
-Complexity: Easy / Medium / Hard
## Thob Page Builder
-Possible: Yes / Partial / No
-Notes:
-Builder steps:
-Complexity: Easy / Medium / Hard
## Comparison Summary
-Possible in all 3? Yes / Partial / No
-Main differences:
-Where Thob is better:
-Where Thob is weaker:
-What feels awkward or unclear:
## Limitation Type (if any)
-[ ] Editor UX limitation
-[ ] Runtime limitation
-[ ] Schema / data model limitation
-[ ] Component limitation
-[ ] Event system limitation
-[ ] Asset pipeline limitation
-[ ] Unknown / needs investigation
## Workaround
-Is there a workaround?
-If yes, what is it?
## Suggested Improvement
-What should improve in Thob?
-Is it:
-editor
-runtime
-component
-UX
-schema/data
## Difficulty Estimate
-Easy / Medium / Hard
## Business Value
-Low / Medium / High
## Recommendation
Should Thob support this better? Why?

View File

@ -0,0 +1,73 @@
# Builder Notes (Thob) — Task 4: Basic Rotation / Motion
## Thob Observations from Task Notes
- **Possible:** Partial
- **Implementation used:** Applied available built-in animation presets on a cube/object inside thob builder.
- **What worked as expected:**
- Preset animation can be applied quickly.
- Basic motion effects are visible without writing code.
- **Main limitation observed:**
- Custom animation is not possible; only pre-provided animation can be applied.
- Exact motion parity with Vanilla/R3F frame-loop logic is not achievable from the builder controls.
- **Builder flow used:**
1. Create/Add cube object in scene.
2. Open animation controls.
3. Apply available preset animation.
4. Tune exposed preset options (for example speed/intensity where available).
- **Complexity:** Easy for preset motion, hard for custom motion requirements.
- **Main limitation signals:** Editor UX + Runtime + Component concerns.
- **Workaround status:** Partial workaround only (use nearest preset); no true custom per-frame animation authoring.
## Console Warnings/Errors Seen (Deduplicated) and Probable Meaning
### warn: `Permissions-Policy header unrecognized feature ('browsing-topics')`
- **Type:** Browser/header compatibility warning.
- **Probable meaning:** Response header includes a policy directive not recognized by the current browser engine.
- **Impact:** Usually low for scene editing itself; mostly platform/header noise.
### error: `GET https://builder.thob.studio/builder/<id> 404 (Not Found)`
- **Type:** Network/resource error.
- **Probable meaning:** Builder page/resource ID is stale, deleted, or inaccessible for current session.
- **Impact:** High for workflow continuity; can block loading expected builder state.
### warn: `Unchecked runtime.lastError: The message port closed before a response was received`
- **Type:** Browser extension/runtime messaging warning.
- **Probable meaning:** A background messaging channel closed before callback response (often extension-related).
- **Impact:** Usually low for core scene logic; can add debugging noise.
### warn: `No HydrateFallback element provided to render during initial hydration`
- **Type:** Hydration/lifecycle warning.
- **Probable meaning:** Initial hydration path expected a fallback UI element but none was configured.
- **Impact:** Can produce unstable initial editor/preview rendering behavior.
### warn: `... changing from uncontrolled to controlled` and `RadioGroup is changing from uncontrolled to controlled`
- **Type:** React state-management warning.
- **Probable meaning:** Form/editor controls switch value ownership mode across renders.
- **Impact:** Property panel behavior may become inconsistent or glitchy.
### warn: `GetBindingData<id> method already registered` (repeated)
- **Type:** Duplicate registration warning.
- **Probable meaning:** Binding method handlers are attached multiple times during rerender/remount cycles.
- **Impact:** High log noise, risk of duplicated side effects, and potential performance degradation.
### warn: `resetPOI method already registered`
- **Type:** Duplicate command registration warning.
- **Probable meaning:** Command/event handler is registered more than once without cleanup.
- **Impact:** Risk of repeated command execution and state drift.
### warn: `camera-controls: verticalDragToForward was removed...`
- **Type:** API deprecation/removed option warning.
- **Probable meaning:** Legacy camera-controls prop is still being used by some path in the runtime/editor.
- **Impact:** Non-fatal now, but indicates outdated control configuration and future fragility.
### error: `THREE.GLTFLoader: Invalid plugin found: missing name`
- **Type:** Asset loader/plugin configuration error.
- **Probable meaning:** GLTF loader plugin object does not satisfy required shape/metadata.
- **Impact:** Asset loading behavior may be incomplete or fail for some models.
## Overall Read
- For Task 4, thob supports only preset motion and does not support custom animation logic, which is the core functional gap compared with Vanilla and R3F.
- Console output shows repeated registration and controlled/uncontrolled warnings, which aligns with editor/runtime stability concerns when iterating quickly in builder.
- The 404 page load and loader/control warnings suggest platform-level reliability and compatibility issues that can interfere with smooth motion-authoring workflows.

View File

@ -0,0 +1,15 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Task 4 R3F</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>

View File

@ -0,0 +1,24 @@
{
"name": "week-1-task-4-r3f",
"private": true,
"version": "0.0.0",
"type": "module",
"packageManager": "yarn@1.22.22",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "echo 'Lint not configured yet'",
"preview": "vite preview",
"clean": "rm -rf dist build .next"
},
"dependencies": {
"@react-three/fiber": "^9.5.0",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"three": "^0.183.2"
},
"devDependencies": {
"@vitejs/plugin-react": "^6.0.0",
"vite": "^8.0.3"
}
}

View File

@ -0,0 +1,6 @@
export default function App() {
return (
<></>
)
}

View File

@ -0,0 +1,8 @@
html,
body,
#root {
width: 100%;
height: 100%;
margin: 0;
background-color: black;
}

View File

@ -0,0 +1,10 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.jsx'
import './index.css'
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>,
)

View File

@ -0,0 +1,6 @@
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
})

View File

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Task4 vanilla </title>
<style>
body {
margin: 0;
}
</style>
</head>
<body>
<script type="module" src="/main.js"></script>
</body>
</html>

View File

View File

@ -0,0 +1,18 @@
{
"name": "week-1-task-4-vanilla",
"private": true,
"version": "0.0.0",
"packageManager": "yarn@1.22.22",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "echo 'Add your lint script here'",
"clean": "rm -rf dist build"
},
"dependencies": {
"three": "^0.183.2"
},
"devDependencies": {
"vite": "^8.0.3"
}
}

View File

@ -0,0 +1,26 @@
# Ansh — Week 1 Summary
## Tasks Completed
-Task 1:
-Task 2:
-Task 3:
-Task 4:
## What Thob Supports Well
-1.
-2.
-3.
## What Feels Weak / Awkward
-1.
-2.
-3.
## Most Product-Relevant Discovery
-
## Best Improvement Recommendation
-
## What I Learned About Vanilla vs R3F vs Thob
-

18
package-lock.json generated
View File

@ -9,8 +9,12 @@
"Week-*/Task-*/vanilla",
"Week-*/Task-*/r3f"
],
"dependencies": {
"three": "^0.183.2"
},
"devDependencies": {
"turbo": "^2.0.0"
"turbo": "^2.0.0",
"vite": "^8.0.3"
}
},
"node_modules/@babel/runtime": {
@ -1060,7 +1064,17 @@
},
"Week-1/Task-4/r3f": {
"name": "week-1-task-4-r3f",
"version": "0.0.0"
"version": "0.0.0",
"dependencies": {
"@react-three/fiber": "^9.5.0",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"three": "^0.183.2"
},
"devDependencies": {
"@vitejs/plugin-react": "^6.0.0",
"vite": "^8.0.3"
}
},
"Week-1/Task-4/vanilla": {
"name": "week-1-task-4-vanilla",

View File

@ -13,6 +13,10 @@
"clean": "turbo run clean"
},
"devDependencies": {
"turbo": "^2.0.0"
"turbo": "^2.0.0",
"vite": "^8.0.3"
},
"dependencies": {
"three": "^0.183.2"
}
}
}

238
yarn.lock
View File

@ -7,13 +7,6 @@
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz"
integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==
"@napi-rs/wasm-runtime@^1.1.1":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.2.tgz#e25454b4d44cfabd21d1bc801705359870e33ecc"
integrity sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==
dependencies:
"@tybys/wasm-util" "^0.10.1"
"@oxc-project/types@=0.122.0":
version "0.122.0"
resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.122.0.tgz"
@ -35,83 +28,11 @@
use-sync-external-store "^1.4.0"
zustand "^5.0.3"
"@rolldown/binding-android-arm64@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.12.tgz#4e6af08b89da02596cc5da4b105082b68673ffec"
integrity sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==
"@rolldown/binding-darwin-arm64@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.12.tgz"
integrity sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==
"@rolldown/binding-darwin-x64@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.12.tgz#eddf6aa3ed3509171fe21711f1e8ec8e0fd7ec49"
integrity sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==
"@rolldown/binding-freebsd-x64@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.12.tgz#2102dfed19fd1f1b53435fcaaf0bc61129a266a3"
integrity sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==
"@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.12.tgz#b2c13f40e990fd1e1935492850536c768c961a0f"
integrity sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==
"@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.12.tgz#32ca9f77c1e76b2913b3d53d2029dc171c0532d6"
integrity sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==
"@rolldown/binding-linux-arm64-musl@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.12.tgz#f4337ddd52f0ed3ada2105b59ee1b757a2c4858c"
integrity sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==
"@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.12.tgz#22fdd14cb00ee8208c28a39bab7f28860ec6705d"
integrity sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==
"@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.12.tgz#838215096d1de6d3d509e0410801cb7cda8161ff"
integrity sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==
"@rolldown/binding-linux-x64-gnu@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.12.tgz#f7d71d97f6bd43198596b26dc2cb364586e12673"
integrity sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==
"@rolldown/binding-linux-x64-musl@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.12.tgz#a2ca737f01b0ad620c4c404ca176ea3e3ad804c3"
integrity sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==
"@rolldown/binding-openharmony-arm64@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.12.tgz#f66317e29eafcc300bed7af8dddac26ab3b1bf82"
integrity sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==
"@rolldown/binding-wasm32-wasi@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.12.tgz#8825523fdffa1f1dc4683be9650ffaa9e4a77f04"
integrity sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==
dependencies:
"@napi-rs/wasm-runtime" "^1.1.1"
"@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.12.tgz#4f3a17e3d68a58309c27c0930b0f7986ccabef47"
integrity sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==
"@rolldown/binding-win32-x64-msvc@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.12.tgz#d762765d5660598a96b570b513f535c151272985"
integrity sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==
"@rolldown/pluginutils@1.0.0-rc.12":
version "1.0.0-rc.12"
resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.12.tgz"
@ -122,48 +43,23 @@
resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz"
integrity sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==
"@turbo/darwin-64@2.8.20":
version "2.8.20"
resolved "https://registry.yarnpkg.com/@turbo/darwin-64/-/darwin-64-2.8.20.tgz#6ebc903fbfe31db85f67b84af69e84822765cbf4"
integrity sha512-FQ9EX1xMU5nbwjxXxM3yU88AQQ6Sqc6S44exPRroMcx9XZHqqppl5ymJF0Ig/z3nvQNwDmz1Gsnvxubo+nXWjQ==
"@turbo/darwin-arm64@2.8.20":
version "2.8.20"
resolved "https://registry.npmjs.org/@turbo/darwin-arm64/-/darwin-arm64-2.8.20.tgz"
integrity sha512-Gpyh9ATFGThD6/s9L95YWY54cizg/VRWl2B67h0yofG8BpHf67DFAh9nuJVKG7bY0+SBJDAo5cMur+wOl9YOYw==
"@turbo/linux-64@2.8.20":
version "2.8.20"
resolved "https://registry.yarnpkg.com/@turbo/linux-64/-/linux-64-2.8.20.tgz#51faba95b242731b0beae9811724b3eeee6aa0a1"
integrity sha512-p2QxWUYyYUgUFG0b0kR+pPi8t7c9uaVlRtjTTI1AbCvVqkpjUfCcReBn6DgG/Hu8xrWdKLuyQFaLYFzQskZbcA==
"@turbo/linux-arm64@2.8.20":
version "2.8.20"
resolved "https://registry.yarnpkg.com/@turbo/linux-arm64/-/linux-arm64-2.8.20.tgz#4c466ec09a2c2e6513df94d703660bb6efa61614"
integrity sha512-Gn5yjlZGLRZWarLWqdQzv0wMqyBNIdq1QLi48F1oY5Lo9kiohuf7BPQWtWxeNVS2NgJ1+nb/DzK1JduYC4AWOA==
"@turbo/windows-64@2.8.20":
version "2.8.20"
resolved "https://registry.yarnpkg.com/@turbo/windows-64/-/windows-64-2.8.20.tgz#b8f23ff1d5ddf9b1abe41db2b1cb35b13066c063"
integrity sha512-vyaDpYk/8T6Qz5V/X+ihKvKFEZFUoC0oxYpC1sZanK6gaESJlmV3cMRT3Qhcg4D2VxvtC2Jjs9IRkrZGL+exLw==
"@turbo/windows-arm64@2.8.20":
version "2.8.20"
resolved "https://registry.yarnpkg.com/@turbo/windows-arm64/-/windows-arm64-2.8.20.tgz#8032d42c6cfd954d3c381720d5a65dc3e7ea3014"
integrity sha512-voicVULvUV5yaGXo0Iue13BcHGYW3u0VgqSbfQwBaHbpj1zLjYV4KIe+7fYIo6DO8FVUJzxFps3ODCQG/Wy2Qw==
"@tybys/wasm-util@^0.10.1":
version "0.10.1"
resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414"
integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==
dependencies:
tslib "^2.4.0"
"@types/react-reconciler@^0.28.9":
version "0.28.9"
resolved "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.9.tgz"
integrity sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==
"@types/react@*", "@types/react@>=18.0.0":
version "19.2.14"
resolved "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz"
integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==
dependencies:
csstype "^3.2.2"
"@types/webxr@*":
version "0.5.24"
resolved "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.24.tgz"
@ -189,6 +85,11 @@ buffer@^6.0.3:
base64-js "^1.3.1"
ieee754 "^1.2.1"
csstype@^3.2.2:
version "3.2.3"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz"
integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==
detect-libc@^2.0.3:
version "2.1.2"
resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz"
@ -216,61 +117,11 @@ its-fine@^2.0.0:
dependencies:
"@types/react-reconciler" "^0.28.9"
lightningcss-android-arm64@1.32.0:
version "1.32.0"
resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz#f033885116dfefd9c6f54787523e3514b61e1968"
integrity sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==
lightningcss-darwin-arm64@1.32.0:
version "1.32.0"
resolved "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz"
integrity sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==
lightningcss-darwin-x64@1.32.0:
version "1.32.0"
resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz#35f3e97332d130b9ca181e11b568ded6aebc6d5e"
integrity sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==
lightningcss-freebsd-x64@1.32.0:
version "1.32.0"
resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz#9777a76472b64ed6ff94342ad64c7bafd794a575"
integrity sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==
lightningcss-linux-arm-gnueabihf@1.32.0:
version "1.32.0"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz#13ae652e1ab73b9135d7b7da172f666c410ad53d"
integrity sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==
lightningcss-linux-arm64-gnu@1.32.0:
version "1.32.0"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz#417858795a94592f680123a1b1f9da8a0e1ef335"
integrity sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==
lightningcss-linux-arm64-musl@1.32.0:
version "1.32.0"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz#6be36692e810b718040802fd809623cffe732133"
integrity sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==
lightningcss-linux-x64-gnu@1.32.0:
version "1.32.0"
resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz#0b7803af4eb21cfd38dd39fe2abbb53c7dd091f6"
integrity sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==
lightningcss-linux-x64-musl@1.32.0:
version "1.32.0"
resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz#88dc8ba865ddddb1ac5ef04b0f161804418c163b"
integrity sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==
lightningcss-win32-arm64-msvc@1.32.0:
version "1.32.0"
resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz#4f30ba3fa5e925f5b79f945e8cc0d176c3b1ab38"
integrity sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==
lightningcss-win32-x64-msvc@1.32.0:
version "1.32.0"
resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz#141aa5605645064928902bb4af045fa7d9f4220a"
integrity sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==
lightningcss@^1.32.0:
version "1.32.0"
resolved "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz"
@ -300,7 +151,7 @@ picocolors@^1.1.1:
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
picomatch@^4.0.3, picomatch@^4.0.4:
"picomatch@^3 || ^4", picomatch@^4.0.3, picomatch@^4.0.4:
version "4.0.4"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz"
integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==
@ -314,7 +165,7 @@ postcss@^8.5.8:
picocolors "^1.1.1"
source-map-js "^1.2.1"
react-dom@^19.2.4:
react-dom@^19.2.4, react-dom@>=16.13, "react-dom@>=19 <19.3":
version "19.2.4"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz"
integrity sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==
@ -326,7 +177,7 @@ react-use-measure@^2.1.7:
resolved "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.7.tgz"
integrity sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg==
react@^19.2.4:
"react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", react@^19.0.0, react@^19.2.4, react@>=16.13, react@>=17.0, react@>=18.0.0, "react@>=19 <19.3":
version "19.2.4"
resolved "https://registry.npmjs.org/react/-/react-19.2.4.tgz"
integrity sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==
@ -370,7 +221,7 @@ suspend-react@^0.1.3:
resolved "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz"
integrity sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==
three@^0.183.2:
three@^0.183.2, three@>=0.156:
version "0.183.2"
resolved "https://registry.npmjs.org/three/-/three-0.183.2.tgz"
integrity sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ==
@ -383,11 +234,6 @@ tinyglobby@^0.2.15:
fdir "^6.5.0"
picomatch "^4.0.3"
tslib@^2.4.0:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
turbo@^2.0.0:
version "2.8.20"
resolved "https://registry.npmjs.org/turbo/-/turbo-2.8.20.tgz"
@ -400,12 +246,12 @@ turbo@^2.0.0:
"@turbo/windows-64" "2.8.20"
"@turbo/windows-arm64" "2.8.20"
use-sync-external-store@^1.4.0:
use-sync-external-store@^1.4.0, use-sync-external-store@>=1.2.0:
version "1.6.0"
resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz"
integrity sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==
vite@^8.0.2, vite@^8.0.3:
vite@^8.0.0, vite@^8.0.2, vite@^8.0.3:
version "8.0.3"
resolved "https://registry.npmjs.org/vite/-/vite-8.0.3.tgz"
integrity sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==
@ -418,6 +264,54 @@ vite@^8.0.2, vite@^8.0.3:
optionalDependencies:
fsevents "~2.3.3"
"week-1-task-1-r3f@file:/Users/anshkumar/Documents/VS Code/thob-work/builder-research/Week-1/Task-1/r3f":
version "0.0.0"
resolved "file:Week-1/Task-1/r3f"
"week-1-task-1-vanilla@file:/Users/anshkumar/Documents/VS Code/thob-work/builder-research/Week-1/Task-1/vanilla":
version "0.0.0"
resolved "file:Week-1/Task-1/vanilla"
dependencies:
three "^0.183.2"
"week-1-task-2-r3f@file:/Users/anshkumar/Documents/VS Code/thob-work/builder-research/Week-1/Task-2/r3f":
version "0.0.0"
resolved "file:Week-1/Task-2/r3f"
"week-1-task-2-vanilla@file:/Users/anshkumar/Documents/VS Code/thob-work/builder-research/Week-1/Task-2/vanilla":
version "0.0.0"
resolved "file:Week-1/Task-2/vanilla"
dependencies:
three "^0.183.2"
"week-1-task-3-r3f@file:/Users/anshkumar/Documents/VS Code/thob-work/builder-research/Week-1/Task-3/r3f":
version "0.0.0"
resolved "file:Week-1/Task-3/r3f"
dependencies:
"@react-three/fiber" "^9.5.0"
react "^19.2.4"
react-dom "^19.2.4"
three "^0.183.2"
"week-1-task-3-vanilla@file:/Users/anshkumar/Documents/VS Code/thob-work/builder-research/Week-1/Task-3/vanilla":
version "0.0.0"
resolved "file:Week-1/Task-3/vanilla"
"week-1-task-4-r3f@file:/Users/anshkumar/Documents/VS Code/thob-work/builder-research/Week-1/Task-4/r3f":
version "0.0.0"
resolved "file:Week-1/Task-4/r3f"
dependencies:
"@react-three/fiber" "^9.5.0"
react "^19.2.4"
react-dom "^19.2.4"
three "^0.183.2"
"week-1-task-4-vanilla@file:/Users/anshkumar/Documents/VS Code/thob-work/builder-research/Week-1/Task-4/vanilla":
version "0.0.0"
resolved "file:Week-1/Task-4/vanilla"
dependencies:
three "^0.183.2"
zustand@^5.0.3:
version "5.0.12"
resolved "https://registry.npmjs.org/zustand/-/zustand-5.0.12.tgz"