Phase 1 of SF #795 (JSON Note umbrella). Adds OP_NOTEJSON=3 to note.h's noteCommands enum, wires it through trknote.c's DrawNote/DeleteNote/WriteNote/ReadTrackNote/DescribeNote/CmdNote/InitTrkNote (same pattern as the existing OP_NOTETEXT/OP_NOTELINK/OP_NOTEFILE), and adds a new app/bin/jsonnoteui.c editor dialog modeled on textnoteui.c (PD_TEXT body) + filenoteui.c (PD_BUTTON Validate/Format pair, block-save-on-invalid pattern already established for filenoteui.c's I_PATH field). Uses the already-linked cJSON library (cJSON_Parse/cJSON_Print, same as manifest.c's existing background-image-manifest round-trip). New distinct icon (toolbar SVG + on-canvas PNG glyph), matching every other note type's two-asset pattern.
Requires XTRKCAD_PARAMVERSION 13 (already on git GTK3V2MAIN via Layer Groups' merged PRs; the Hg side of this branch forks from the Layer Groups Hg branch tip bug-789-layergroups-docs-consistency-gtk3, not Hg's own GTK3V2MAIN, which is still at 12) -- verified a version bump is required here: ReadTrackNote()'s default case is CHECKMSG(FALSE,...) which expands to AbortProg(), a hard crash, not a graceful decline, for any pre-patch binary opening a file with an op=3 note if the file's declared VERSION doesn't trip the existing upgrade-prompt check first.
Full detail: .claude/json-note-implementation-plan-2026-09-15-v1.md section 1.
Anonymous
Phase 1 implemented and merged to git GTK3V2MAIN (PR #201, commit d1939b16). Hg bug branch bug-796-json-note-phase1-gtk3 pushed to SF (forked from the Layer Groups Hg branch tip per the PARAMVERSION-13 dependency noted in the ticket description).
Includes the native OP_NOTEJSON type, trknote.c wiring, jsonnoteui.c editor dialog (Validate/Format buttons, block-on-invalid-JSON, block-on-oversized-body), new toolbar/canvas icon assets, and a getargstest CMocka unit test covering the ConvertToEscapedText/GetArgs quote-doubling round trip. Live-tested interactively (create/save/reload, Validate/Format, Help button, toolbar + menu entry points).
Full CI green on all platforms (Linux/macOS/Windows/ARM64, sanitizers, valgrind, cppcheck, regression suites). Cannot merge into Hg GTK3V2MAIN mainline yet -- blocked on Layer Groups' own Hg branch (bug-789-layergroups-docs-consistency-gtk3) merging first, since this branch forks from that tip for the PARAMVERSION 13 bump. Setting needs-review in the meantime.
Remaining JSON Note scope (per-kind schemas, MCP refactor, NYE layout migration, native Notes Report, MCP write_notes_report, Reports Save JSON/Markdown export) tracked under umbrella ticket #795, not started yet.