)]}'
{
  "log": [
    {
      "commit": "3742c7104a472b2a783337b4c0c122fd4d8e1a49",
      "tree": "57cd53b9b192a3139c93dc0e53f1305c796d276a",
      "parents": [
        "57b2784a285ac4e10fafb35d09a5a0f0d6ae8919"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Tue Aug 11 13:06:04 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Thu Aug 13 09:33:31 2026 +0200"
      },
      "message": "fix open in new tab\n\nChange-Id: I0a8e23f3ac5c7e0d3b63ebd3e7381d531ca86ad5\n"
    },
    {
      "commit": "57b2784a285ac4e10fafb35d09a5a0f0d6ae8919",
      "tree": "4151b89e584df9f8355cae8ff2d3b3c777792b37",
      "parents": [
        "1c07d86f88a07321d9ad8be506bb55a3990ad97f"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Tue Aug 11 12:46:20 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Thu Aug 13 09:33:07 2026 +0200"
      },
      "message": "migrate to dartpad packages\n\nChange-Id: I8efda96978b6a3c1771fe09d1d8b745fef3682ad\n"
    },
    {
      "commit": "1c07d86f88a07321d9ad8be506bb55a3990ad97f",
      "tree": "88eb6b242650fbe7151398672cb452d3b5472ee1",
      "parents": [
        "557fa02a3b805bb7deacd06bcfe0c0b47aa8b155"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Aug 03 11:25:16 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Aug 03 14:54:48 2026 +0200"
      },
      "message": "Release v0.4.0+3 (frontend only)\n\nChange-Id: I360658b6b065f715b1b11442bbb646c1f99d77d6\n"
    },
    {
      "commit": "557fa02a3b805bb7deacd06bcfe0c0b47aa8b155",
      "tree": "eb0bba7a1912a06bd41c030b2fe3e28d0a1377ef",
      "parents": [
        "78818e4d7c5703ed913d01575ecf0026d610ddb5"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Aug 03 11:02:22 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Aug 03 05:54:12 2026 -0700"
      },
      "message": "make share links run in Safari\n\nChange-Id: Iccce5944264f3c573e69d6b8b7e27b66d770375e\n"
    },
    {
      "commit": "78818e4d7c5703ed913d01575ecf0026d610ddb5",
      "tree": "ee17d007542e1e26b161d892497b363910b1dd19",
      "parents": [
        "13017744ee9e9129e10ae5f5a5e3fba393438b24"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Aug 03 10:39:35 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Aug 03 14:52:23 2026 +0200"
      },
      "message": "Add QR code to share dialog\n\nChange-Id: Ia6ecb86b9c19bcdaad7d9d99ef415b3e044d92ba\n"
    },
    {
      "commit": "13017744ee9e9129e10ae5f5a5e3fba393438b24",
      "tree": "2af8e1c4e6a89841e4c1d3036cc1215b30bcdd3d",
      "parents": [
        "6d6e133eacca8bc6e016d0f25bf6ca8cc1837bd9"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 31 17:16:11 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Aug 03 14:52:22 2026 +0200"
      },
      "message": "Release v0.4.0+2\n\nChange-Id: I3cd6a716c3cb956d950510e04f52cffb20886c07\n"
    },
    {
      "commit": "6d6e133eacca8bc6e016d0f25bf6ca8cc1837bd9",
      "tree": "7e4abee07bc65037ee3f0119bc76f9b499def588",
      "parents": [
        "79167b5652b5a1adce35178f144ef5d74c5b2de9"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 31 17:16:00 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Aug 03 14:52:22 2026 +0200"
      },
      "message": "Fix share URLs\n\nChange-Id: If5ae7948dfb17e2ec5f2481fb032ef637a802b81\n"
    },
    {
      "commit": "79167b5652b5a1adce35178f144ef5d74c5b2de9",
      "tree": "67ba57963c81062d8e822f9198b79e266d107615",
      "parents": [
        "b6e1b8ef14c3b1100f8bf63d13103763fc380a5c"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Thu Jul 30 15:54:40 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Mon Aug 03 11:43:37 2026 +0200"
      },
      "message": "add wasm compilation and app sharing\n\nChange-Id: If536b6cdf4fda491b5714c67b8ccccc8de78a677\n"
    },
    {
      "commit": "b6e1b8ef14c3b1100f8bf63d13103763fc380a5c",
      "tree": "52648568bf76b736836854894092daa01962895b",
      "parents": [
        "20ec145b4b5aab6297d0dfec2b7705ca70399c62"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Thu Jul 23 16:13:25 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Jul 27 14:34:05 2026 +0200"
      },
      "message": "Allow dcalls to any selector within dynamic module.\n\nChange-Id: I950e0619e0b926d308475faafa94ab117905d87d\n"
    },
    {
      "commit": "20ec145b4b5aab6297d0dfec2b7705ca70399c62",
      "tree": "79aef8f09b8bde2c5233c2c23d5f35897a160f82",
      "parents": [
        "5a12803127b9fdcbc71eacd03f55918707586c4c"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Thu Jul 23 13:50:42 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Jul 27 14:26:58 2026 +0200"
      },
      "message": "Make bytecode compiler tests runnable on the web\n\nChange-Id: I10e0ebbe34653b69c9642a9447db3dfa87cdae6f\n"
    },
    {
      "commit": "5a12803127b9fdcbc71eacd03f55918707586c4c",
      "tree": "b51473ec13fad84cd20aa47130c30930a5acc11c",
      "parents": [
        "b5c4bea46fb33885dc0e7c96a33af2aa7a3a91bd"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Thu Jul 23 13:49:49 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Jul 27 14:21:42 2026 +0200"
      },
      "message": "Work towards allowing apps with dcalls to run in companion app\n\nSpecifically, this gets us closer to running the Wonderous app in the companion. To enable arbitrary apps with dcalls to run, we still have to resolve b/535465177 (adding a flag to allow arbitrary module-to-module dcalls), and b/538056048 (allowing classes with noSuchMethod to be dcall-able).\n\nFrom a UX it is also unfortunate, that the bytecode compiler spits out warnings about the use of dcalls that are not actionable for vibepad users (see also b/535465177).\n\nWhile this gets us closer to running Wonderous in the companion app, we are not all the way there yet: Some dependency wants to make ffi calls, that are not supported in dynamic modules.\n\nChange-Id: I6f831965cacb8c4d99a76dbeb3f5c3302fe08fa9\n"
    },
    {
      "commit": "b5c4bea46fb33885dc0e7c96a33af2aa7a3a91bd",
      "tree": "a137be5a1a92bc4313aed28ce9aa7b9090fffe89",
      "parents": [
        "5988b097129a42e797a89119e14a3c53c99e374c"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Thu Jul 23 12:24:31 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Fri Jul 24 09:22:40 2026 +0200"
      },
      "message": "refactor asset handling to use extension calls\n\nChange-Id: I87321e46ad52397190b54ce1b6ba5e0b01c53ac9\n"
    },
    {
      "commit": "5988b097129a42e797a89119e14a3c53c99e374c",
      "tree": "54977df2cd82cc3eece167873e343fa32b86d027",
      "parents": [
        "582ac270bf30fd6a12728987713faef9b622bc70"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 22 12:31:10 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 22 13:13:57 2026 +0200"
      },
      "message": "regenerating assets\n\nChange-Id: I8a9ea34a7553c37f312f1a44968a37f7cc71d172\n"
    },
    {
      "commit": "582ac270bf30fd6a12728987713faef9b622bc70",
      "tree": "1ed1051744c8f1f158518c54d5a22f29adc34bf8",
      "parents": [
        "a3fb3697df17a09e5e8e36be38adf0d8966a5f41"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 22 12:27:32 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 22 13:05:54 2026 +0200"
      },
      "message": "remove unneeded assets\n\nChange-Id: Ibab8c7f201bc2fe4d8b64b6a7c3cb953c6ffddec\n"
    },
    {
      "commit": "a3fb3697df17a09e5e8e36be38adf0d8966a5f41",
      "tree": "fe4b9d8226ab16aac4ca4d1bf28a3f9b9a4e735a",
      "parents": [
        "7a985d929a5eaed62c749ddaa35d22b94b2c4076"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 22 10:28:20 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 22 13:05:53 2026 +0200"
      },
      "message": "Migrate VibePad\n\nChange-Id: Ic3ebd80352952832c3bb8d9594e327e8085e4989\n"
    },
    {
      "commit": "7a985d929a5eaed62c749ddaa35d22b94b2c4076",
      "tree": "9c97f5f0c29844d630abf3e42169d318e269c228",
      "parents": [
        "4d728c79f48db0b2bd07e223eca69f35ff4d1967"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Apr 27 16:12:14 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 22 12:22:24 2026 +0200"
      },
      "message": "Cherry-pick bytecode compiler\n\nChange-Id: I564c931fa847ce385ba35ca1a6d0e782d6716806\n"
    },
    {
      "commit": "4d728c79f48db0b2bd07e223eca69f35ff4d1967",
      "tree": "08a330b66052c7e4ee4b1de1e08aaf2ca5ee232a",
      "parents": [
        "3c36b671593917610eee02e3db715c4848776179"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 21 13:12:22 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 22 09:36:29 2026 +0200"
      },
      "message": "Update Dart SDK to Version 3.14.0-42.0.dev\n\nChange-Id: I67ca156329b0a27ff1d1c68808b8b40abc5c18a9\n"
    },
    {
      "commit": "3c36b671593917610eee02e3db715c4848776179",
      "tree": "11f83a3c9e83ab2853a3715fbb88f167b1acea37",
      "parents": [
        "f13da7cc9dd5cbf8b49ac9664ba34339fe73c843"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 18:37:32 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 09:46:10 2026 -0700"
      },
      "message": "More whack-a-mole additions of privates to dynamic interface\n\nThe goal is to get the wondrous app to run in the companion. After this\nchange, we still have to deal with dcalls (both in the app and in\ndependencies, b/535465177) as well as with usage of dart:ffi in\npkg:vector_graphics_compiler.\n\nSee also b/535570137.\n\nChange-Id: Ia3fa9759970e5e4b55852adf83ec51932001723d\n"
    },
    {
      "commit": "f13da7cc9dd5cbf8b49ac9664ba34339fe73c843",
      "tree": "b4a4f33dba415df24a54b1967146dcf14ed288de",
      "parents": [
        "1ff86feeaeec078706748c6c08aa1f8e27c556ef"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 16:10:37 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 16:10:44 2026 +0200"
      },
      "message": "List private members of QueueList as overridable\n\nThis is a workaround for b/535570137.\n\nChange-Id: I4afe5b03e8740a46da24b5755dc1b3862d90fb1e\n"
    },
    {
      "commit": "1ff86feeaeec078706748c6c08aa1f8e27c556ef",
      "tree": "21c94908ede349717487d4ee6787361e3d218638",
      "parents": [
        "1deb13461c4ee831814eb54daf774a10363a441c"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Thu Jul 16 16:16:25 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 14:42:30 2026 +0200"
      },
      "message": "Generate host_app.dill from an empty dummy main.\n\nIf we use the real main.dart it contains many dependencies that aren\u0027t actually exposed by the host app.\n\nSee also b/535526355.\n\nChange-Id: I5e79b906c7805fea08026cc7f0823c25a4345232\n"
    },
    {
      "commit": "1deb13461c4ee831814eb54daf774a10363a441c",
      "tree": "0ea7701aa5d695142d57945df1ebd22063fe7b5b",
      "parents": [
        "5bc2dea4997bd2811e87fbbf4fe9dfe8c473c7cb"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Thu Jul 16 15:25:40 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 14:35:24 2026 +0200"
      },
      "message": "Update dynamic interface to expose packages pinned by Flutter.\n\nFlutter pins certain packages (like collections or characters). In order to run properly, dynamic modules must refer to these pinned versions and cannot include their own shadow-copy of them. This exposes them in the dynamic interface.\n\nChange-Id: Ic82115e0d02fa6479bc6c2b5cc0b6b4b1185b4a2\n"
    },
    {
      "commit": "5bc2dea4997bd2811e87fbbf4fe9dfe8c473c7cb",
      "tree": "12029c51975488bd7d241c725b5623bbdc753d9b",
      "parents": [
        "95b80f5ebea89f677ea3cb4ba36a8d0a758cfb87",
        "c621758d2a760d56abaed8547b9bfaae0679f3ad"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 04:42:35 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 17 04:42:35 2026 -0700"
      },
      "message": "Merge \"force the agent to also fix warning and info from the LSP\" into main"
    },
    {
      "commit": "95b80f5ebea89f677ea3cb4ba36a8d0a758cfb87",
      "tree": "82632ec73cd772fd320f10b0a12545ed5c708866",
      "parents": [
        "174c2e5a06f2f234dcfcc7d038952c0365c4ce25",
        "c32d8435fc5082b5af24010907e596b8ce4ccd91"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 04:42:29 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 17 04:42:29 2026 -0700"
      },
      "message": "Merge \"add pubspec and analysis_options to new projects\" into main"
    },
    {
      "commit": "174c2e5a06f2f234dcfcc7d038952c0365c4ce25",
      "tree": "6e63227ec6a540bf7f16396a881a13716a13ab64",
      "parents": [
        "6bd0398e172f3c014a4d3ff01995057c674c2b3d",
        "afe0534d94fc1c3eb066640b37cff7255136779e"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 04:42:21 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 17 04:42:21 2026 -0700"
      },
      "message": "Merge \"use jaspr_content file icons\" into main"
    },
    {
      "commit": "6bd0398e172f3c014a4d3ff01995057c674c2b3d",
      "tree": "cd0e724a70a38288fd3f41a9f956ce3140a46b69",
      "parents": [
        "4c37f300fe1eeb0f194ee75d058b8fdfcfd898bf",
        "faf7bcc2208f992ebd87751f775efe65c3fe2f2a"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 04:42:11 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 17 04:42:11 2026 -0700"
      },
      "message": "Merge \"add format-on-save and keyboard shortcut\" into main"
    },
    {
      "commit": "4c37f300fe1eeb0f194ee75d058b8fdfcfd898bf",
      "tree": "962142cedd7256d764694d48dbec74a417b6a22b",
      "parents": [
        "5272ad68cf446b72ab153d89be639d00a8e957f3",
        "7477272da9444a93e130559e375a36e73411fe37"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 17 04:42:00 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 17 04:42:00 2026 -0700"
      },
      "message": "Merge \"add wonderous app as an example\" into main"
    },
    {
      "commit": "c621758d2a760d56abaed8547b9bfaae0679f3ad",
      "tree": "46dce655811be6ec1600a5dd84555e670ba0e55b",
      "parents": [
        "c32d8435fc5082b5af24010907e596b8ce4ccd91"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 16 16:17:44 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 16 07:20:49 2026 -0700"
      },
      "message": "force the agent to also fix warning and info from the LSP\n\nChange-Id: I49d4a8827364d1d9d96aa2e6fa234d9bed8a7982\n"
    },
    {
      "commit": "c32d8435fc5082b5af24010907e596b8ce4ccd91",
      "tree": "696e2f6a03f56fe3fdc51f71d083e64a504e6fc5",
      "parents": [
        "afe0534d94fc1c3eb066640b37cff7255136779e"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 16 15:19:45 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 16 07:20:40 2026 -0700"
      },
      "message": "add pubspec and analysis_options to new projects\n\nChange-Id: Id0040899278c490b0204b67d6b98f22f450852c2\n"
    },
    {
      "commit": "afe0534d94fc1c3eb066640b37cff7255136779e",
      "tree": "4686aeb0f22b734fe80fb9b01f761303ba523b59",
      "parents": [
        "faf7bcc2208f992ebd87751f775efe65c3fe2f2a"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Wed Jul 15 08:55:01 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Thu Jul 16 07:19:55 2026 -0700"
      },
      "message": "use jaspr_content file icons\n\nChange-Id: I269691f46ad81925db13ea5cc6a0c0a76b0ea04f\n"
    },
    {
      "commit": "faf7bcc2208f992ebd87751f775efe65c3fe2f2a",
      "tree": "07303beda0c1263d5be45b157ca8236c72119a3a",
      "parents": [
        "7477272da9444a93e130559e375a36e73411fe37"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Tue Jul 14 15:42:20 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Thu Jul 16 07:19:43 2026 -0700"
      },
      "message": "add format-on-save and keyboard shortcut\n\nChange-Id: I65097bc33547d9c9e79eb73b777e41a62dfda4bd\n"
    },
    {
      "commit": "7477272da9444a93e130559e375a36e73411fe37",
      "tree": "b8c19a1727e0a98807824ea112ccc6f1ef26e252",
      "parents": [
        "04d712ae3e77c28f426e8467943a465283e9f25d"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 14 11:53:49 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 16 16:13:08 2026 +0200"
      },
      "message": "add wonderous app as an example\n\nChange-Id: Iea95136013b81c776257a8ede474b947e53495e4\n"
    },
    {
      "commit": "5272ad68cf446b72ab153d89be639d00a8e957f3",
      "tree": "8e936e89f30a079f71d86d9610057b9f982e7025",
      "parents": [
        "d9cc99468bb34e077fb907e6f2a0eaef5f3acea2",
        "04d712ae3e77c28f426e8467943a465283e9f25d"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 15 04:20:35 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 15 04:20:35 2026 -0700"
      },
      "message": "Merge \"cleanup uri handling for sandbox\" into main"
    },
    {
      "commit": "d9cc99468bb34e077fb907e6f2a0eaef5f3acea2",
      "tree": "6dc788d2e4d271def84d18c4b56189347c7be9bc",
      "parents": [
        "82ccb6ac99725db2a760d8a4215fe9fb6d5f2df4",
        "d36f5b03bcbce06d109e93ab128348457910dc5e"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 15 04:20:27 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 15 04:20:27 2026 -0700"
      },
      "message": "Merge \"fix: route Ctrl+S through SaveAllFilesCommand to save all dirty tabs\" into main"
    },
    {
      "commit": "82ccb6ac99725db2a760d8a4215fe9fb6d5f2df4",
      "tree": "296526ab61d21d850401f62449a7c26e3f56b176",
      "parents": [
        "4dfaae3e7e2b0b0808644c91153b9996232e259f",
        "1b926821cd787e8f2d1e28f26fc37b8f16d0cb0f"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 15 04:19:56 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 15 04:19:56 2026 -0700"
      },
      "message": "Merge \"feat: add syntax highlighting for non-Dart file types\" into main"
    },
    {
      "commit": "4dfaae3e7e2b0b0808644c91153b9996232e259f",
      "tree": "23141d4f6da5ced630c1571ac36c9a5c55c99233",
      "parents": [
        "641106e2cb742f1434aad1ad208eebf0548e71a4",
        "7d72b35fca15b80ea849698d2afc187584e07d0a"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 15 04:19:41 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 15 04:19:41 2026 -0700"
      },
      "message": "Merge \"add inline name validation for file and folders\" into main"
    },
    {
      "commit": "641106e2cb742f1434aad1ad208eebf0548e71a4",
      "tree": "2cae8306f560a8c7788f9de217b63aad6f9cf219",
      "parents": [
        "fc5784641366a3b23445714b62d0fdc451e7a9cc",
        "fd3980918792aed04ff20264a331af9b50c8fd09"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 14 02:04:11 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 14 02:04:11 2026 -0700"
      },
      "message": "Merge \"Fix base URL for external sharing\" into main"
    },
    {
      "commit": "fd3980918792aed04ff20264a331af9b50c8fd09",
      "tree": "f5f6203e9204af7aff953634c37d4ced027ea117",
      "parents": [
        "2ce07927b1bb7c871520b1f0a38e14b196ae11e3"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Jul 13 16:42:43 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Jul 13 16:42:43 2026 +0200"
      },
      "message": "Fix base URL for external sharing\n\nChange-Id: Ie4571304975d12a5914e00d28c185757677af879\n"
    },
    {
      "commit": "04d712ae3e77c28f426e8467943a465283e9f25d",
      "tree": "bee0d035c03d42899a79ce3b768f89ffb8651e68",
      "parents": [
        "d36f5b03bcbce06d109e93ab128348457910dc5e"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Mon Jul 13 14:54:17 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Mon Jul 13 14:54:17 2026 +0200"
      },
      "message": "cleanup uri handling for sandbox\n\nChange-Id: I8ea74232ac50b7f0d1545f6b31acbdfe203c5471\n"
    },
    {
      "commit": "d36f5b03bcbce06d109e93ab128348457910dc5e",
      "tree": "742973ca032d6b894b922c953ce3590c6a8564ab",
      "parents": [
        "1b926821cd787e8f2d1e28f26fc37b8f16d0cb0f"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 13 13:40:22 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 13 13:40:22 2026 +0200"
      },
      "message": "fix: route Ctrl+S through SaveAllFilesCommand to save all dirty tabs\n\nChange-Id: I4efb4a0932d7fde339e822fd1b37c5c70d8a491a\n"
    },
    {
      "commit": "1b926821cd787e8f2d1e28f26fc37b8f16d0cb0f",
      "tree": "48bf1dd0d5a95ef279b5aa1656bcceeeb1de26b1",
      "parents": [
        "7d72b35fca15b80ea849698d2afc187584e07d0a"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 13 13:02:30 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 13 13:02:30 2026 +0200"
      },
      "message": "feat: add syntax highlighting for non-Dart file types\n\nChange-Id: I4db47e1b8b493dc2c22a1d99f263d5b56c7fd1e3\n"
    },
    {
      "commit": "7d72b35fca15b80ea849698d2afc187584e07d0a",
      "tree": "de1fcd7c2545f1ade202b5242bcac18bd86a6dde",
      "parents": [
        "fc5784641366a3b23445714b62d0fdc451e7a9cc"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 13 12:44:18 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 13 12:44:18 2026 +0200"
      },
      "message": "add inline name validation for file and folders\n\nChange-Id: I6a70ecbade36c0029ce4aca17d712da1b3b682be\n"
    },
    {
      "commit": "fc5784641366a3b23445714b62d0fdc451e7a9cc",
      "tree": "e0bf25f374e2888ec0974fc1c74ce28fc8bdc5de",
      "parents": [
        "03a77fad092cdd2c6df266532ef6057c9d1d538f"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Fri Jun 26 11:36:43 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Fri Jul 10 15:34:18 2026 +0200"
      },
      "message": "extract dartpad logic into shared package\n\nChange-Id: I3c57cb817c4c090d87557b1d3e75c822478ea237\n"
    },
    {
      "commit": "03a77fad092cdd2c6df266532ef6057c9d1d538f",
      "tree": "0de090ff5c785906d5368a0c4663822d0847e683",
      "parents": [
        "04a03134d11c36dbd3a38b2764ef835fb4d54237"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 09 09:14:02 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 09 09:14:02 2026 +0200"
      },
      "message": "Refactor web P2P handshake lifecycle\n\nChange-Id: Ie6242e06f7556017f0f5f5833ab90b46d06941d7\n"
    },
    {
      "commit": "04a03134d11c36dbd3a38b2764ef835fb4d54237",
      "tree": "ee6675c3be3988ee2188dfc43e4a5b40b7c7c968",
      "parents": [
        "fc404a0969263512e48856d449301dc5c7f63893"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 17:38:53 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 17:38:53 2026 +0200"
      },
      "message": "show more user friendly error messages in companion app\n\nChange-Id: I6a786f58407c276f1a71f34bda336407519d13cf\n"
    },
    {
      "commit": "fc404a0969263512e48856d449301dc5c7f63893",
      "tree": "80712ba52bb602bddeada46cf0497e760e6b3585",
      "parents": [
        "12bffb10db954e488f7553707e638578db1d825b"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 17:11:47 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 17:11:47 2026 +0200"
      },
      "message": "fix: propagate preview compilation and runtime errors back to the agent\n\nChange-Id: Iafb2431e3f704bd4abcbaeec041acc722e7d5695\n"
    },
    {
      "commit": "12bffb10db954e488f7553707e638578db1d825b",
      "tree": "f8ed5b231ccb928c72217c361b857cdce6c55a7a",
      "parents": [
        "81c27095063dca59793c27891827ca160d5e4e3e"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 08 14:31:01 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 08 05:55:24 2026 -0700"
      },
      "message": "Add `prefixLibraryUris` option to pkg:dartpad\u0027s `compileToBytecode`\n\nThis allows us to remove the workaround of using a temporary workspace\nto compile the bytecode.\n\nChange-Id: I435ac4d216ae122c10456297c2c1f901f4f120bd\n"
    },
    {
      "commit": "81c27095063dca59793c27891827ca160d5e4e3e",
      "tree": "f28acceef80ae4020ea1135eaf04e4ebe4087c01",
      "parents": [
        "80225e4ba35e100821f071872659c2fb425e61f1",
        "6789ce58e8f4048b71fb846eb057dd9a34b0a7dd"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 08 03:02:04 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 08 03:02:04 2026 -0700"
      },
      "message": "Merge \"skip validation on preview start when calling it programmatic\" into main"
    },
    {
      "commit": "80225e4ba35e100821f071872659c2fb425e61f1",
      "tree": "c503a2757c625ef2c46febea101e45d84d4f8c06",
      "parents": [
        "96b9ede17ddcaca0b21371febbe0f1a5feaf75de",
        "bc623e61d713c018532fc5b56f68e6aafc8210dd"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 08 03:01:25 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 08 03:01:25 2026 -0700"
      },
      "message": "Merge \"allow for other names in pubspec.yaml\" into main"
    },
    {
      "commit": "96b9ede17ddcaca0b21371febbe0f1a5feaf75de",
      "tree": "1e17fbdf71307d4bf398fd2d9304fc2e99cfa59c",
      "parents": [
        "9db56afa580f491fbcb3a3261eb5000da43168c3",
        "3bf890c43c6c84292b51a05946a9778b885ca9ff"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 08 03:01:15 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 08 03:01:15 2026 -0700"
      },
      "message": "Merge \"always open agent panel when navigating to /project\" into main"
    },
    {
      "commit": "6789ce58e8f4048b71fb846eb057dd9a34b0a7dd",
      "tree": "85aaae2e6c9e98efa1a1504adeb0410068858731",
      "parents": [
        "bc623e61d713c018532fc5b56f68e6aafc8210dd"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 11:50:25 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 11:50:25 2026 +0200"
      },
      "message": "skip validation on preview start when calling it programmatic\n\nChange-Id: Iff140a5f79da565a60168c423366f3d51f64c52d\n"
    },
    {
      "commit": "bc623e61d713c018532fc5b56f68e6aafc8210dd",
      "tree": "cbbd5e9d3c35fb61b79ff7cb300ca30fc3e80efa",
      "parents": [
        "3bf890c43c6c84292b51a05946a9778b885ca9ff"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 10:29:10 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 10:29:10 2026 +0200"
      },
      "message": "allow for other names in pubspec.yaml\n\nChange-Id: I284bd58d0e944d317718ae277935e238164dedf5\n"
    },
    {
      "commit": "9db56afa580f491fbcb3a3261eb5000da43168c3",
      "tree": "293cc7fc02cf867032ac5dfb96dce0de72cf82c9",
      "parents": [
        "2ce07927b1bb7c871520b1f0a38e14b196ae11e3",
        "800864fc0d77271d21e00ac07e5fd6363f86d098"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 08 01:01:38 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 08 01:01:38 2026 -0700"
      },
      "message": "Merge \"add pre-flight validation for preview actions for better ux\" into main"
    },
    {
      "commit": "3bf890c43c6c84292b51a05946a9778b885ca9ff",
      "tree": "e44afa5281c3693fad8778a1eee9903bbfa1922f",
      "parents": [
        "800864fc0d77271d21e00ac07e5fd6363f86d098"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 09:07:57 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 09:07:57 2026 +0200"
      },
      "message": "always open agent panel when navigating to /project\n\nChange-Id: If622dfd1162bea07f93117b152ed24b4b0a41130\n"
    },
    {
      "commit": "800864fc0d77271d21e00ac07e5fd6363f86d098",
      "tree": "50a919aa26c38df1f1fceb79346c695b3b579c57",
      "parents": [
        "e0e47db665012b825c129cca105a29a895f19bc2"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 08:42:30 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 08 08:42:30 2026 +0200"
      },
      "message": "add pre-flight validation for preview actions for better ux\n\nChange-Id: Ie98a503742244e518d2b198e81e3ca76aacfabc9\n"
    },
    {
      "commit": "2ce07927b1bb7c871520b1f0a38e14b196ae11e3",
      "tree": "51a7c1b80e4a13ada34509eb4b15bb080c36fda2",
      "parents": [
        "9aca3cda3992f1b80e260a22d13406145dd2229a",
        "e0e47db665012b825c129cca105a29a895f19bc2"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 07:11:59 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 07 07:11:59 2026 -0700"
      },
      "message": "Merge \"Release as v0.3.0\" into main"
    },
    {
      "commit": "9aca3cda3992f1b80e260a22d13406145dd2229a",
      "tree": "8dc8a98bbdb538490433b4c9507ce3114195b1fb",
      "parents": [
        "11c79f3e0ec0d64601037b24f14d67e7d674f577"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 15:04:31 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 06:06:20 2026 -0700"
      },
      "message": "Change examples bundles from ZIP to TAR\n\nReason: go/zipline doesn\u0027t support serving ZIPs.\n\nChange-Id: Ia20e0723b6a1cda980d3d6f46eff1b866a3944b5\n"
    },
    {
      "commit": "e0e47db665012b825c129cca105a29a895f19bc2",
      "tree": "ce00dce80d92ff3e693f440752cbe55da5a491a7",
      "parents": [
        "11c79f3e0ec0d64601037b24f14d67e7d674f577"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 14:32:19 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 15:03:41 2026 +0200"
      },
      "message": "Release as v0.3.0\n\nChange-Id: Id6ddaa15d4135d4f9bc96ba3d18886458c71848c\n"
    },
    {
      "commit": "11c79f3e0ec0d64601037b24f14d67e7d674f577",
      "tree": "6997edd028b450712917471f85fed41a60a69b4b",
      "parents": [
        "71327529dbcf9e0cd20dc6695c7dabc8a28ea9b7",
        "c7dbd2c86d9155e8ff4f632333be38603516e8ff"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 05:27:22 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 07 05:27:22 2026 -0700"
      },
      "message": "Merge \"fix: hot reload onsave\" into main"
    },
    {
      "commit": "71327529dbcf9e0cd20dc6695c7dabc8a28ea9b7",
      "tree": "365448f473696d50bec360820dcc3c798b9dd744",
      "parents": [
        "59af27b24ea76393cfacfa955b0caf9b59ca4e6b",
        "7458524202a0284e6eb523cf1e201c551e2bdb21"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 05:27:16 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 07 05:27:16 2026 -0700"
      },
      "message": "Merge \"not showing hot reloading... to avoid flicker\" into main"
    },
    {
      "commit": "59af27b24ea76393cfacfa955b0caf9b59ca4e6b",
      "tree": "038956b0ba9658864474cfbab05288b52d9b8b6f",
      "parents": [
        "bee3a8c67176de96bbb3414ea12dbae61f73eaff",
        "777034e0b53c6f85905fafb45fda983f6df11f7b"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 05:27:09 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 07 05:27:09 2026 -0700"
      },
      "message": "Merge \"fix: dispose fileTreeViewModel before tabsViewModel to prevent crash on project switch\" into main"
    },
    {
      "commit": "bee3a8c67176de96bbb3414ea12dbae61f73eaff",
      "tree": "8c0894665e8eebc093ae5f637cf39b75c44ef8a9",
      "parents": [
        "2bc3400732c785552edb6c7c2502820a66a9d711",
        "cbc1bc155af361b2f38da8e0901fd4f36fe88fb3"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 05:27:01 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 07 05:27:01 2026 -0700"
      },
      "message": "Merge \"feat (agent): add hot reload tool\" into main"
    },
    {
      "commit": "2bc3400732c785552edb6c7c2502820a66a9d711",
      "tree": "798948e333674d87a6576aebb6097af0e2776e2e",
      "parents": [
        "a41c0a4df296319ea03505ede1d5653f147c017a",
        "4d8150fe5a5e5911ba21e03609e0ce5f238438af"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 05:26:54 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 07 05:26:54 2026 -0700"
      },
      "message": "Merge \"refactor: split indexeddb into 2: metadata and zip\" into main"
    },
    {
      "commit": "a41c0a4df296319ea03505ede1d5653f147c017a",
      "tree": "e1aad5ea07dbf27875d58540e49425976bb95345",
      "parents": [
        "efe5166ddeef985ee1e7b8c4e6fada84fcfd7f05",
        "6392e9f88742ffa89294f69b9499a163c08963f1"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 05:26:45 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 07 05:26:45 2026 -0700"
      },
      "message": "Merge \"replaced ren button in file tree with icon\" into main"
    },
    {
      "commit": "efe5166ddeef985ee1e7b8c4e6fada84fcfd7f05",
      "tree": "25b8025511ea460103dfbb68a47937c97247c39d",
      "parents": [
        "10f2a82ee8055a4d31da61c59416a4e7b2dfca2d",
        "1324ef7b6e3d1b764f4b9c2ed06434f519d2b756"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 05:26:38 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 07 05:26:38 2026 -0700"
      },
      "message": "Merge \"feat: add change device mode tool to agent\" into main"
    },
    {
      "commit": "10f2a82ee8055a4d31da61c59416a4e7b2dfca2d",
      "tree": "cfdd0813d7216e5dd5e7f2142138932349d00a60",
      "parents": [
        "f769a9d8a98ea78dfaeee51795725cf33be68e8e",
        "c43d90b447447199babe19eb5af06bd6c80e67d2"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 05:26:32 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 07 05:26:32 2026 -0700"
      },
      "message": "Merge \"feat: add last saved time next to project title\" into main"
    },
    {
      "commit": "f769a9d8a98ea78dfaeee51795725cf33be68e8e",
      "tree": "f4f034e39d079c7082b83a2f184ba641cae031e7",
      "parents": [
        "990c1a867b1308748b065727c89ad6a70970ef47",
        "4b447c42010c8399e100db40f92e3c8928a98cd5"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Tue Jul 07 05:26:13 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 07 05:26:13 2026 -0700"
      },
      "message": "Merge \"fix: error messages appearing twice in agent panel\" into main"
    },
    {
      "commit": "990c1a867b1308748b065727c89ad6a70970ef47",
      "tree": "84b3f2f587785b1b2a43ab0524ec4bef32716fe5",
      "parents": [
        "c907a241216b256b3eca91f84449cd57770edfcf"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Tue Jul 07 13:50:25 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Tue Jul 07 14:22:48 2026 +0200"
      },
      "message": "fix router version and base uri handling\n\nChange-Id: I9e7608c0a665b665f863d978998f87557a44a67c\n"
    },
    {
      "commit": "c7dbd2c86d9155e8ff4f632333be38603516e8ff",
      "tree": "d43075c313ed41386100ab9d15a370a0f56cab74",
      "parents": [
        "7458524202a0284e6eb523cf1e201c551e2bdb21"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 13:21:06 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 13:21:06 2026 +0200"
      },
      "message": "fix: hot reload onsave\n\nChange-Id: Ia436196967254174f7b87c1e4fe1873ffc8e38a7\n"
    },
    {
      "commit": "7458524202a0284e6eb523cf1e201c551e2bdb21",
      "tree": "34b291b49eee7f2fc837c3eb23bd2897d5ddf22c",
      "parents": [
        "777034e0b53c6f85905fafb45fda983f6df11f7b"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 13:17:42 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 13:18:14 2026 +0200"
      },
      "message": "not showing hot reloading... to avoid flicker\n\nChange-Id: I61e151840764190ad30b4aa37b3daaf9570674c8\n"
    },
    {
      "commit": "777034e0b53c6f85905fafb45fda983f6df11f7b",
      "tree": "15fff3e3f807dd8d33d17602f18fe7b3843f5657",
      "parents": [
        "cbc1bc155af361b2f38da8e0901fd4f36fe88fb3"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 12:59:06 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 12:59:06 2026 +0200"
      },
      "message": "fix: dispose fileTreeViewModel before tabsViewModel to prevent crash on project switch\n\nChange-Id: Ia01df50b4033b5076ee05c424447a7c694fdb079\n"
    },
    {
      "commit": "cbc1bc155af361b2f38da8e0901fd4f36fe88fb3",
      "tree": "0b739771f381a40ec931bf517fca973a68a81c32",
      "parents": [
        "4d8150fe5a5e5911ba21e03609e0ce5f238438af"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 12:18:32 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 12:18:32 2026 +0200"
      },
      "message": "feat (agent): add hot reload tool\n\nChange-Id: I0fb9a65c463b0c1b7647cf310b94e3c047dce050\n"
    },
    {
      "commit": "4d8150fe5a5e5911ba21e03609e0ce5f238438af",
      "tree": "5ced9d0849a3fc68d3e533f038d7b4bbc7082ca1",
      "parents": [
        "6392e9f88742ffa89294f69b9499a163c08963f1"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 11:26:11 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 11:37:02 2026 +0200"
      },
      "message": "refactor: split indexeddb into 2: metadata and zip\n\nChange-Id: I29b59562ca55809e75d54bdd4e95bec5d45ebe26\n"
    },
    {
      "commit": "6392e9f88742ffa89294f69b9499a163c08963f1",
      "tree": "6c3e09dd893938a93dedab58a11da864c8eff9f7",
      "parents": [
        "1324ef7b6e3d1b764f4b9c2ed06434f519d2b756"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 11:06:46 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 11:06:46 2026 +0200"
      },
      "message": "replaced ren button in file tree with icon\n\nChange-Id: I45dcf79beeae310c738c9387bc7b070892a45684\n"
    },
    {
      "commit": "1324ef7b6e3d1b764f4b9c2ed06434f519d2b756",
      "tree": "438ceb9f229935628b1e8e0e40a8c8aeaa29242e",
      "parents": [
        "c43d90b447447199babe19eb5af06bd6c80e67d2"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 10:50:32 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Tue Jul 07 10:58:55 2026 +0200"
      },
      "message": "feat: add change device mode tool to agent\n\nChange-Id: Ic3a982019bb74c7c2ffa17828a552fc918b5c6fe\n"
    },
    {
      "commit": "c43d90b447447199babe19eb5af06bd6c80e67d2",
      "tree": "99f0869600b9248f401e7b066315d02c89b7de4f",
      "parents": [
        "4b447c42010c8399e100db40f92e3c8928a98cd5"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 06 16:41:04 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 06 07:50:26 2026 -0700"
      },
      "message": "feat: add last saved time next to project title\n\nChange-Id: I0928e0fcff597a542510149de60ce4053667b8c7\n"
    },
    {
      "commit": "4b447c42010c8399e100db40f92e3c8928a98cd5",
      "tree": "99630bcc2ff8b394e3a66c570599ab8b60bccc45",
      "parents": [
        "c907a241216b256b3eca91f84449cd57770edfcf"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 06 16:39:47 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 06 07:50:20 2026 -0700"
      },
      "message": "fix: error messages appearing twice in agent panel\n\nChange-Id: I8e88b2d7c1ef356bfeea4c7d3769b871c9bac647\n"
    },
    {
      "commit": "c907a241216b256b3eca91f84449cd57770edfcf",
      "tree": "5d28740b8275ef78de0bcef6ed0042f2bb793d69",
      "parents": [
        "3f914d1984f6a9ca2fac412b54e8c88897abdcf7"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 06 16:19:03 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 06 07:50:13 2026 -0700"
      },
      "message": "feat: agent navigating through app example\n\nChange-Id: I3f47df34f48e8aa1de8789fa9b894e6b23aed4fe\n"
    },
    {
      "commit": "3f914d1984f6a9ca2fac412b54e8c88897abdcf7",
      "tree": "f01b12e7adcdd00d55a0c98144f108c71174d51d",
      "parents": [
        "324634142c81ace73261c486105884a739b4bf69"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 06 14:43:54 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 06 16:49:55 2026 +0200"
      },
      "message": "feat: improve device preview UX with loading spinner and faster QR code display\n\nChange-Id: I5a0a5fdc619a88c758259b5a62aa937dc4e6f746\n"
    },
    {
      "commit": "324634142c81ace73261c486105884a739b4bf69",
      "tree": "0cd029572c2fa6e76952846ff58b12f0f3619b55",
      "parents": [
        "0d7757b16bb499167cd2b41cf26e9dcc6ed5b4a6"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 06 11:12:43 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jul 06 11:12:43 2026 +0200"
      },
      "message": "feat: use batch tar archive methods for workspace file I/O\n\nChange-Id: I3ed56564cb6420cee00797590c7e030c053e7791\n"
    },
    {
      "commit": "0d7757b16bb499167cd2b41cf26e9dcc6ed5b4a6",
      "tree": "4972d91ceca22aac65714477e00069f427ff06ae",
      "parents": [
        "053260af8df91e3ce7a0e6daf1fe965ebebcb6c0"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Fri Jul 03 17:55:57 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Fri Jul 03 09:03:00 2026 -0700"
      },
      "message": "feat (agent): add retry button when agent fails\n\nChange-Id: I9d42753992bee53f6ea9a166c20e3c71bde54ebc\n"
    },
    {
      "commit": "053260af8df91e3ce7a0e6daf1fe965ebebcb6c0",
      "tree": "43cf0b1151cd34b014e91b2486f038f6b8790b16",
      "parents": [
        "d6a736862d7438de68a09daabf3cd5311dde2937"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Fri Jul 03 17:35:20 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Fri Jul 03 09:02:50 2026 -0700"
      },
      "message": "feat (agent): add retries for genkit failures\n\nChange-Id: I119930bb99ddda8215b04feaa276a51581c11dc6\n"
    },
    {
      "commit": "d6a736862d7438de68a09daabf3cd5311dde2937",
      "tree": "3c2c9b7809aad51cc748c20f260bad9a3cb9146a",
      "parents": [
        "4b364456710f93905554dd730b2bda996abddf79"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Fri Jul 03 14:13:10 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Fri Jul 03 18:01:44 2026 +0200"
      },
      "message": "feat: add API provider switching\n\nChange-Id: Id4f9e9e44772c8ebdd9cb20535d9210e82506ab4\n"
    },
    {
      "commit": "4b364456710f93905554dd730b2bda996abddf79",
      "tree": "6d7354e8543e7a3dcad2a7915f112cd2619de743",
      "parents": [
        "4414abc740e8a06ba46fc9efa5fe1e52ae0d9e86"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Fri Jul 03 11:33:34 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Fri Jul 03 05:28:26 2026 -0700"
      },
      "message": "fix (agent): activate plan mode for prompt initiated projects\n\nChange-Id: Id81930ecf8d3a642d3f331fafb657a28dc481be6\n"
    },
    {
      "commit": "4414abc740e8a06ba46fc9efa5fe1e52ae0d9e86",
      "tree": "39f8b4880e4ef48300881f3f1c1a99b3e5582955",
      "parents": [
        "b478fb963943ea4f51c664147747bbc8d278a14d"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 02 15:33:44 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Fri Jul 03 14:27:54 2026 +0200"
      },
      "message": "add 2 examples and improved example building\n\nChange-Id: Iafa65c2dc34bf953f3f13171c924887d46be966d\n"
    },
    {
      "commit": "b478fb963943ea4f51c664147747bbc8d278a14d",
      "tree": "909b493d6ae49178a4f37d951f4678885e506b3f",
      "parents": [
        "48dda4791cfba569f2603d2d1c00ed6b782e39cb"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Wed Jul 01 11:48:50 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Fri Jul 03 10:17:44 2026 +0200"
      },
      "message": "restructure project loading\n\nChange-Id: I17be90425dff8987bcf0c16af241d17a4d9ddd0f\n"
    },
    {
      "commit": "48dda4791cfba569f2603d2d1c00ed6b782e39cb",
      "tree": "068533e6881229ba048de963d9a18d3d6ea34e1d",
      "parents": [
        "58eb16762b35e8d78fe29a178127d3f1a2743a06"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Mon Jun 29 09:32:21 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Fri Jul 03 10:15:49 2026 +0200"
      },
      "message": "add agent tools to navigate app\n\nChange-Id: Ia155d6286d142a11df28671e3aa3f9153dc1680a\n"
    },
    {
      "commit": "58eb16762b35e8d78fe29a178127d3f1a2743a06",
      "tree": "308b79c092343ebe4bd0838aa4fe8de789176351",
      "parents": [
        "8a6e1241a3016d526c4fcae3c78e0382170e6260",
        "747d6edd7657b90919d73a9ecc19d9bf01ea43bb"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 03 00:27:30 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 03 00:27:30 2026 -0700"
      },
      "message": "Merge \"Add link to download companion app\" into main"
    },
    {
      "commit": "8a6e1241a3016d526c4fcae3c78e0382170e6260",
      "tree": "510c9284fda2f67dca49ddb28d2490e8fc403f2c",
      "parents": [
        "332e19cce9896ec668c54336c37c81362eaf071d",
        "13fa7ee51e471e93af7333854a4cb3c6401e9ccd"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 03 00:27:02 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 03 00:27:02 2026 -0700"
      },
      "message": "Merge \"feat (agent): add image upload to agent chat\" into main"
    },
    {
      "commit": "332e19cce9896ec668c54336c37c81362eaf071d",
      "tree": "e8b1307b0142edacb4ae50a21a85b3ef1117a1b8",
      "parents": [
        "f3e7ac74150d5d45938648d55bcda520c0cf0e59",
        "a67390474eb17f248356515d93eebdcc66de57ae"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 03 00:26:46 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 03 00:26:46 2026 -0700"
      },
      "message": "Merge \"feat (agent): add ai asset generation\" into main"
    },
    {
      "commit": "f3e7ac74150d5d45938648d55bcda520c0cf0e59",
      "tree": "dcc1fc27b9e1cec906196b03a08334571cbb6c23",
      "parents": [
        "7a4278f01ee7ef832abe5ffd53c2e5b44442bc10",
        "2ba65e8e8e7621632b984ac103feeaae3b302b5e"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 03 00:26:32 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 03 00:26:32 2026 -0700"
      },
      "message": "Merge \"add: handshake to ensure version of companion app\" into main"
    },
    {
      "commit": "7a4278f01ee7ef832abe5ffd53c2e5b44442bc10",
      "tree": "2fe61af614ac5ea9fca432ada9eb0f1f5a743342",
      "parents": [
        "0805b50ff47d93c42df183dc205dad8607f38f7a",
        "984bee27a22536f8abb9aa585781cc1384f362af"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 03 00:26:15 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 03 00:26:15 2026 -0700"
      },
      "message": "Merge \"add global event bus and panel view model\" into main"
    },
    {
      "commit": "0805b50ff47d93c42df183dc205dad8607f38f7a",
      "tree": "6d66ffec1f60ca40497679f2eae07d395da53f88",
      "parents": [
        "e73357f9c2edb0e5034e134255807bd968d7c00b",
        "c4b7f55acf09214828fd9fc71d9461494313cc1c"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 03 00:26:01 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 03 00:26:01 2026 -0700"
      },
      "message": "Merge \"refactor: move examples from inline to examples folder\" into main"
    },
    {
      "commit": "e73357f9c2edb0e5034e134255807bd968d7c00b",
      "tree": "d16402516bc5e87f936ce00bf8ce646b43cfb4bf",
      "parents": [
        "140080b37aa45fa504d836ed45ea47f5a1947693",
        "44b66281020890c62e9dfd1555412cb34335f017"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Jul 03 00:25:10 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 03 00:25:10 2026 -0700"
      },
      "message": "Merge \"feat: add project persistence with IndexedDB\" into main"
    },
    {
      "commit": "13fa7ee51e471e93af7333854a4cb3c6401e9ccd",
      "tree": "bbf9098229c43b44080ae833fa509621fe3eea6b",
      "parents": [
        "a67390474eb17f248356515d93eebdcc66de57ae"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 01 16:52:23 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 02 06:49:50 2026 -0700"
      },
      "message": "feat (agent): add image upload to agent chat\n\nChange-Id: I2c8b4dd07c9b740c8a64a6d453a6312c0b275899\n"
    },
    {
      "commit": "a67390474eb17f248356515d93eebdcc66de57ae",
      "tree": "e5ccfa8de50e7a51f86efccbdc32079619aebb24",
      "parents": [
        "2ba65e8e8e7621632b984ac103feeaae3b302b5e"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 01 14:50:39 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 02 06:49:43 2026 -0700"
      },
      "message": "feat (agent): add ai asset generation\n\nChange-Id: If5bf53f216d6d9879fe0a3cb1fedd292e3d2fe22\n"
    },
    {
      "commit": "2ba65e8e8e7621632b984ac103feeaae3b302b5e",
      "tree": "e1a71601b5a92c40ed38572ab8202a6daf581f0c",
      "parents": [
        "984bee27a22536f8abb9aa585781cc1384f362af"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Wed Jul 01 13:20:33 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 02 06:49:34 2026 -0700"
      },
      "message": "add: handshake to ensure version of companion app\n\nChange-Id: I9224600c8108f9fb0192d21bea279e747b6144bb\n"
    },
    {
      "commit": "984bee27a22536f8abb9aa585781cc1384f362af",
      "tree": "09f63cbf2b374fd5d52d98474c6ca45430f36831",
      "parents": [
        "c4b7f55acf09214828fd9fc71d9461494313cc1c"
      ],
      "author": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Mon Jun 29 17:38:20 2026 +0200"
      },
      "committer": {
        "name": "Kilian Schulte",
        "email": "kils@netlight.com",
        "time": "Thu Jul 02 06:47:18 2026 -0700"
      },
      "message": "add global event bus and panel view model\n\nChange-Id: I31020689e5478557dd853c20ed5aa617ad9d66d1\n"
    },
    {
      "commit": "c4b7f55acf09214828fd9fc71d9461494313cc1c",
      "tree": "7f9fc70716b231fd96e56d3ecc48d33228e430e9",
      "parents": [
        "44b66281020890c62e9dfd1555412cb34335f017"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Mon Jun 29 10:32:01 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 02 06:45:43 2026 -0700"
      },
      "message": "refactor: move examples from inline to examples folder\n\nChange-Id: Idb7cc5db2a4f7764b1614b12359bfbd039d122f9\n"
    },
    {
      "commit": "44b66281020890c62e9dfd1555412cb34335f017",
      "tree": "742739097782f4eefee9a5e9cf76f4f2d1dc7c51",
      "parents": [
        "a821f34e80bc844abd22d1b0e64325caa6918ad3"
      ],
      "author": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Fri Jun 26 11:59:45 2026 +0200"
      },
      "committer": {
        "name": "Leon Moll",
        "email": "lemo@netlight.com",
        "time": "Thu Jul 02 15:44:42 2026 +0200"
      },
      "message": "feat: add project persistence with IndexedDB\n\nChange-Id: I87d3efbbe16217b88f228477183b9a80f2958bcd\n"
    },
    {
      "commit": "747d6edd7657b90919d73a9ecc19d9bf01ea43bb",
      "tree": "f01f915bea506ec10eb68319e4e1ea689b3dc644",
      "parents": [
        "140080b37aa45fa504d836ed45ea47f5a1947693"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 01 17:12:04 2026 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Wed Jul 01 17:12:04 2026 +0200"
      },
      "message": "Add link to download companion app\n\nChange-Id: I7547f72065a54ee10ce5365ec82ae7bcef0d3cc4\n"
    }
  ],
  "next": "140080b37aa45fa504d836ed45ea47f5a1947693"
}
