)]}'
{
  "commit": "9b8d32fc1763a58751363c7120a67b2cb1df2b06",
  "tree": "9897fe356606ef21894c0e2accde5590f9c39e08",
  "parents": [
    "8a5e83fb56b87c61d30b2564d507bdbaa23653a4"
  ],
  "author": {
    "name": "Steve Golton",
    "email": "stevegolton@google.com",
    "time": "Thu Jun 25 16:55:55 2026 +0100"
  },
  "committer": {
    "name": "Steve Golton",
    "email": "stevegolton@google.com",
    "time": "Tue Sep 01 13:37:52 2026 +0100"
  },
  "message": "DNS: Spaghetti: Experimental node query builder\n\nNote: This is an experiment representing my vision for how a\nquery builder should be architected and how it should look and feel.\n\n- On-node configuration (no sidebar). This puts the node config right\n  where the graph is and avoids mousing around, while also making it\n  easier to read the graph as all the information is right there.\n- Immutable (immer managed) node configuration allowing for simple\n  and efficient undo/redo, and change detection.\n- JS-side column name and type interence.\n- JS-side materialization - no TP based serialization backend. Much\n  simpler and just as effective + node highlighting while it\u0027s\n  materializing.\n- SQL folding, resulting in much more readable SQL code generation.\n- Stable configs - when a node is detached from its parent, instead\n  of forgetting its internal config its retains it and matches back\n  columns via name when reconnected. If no such col name exists,\n  highlight the column field in yellow for easy debugging.\n- Node style:\n  - Color coded titlebars with always visible names. This makes the\n    graph much easier to interpret as there is a clear separation\n    between the node title and its content.\n  - Nodes are only draggable via their title bars, which allows for\n    draggable elements within the body of the node.\n  - Inputs and outputs are constrained to the left and right edges,\n    resulting in more pleasing connection beziers.\n- Very experimental LLM integration built in - allows asking LLMs to\n  view and build graphs for you.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4370fd8137d5f7e62c58451075a6e92457c2226b",
      "old_mode": 33188,
      "old_path": "ui/src/core/embedder/default_plugins.ts",
      "new_id": "ff2ef540be96f8f823f78d273a15008233539479",
      "new_mode": 33188,
      "new_path": "ui/src/core/embedder/default_plugins.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3c0fa18dea19d687f7183cb49cf49c9653337e4d",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/components/add_button.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "40f4341de76fd0c27eb34cb7164b399f8ee4a4ea",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/components/add_button.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "00f8a26c87072480e1493e0c1333a6234118d495",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/components/alias_tag.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e910b0f709e7b90c2f6b5e6775f560b8df86f01e",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/components/alias_tag.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d88819199dd8e86721b3445ed34b1c5faf282e25",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/components/card.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d4028f06495e19b3db83e679bbf7e2512e65d29d",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/components/card.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3882ce45a376b5a48e9e08e6aae4510736b43130",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/components/row.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "03a0e58ec0ad9dc06d92e42bf6f630117f7127b3",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/components/row.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e48822adbb8d2775c59f876936429303482ab9e0",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/components/stack.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d50391d1f46e3ebfcc7046ff02c6f5e008934dc4",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/components/stack.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6c40b989003b5bbc222518dd45b58f96d1c9e607",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/graph_model.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "34f398825a1e2baad68f82848841a09582bdc47e",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/graph_utils.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "accc16edbc875667b85d175eb3ee8005e9650318",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/graph_utils_unittest.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b0944203483becff028a12286fff5b0d7bc49d7d",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/index.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4c42303cad73403bc7b941bc9ed0f394ca580424",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/ir.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1f463676fa851e09df4932d990093faab865f052",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/ir_unittest.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "505670adddfc545958709ced8a9f99bf14e31491",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/materialization.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2e36be52c707faa0f630398cc46ee7487e282972",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/node_types.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a26a636bde11ed6ffa484f5fc806e2f6abd83237",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/chart.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d25e270d6c1186630935d11d27b024ed496c6646",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/chart.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2e8c246b67f7cd772d3bce94c495e21770bf01ca",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/drop.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "23cf3b3c66b7ce103978f53004730e43e1b034c8",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/extend.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e5380cc921f03da13b750cec64a1a1d68b945d4",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/extract_arg.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cfef91620204429b859dd49ccdbb9fdea7b2c8ca",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/filter.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a3a62ada91383b3ef3f63d0d6a408eea7a08b2f6",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/from.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dd541a0628476f4c5f14b0b5fcd40fbd950cb142",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/groupby.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e6997621ba0b04c5b297a688401755df478aaab",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/interval_intersect.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6dd8efa89eb7faea28b8147380c9ba41dfdab1f2",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/join.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a799720e39ec88d2f60ae921bed4892a7fa59c99",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/join.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8d1985d66459a3b2fb54994e37b96c6989ffffdd",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/limit.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bf411533da64b3bc281706e77668e2a762b49e9d",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/select.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5048e05ef53ececbf3cc904c7cc275519ca93168",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/sort.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6385c0e3fa062a233741713ebb6409c6446b1815",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/sql.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5f67a98a2277be7a6234125eb3a99df932865cbc",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/sql.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "52e1ecd8c25374af1be07169d3690b7654787534",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/time_range.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8427f92fdde9b3f58e7dfd9a9e8d34cef6f5629b",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes/union.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "be10894ec965def543ae0e6033b3385748e92fef",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/nodes_unittest.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "73dca2c3961ca27c98667fe29086ce1475cf164c",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/spaghetti_store_unittest.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c66d6813ec0a5555aee0152fd8d8f5017c4294b1",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/styles.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b246280d078ce81e501084e36f0e00f714edb4bd",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/cache_tab.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e21c8eac6e1c30a1eea6e316f09db17930e77dad",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/cache_tab.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6d50c39fcd07a2e27e06b50478b3f98ea359866b",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/columns_tab.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fb5be321339b9836fb722f60418202db6c76df4a",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/columns_tab.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1eab121bf0a5a3b3a82bba26b4ac2f778308f75f",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/graph_tab.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ad4fd47300d12f410ef62a70c35aa2b5c15a3e54",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/graph_tab.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8aa90e51395aaee2d7ccbcab3f5c9fd9953f6b21",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/materialization_tab.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "56aad5a41840249754f6dd63a053d1da4ec01c4e",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/materialization_tab.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9d19fda8c2ba636db94e449ec160c433f102bd3a",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/spaghetti_page.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a77a5b7556020f3061247e43823580e46b81d9cf",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/sql_tab.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "055d8740b1e57e71ec1f251389f24047757ad7f2",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/views/sql_tab.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "75d4dc401cdaf062c9e37b68a08448a68e1c89b0",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/widgets/column_picker.scss"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b9abb7044a0833804e6d6ca93ab20fc004bfee57",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.Spaghetti/widgets/column_picker.ts"
    },
    {
      "type": "modify",
      "old_id": "0d9832020318ff90b7f5b15d06bfe07174d63af1",
      "old_mode": 33188,
      "old_path": "ui/src/plugins/dev.perfetto.WidgetsPage/demos/nodegraph_demo.ts",
      "new_id": "735a8c763d1730c8dd36a8bc71f6106653ff3b8d",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/dev.perfetto.WidgetsPage/demos/nodegraph_demo.ts"
    },
    {
      "type": "modify",
      "old_id": "65b6cfd722749ce0d61aff7ce3c814711c75fa38",
      "old_mode": 33188,
      "old_path": "ui/src/widgets/nodegraph.scss",
      "new_id": "5df4634d6205cb0c61fb1057939660c56f1a876a",
      "new_mode": 33188,
      "new_path": "ui/src/widgets/nodegraph.scss"
    },
    {
      "type": "modify",
      "old_id": "7307392fb4d3743e0919aafa8634967806e917af",
      "old_mode": 33188,
      "old_path": "ui/src/widgets/nodegraph.ts",
      "new_id": "6038c65c69b97e36cdb7dd5c6b00d0f4700bf45e",
      "new_mode": 33188,
      "new_path": "ui/src/widgets/nodegraph.ts"
    },
    {
      "type": "modify",
      "old_id": "3474c884ef3b404104b5d281067214f04c46dc0f",
      "old_mode": 33188,
      "old_path": "ui/src/widgets/text_input.ts",
      "new_id": "77492387545f4ce72967150990eb5d19b04eb956",
      "new_mode": 33188,
      "new_path": "ui/src/widgets/text_input.ts"
    }
  ]
}
