tasks.md 3.5 KB

1. Change Contract

  • 1.1 Create the add-gnm-head-component OpenSpec proposal, design, requirements, impact, rollback plan, and implementation checklist.

2. GNM Numerical Core

  • 2.1 Port the official browser-side GNM container parser, forward pass, and abortable progress loader.
  • 2.2 Port the official browser-side semantic sampler with deterministic seeding and abortable loading.
  • 2.3 Add TypeScript declarations and the upstream Apache-2.0 third-party notice.

3. Three.js Runtime and Vue Component

  • 3.1 Build a disposable Three.js head runtime using the GNM topology, dynamic positions, normals, component visibility, and configurable material.
  • 3.2 Add a Vue/tresjs wrapper that mounts a lightweight loading placeholder, stages the head and sampler requests, cancels stale requests, and applies latest props.
  • 3.3 Expose compact deterministic identity, expression, pose, material, resource, and non-skin visibility props without adding scene-level behavior.

4. Service Integration

  • 4.1 Register matching defaults, object transform, description, and config controls in src/dcsConfig.ts.
  • 4.2 Add a dedicated preview asset without changing the generic preview views.

5. Validation

  • 5.1 Review the changed JavaScript, TypeScript, Vue, and registry sources and inspect the final diff.
  • 5.2 Confirm no renderer, camera, controls, background, environment, lights, DOM/XR panel, or generic preview changes were added.
  • 5.3 Record that build/debug validation was skipped because the project rule forbids automatic execution.

Validation record: the component directory passes targeted ESLint, both third-party JavaScript ports pass node --check, the new dcsConfig.ts lines introduce no lint errors, the SVG is structurally checked, and git diff --check passes. Build, dev server, preview server, and browser debugging were not run in accordance with the project rule.

6. Loading and Editor-Control Revision

  • 6.1 Replace the configurable loading-delay contract with a component-local Three.js loading placeholder that preserves non-blocking remote component import. (Verifiable: proposal, design, and requirements no longer expose loadDelayMs and explicitly require mount-time loading feedback.)
  • 6.2 Add and dispose a lightweight progress placeholder, start the head request after mount without a public delay prop, and keep staged sampler loading and abort/generation guards. (Verifiable: the placeholder exists before the head runtime, follows head download progress, and is removed when the head becomes ready.)
  • 6.3 Set identity/expression defaults to 0.58/0.68, remove skin visibility, and replace whole-head opacity with skin-only opacity in props, runtime materials, defaults, and dcsConfig.ts. (Verifiable: all integration layers expose matching fields and non-skin anatomy remains opaque.)
  • 6.4 Review the revised Vue, TypeScript, registry, and OpenSpec sources and record allowed static validation while continuing to skip build/debug commands. (Verifiable: targeted lint and diff checks pass and generic preview files remain unchanged.)

Revision validation record: the revised component directory passes targeted ESLint; the ported JavaScript files pass node --check; the preview SVG passes xmllint; the new registry lines introduce no lint errors; git diff --check passes; and both generic preview views remain unchanged. Build, dev server, preview server, and browser debugging remain skipped under the project rule.