Skip to content

菜单层级地图(自动生成)

scripts/gen-menu-map.mjsfrontend/src/menus/**/*.ts 自动提取,勿手改。 重新生成:node scripts/gen-menu-map.mjs(仓库根目录)。 本文档 menu-map.md 为菜单 UI 入口的机器生成事实源(ADR-218),静态归此、动态归对应知识卡。

覆盖三部分静态菜单骨架:

  1. Schema 树(ADR-093 声明式):build*Schema(): MenuNode[] 的层级(folder 嵌套 children)。
  2. 根导航 itemsitems.push({...}) / items: [...] 的 PopupRow(target 路由)。
  3. target 路由映射case '<target>': return build*Level()

⚠ 局限:renderCustom/custom 内部运行时生成的行、命令式 slideRow 行无法静态提取。


入口一览(怎么打开)

入口函数文件
showPendingBubble()diagnostic-chat.ts
buildCloudLevel()env-cloud-levels.ts
buildExperimentalLevel()env-experimental-levels.ts
buildFogLevel()env-fog-levels.ts
buildGroundLevel()env-ground-levels.ts
buildEnvLevel()env-menu.ts
buildParticleLevel()env-menu.ts
buildPresetLevel()env-preset-levels.ts
buildShadowLevel()env-shadow-levels.ts
buildSkyLevel()env-sky-levels.ts
buildWaterLevel()env-water-levels.ts
buildWindLevel()env-wind-levels.ts
showModelPopup()library-browse.ts
buildModelFormationLevel()library-core.ts
buildCameraLevel()motion-camera-levels.ts
buildVirtualSkirtLevel()motion-cloth-levels.ts
buildPlaybackSpeedLevel()motion-detail-ui.ts
buildGazeTrackingLevel()motion-gaze-levels.ts
buildAdvancedBoneOverrideLevel()motion-override-levels.ts
buildPoseStudioLevel()motion-pose-levels.ts
buildProcLibraryLevel()motion-procmotion-levels.ts
buildMotionRootLevel()motion-root-ui.ts
buildRetargetLevel()motion-root-ui.ts
buildDragModeLevel()scene-drag-levels.ts
buildPhysicsLevel()scene-physics-levels.ts
buildWasmPhysicsLevel()scene-physics-levels.ts
buildPhysicsDebugLevel()scene-physics-levels.ts
buildPresetScenesLevel()scene-render-levels.ts
buildPostProcessLevel()scene-render-levels.ts
buildPresetsLevel()scene-render-presets.ts
buildStageLevel()scene-stage-levels.ts
buildStageLightLevel()scene-stage-lights.ts
buildSettingsLanguageLevel()settings-language.ts

快捷键(shortcut-app.ts)

idlabel默认键Ctrl分组
toggle:modelshortcuts.label.modelsDigit1shortcuts.group.popupNav
toggle:motionshortcuts.label.motionDigit2shortcuts.group.popupNav
toggle:sceneshortcuts.label.sceneDigit3shortcuts.group.popupNav
toggle:envshortcuts.label.envDigit4shortcuts.group.popupNav
toggle:settingsshortcuts.label.settingsDigit5shortcuts.group.popupNav
toggle:plazashortcuts.label.plazaDigit7shortcuts.group.popupNav
toggle:assistantshortcuts.label.assistantDigit8shortcuts.group.popupNav
playback:toggleshortcuts.label.playPauseSpaceshortcuts.group.playbackControl
global:closeshortcuts.label.closePopupEscapeshortcuts.group.global
playback:seek-backshortcuts.label.seekBackArrowLeftshortcuts.group.playbackControl
playback:seek-forwardshortcuts.label.seekForwardArrowRightshortcuts.group.playbackControl
screenshot:currentshortcuts.label.screenshotF2shortcuts.group.screenshot
motion:undoshortcuts.label.motionUndoKeyZshortcuts.group.motionUndoRedo
motion:redoshortcuts.label.motionRedoKeyZshortcuts.group.motionUndoRedo

diagnostic-chat.ts

