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 atfreecad-source/src/Gui/CommandFeat.cpp:62only callsQ_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: atCommandFeat.cpp:84, each selected object's view provider receives an independently sampled color fromCET::R1. Links enableOverrideMaterialand updateShapeMaterialdiffuse color. Other providers update a material or material-listShapeAppearanceproperty 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: atCommandFeat.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 fordoc,lnk,obj,shp,sub,subs, binds the first object's document, resolves links throughlnk.getLinkedObject(), and bindsobj. For a geometric object with a geometry property, it binds that actual property asshp, the first selected subobject assub, and multiple subobjects assubs. 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.