Files
workinf_Blender_Wasm/docs/status/M10-12.md
mes123456 0fe8d2bb56
Some checks are pending
M6 deployable RC / quick (push) Waiting to run
M6 deployable RC / chromium (push) Blocked by required conditions
M6 deployable RC / release (push) Blocked by required conditions
Advance M8-M11 parity workflows
2026-08-17 04:37:07 -04:00

2.3 KiB

M10-12 Status

status: done task: One NLA edit operator with Main transaction, undo/redo and save/reopen updated: 2026-08-16 America/New_York

Scope

The bounded moveNLAStrip command moves one existing Action Clip while preserving its duration and time mapping. It requires the current baseRevision; stale commands return REVISION_CONFLICT before Main mutation. The Worker derives a candidate stack through the pure protocol helper, validates Action/path/range/overlap gates, and commits it through one authoritative Main setNLAStack transaction. The native history entry therefore covers the exact pre-edit .blend bytes.

This task intentionally opens only the move operator. Create/remove/resize/active, multi-track blending, Transition/Meta/Sound, NLA UI and export remain blocked or planned.

Evidence

  • Pure contract: web/protocol/nla.ts and web/tests/unit/nla.test.mjs, 2/2 tests. The source stack is not mutated; overlap, unknown identity and frame budget errors are deterministic.
  • WEB_TEST_PORT=5528 npm --prefix web run test:nla-operator: unit 2/2 and Chromium 1/1 passed. The browser path proves stale revision rejection, Main move 20..40 -> 5..25, monotonic revision/delta, undo to 20..40, redo to 5..25, save/reopen at 5..25, and native frame-10 evaluation at X=2.5.
  • npm --prefix web run typecheck, npm --prefix web run lint, and git diff --check: passed.

Rollback

Remove moveNLAStrip from web/protocol/nla.ts and web/protocol/web-engine.ts, remove the Worker conversion, unit/E2E tests and package command, and delete this status file. Restore the M10 count to 11/15. Keep M10-11 read-only evaluation and the pre-existing whole-stack setNLAStack authoring path.

Implementation Hashes

  • web/protocol/nla.ts: 03d5abce5cb2f0a3a38e42eedbced7f4de6e2052d18e53a3dcde3b3ca1e6020d
  • web/protocol/web-engine.ts: 48f2290ead27aeda1f17b279f01ae278776b50b4cb4de065d94b0e1d44717dbb
  • web/app/src/workers/web-engine.worker.ts: 4ccad87c1619db8e39d2855ebca9918883484ce3e5dfc8a325ccee9a8220397c
  • web/tests/unit/nla.test.mjs: d8bac2dd3e4ec1a1342de7c7401a51beb9879ea5ba2b34df7d615ae0449081a7
  • web/tests/e2e/nla-operator.spec.ts: 1658d52eb0b8cf329f73be552e9b2649ed6dc96b21edb48ade9dd4a725a37ae0
  • web/package.json: e9d5c6e4f7132921faac8ecbee40215098497fe374d56309f2c76fab152c33d6