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.