Files
FreeCADWasmDev/docs/current/web-commandfeat-remaining-boundaries.md
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

3.2 KiB

Web CommandFeat remaining implementation boundaries

Batch: d937ec7eef2892d2286973f5

Implementation remains incomplete for all three selected records. No executable registration was added. No builds, tests, browser validation, acceptance runs, benchmarks, or historical reconciliation were performed.

Retained desktop source decisions

  • Web:desktop:Std_Recompute: the complete activation body at freecad-source/src/Gui/CommandFeat.cpp:62 only calls Q_UNUSED(iMsg). Preserve that exact desktop behavior; do not substitute document recomputation. Its constructor and activation prerequisites still need a bounded source anchor.
  • Web:desktop:Std_RandomColor: at CommandFeat.cpp:84, each selected object's view provider receives an independently sampled color from CET::R1. Links enable OverrideMaterial and update ShapeMaterial diffuse color. Other providers update a material or material-list ShapeAppearance property when present. Selected parts and document object groups also color their immediate group children. The operation opens and commits a command transaction. Activation requires a nonempty selection. Preserve these material, group, palette, and transaction semantics in the document/view owner.
  • Web:desktop:Std_SendToPythonConsole: at CommandFeat.cpp:224, selection uses all documents and old-style element resolution. Empty selection or a missing first object returns without action. The command executes the desktop cleanup statement for doc,lnk,obj,shp,sub,subs, binds the first object's document, resolves links through lnk.getLinkedObject(), and binds obj. For a geometric object with a geometry property, it binds that actual property as shp, the first selected subobject as sub, and multiple subobjects as subs. It then activates and focuses the Python console. These must be live native bindings in the console interpreter, not serialized object names or markers.

Remaining patch anchors

The four permitted supplemental windows were consumed by the bounded packet summary, CommandFeat.cpp:62 (100 lines), CommandFeat.cpp:224 (100 lines), and WebRuntimeProbe.cpp:45 (100 lines). This is a source-window limit, not evidence that the business implementation is absent.

The inspected Web dispatcher parses record names, delegates document commands to executeDocumentCommand, and ends with that same delegation. Adding names to its desktop list alone would instead direct them to executeWebMacroCommand and does not establish the required selected-command behavior.

Next packet should supply exact anchors for the existing document command owner, native view-material storage and display propagation, console interpreter and mounted focus handling, and selected-command entries in the actual JSON catalogs used by tools/generate_feature_capability_registry.py. Include the generator's invocation contract. Reuse the desktop decisions above without rereading their unchanged windows. Implement in those owners, connect the Web adapter and mounted console where needed, and register only the resulting executable behavior. The outer pipeline retains ownership of incremental build, sync, and route receipts; those receipts do not constitute business acceptance.