Files
FreeCADWasmDev/docs/current/web-owner-standard-20260914.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.6 KiB

Owner-Bound Standard Commands

Implemented and published: Std_About, Std_AboutQt and Std_AnnotationLabel. Receipt: web-owner-standard-pipeline.json, three ready and zero missing. No automated tests, browser validation, acceptance or benchmarks ran.

Root Causes and Repairs

  • Existing NativeDocumentView/WebViewCommands already implemented the native operations, but an earlier branch in web-desktop-adapter returned a raw result. WebStandardTask consumes an owner/document-bound batch, so the UI could not show that result. Repeated native marker edits did not address the mismatch.
  • web-owner-standard-adapter now owns the three commands before older generic branches. It uses the current native owner, existing serialized Worker queues, strict standard response checks and the batch envelope expected by the UI.
  • document-view-routes.json has a standardCommands catalog shared by actual dispatch, capability discovery and packet build selection. Discovery checks the native functions, mounted task and owner-bound transport; no generic promotion of all Standard commands was added.
  • Workbench task mounting now accepts Web/Std canonical desktop ID prefixes and resets the task on document change. Clipboard errors are visible.
  • Annotation creation reuses CommandStd.cpp semantics: selected/picked anchor, App::AnnotationLabel, text and offset, and the existing native transaction. After creation the adapter requests one display refresh through the same owner. A refresh error stays attached to the successful create result, avoiding an invitation to repeat an already committed operation.
  • DrawStyle's action=read previously still created/updated WebViewState inside a transaction. That read path now returns before mutation. View loading and the standard task's initial display use this path instead of a GUI inspector.
  • Misleading duplicate web.standardCommand entries for these three commands were replaced by their actual Part view transport. Other commands are not claimed.

Existing FreeCAD/Qt runtime metadata and FreeCAD annotations were reused. No new modeling algorithm, OCCT kernel, native marker or Worker was created.

Recorded Costs

Step Seconds
Initial route generation 8.606
Initial packet preparation 0.732
Both owning targets: existing native changes published 57.632
Both targets after read-only refresh fix 61.041
Final packet preparation 0.768
Formal pipeline total 12.836
Pipeline capability generation 8.738
Pipeline native dependency check 0.212
Pipeline artifact sync 2.704
Frontend build 3.684
Public asset sync inside frontend build 2.190

All builds exited 0. Two native builds occurred because the transaction side effect was identified after the first build. The final pipeline's build step only generated the version file; no third native compilation/link occurred. Existing dependency libraries and caches were retained. For the next group, inspect read/write side effects before the first build to avoid that extra link.

Remaining Scope

Global inventory at publication: 1344/1451 routed, 107 implementation-required. This is not a user-verified completion percentage. The local batch covers only the three commands above; concurrent progress is not credited to this batch.

Python console interactive input/interruption, parameter dialogs and other unconnected commands remain separate work. This does not claim complete desktop GUI parity, unified native document ownership or all-module OCCT routing. The scheduler's independent batch and cooldown state were not overwritten.