Schema: buildChatSchema()

  • custom diagnostic:chat · —

diagnostic-config.ts

Schema: buildConfigSchema()

  • custom diagnostic:config · —

diagnostic-session.ts

Schema: buildSessionsSchema()

  • custom diagnostic:sessions · —

env-menu.ts

导航 items(items.push)

kindlabelicontarget
folderenv.presetslucide:bookmarkenv:presets
divider
folderenv.skylucide:sunenv:sky
folderenv.particlelucide:sparklesenv:particle
folderenv.windlucide:windenv:wind
folderenv.foglucide:cloud-fogenv:fog
folderenv.shadowlucide:umbrellaenv:shadow
folderenv.experimentallucide:flask-conicalenv:experimental
folderscene.postProcesslucide:wand-2env:postprocess
folderenv.cloudlucide:cloudenv:cloud

target 路由

targetbuilder
env:skybuildSkyLevel
env:particlebuildParticleLevel
env:windbuildWindLevel
env:fogbuildFogLevel
env:shadowbuildShadowLevel
env:cloudbuildCloudLevel
env:experimentalbuildExperimentalLevel
env:presetsbuildPresetLevel
env:postprocessbuildPostProcessLevel

Schema: buildParticleSchema()

  • custom env:particle:type · —
  • slider env:particle:density · env.density lucide:layers
  • slider env:particle:size · env.size lucide:maximize
  • slider env:particle:speed · env.speed lucide:gauge
  • toggle env:particle:splash · env.splash lucide:droplets
  • custom env:particle:texture · —

library-core.ts

导航 items(items.push)

kindlabelicontarget
actioninst.nameradioIconscene:${id}
divider
folderscene.formationlucide:layout-gridmodels:formation
folderlibrary.loadModellucide:foldermodels:browse
actionlibrary.importFilelucide:file-plusmodels:import-file
actionlibrary.rescanlucide:refresh-cwmodels:rescan
folderlibrary.recentlucide:clock__recent__
folderlibrary.tagslucide:tag__tags__

model-detail.ts

Schema: buildOpenWithSchema()

  • custom open-with:root · —

Schema: buildModelSchema()

  • custom model:main · —

Schema: buildModelInfoSchema()

  • custom model-info:root · —

Schema: buildModelTagsSchema()

  • custom model-tags:fav · —
  • custom model-tags:picker · —

Schema: buildMorphPreviewSchema()

  • custom morph-preview:root · —

Schema: buildBoneHierarchySchema()

  • custom bone-hierarchy:root · —

model-material.ts

Schema: buildMatRootSchema()

  • custom mat-root:groups · —
  • custom mat-root:param-card · —
  • custom mat-root:unlit-fallback · —
  • custom mat-root:reset · —

motion-binding-ui.ts

Schema: buildActionBindingSchema()

  • custom binding:pose · —
  • custom binding:assignment · —
  • custom binding:tools · —

motion-camera-levels.ts

Schema: buildCameraSchema()

  • custom camera:main · —
  • custom camera:behavior · —
  • custom camera:behavior-na · —
  • custom camera:auto-interval · —
  • custom camera:params · —
  • custom camera:vmd · —
  • custom camera:common · —
  • custom camera:lens · —

motion-cloth-levels.ts

Schema: buildVirtualSkirtSchema()

  • custom cloth:toggle · —
  • custom cloth:params · —
  • custom cloth:status · —

motion-detail-ui.ts

Schema: buildPlaybackSpeedSchema()

  • custom playback-speed:slider · —

motion-override-levels.ts

Schema: buildBoneOverrideSchema()

  • custom override:empty · —

motion-popup.ts

target 路由

targetbuilder
motion:camerabuildCameraLevel
motion:playbackSpeedbuildPlaybackSpeedLevel
motion:proc-librarybuildProcLibraryLevel
motion:gazebuildGazeTrackingLevel
motion:poseStudiobuildPoseStudioLevel
motion:retargetbuildRetargetLevel

motion-pose-levels.ts

Schema: buildPoseStudioSchema()

  • custom pose:empty · —

