@dcl-regenesislabs/opendcl 0.1.4-22809399016.commit-8d4acb4 → 0.1.4-22810348207.commit-485ab64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -46,7 +46,7 @@ npm install -g @dcl-regenesislabs/opendcl
46
46
  opendcl
47
47
  ```
48
48
 
49
- On first run, type `/setup` to configure a cloud API provider (Anthropic, OpenAI, Google, etc.) or `/setup-ollama` to install [Ollama](https://ollama.com/) and use a free local model.
49
+ On first run, type `/setup` to configure a cloud API provider (Anthropic, OpenAI, Google, etc.).
50
50
 
51
51
  ### In an Empty Folder
52
52
 
@@ -94,7 +94,6 @@ This uses the open [skills](https://github.com/vercel-labs/skills) CLI to copy S
94
94
  | Command | Description |
95
95
  |---------|-------------|
96
96
  | `/setup` | Configure a cloud API provider (Anthropic, OpenAI, Google, etc.) |
97
- | `/setup-ollama` | Install Ollama and configure a free local LLM model |
98
97
  | `/init` | Scaffold a new Decentraland scene in the current directory |
99
98
  | `/preview` | Start the Bevy-web preview server and open the scene in browser |
100
99
  | `/deploy` | Deploy the scene to Genesis City or a World (auto-detects from scene.json) |
@@ -154,7 +153,6 @@ opendcl/
154
153
  │ ├── dcl-preview.ts # /preview command
155
154
  │ ├── dcl-deploy.ts # /deploy command
156
155
  │ ├── dcl-setup.ts # /setup command (cloud API provider config)
157
- │ ├── dcl-setup-ollama.ts # /setup-ollama command (Ollama setup wizard)
158
156
  │ ├── dcl-status.ts # Thinking/streaming status (elapsed time + tokens)
159
157
  │ ├── dcl-update-check.ts # Checks npm for newer OpenDCL versions
160
158
  │ ├── dcl-validate.ts # Post-write TypeScript validation
package/dist/index.js CHANGED
@@ -45,7 +45,6 @@ const extensions = [
45
45
  "dcl-init.ts",
46
46
  "dcl-deploy.ts",
47
47
  "dcl-setup.ts",
48
- "dcl-setup-ollama.ts",
49
48
  "dcl-validate.ts",
50
49
  "dcl-header.ts",
51
50
  "dcl-update-check.ts",
@@ -54,6 +53,10 @@ const extensions = [
54
53
  "dcl-asset-path.ts",
55
54
  "dcl-screenshot.ts",
56
55
  ];
56
+ // Conditionally load dcl-setup-ollama (hidden by default, enable with ENABLE_OLLAMA_SETUP=true)
57
+ if (process.env.ENABLE_OLLAMA_SETUP === "true") {
58
+ extensions.push("dcl-setup-ollama.ts");
59
+ }
57
60
  for (const ext of extensions) {
58
61
  args.push("-e", join(extDir, ext));
59
62
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -52,10 +52,8 @@ interface Action {
52
52
  ms?: number;
53
53
  }
54
54
 
55
- /** Default pixels to drag for look actions. */
56
- const LOOK_DRAG_PX = 200;
57
55
  /** Default duration (ms) to hold movement keys. */
58
- const MOVE_HOLD_MS = 500;
56
+ const MOVE_HOLD_MS = 300;
59
57
  /** Process registry key for the screenshot browser. */
60
58
  const PROCESS_NAME = "screenshot-browser";
61
59
  /** Relative position of the "Explore as Guest" button on the Bevy-Web renderer welcome canvas.
@@ -123,33 +121,20 @@ async function executeActions(page: Page, actions: Action[]): Promise<void> {
123
121
  await page.waitForTimeout(action.ms ?? 1000);
124
122
  break;
125
123
 
126
- // Camera look (mouse drags from center)
124
+ // Camera look (arrow keys) and WASD movement (key holds)
127
125
  case "lookLeft":
128
126
  case "lookRight":
129
127
  case "lookUp":
130
- case "lookDown": {
131
- const c = getViewportCenter(page);
132
- const px = action.dx ? Math.abs(action.dx) : LOOK_DRAG_PX;
133
- const targets: Record<string, { x: number; y: number }> = {
134
- lookLeft: { x: c.x - px, y: c.y },
135
- lookRight: { x: c.x + px, y: c.y },
136
- lookUp: { x: c.x, y: c.y - px },
137
- lookDown: { x: c.x, y: c.y + px },
138
- };
139
- const target = targets[action.type];
140
- await page.mouse.move(c.x, c.y);
141
- await page.mouse.down();
142
- await page.mouse.move(target.x, target.y, { steps: 10 });
143
- await page.mouse.up();
144
- break;
145
- }
146
-
147
- // WASD movement (key holds)
128
+ case "lookDown":
148
129
  case "moveForward":
149
130
  case "moveBack":
150
131
  case "moveLeft":
151
132
  case "moveRight": {
152
133
  const keyMap: Record<string, string> = {
134
+ lookLeft: "ArrowLeft",
135
+ lookRight: "ArrowRight",
136
+ lookUp: "ArrowUp",
137
+ lookDown: "ArrowDown",
153
138
  moveForward: "w",
154
139
  moveBack: "s",
155
140
  moveLeft: "a",
@@ -320,12 +305,15 @@ The browser stays open between calls — only the first screenshot navigates and
320
305
  ## Actions (optional, performed before capture)
321
306
  Low-level: click (x,y coords), key (press/hold), mouse (relative drag), wait
322
307
  High-level helpers:
323
- - lookLeft / lookRight / lookUp / lookDown — camera rotation (dx/dy pixels, default 200)
324
- - moveForward / moveBack / moveLeft / moveRight — WASD movement (holdMs duration, default 500ms)
308
+ - lookLeft / lookRight / lookUp / lookDown — arrow key camera rotation (holdMs duration, default 300ms)
309
+ - moveForward / moveBack / moveLeft / moveRight — WASD movement (holdMs duration, default 300ms)
310
+
311
+ Movement speed is ~6m/s. Each parcel is 16m. Keep movements small (holdMs: 300). Stay within scene boundaries. If you see empty/gray space or no scene content, you've left the scene — stop moving.
325
312
 
326
- Movement speed is ~6m/s. Camera always faces north in headless mode.`,
313
+ IMPORTANT: Use sparingly. Make code changes first, then take 1-2 screenshots to verify. Do not use screenshots to explore the scene.`,
327
314
  promptGuidelines: [
328
- "After writing scene code with the preview running, proactively use `screenshot` (with wait: 2000 for hot-reload) to verify your changes visually. Don't wait for the user to check.",
315
+ "Use screenshot sparingly only to verify the final result after making code changes, not to explore or navigate. Take 1-2 screenshots per task, not after every small change.",
316
+ "Each screenshot consumes significant tokens. Make all your code changes first, then take one screenshot to verify.",
329
317
  "If the screenshot tool fails (no Chrome, browser crash, user declined), continue working normally without vision. Tell the user what happened and suggest they check the preview manually.",
330
318
  "Don't retry screenshot more than once if it fails — fall back to asking the user to verify visually.",
331
319
  ],
@@ -358,13 +346,13 @@ Movement speed is ~6m/s. Camera always faces north in headless mode.`,
358
346
  y: Type.Optional(Type.Number({ description: "Y pixel coordinate for click" })),
