{ "batchId": "ba4cad68ea8ed95624783d80", "status": "partially_connected", "commands": { "Std_DlgMacroExecute": { "status": "implementation_ready", "next": "待用户使用", "behavior": "Mounted macro file list/read/save/run controls route through part.pythonFamilyBatch to the PartBox macro handler; OPFS files are restored into the WASM macro directory and native source results are persisted back to OPFS." }, "Std_DlgMacroExecuteDirect": { "status": "implementation_ready", "next": "待用户使用", "behavior": "The mounted editor source is compiled and executed in the current PartBox Python runtime; execution errors retain partial execution details and trigger active-document scene refresh." }, "Std_DlgMacroRecord": { "status": "partially_connected", "behavior": "Mounted start/stop/status/cancel controls manage a native recording session. Successful outer fc_web_dispatch_json requests in PartBox are captured and saved as executable Python calls to the same native dispatcher. Stopping saves the actual macro source to OPFS.", "remaining": "Commands executed through separate numeric C exports or other runtime owners do not pass through this capture hook and are not recorded. Complete command emission coverage before treating recording as fully connected.", "nextAnchors": [ "freecad-source/src/WebAssembly/FreeCADCoreProbe/WebMacroRecording.h:45", "web/src/part.worker.ts:15" ] }, "Std_MacroAttachDebugger": { "status": "partially_connected", "behavior": "React supplies host/port and attach/status operations. The PartBox handler calls debugpy.connect and reports is_client_connected; native Python import and connection errors are preserved.", "remaining": "The supplied desktop RemoteDebugger backend imports FreeCADGui/PySide and starts an external Python adapter. This was replaced at the dialog boundary with a direct debugpy connection, but availability of debugpy and a WASM-compatible socket transport remains unresolved. A Qt-only fallback is not used.", "nextAnchors": [ "freecad-source/src/Gui/RemoteDebugger.py:63", "freecad-source/src/WebAssembly/FreeCADCoreProbe/WebMacroCommands.h:80" ] } }, "nativeOwner": "FreeCADWebPartBoxProbe", "changedNativeSources": [ "freecad-source/src/WebAssembly/FreeCADCoreProbe/PartBoxProbe.cpp", "freecad-source/src/WebAssembly/FreeCADCoreProbe/WebMacroCommands.h", "freecad-source/src/WebAssembly/FreeCADCoreProbe/WebMacroRecording.h", "freecad-source/src/WebAssembly/FreeCADCoreProbe/NativeDocumentView.h" ], "changedApplicationSources": [ "web/src/web-desktop-adapter.ts", "web/src/workbench-shell.tsx", "web/src/storage.ts" ], "outerPipeline": "Incremental compilation must include the changed PartBox owner, not only FreeCADWebWebRuntimeProbe; outer pipeline owns linking, resource sync and route generation." }