diff --git a/investigation/ui-parity-matrix.md b/investigation/ui-parity-matrix.md index 55830cec..14e6c301 100644 --- a/investigation/ui-parity-matrix.md +++ b/investigation/ui-parity-matrix.md @@ -81,7 +81,7 @@ Statuses: | Composite card actions | Open Group, Pilot Once, Arm Schedule | Canvas and sidebar composite menus expose all three actions. Open Group is live-validated; nested creates, edits, deletes, edge changes, pilot, and arm commands use the daemon's authoritative `subGraphCommand` envelope; and Arm Schedule is disabled unless the decoded pilot state is exactly `piloted` | Validated | | Edge presentation | Kind style, fired state, cycle label | Project edges retain kind-specific styling, condition/fired labels, and selected emphasis; dense labels now shift vertically to avoid overlap with earlier labels. Full cycle-guard wording is still limited by the current edge model, and live evidence remains blocked | Partial | | Edge creation sheet | Kind/condition/transform/cycle controls with conditional validation | A guided native form provides endpoint selectors, kind/condition/transform controls, conditional fields, cycle guards, inline validation, keyboard traversal, and scrolling. The shared `NativeForms.zig` window now paints the dark panel/text theme (`Tokens.dialog_panel`/`dialog_body_text`/`dialog_error_text`/`dialog_field_background`) via `WM_ERASEBKGND`/`WM_CTLCOLORSTATIC`/`WM_CTLCOLOREDIT`, matching the rest of the app instead of default Win32 gray. Focused form coverage remains green; recap and live recapture remain incomplete, and automated/UIA screenshot evidence of the new theme is still pending | Partial | -| Node creation sheet | Loop-type teaching tiles, conditional fields, backend/model/branch pickers, recap, validation reason | A guided native form provides loop-type/backend/model choices, type-specific fields, explanatory copy, accessible checkboxes, inline validation, keyboard traversal, and scrolling while preserving hidden wire values. The loop-type field is now rendered as four owner-drawn "teaching tiles" (`NativeForms.zig`: `createTileButtons`/`drawTile`/`WM_DRAWITEM`) — rounded 9px cards with an accent color chip, bold title, and one-line description, mirroring `graphcode/Sources/Features/Project/LoopTypeChooser.swift`'s grid; tile accents are the exact macOS RGB values from `LoopTypeAppearance.swift` (turnBased #D55181, timeBased #C98500, goalBased #199E70, composite #9085E9) packed as correct COLORREFs via a new `tileColor` helper, with selection shown as an accent-tinted fill/border via `blendColor` and idle tiles a faint dark card, all on the shared dark panel background. The form now also exposes a native saved-template picker that filters through keyboard-standard ComboBox behavior and deterministically pre-fills the typed draft; loop context menus can save reusable templates and detach followed templates. Focused Zig and WindowsShell coverage pass, and the live gate reached and accepted the template picker before an unrelated workspace-toolbar fixture assertion; branch picker, recap, and complete live recapture remain incomplete | Partial | +| Node creation sheet | Loop-type teaching tiles, conditional fields, backend/model/branch pickers, recap, validation reason | A guided native form provides loop-type/backend/model choices, type-specific fields, explanatory copy, accessible checkboxes, inline validation, keyboard traversal, and scrolling while preserving hidden wire values. The loop-type field is now rendered as four owner-drawn "teaching tiles" (`NativeForms.zig`: `createTileButtons`/`drawTile`/`WM_DRAWITEM`) — rounded 9px cards with an accent color chip, bold title, and one-line description, mirroring `graphcode/Sources/Features/Project/LoopTypeChooser.swift`'s grid; tile accents are the exact macOS RGB values from `LoopTypeAppearance.swift` (turnBased #D55181, timeBased #C98500, goalBased #199E70, composite #9085E9) packed as correct COLORREFs via a new `tileColor` helper, with selection shown as an accent-tinted fill/border via `blendColor` and idle tiles a faint dark card, all on the shared dark panel background. The form now also exposes a native saved-template picker that filters through keyboard-standard ComboBox behavior and deterministically pre-fills the typed draft; loop context menus can save reusable templates and detach followed templates. Focused Zig and WindowsShell coverage pass, and the live gate reached and accepted the template picker before an unrelated workspace-toolbar fixture assertion; branch picker, recap, and complete live recapture remain incomplete. Prompt attachments are now supported in the draft: a native `IFileOpenDialog` multi-select picker (`FilePicker.c`) attaches supported files, `DraftAttachments.zig` validates extension/size and ingests them into a bounded per-draft staged directory, the dialog lists name/type/size with removal and `[image #N]` token renumbering, and `Wire.zig` encodes them as an always-present `[{"id":...,"path":...}]` array matching the exact Codable shape of macOS `GraphcodeKit/Sources/Domain/PromptAttachment.swift`, decoded end-to-end by a Swift interop test. Staged assets survive the saved-template round trip and are discarded on cancel or validation failure. Clipboard paste and drag-and-drop attachment are not implemented, and the live file-picker interaction is not exercised by the UI Automation gate (the gate opens the node form and closes it without invoking Attach), so picker behavior rests on unit coverage rather than live evidence | Partial | | Node update/rename | Dedicated rename prompt and safe typed updates | Rename retains its dedicated safe prompt. The canvas context menu now also exposes Edit Details..., backed by the typed `NativeForms.update` editor and authoritative `sendUpdateNodeForm` path for goal, predicate, polling/stall, metric, trigger/check, and model fields. Focused form/wire coverage passes; live editor evidence remains blocked | Partial | | Delete confirmations | Named object, consequences, safe default | Loop deletion names the loop and explains graph-connection removal. Edge deletion now names both endpoint loops and the connection kind, explains that the loops remain, re-resolves the stable edge after confirmation, and defaults to cancellation | Validated | | Canvas context menu | Folder actions on background; complete node/edge actions | Background retains Create Edge; node menus expose composite Open Group/Pilot/Arm actions plus Edit Details and no longer show the non-macOS Message/Memo actions. Focused menu coverage remains the available evidence; live context-menu/UIA evidence is still pending because the current live gate does not synthesize a right-click menu walkthrough | Partial |