359
347
  key: Type.Optional(Type.String({ description: "Key to press (for key action)" })),
360
348
  holdMs: Type.Optional(
361
- Type.Number({ description: "Hold duration in ms (key or movement, default 500ms)" }),
349
+ Type.Number({ description: "Hold duration in ms (key, movement, or look, default 300ms)" }),
362
350
  ),
363
351
  dx: Type.Optional(
364
- Type.Number({ description: "Relative X pixels (mouse drag or look, default 200)" }),
352
+ Type.Number({ description: "Relative X pixels (mouse drag)" }),
365
353
  ),
366
354
  dy: Type.Optional(
367
- Type.Number({ description: "Relative Y pixels (mouse drag or look, default 200)" }),
355
+ Type.Number({ description: "Relative Y pixels (mouse drag)" }),
368
356
  ),
369
357
  ms: Type.Optional(
370
358
  Type.Number({ description: "Wait duration in ms (for wait action)" }),
@@ -209,7 +209,7 @@ const extension: ExtensionFactory = (pi) => {
209
209
  pi.on("session_start", async (_event, ctx) => {
210
210
  if (!(await isProviderConfigured())) {
211
211
  ctx.ui.notify(
212
- "Get started by running /setup (cloud providers) or /setup-ollama (free local models)",
212
+ "Get started by running /setup to configure a cloud provider",
213
213
  "warning",
214
214
  );
215
215
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcl-regenesislabs/opendcl",
3
- "version": "0.1.4-22809399016.commit-8d4acb4",
3
+ "version": "0.1.4-22810348207.commit-485ab64",
4
4
  "description": "AI coding assistant for Decentraland SDK7 scene development",
5
5
  "type": "module",
6
6
  "bin": {
@@ -67,5 +67,5 @@
67
67
  "prompts/",
68
68
  "context/"
69
69
  ],
70
- "commit": "8d4acb4ad164fa52bed5cbd4ce94f269b5e027f2"
70
+ "commit": "485ab6416153a8d74fbbfe4d94fbdd240a1e2e88"
71
71
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: visual-feedback
3
- description: Use the screenshot tool to see the running Decentraland preview, verify scene changes visually, explore from different angles, and iterate until the scene looks right. Use when the preview is running and you need to check what the scene looks like, debug visual issues, verify placement, or iterate on appearance.
3
+ description: Use the screenshot tool to see the running Decentraland preview and verify scene changes visually. Use when the preview is running and you need to check what the scene looks like after making code changes.
4
4
  ---
5
5
 
6
6
  # Visual Feedback — Seeing Your Scene
@@ -11,12 +11,11 @@ The `screenshot` tool lets you capture what the Decentraland preview looks like
11
11
 
12
12
  ## When to Use Screenshots
13
13
 
14
- - **After placing objects** — verify they're positioned correctly, not floating or buried
15
- - **After changing materials/colors** — confirm the visual result matches intent
16
- - **After downloading 3D models** — check they loaded and look right
14
+ - **After completing code changes** — verify the final result looks correct
17
15
  - **When the user asks "how does it look?"** — show them and describe what you see
18
- - **When debugging** — "the tree is invisible" → screenshot to see what's actually rendering
19
- - **When iterating** — code → screenshot → fix → screenshot until it's right
16
+ - **When debugging visual issues** — "the tree is invisible" → screenshot to see what's actually rendering
17
+
18
+ **Do NOT** use screenshots to explore or navigate the scene. Make all code changes first, then take 1-2 screenshots to verify.
20
19
 
21
20
  ## Basic Usage
22
21
 
@@ -28,7 +27,7 @@ Use the screenshot tool with no actions to capture the current scene view.
28
27
 
29
28
  The tool returns the image directly — you'll see it and can describe what's visible.
30
29
 
31
- ## Movement & Exploration
30
+ ## Movement & Camera
32
31
 
33
32
  The scene camera **always faces north** in headless mode. Movement is relative to compass direction, not camera:
34
33
 
@@ -39,22 +38,11 @@ The scene camera **always faces north** in headless mode. Movement is relative t
39
38
  | `moveRight` | East (toward right) | D |
40
39
  | `moveLeft` | West (toward left) | A |
41
40
 
42
- Movement speed is ~6 meters/second. Default `holdMs` is 500ms (~3 meters).
43
-
44
- ### Exploring a scene
45
-
46
- To see objects from different angles, chain movement actions before capturing:
47
-
48
- ```
49
- screenshot with actions:
50
- 1. moveForward (holdMs: 1000) — walk 6m north
51
- 2. moveRight (holdMs: 500) — strafe 3m east
52
- → captures screenshot from the new position
53
- ```
41
+ Movement speed is ~6 meters/second. Default `holdMs` is 300ms (~1.8 meters).
54
42
 
55
43
  ### Camera rotation
56
44
 
57
- Use look actions to rotate the camera view:
45
+ Use look actions to rotate the camera view (arrow key holds):
58
46
 
59
47
  | Action | Effect |
60
48
  |--------|--------|
@@ -63,7 +51,7 @@ Use look actions to rotate the camera view:
63
51
  | `lookUp` | Tilt camera up |
64
52
  | `lookDown` | Tilt camera down |
65
53
 
66
- Default rotation is 200 pixels of mouse drag. Use `dx`/`dy` for more or less.
54
+ Default rotation hold is 300ms. Use `holdMs` for more or less rotation.
67
55
 
68
56
  ## Interacting Before Capture
69
57
 
@@ -86,27 +74,14 @@ screenshot with actions:
86
74
  → captures the overhead editor view
87
75
  ```
88
76
 
89
- ## Visual Iteration Pattern
90
-
91
- When building or modifying a scene, use this loop:
77
+ ## Workflow
92
78
 
93
- 1. **Make code changes** (write to `src/index.ts`)
94
- 2. **Wait for hot reload** use `wait` action with ~2000ms
95
- 3. **Take screenshot** — see what changed
96
- 4. **Evaluate** — describe honestly: what works, what's wrong, what's missing
97
- 5. **Fix and repeat** — up to 5 iterations
79
+ 1. **Make all code changes** (write to `src/index.ts`)
80
+ 2. **Take one screenshot** with `wait: 2000` to let hot-reload settle
81
+ 3. **Evaluate** — describe honestly: what works, what's wrong
82
+ 4. **Fix if needed** — then take one more screenshot to confirm
98
83
 
99
- Example flow:
100
- ```
101
- 1. Write code to add a red cube at (8, 1, 8)
102
- 2. screenshot with actions: [wait 2000ms]
103
- → "I can see a red cube floating 1m above the ground at the center. It looks correct."
104
- 3. Write code to add a blue sphere next to it
105
- 4. screenshot with actions: [wait 2000ms]
106
- → "The blue sphere is there but it's intersecting the cube. Let me adjust the position."
107
- 5. Fix the position, screenshot again
108
- → "Both objects are now properly placed side by side."
109
- ```
84
+ Keep it to 1-2 screenshots per task. Each screenshot consumes significant tokens.
110
85
 
111
86
  ## Scene Layout Awareness
112
87
 
@@ -114,9 +89,8 @@ Example flow:
114
89
  - **Y is up**. Ground level is Y=0.
115
90
  - The avatar **spawns near the south-west corner** (low X, low Z).
116
91
  - Objects at the **center** of a 1×1 scene are at roughly (8, 0, 8).
117
- - The **minimap** in the top-left corner shows coordinates and a compass.
118
92
 
119
- For a 2×2 scene (32×32m), center is (16, 0, 16) and the avatar needs to walk ~14m north and east to reach it.
93
+ **WARNING:** If you see empty/gray space, "No scene", or no content you've walked outside the scene boundaries. STOP moving. Keep movements small (holdMs: 300).
120
94
 
121
95
  ## Troubleshooting
122
96
 
@@ -127,11 +101,12 @@ For a 2×2 scene (32×32m), center is (16, 0, 16) and the avatar needs to walk ~
127
101
  | Objects not visible | They may be behind the camera (south of avatar) — use `moveBack` or `lookLeft`/`lookRight` to find them |
128
102
  | Scene looks different after code change | Hot reload takes ~1-2s — add a `wait` action of 2000ms |
129
103
  | "No preview server running" | Start it with `/preview` first |
104
+ | Empty/gray space, no scene content | You've left the scene boundaries — stop moving |
130
105
 
131
106
  ## Tips
132
107
 
133
108
  - **First screenshot is slow** (~15s) because it launches a browser and enters the scene. After that, screenshots are instant.
134
109
  - **The browser persists** across all screenshot calls in the session — no repeated logins.
135
- - **Don't over-move** — keep `holdMs` values short (300-800ms) to avoid overshooting targets.
110
+ - **Keep movements small** — use `holdMs: 300` (default) to avoid walking out of the scene.
136
111
  - **Hot reload** — after writing code, wait ~2s before screenshotting to let the scene update.
137
112
  - **Describe honestly** — if something looks wrong, say so. The user trusts your visual assessment.