)]}'
{
  "commit": "43e0aadc734358431b604c4ebf62269ef266c415",
  "tree": "f2a3219bbf171789c68f454acd07ad8b2040961a",
  "parents": [
    "e10ba16719d9b55295e9b950cfd647b536e3b735"
  ],
  "author": {
    "name": "gio",
    "email": "gio@v1.dodo.cloud",
    "time": "Fri Aug 01 16:17:27 2025 +0400"
  },
  "committer": {
    "name": "gio",
    "email": "gio@v1.dodo.cloud",
    "time": "Sat Aug 02 08:46:26 2025 +0000"
  },
  "message": "Canvas: Add VM/PROXY dev modes support\n\n- Update ServiceSchema to discriminate between VM and PROXY dev modes\n- Add DevDisabled, DevVM, DevProxy TypeScript types\n- Update ServiceData type in graph.ts for new dev structure\n- Update generateDodoConfig to handle both VM and PROXY modes\n- Update configToGraph to properly convert dev configurations\n- Maintain backward compatibility with existing dev configurations\n- Update UI and introduce two new DevVM and DevProxy components\n- Fetch user machine list from headscale API\n\nChange-Id: I8f9df4ab9bd34c049fffadb748115335e8260a54\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2db1e804d9502a013541b4747978880a5d6c21ea",
      "old_mode": 33188,
      "old_path": "apps/canvas/back/.env.dev",
      "new_id": "e672e62b752a78d6fb947e172584d701b372ed40",
      "new_mode": 33188,
      "new_path": "apps/canvas/back/.env.dev"
    },
    {
      "type": "modify",
      "old_id": "97df61f15e405290bc4c19fb1e5121210e50ea1a",
      "old_mode": 33188,
      "old_path": "apps/canvas/back/src/index.ts",
      "new_id": "f00549f659c1aa1c9a10a2d280b8c77880be5caa",
      "new_mode": 33188,
      "new_path": "apps/canvas/back/src/index.ts"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ab4d684fdf0e9e4dec6fcd23ec8b0bba6402024e",
      "new_mode": 33188,
      "new_path": "apps/canvas/back/src/machine_manager.ts"
    },
    {
      "type": "modify",
      "old_id": "f5957d40901cd5998218b840e77ab05d80ee7f70",
      "old_mode": 33188,
      "old_path": "apps/canvas/config/src/config.ts",
      "new_id": "7fd7066b6f089f6c05243857ba75aed243029fc3",
      "new_mode": 33188,
      "new_path": "apps/canvas/config/src/config.ts"
    },
    {
      "type": "modify",
      "old_id": "a4634cb7de859461f8d7b9866395b0fba01bd4ae",
      "old_mode": 33188,
      "old_path": "apps/canvas/config/src/graph.ts",
      "new_id": "fc3258e0d6b424006df87acf7fdaf11d2ec95f2d",
      "new_mode": 33188,
      "new_path": "apps/canvas/config/src/graph.ts"
    },
    {
      "type": "modify",
      "old_id": "f6cc9a596348b835f4e074fd99ec5fec3025edc9",
      "old_mode": 33188,
      "old_path": "apps/canvas/config/src/index.ts",
      "new_id": "df1be47c8dd62d4badadf4c7224f353a21a9682c",
      "new_mode": 33188,
      "new_path": "apps/canvas/config/src/index.ts"
    },
    {
      "type": "modify",
      "old_id": "a49c2d5cc1e94153c61718afd1a77d51f333ee3b",
      "old_mode": 33188,
      "old_path": "apps/canvas/config/src/types.ts",
      "new_id": "4146f75a53bfe6ea8b93559b390c1fac24acb20d",
      "new_mode": 33188,
      "new_path": "apps/canvas/config/src/types.ts"
    },
    {
      "type": "modify",
      "old_id": "247a51304a92d58fe09578a32fb401fded22b5bd",
      "old_mode": 33188,
      "old_path": "apps/canvas/front/package-lock.json",
      "new_id": "2f44d6841d7b4bbdeed77b6790019c4cd42dfbe4",
      "new_mode": 33188,
      "new_path": "apps/canvas/front/package-lock.json"
    },
    {
      "type": "modify",
      "old_id": "ea53fe0caaa800353e2c0d219c5056f901d8d02a",
      "old_mode": 33188,
      "old_path": "apps/canvas/front/package.json",
      "new_id": "43aa53875661fb6060a8c52ab351e9f4c1c38d1c",
      "new_mode": 33188,
      "new_path": "apps/canvas/front/package.json"
    },
    {
      "type": "modify",
      "old_id": "15e2fa364b499e71d738b90be1ffc6e77239bd98",
      "old_mode": 33188,
      "old_path": "apps/canvas/front/src/components/node-app.tsx",
      "new_id": "317b7e05879fc987d42cf3c18ffecd2ad9ce9f83",
      "new_mode": 33188,
      "new_path": "apps/canvas/front/src/components/node-app.tsx"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6e25b1859d58eefaffe25723d2e093b17e2a325b",
      "new_mode": 33188,
      "new_path": "apps/canvas/front/src/components/ui/radio-group.tsx"
    },
    {
      "type": "modify",
      "old_id": "f4d0f510b3250638f7c28a924a0d0318510eaed7",
      "old_mode": 33188,
      "old_path": "core/headscale/client.go",
      "new_id": "766ae5258a0f18fe645dd5a7707620fae10f623c",
      "new_mode": 33188,
      "new_path": "core/headscale/client.go"
    },
    {
      "type": "modify",
      "old_id": "8a3a9ec2dbf1278179c4bd7779024eadeedee9d9",
      "old_mode": 33188,
      "old_path": "core/headscale/main.go",
      "new_id": "fb20274005412e8578190fecf460f5598c0e3224",
      "new_mode": 33188,
      "new_path": "core/headscale/main.go"
    }
  ]
}