motion-procmotion-levels.ts

导航 items(items.push)

kindlabelicontarget
actionPROC_LABELSisNone

Schema: buildProcMotionSchema()

  • custom procmotion:main · —
  • custom procmotion:presets · —
  • custom procmotion:params · —
  • folder procmotion:bone-micro · motion.boneMicro lucide:activity
    • custom procmotion:bone-micro-content · —
  • custom procmotion:advanced · —

motion-root-ui.ts

导航 items(items.push)

kindlabelicontarget
sectionTitlemotion.section.loadedMotion
actionmotion.section.loadedMotionEmptylucide:inbox
actionmotion.vmdNameradioIcon__motion_detail__:${motion.id ?? ''}
divider
sectionTitlemotion.section.loadedProc
action_procLabelradioIconisNone
divider
sectionTitlemotion.section.library
actionmotion.browseMotionLibrarylucide:folder-search__scene_motion_browse__
foldermotion.procMotionlucide:wand-sparklesmotion:proc-library
actiongetAudioNamelucide:music__music_browse__
divider
sectionTitlemotion.section.more
foldermotion.cameralucide:videomotion:camera
foldermotion.poseStudio.titlelucide:cameramotion:poseStudio
foldermotion.gazeTrackinglucide:eyemotion:gaze
foldermotion.externalImportlucide:uploadmotion:retarget

根级 items(items: [...])

kindlabelicontarget
actionmotion.retarget.mixamolucide:user__retarget_mixamo__
actionmotion.retarget.vrmlucide:user__retarget_vrm__
actionmotion.retarget.customMaplucide:edit__retarget_custom__

outfit-ui.ts

Schema: buildOutfitSchema()

  • custom outfit:main · —

scene-menu.ts

导航 items(items.push)

kindlabelicontarget
folderscene.stageLightlucide:lightbulbscene:stageLight
folderenv.groundlucide:squarescene:ground
folderenv.waterlucide:wavesscene:water
folderscene.dragModelucide:move-3dscene:dragMode
folderscene.stagelucide:monitorscene:render:stage
folderscene.physicslucide:atomscene:physics
folderscene.presetSceneslucide:bookmarkscene:presets
folderscene.mirrorlucide:scanscene:mirror
modeSliderenv.reflectionQualitylucide:monitor
modeSliderenv.reflectionModelucide:layers

target 路由

targetbuilder
scene:presetsbuildPresetScenesLevel
scene:render:stagebuildStageLevel
scene:stageLightbuildStageLightLevel
scene:groundbuildGroundLevel
scene:waterbuildWaterLevel
scene:dragModebuildDragModeLevel
scene:physicsbuildPhysicsLevel
scene:mirrorbuildMirrorLevel
physics:wasmbuildWasmPhysicsLevel

scene-physics-levels.ts

Schema: buildWasmPhysicsSchema()

  • custom wasm:global · —
  • custom wasm:ground · —

Schema: buildPhysicsDebugSchema()

  • custom debug:wireframe · —

scene-render-levels.ts

Schema: buildPostProcessCoreSchema()

  • folder postprocess:bloom · scene.bloom lucide:sun
    • slider postprocess:bloom:weight · scene.intensity lucide:sun
    • slider postprocess:bloom:threshold · scene.threshold lucide:sliders
    • slider postprocess:bloom:kernel · scene.kernelSize lucide:circle
    • toggle postprocess:bloom:outline · scene.outline lucide:square
  • slider postprocess:vignette · scene.vignette lucide:circle-dot
  • slider postprocess:sharpen · scene.sharpen lucide:focus
  • folder postprocess:optical · scene.opticalEffects lucide:sparkles
    • slider postprocess:optical:grain · scene.grain lucide:grid-3x3
    • slider postprocess:optical:chromatic · scene.chromatic lucide:rainbow
    • slider postprocess:optical:glow · scene.glow lucide:sparkles
  • folder postprocess:env · scene.environmentEffects lucide:box
    • toggle postprocess:env:ssao · scene.ssao lucide:box
    • slider postprocess:env:ssao:strength · scene.ssaoStrength lucide:contrast
    • slider postprocess:env:ssao:radius · scene.ssaoRadius lucide:circle-dot
    • slider postprocess:env:ssao:samples · scene.ssaoSamples lucide:grid-3x3

