{"record":{"id":"2a214632932342d0","repo":"moeru-ai/airi","slug":"godot-stage-currently-supports-vrm-models-only","errorCode":null,"errorMessage":"Godot Stage currently supports VRM models only.","messagePattern":"Godot Stage currently supports VRM models only\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"apps/stage-tamagotchi/src/renderer/pages/settings/models/godot-scene-input.ts","lineNumber":36,"sourceCode":"export function isGodotSceneInputSupportedDisplayModel(model: DisplayModel): boolean {\n  return model.format === DisplayModelFormat.VRM\n}\n\n/**\n * Rejects display models that the Godot stage G1.1 scene input path cannot load.\n *\n * Use when:\n * - A renderer side-effect is about to read model bytes and invoke Electron main\n *\n * Expects:\n * - The display model has already been resolved from the selected model id\n *\n * Returns:\n * - Nothing when the model is supported\n */\nexport function assertGodotSceneInputSupportedDisplayModel(model: DisplayModel): void {\n  if (!isGodotSceneInputSupportedDisplayModel(model))\n    throw new Error('Godot Stage currently supports VRM models only.')\n}\n","sourceCodeStart":18,"sourceCodeEnd":38,"githubUrl":"https://github.com/moeru-ai/airi/blob/27111382b4a79a7e983289d6e983a06af185ed0f/apps/stage-tamagotchi/src/renderer/pages/settings/models/godot-scene-input.ts#L18-L38","documentation":"Thrown by assertGodotSceneInputSupportedDisplayModel when the resolved DisplayModel's format is not DisplayModelFormat.VRM. The Godot stage scene input path (G1.1 baseline) only loads VRM models; Live2D, MMD/PMX, or unknown formats are rejected before model bytes are read and sent to Electron main.","triggerScenarios":"User selected a Live2D or MMD display model and switched to the Godot stage renderer; a display model resolved to a non-VRM format; the format enum on the stored model is missing or unknown.","commonSituations":"Mixing renderer backends — Godot stage selected while a Live2D model is active; imported a .pmx/.pmd that the display-model store classified as MMD; model record missing format field defaulting to a non-VRM value.","solutions":["Switch the active display model to a VRM (.vrm) model before enabling the Godot stage.","If a VRM was intended, re-import it so the store classifies format as DisplayModelFormat.VRM.","Use the Three.js/pixi stage renderer for Live2D/MMD models.","Gate the Godot-stage UI so non-VRM models cannot be selected for it."],"exampleFix":"// before\nassertGodotSceneInputSupportedDisplayModel(model)\n\n// after\nif (!isGodotSceneInputSupportedDisplayModel(model)) {\n  // disable Godot stage input, surface a user-facing message\n  return\n}","handlingStrategy":"type-guard","validationCode":"import { DisplayModelFormat } from '@proj-airi/stage-ui/stores/display-models'\nfunction canUseGodotSceneInput(model: DisplayModel): boolean {\n  return model.format === DisplayModelFormat.VRM\n}","typeGuard":"import { DisplayModelFormat } from '@proj-airi/stage-ui/stores/display-models'\nfunction isVrmDisplayModel(model: DisplayModel): boolean {\n  return model.format === DisplayModelFormat.VRM\n}","tryCatchPattern":"try {\n  assertGodotSceneInputSupportedDisplayModel(model)\n} catch (e) {\n  // disable Godot stage input, show 'VRM only' message, keep current renderer\n}","preventionTips":["Filter the model picker to VRM-only when Godot stage is the active renderer.","Call isGodotSceneInputSupportedDisplayModel (non-throwing) to drive UI gating.","Document that Live2D/MMD require a different stage renderer."],"tags":["godot","display-model","vrm","validation","format"],"backgroundTag":null,"analyzedSha":"27111382b4a79a7e983289d6e983a06af185ed0f","analyzedAt":"2026-08-12T18:33:34.132Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}