sceneview-mcp 3.5.4 → 3.6.0

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/dist/validator.js CHANGED
@@ -180,8 +180,7 @@ const RULES = [
180
180
  check(code, lines) {
181
181
  const issues = [];
182
182
  const renames = [
183
- [/\bSceneView\s*\(/, "`SceneView(…)` → renamed to `Scene(…)` in 3.0"],
184
- [/\bArSceneView\s*\(/, "`ArSceneView(…)` → renamed to `ARScene(…)` in 3.0"],
183
+ [/\bArSceneView\s*\(/, "`ArSceneView(…)` → renamed to `ARSceneView(…)` in 3.0"],
185
184
  [/\bPlacementNode\b/, "`PlacementNode` removed → use `AnchorNode` + `HitResultNode` in 3.0"],
186
185
  [/\bTransformableNode\b/, "`TransformableNode` removed → set `isEditable = true` on `ModelNode` in 3.0"],
187
186
  [/\bViewRenderable\b/, "`ViewRenderable` removed → use `ViewNode` with a `@Composable` content lambda in 3.0"],
@@ -211,7 +210,7 @@ const RULES = [
211
210
  issues.push({
212
211
  severity: "error",
213
212
  rule: "api/fog-node-missing-view",
214
- message: "`FogNode` requires a `view` parameter — the same Filament View passed to `Scene(view = view)`. Create one with `val view = rememberView(engine)` and pass it to both `Scene` and `FogNode`.",
213
+ message: "`FogNode` requires a `view` parameter — the same Filament View passed to `SceneView(view = view)`. Create one with `val view = rememberView(engine)` and pass it to both `SceneView` and `FogNode`.",
215
214
  line,
216
215
  });
217
216
  }
@@ -274,11 +273,11 @@ const RULES = [
274
273
  if (!code.includes("DynamicSkyNode"))
275
274
  return issues;
276
275
  // If DynamicSkyNode appears but Scene { } doesn't, it's likely wrong
277
- if (!code.includes("Scene(") && !code.includes("Scene {")) {
276
+ if (!code.includes("SceneView(") && !code.includes("SceneView {")) {
278
277
  findLines(lines, /DynamicSkyNode\s*\(/).forEach((line) => issues.push({
279
278
  severity: "warning",
280
279
  rule: "api/dynamic-sky-outside-scene",
281
- message: "`DynamicSkyNode` is a `SceneScope` extension composable — it must be declared inside a `Scene { }` content block, not at the top level.",
280
+ message: "`DynamicSkyNode` is a `SceneScope` extension composable — it must be declared inside a `SceneView { }` content block, not at the top level.",
282
281
  line,
283
282
  }));
284
283
  }
@@ -306,7 +305,7 @@ const RULES = [
306
305
  severity: "warning",
307
306
  check(code, lines) {
308
307
  const issues = [];
309
- if (!code.includes("Scene(") && !code.includes("Scene {"))
308
+ if (!code.includes("SceneView(") && !code.includes("SceneView {"))
310
309
  return issues;
311
310
  findLines(lines, /\bnode\w*\.destroy\(\)|\.\bdestroy\(\)/).forEach((line) => {
312
311
  const lineContent = lines[line - 1];
@@ -404,14 +403,14 @@ const RULES = [
404
403
  severity: "info",
405
404
  check(code, lines) {
406
405
  const issues = [];
407
- const sceneLines = findLines(lines, /\b(AR)?Scene\s*\(/);
406
+ const sceneLines = findLines(lines, /\b(AR)?SceneView\s*\(/);
408
407
  sceneLines.forEach((line) => {
409
408
  const block = lines.slice(line - 1, line + 5).join("\n");
410
409
  if (!block.includes("fillMaxSize") && !block.includes("size") && !block.includes("height") && !block.includes("width")) {
411
410
  issues.push({
412
411
  severity: "info",
413
412
  rule: "api/scene-zero-size",
414
- message: "`Scene` / `ARScene` may have zero size without a `Modifier`. Add `modifier = Modifier.fillMaxSize()` to ensure the 3D view is visible.",
413
+ message: "`SceneView` / `ARSceneView` may have zero size without a `Modifier`. Add `modifier = Modifier.fillMaxSize()` to ensure the 3D view is visible.",
415
414
  line,
416
415
  });
417
416
  }
@@ -425,8 +424,8 @@ const RULES = [
425
424
  severity: "error",
426
425
  check(code, lines) {
427
426
  const issues = [];
428
- // Scene( or ARScene( without engine = somewhere nearby
429
- const sceneCallLines = findLines(lines, /\b(AR)?Scene\s*\(/);
427
+ // SceneView( or ARSceneView( without engine = somewhere nearby
428
+ const sceneCallLines = findLines(lines, /\b(AR)?SceneView\s*\(/);
430
429
  sceneCallLines.forEach((line) => {
431
430
  // Look at the next 10 lines for engine =
432
431
  const block = lines.slice(line - 1, line + 10).join("\n");
@@ -434,7 +433,7 @@ const RULES = [
434
433
  issues.push({
435
434
  severity: "error",
436
435
  rule: "api/scene-missing-engine",
437
- message: "`Scene` / `ARScene` requires an `engine` parameter. Create one with `val engine = rememberEngine()` and pass it: `Scene(engine = engine, …)`.",
436
+ message: "`SceneView` / `ARSceneView` requires an `engine` parameter. Create one with `val engine = rememberEngine()` and pass it: `SceneView(engine = engine, …)`.",
438
437
  line,
439
438
  });
440
439
  }