sceneview-mcp 3.5.3 → 3.5.5
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 +10 -10
- package/dist/advanced-guides.js +22 -22
- package/dist/debug-issue.js +18 -20
- package/dist/extra-guides.js +6 -6
- package/dist/generate-scene.js +5 -5
- package/dist/guides.js +21 -22
- package/dist/index.js +16 -16
- package/dist/issues.js +7 -7
- package/dist/migrate-code.js +19 -25
- package/dist/migration.js +25 -25
- package/dist/platform-setup.js +14 -15
- package/dist/samples.js +92 -92
- package/dist/validator.js +10 -11
- package/llms.txt +268 -78
- package/package.json +2 -2
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
|
-
[/\
|
|
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 `
|
|
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("
|
|
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 `
|
|
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("
|
|
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)?
|
|
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: "`
|
|
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
|
-
//
|
|
429
|
-
const sceneCallLines = findLines(lines, /\b(AR)?
|
|
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: "`
|
|
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
|
}
|