Schema: buildPostProcessColorSchema()

  • folder postprocess:tonemapping · scene.toneMapping lucide:palette
    • custom postprocess:tonemapping:mode · —
    • slider postprocess:tonemapping:exposure · scene.exposure lucide:lightbulb
    • slider postprocess:tonemapping:contrast · scene.contrast lucide:contrast
    • toggle postprocess:tonemapping:cel · scene.celShading lucide:droplet
    • slider postprocess:tonemapping:cel-levels · scene.celColorLevels lucide:layers
    • slider postprocess:tonemapping:cel-edge-threshold · scene.celEdgeThreshold lucide:scan-line
    • slider postprocess:tonemapping:cel-edge-strength · scene.celEdgeStrength lucide:pen-line

scene-render-presets.ts

Schema: buildPresetsSchema()

  • custom presets:builtin · —
  • custom presets:save · —
  • custom presets:user · —

scene-stage-lights.ts

Schema: buildStageLightSchema()

  • custom light:presets · —
  • custom light:list · —
  • custom light:basic · —
  • custom light:cone · —
  • custom light:spot-params · —
  • custom light:point-params · —
  • custom light:dir-params · —
  • custom light:shadow · —
  • custom light:follow · —
  • custom light:transform · —
  • custom light:delete · —

settings-controls.ts

Schema: buildCameraSchema()

  • slider settings:perf:cam-sens · settings.perf.camSens lucide:move
  • custom settings:perf:cam-sens-hint · —
  • toggle settings:perf:invert-y · settings.perf.invertY lucide:flip-vertical
  • custom settings:perf:invert-y-hint · —
  • toggle settings:perf:auto-center · settings.perf.autoCenter lucide:crosshair
  • custom settings:perf:auto-center-hint · —

settings-diagnostic.ts

Schema: buildDiagnosticSchema()

  • custom diagnostic:panel · —

settings-graphics.ts

Schema: buildFrameQualitySchema()

  • toggle settings:graphics:frame-cap · settings.perf.frameCap lucide:monitor-check
  • custom settings:graphics:frame-cap-hint · —
  • slider settings:graphics:fps · settings.perf.fpsCap lucide:gauge
  • custom settings:graphics:fps-hint · —
  • slider settings:graphics:render-scale · settings.perf.renderScale lucide:scan
  • custom settings:graphics:render-scale-hint · —

Schema: buildEffectsSchema()

  • custom settings:graphics:toggles · —

Schema: buildPhysicsHudSchema()

  • toggle settings:graphics:default-physics · settings.perf.defaultPhysics lucide:atom
  • custom settings:graphics:default-physics-hint · —
  • toggle settings:graphics:show-fps-clock · settings.perf.showFpsClock lucide:gauge
  • toggle settings:graphics:show-runtime-badge · settings.perf.showRuntimeBadge lucide:cpu

settings-resources.ts

Schema: buildOverrideSchema()

  • custom resources:override · —

settings-system.ts

根级 items(items: [...])

kindlabelicontarget
actionsettings.software.notFoundalert-circle

Schema: buildCacheSchema()

  • custom system:cache · —

settings.ts

导航 items(items.push)

kindlabelicontarget
foldersettings.appearancelucide:paletteSETTINGS.APPEARANCE
foldersettings.graphicslucide:monitorSETTINGS.GRAPHICS
foldersettings.controlslucide:gamepad-2SETTINGS.CONTROLS
foldersettings.resourceslucide:folder-treeSETTINGS.RESOURCES
foldersettings.downloadslucide:downloadSETTINGS.DOWNLOADS
foldersettings.medialucide:clapperboardSETTINGS.MEDIA
foldersettings.systemlucide:settings-2SETTINGS.SYSTEM
foldersettings.aboutlucide:infoSETTINGS.ABOUT