)]}'
{
  "log": [
    {
      "commit": "1ae976bde49d4f0dc48146c1e3d3f38201e1f830",
      "tree": "9d6235d7b3a16df5b968c271ca318147ac293412",
      "parents": [
        "e2d24ab80f34e25f602b306ea8e8b765101d8585"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Wed Apr 30 00:06:43 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 17:59:55 2025 -0700"
      },
      "message": "loop: fiddle with titleToBranch\n\nAdd support for numbers.\nUse strings.Map.\n"
    },
    {
      "commit": "e2d24ab80f34e25f602b306ea8e8b765101d8585",
      "tree": "0ba0f2f3874069024baf1af857ec67d045ea813d",
      "parents": [
        "dbe02304e804066bb32fcf6f41690336a98e6531"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Wed Apr 30 00:01:41 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 17:41:18 2025 -0700"
      },
      "message": "dockerimg: add \u0027apk add grep\u0027\n\nClaude wants to use lots of grep features that the busybox version lacks.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "dbe02304e804066bb32fcf6f41690336a98e6531",
      "tree": "d27ed5e5b94b004167e202254b97f7d1806733bd",
      "parents": [
        "2b2090e7fa8fd53eda5dca132980c3e2fa4cb3b8"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 16:44:23 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 16:44:23 2025 -0700"
      },
      "message": "loop: extract system prompt into a separate file\n\nThis will make swapping it out easier, if/when desired.\n"
    },
    {
      "commit": "2b2090e7fa8fd53eda5dca132980c3e2fa4cb3b8",
      "tree": "269e400e420a30079bfbaa7dea562e4b6d80d9d7",
      "parents": [
        "c72fff52ad6c5436fa8469f049fa232f2f6be5ed"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 16:41:34 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 16:42:35 2025 -0700"
      },
      "message": "claudetool: add missing json schema field\n\nApparently this is required, and Anthropic happens to not care."
    },
    {
      "commit": "c72fff52ad6c5436fa8469f049fa232f2f6be5ed",
      "tree": "2f42838fc0af2f4954a64b8edcc4c8e09ec08af4",
      "parents": [
        "d3906e2e0a18197148089f384b188135b07559be"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Tue Apr 29 20:17:54 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Tue Apr 29 16:24:19 2025 -0700"
      },
      "message": "Add SSH connection information to web UI\n\nThis commit implements:\n1. Added SSH information display to the web UI info button\n2. Shows SSH connection information only when running inside Docker container\n3. Constructs the full SSH hostname as \"sketch-[session_id]\"\n4. Added copy-to-clipboard buttons for SSH commands\n5. Styles the VSCode URL as a proper clickable link\n6. Shows a warning message when SSH is not available\n7. Modified container naming to use only SessionID instead of imgName+SessionID\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "d3906e2e0a18197148089f384b188135b07559be",
      "tree": "a26fb2fec665d3965e09a7cb53a95fd708db944a",
      "parents": [
        "7b6044969c696e1707a25c170eebd67fda919e34"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Tue Apr 29 17:32:14 2025 +0000"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Tue Apr 29 15:31:42 2025 -0700"
      },
      "message": "Add @click handler to stopButton in sketch-app-shell.ts\n\nThe stop button now sends a POST request to the /stop endpoint when clicked.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "7b6044969c696e1707a25c170eebd67fda919e34",
      "tree": "3c8d8672a42ca507fbe668f6735125644ff68bcd",
      "parents": [
        "dc507a303e2ffc2fb934d8717fef6b551193a416"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Tue Apr 29 11:45:59 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Tue Apr 29 11:51:09 2025 -0700"
      },
      "message": "bin/sk-ls.sh: Show currently running sketches in Docker and what they\u0027re up to\n"
    },
    {
      "commit": "dc507a303e2ffc2fb934d8717fef6b551193a416",
      "tree": "3248ed4b91d509c69963a1cae666a5bf254c66e0",
      "parents": [
        "5cf49264f156f65ac3948393d7da5c509e34b2b2"
      ],
      "author": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Tue Apr 29 18:38:53 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Tue Apr 29 18:38:53 2025 +0000"
      },
      "message": "all: fix formatting\n"
    },
    {
      "commit": "5cf49264f156f65ac3948393d7da5c509e34b2b2",
      "tree": "3e0d0c06b9e89a2e97a16812a5f7c75274c85989",
      "parents": [
        "570c3f8350204169007585e0f4a65f1f0085e504"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Tue Apr 29 18:35:55 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Tue Apr 29 11:38:12 2025 -0700"
      },
      "message": "Add welcome box with usage instructions to empty chat window\n\nThe welcome box provides a clear introduction with a title \u0027How to use Sketch\u0027\nand helpful instructions about how Sketch works when a user first opens the\napplication and there are no messages in the chat.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "570c3f8350204169007585e0f4a65f1f0085e504",
      "tree": "6c2b3d914cf94fa3c4b23ce73a7f8b613592f3e0",
      "parents": [
        "c2b6bdfdf9ff99becdb9f227dd04af015d9d3370"
      ],
      "author": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Tue Apr 29 18:26:50 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Tue Apr 29 18:26:50 2025 +0000"
      },
      "message": "all: fix formatting\n"
    },
    {
      "commit": "c2b6bdfdf9ff99becdb9f227dd04af015d9d3370",
      "tree": "6624e0dab07667f2cdc5d2471863d34acb69ec84",
      "parents": [
        "1b47aa2aa46bf1aad16c79d36a9baf60fc69e905"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Tue Apr 29 11:17:47 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Tue Apr 29 11:24:36 2025 -0700"
      },
      "message": "Improve status bar icons for LLM and tool calls\n\n- Replace notification-style number badges with background and color changes\n- Use SVG icons instead of emoji\n- Improve visual appearance when active/inactive\n- Update tests accordingly\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "1b47aa2aa46bf1aad16c79d36a9baf60fc69e905",
      "tree": "10cfc03414feef2c7adf723be101b136a7c387c5",
      "parents": [
        "2dc86b9bda41cf30926833b044d8669d92273b20"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Mon Apr 28 19:25:38 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Tue Apr 29 11:24:29 2025 -0700"
      },
      "message": "Add initial-commit CLI flag for specifying git reference\n\nThis adds a new -initial-commit flag to the sketch CLI which allows specifying\na different git reference besides HEAD as the starting point. The flag is\nincompatible with -unsafe mode and will show an error if both are used.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "2dc86b9bda41cf30926833b044d8669d92273b20",
      "tree": "e8ebd9c7710b6cfa311d7fcdb1c26b2a2b482162",
      "parents": [
        "50a1d62e0dc285c69b7c495e4a01a47fa3561692"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 14:11:58 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 10:48:31 2025 -0700"
      },
      "message": "Update codereview tool UI to show different icons based on result content\n\nAdded cross-linking comments between the UI component and differential.go\nto ensure they stay in sync going forward.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e"
    },
    {
      "commit": "50a1d62e0dc285c69b7c495e4a01a47fa3561692",
      "tree": "3a3e261735a063208430e457a0fbf93c1d30f58c",
      "parents": [
        "5fabc74b668752dc68e05a9a452cc15cf62077f7"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 09:59:03 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 09:59:13 2025 -0700"
      },
      "message": "loop: don\u0027t panic when LLM API call fails\n\nAnd refactor a touch."
    },
    {
      "commit": "5fabc74b668752dc68e05a9a452cc15cf62077f7",
      "tree": "dd5db2975b59ff8076922be0eb441326ace547da",
      "parents": [
        "d4b1cc76714b5e139e539259673afe7d74afa1cb"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 14:09:50 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 09:49:43 2025 -0700"
      },
      "message": "webui: make tool call failures less \"error\"-y\n\nIt\u0027s unnecessarily red/jarring.\nThis now matches the termui.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e"
    },
    {
      "commit": "d4b1cc76714b5e139e539259673afe7d74afa1cb",
      "tree": "69e30a90339000e8a42fba993acff1c58a7d2e98",
      "parents": [
        "15272c1ddf6eba4e8d9b2697a3e6af09752a6cf1"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 13:49:18 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 06:53:26 2025 -0700"
      },
      "message": "Sort git rev-list by time and limit results for related files\n\nSort the git rev-list by time (descending) and limit the result to max 100\ncommits in the related files calculation. This limits runtime and favors\nrecent commits, which are more likely to be relevant.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "15272c1ddf6eba4e8d9b2697a3e6af09752a6cf1",
      "tree": "c8022595159550121c43087cdfab1620d9ae6539",
      "parents": [
        "9c07e1d30f7f576bd7679a155873f6419743e6a6"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Mon Apr 28 19:36:15 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Mon Apr 28 19:36:15 2025 -0700"
      },
      "message": "claudetool: add two more \"related files\" todos"
    },
    {
      "commit": "9c07e1d30f7f576bd7679a155873f6419743e6a6",
      "tree": "e962e6cb86fdaca7fbb4359efd025b39a47de74e",
      "parents": [
        "ffecb1e9fbaca84d7f142aa294fa795c324587af"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Mon Apr 28 19:25:37 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Mon Apr 28 19:25:37 2025 -0700"
      },
      "message": "loop: prevent panic on double Agent.Init"
    },
    {
      "commit": "ffecb1e9fbaca84d7f142aa294fa795c324587af",
      "tree": "00bcb908d9a6b2d09b0ebf7bc3d1024f5cd9a16d",
      "parents": [
        "ffb58a30bd18ff8e21d228ac072dc636cb0510c8"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Mon Apr 28 18:59:14 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Mon Apr 28 16:15:34 2025 -0700"
      },
      "message": "claudetool: add \"related files\" detection to codereview tool\n\n"
    },
    {
      "commit": "ffb58a30bd18ff8e21d228ac072dc636cb0510c8",
      "tree": "b635557939e4def2f3195167cc3743ed2f845fd2",
      "parents": [
        "fa40c418792b77f186a03a056fbb81853e83d84d"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Mon Apr 28 13:50:56 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Mon Apr 28 14:35:33 2025 -0700"
      },
      "message": "webui: show more summary-text in tool cards\n"
    },
    {
      "commit": "fa40c418792b77f186a03a056fbb81853e83d84d",
      "tree": "d4f3d4409e93ba61d0171d4757b81339852e2fee",
      "parents": [
        "ea3fc200402ef92fb2d35c9b56ab77e77a983338"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Mon Apr 28 20:10:04 2025 +0000"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Mon Apr 28 13:53:46 2025 -0700"
      },
      "message": "webui: +sketch-tool-card-multiple-choice\n\nThis is just the frontend part of the multiple-choice tool.\nSince the actual tool call isn\u0027t implemented yet, the only\nway to exercise this code is via the demo page.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "ea3fc200402ef92fb2d35c9b56ab77e77a983338",
      "tree": "c95a9faf8d5cebb0e22d96cef4f17aec02089145",
      "parents": [
        "015b882721adf65cad5a11838d1d72c98e99c6f6"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Mon Apr 28 12:53:37 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Mon Apr 28 12:54:22 2025 -0700"
      },
      "message": "dockerimg: fix vscode:// links\n\nThis adds an undocumented parameter that makes vsc open a new window\ninstead of replacing your current vsc window with the link.\n"
    },
    {
      "commit": "015b882721adf65cad5a11838d1d72c98e99c6f6",
      "tree": "f3f553b73f01d592755ce245d1819a2d0feb5349",
      "parents": [
        "22bd8eb83b7c779d9d2396c75cc344124e150aee"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Mon Apr 28 12:29:08 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Mon Apr 28 12:29:08 2025 -0700"
      },
      "message": "webui: fix \u0027build\u0027 and \u0027dev\u0027 npm scripts\n"
    },
    {
      "commit": "22bd8eb83b7c779d9d2396c75cc344124e150aee",
      "tree": "81fc507d28db05b011d463745e125e6126260fb0",
      "parents": [
        "0dcebe1bf2ec5d6f85aa71fb46367e2adf8f4947"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Mon Apr 28 10:36:37 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Mon Apr 28 10:36:37 2025 -0700"
      },
      "message": "sshserver: fix env for ssh pty sessions\n"
    },
    {
      "commit": "0dcebe1bf2ec5d6f85aa71fb46367e2adf8f4947",
      "tree": "03bb39dc484e95c56f9dd5b4a6c75aa295736cdd",
      "parents": [
        "fefde5770a9f6484e23c926b408f86ca8aa388ae"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Mon Apr 28 14:51:04 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Mon Apr 28 14:51:04 2025 +0100"
      },
      "message": "Add support for passing prompt without -one-shot\n\nAdded `-prompt` option\n"
    },
    {
      "commit": "fefde5770a9f6484e23c926b408f86ca8aa388ae",
      "tree": "f418d19da72b00624df996253b00391dfb392041",
      "parents": [
        "d6d2c69696cdd642c778406d7a42f6fa626a33ef"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Mon Apr 28 10:59:03 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Mon Apr 28 10:59:03 2025 +0100"
      },
      "message": "webui: Tweak prettier setup\n\nThis should make us more consistent on formatting in local vs CI\n"
    },
    {
      "commit": "d6d2c69696cdd642c778406d7a42f6fa626a33ef",
      "tree": "1da266303d1456b68e7494eb3b89ac5c309961ac",
      "parents": [
        "e66db3e309d840bd25a05b274e95779d2a42a325"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Mon Apr 28 09:52:19 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Mon Apr 28 09:52:19 2025 +0100"
      },
      "message": "webui: Add missing step to make install\n"
    },
    {
      "commit": "e66db3e309d840bd25a05b274e95779d2a42a325",
      "tree": "5c95266dbd1dde9937a137ec79ab93513e6410a9",
      "parents": [
        "99a9a0285fe449f047fbc93766f37e6ea7af21df"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Sun Apr 27 15:40:39 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Sun Apr 27 20:52:40 2025 -0700"
      },
      "message": "Redesign Sketch top bar with tab-based interface\n\n- Replace emoji-only buttons with tabs showing both icons and text\n- Reorganize container status to hide detailed info behind (i) button\n- Keep only essential info visible: hostname, working dir, git repo, and cost\n- Improve layout of top banner components\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "99a9a0285fe449f047fbc93766f37e6ea7af21df",
      "tree": "ba255c9b05449c09d137cd6cf81edf58469542a1",
      "parents": [
        "f98d7305e73ecec9a78f94f527693d5adfb89159"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Sun Apr 27 15:15:25 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Sun Apr 27 20:00:22 2025 -0700"
      },
      "message": "Implement tracking of outstanding LLM and Tool calls\n\nThis commit implements a listener pattern between ant.convo and the Agent for tracking outstanding calls.\n\n* Added fields to the Agent struct to track outstanding LLM calls and Tool calls\n* Implemented the listener methods to properly track and update these fields\n* Added methods to retrieve the counts and names\n* Updated the State struct in loophttp.go to expose this information\n* Added a unit test to verify the tracking functionality\n* Created UI components with lightbulb and wrench icons to display call status\n* Added numerical indicators that always show when there are active calls\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "f98d7305e73ecec9a78f94f527693d5adfb89159",
      "tree": "14f8f8a5f9427568081e46a109c6751b7a8cd42a",
      "parents": [
        "dded2d6cbe676afc144899f23fc76bf72908a00d"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Sun Apr 27 17:44:06 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Sun Apr 27 17:45:33 2025 -0700"
      },
      "message": "webui: supress mermaid error msgs\n"
    },
    {
      "commit": "dded2d6cbe676afc144899f23fc76bf72908a00d",
      "tree": "68c2d11390164a80dd1fc4b304486ab5211841f7",
      "parents": [
        "8d93e3679e088af8086fd1c9f4d33de2e85608c2"
      ],
      "author": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Mon Apr 28 00:27:21 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Mon Apr 28 00:27:21 2025 +0000"
      },
      "message": "all: fix formatting\n"
    },
    {
      "commit": "8d93e3679e088af8086fd1c9f4d33de2e85608c2",
      "tree": "fe40a5fc3fdf341da5eb4f40954b7a941df284be",
      "parents": [
        "d8adbbaf6970b8d9c40cdf9795476d2850096b18"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Sun Apr 27 23:32:18 2025 +0000"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Sun Apr 27 17:25:09 2025 -0700"
      },
      "message": "webui: Add Mermaid diagram support to markdown\n\n* Installed mermaid library\n* Extended markdown renderer to support mermaid code blocks\n* Added CSS styling for mermaid diagrams\n* Added a demo page for testing mermaid diagrams\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "d8adbbaf6970b8d9c40cdf9795476d2850096b18",
      "tree": "1cbff1be11256ec99f4e953d0d0bee78cfb2e30d",
      "parents": [
        "5bff650e0d5603dc77efccb4b4610648aa83cbf6"
      ],
      "author": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Sun Apr 27 19:33:42 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Sun Apr 27 19:33:42 2025 +0000"
      },
      "message": "all: fix formatting\n"
    },
    {
      "commit": "5bff650e0d5603dc77efccb4b4610648aa83cbf6",
      "tree": "5475e933d40bb3577c01952772d0f49301d37b60",
      "parents": [
        "1112949adc2bb120a001a925c0c4e9e18def0ee6"
      ],
      "author": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Sat Apr 26 09:11:40 2025 -0700"
      },
      "committer": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Sat Apr 26 09:11:40 2025 -0700"
      },
      "message": "fix oddball formatter complaints\n"
    },
    {
      "commit": "1112949adc2bb120a001a925c0c4e9e18def0ee6",
      "tree": "591396d3d0932a475dc1db5d79b2b96b649daaba",
      "parents": [
        "5fdd024fa3d3df5fe5a2c216672d912b6aade60a"
      ],
      "author": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Fri Apr 25 20:41:53 2025 -0700"
      },
      "committer": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Fri Apr 25 20:43:00 2025 -0700"
      },
      "message": "dockerimg: use a default image from a public registry\n\nIf the LLM chooses our default alpine Go image, we save some\nwork by instead starting from a sketch docker image pushed\nto ghcr.io.\n"
    },
    {
      "commit": "5fdd024fa3d3df5fe5a2c216672d912b6aade60a",
      "tree": "08e20aa0006bb422603693557cbfa7b2d92ae55a",
      "parents": [
        "b74c4f6e1c93afca3d37a6b68c717d41a51fa612"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 19:31:58 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 19:38:09 2025 -0700"
      },
      "message": "Sketch \"inception\" support.\n\nI wanted to tell Sketch-in-container to run\n\n\tgo run ./cmd/sketch -unsafe -skaband-addr\u003d -one-shot \u0027what is todays date\u0027\"\n\nand have it work. And now it does.\n\nThe underlying complexity is whether \"inDocker\" is enough to know\n\"isInsideSketch\", so I separated that as far as necessary. The skaband\nstuff is still complicated.\n\nIt might be preferable to use env variables for all outside-\u003einside\ncommunication rather than use flags sometimes and variables sometimes\n(like, for keys), but here we are.\n"
    },
    {
      "commit": "b74c4f6e1c93afca3d37a6b68c717d41a51fa612",
      "tree": "8e5c31de6634a56bec23e026d8fd8515d92eb173",
      "parents": [
        "833a0f83af52be33eed3baf0f67ffa3ddab55cb4"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 19:18:49 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 19:38:09 2025 -0700"
      },
      "message": "make -one-shot command line work with both -unsafe and regular\n\nThe \"-one\" option had atrophied in a variety of ways, against both\nunsafe and dockerized environments. I resurrected it, and simplified\nthe flag handling slightly by using just one flag.\n"
    },
    {
      "commit": "833a0f83af52be33eed3baf0f67ffa3ddab55cb4",
      "tree": "0f1c78df648d499ed6ac3e975276ecc977ab4e70",
      "parents": [
        "0cbd976940708c94eb8b644b14bfda3f19087997"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 18:39:36 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 19:31:00 2025 -0700"
      },
      "message": "claudetool: improve codereview\n\nDo a bunch of un-vibecoding and bug fixing.\nUnfortunately, lots left.\nGet rid of vet; gopls check covers it.\n\nAdd testing infrastructure and a bunch of fixtures.\n"
    },
    {
      "commit": "0cbd976940708c94eb8b644b14bfda3f19087997",
      "tree": "c52d063201ece6aa1b9691e2dac5a5d31ceab1a3",
      "parents": [
        "33f717263a1b7172ed8e0182481adb1b1ededb7a"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Fri Apr 25 16:30:20 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Fri Apr 25 16:30:20 2025 -0700"
      },
      "message": "rename a file that was driving me crazy\n"
    },
    {
      "commit": "33f717263a1b7172ed8e0182481adb1b1ededb7a",
      "tree": "6c3e212689dc203318fff3d4be6e6a5eb750f226",
      "parents": [
        "2cba69514b40c49a7a71102962b917c8a9eb4194"
      ],
      "author": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Fri Apr 25 23:23:22 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Fri Apr 25 23:23:22 2025 +0000"
      },
      "message": "all: fix formatting\n"
    },
    {
      "commit": "2cba69514b40c49a7a71102962b917c8a9eb4194",
      "tree": "b623b2f6dca84a875a40758361617111b724edda",
      "parents": [
        "6f2bf8aa1d1105d292b8fb7961fc30b41d15cc79"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Fri Apr 25 20:32:10 2025 +0000"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Fri Apr 25 16:19:49 2025 -0700"
      },
      "message": "Add unit tests for dockerimg/sshtheater.go with refactoring for testability\n\nRefactored the code to use dependency injection to make it more testable, including:\n- Created FileSystem and KeyGenerator interfaces\n- Added RealFileSystem and RealKeyGenerator implementations\n- Refactored SSHTheater to use these interfaces\n- Added comprehensive unit tests for all functionality\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "6f2bf8aa1d1105d292b8fb7961fc30b41d15cc79",
      "tree": "87b89de8e93958c878f92bafeb32e67d0f407134",
      "parents": [
        "5c70bfe5601e9919e598025ac56984e1b2e21040"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 15:29:46 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 15:32:56 2025 -0700"
      },
      "message": "sketch: fix double space in SSH warning\n"
    },
    {
      "commit": "5c70bfe5601e9919e598025ac56984e1b2e21040",
      "tree": "a2b53c46956af8beaa37aa4157ad7dc2482d3dba",
      "parents": [
        "eda2a8ca73891aa55831391cea6cc8c6d2a79d67"
      ],
      "author": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Fri Apr 25 21:28:00 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Fri Apr 25 21:28:00 2025 +0000"
      },
      "message": "all: fix formatting\n"
    },
    {
      "commit": "eda2a8ca73891aa55831391cea6cc8c6d2a79d67",
      "tree": "4d64d78eacc2ef0193910bd7da41f67ac5da90d1",
      "parents": [
        "5b8ab1f1a7bcdd4d1a44e654d2a50074a64bc443"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 21:24:11 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 14:27:06 2025 -0700"
      },
      "message": "Simplify and fix GitHub workflow push to main\n\nInstead of fetching and checking out the formatted commit before pushing,\ndirectly push the formatted commit SHA to main. This simplifies the workflow\nand is more reliable.\n\nAdd missing outputs section to workflow_call definition in formatting.yml\nto properly expose the commit SHA to the calling workflow.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "5b8ab1f1a7bcdd4d1a44e654d2a50074a64bc443",
      "tree": "f8e9b32d6c7593aa251021e91164dfada4890a2d",
      "parents": [
        "c3391a932e724dc6f6898c8e1b51002d104822e1"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 14:14:26 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 14:14:26 2025 -0700"
      },
      "message": "webui: intentionally break formatting\n\nTo test auto-formatting."
    },
    {
      "commit": "c3391a932e724dc6f6898c8e1b51002d104822e1",
      "tree": "d325f2df9d7a4d8ea8ddca9a47df9e362222ac8e",
      "parents": [
        "a0801ad5dbd2a0e4d4983447b62f72444e829927"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 21:03:33 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 14:10:35 2025 -0700"
      },
      "message": "Fix autoformatting push to main in GitHub workflow\n\nThe push-to-main job was not correctly fetching the latest commit\n(with formatting fixes) from the queue-main branch before pushing to main.\nThis ensures the latest changes are used.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "a0801ad5dbd2a0e4d4983447b62f72444e829927",
      "tree": "6c622b74649869703cd85f2fe3ea317ee293d46f",
      "parents": [
        "df2d3dccd3f2f97fd4b8ab3bd153fbef15becea0"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 19:34:53 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 13:56:59 2025 -0700"
      },
      "message": "Add comma formatting to input and output token displays\n\nThe token counts now display with commas in both the terminal UI and web UI.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "df2d3dccd3f2f97fd4b8ab3bd153fbef15becea0",
      "tree": "fd3749e53b40131d8b9e6da9045c59fbcbc31ef2",
      "parents": [
        "6e42f32893e061a36f67aa0abbb8c62b402262c2"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 12:31:35 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 13:23:52 2025 -0700"
      },
      "message": "dockerimg: add extra space for terminals that render emojis wide"
    },
    {
      "commit": "6e42f32893e061a36f67aa0abbb8c62b402262c2",
      "tree": "1a23bff4eeb700f9a1fd2152b300fedfe4d4f9ff",
      "parents": [
        "15a4db76df2c71b8398702727e9892e51dc18478"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 13:18:36 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 13:23:52 2025 -0700"
      },
      "message": ".github/workflows: let prettier format yml files\n\nI don\u0027t care. But now when I hit save it won\u0027t change any more.\n"
    },
    {
      "commit": "15a4db76df2c71b8398702727e9892e51dc18478",
      "tree": "953a02dcf9cc8c4faabba73b09937355060ef02d",
      "parents": [
        "ae77226709546105985bc38c06382dceabae50ff"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 13:18:06 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 13:23:52 2025 -0700"
      },
      "message": ".github/workflows: improve autoformatter commit message"
    },
    {
      "commit": "ae77226709546105985bc38c06382dceabae50ff",
      "tree": "e3b691c973341c5e62aefd1ba72ecbf00da31900",
      "parents": [
        "4de8a91553cccc6f7e48419de75acfddafdb549b"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 20:02:22 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 13:13:27 2025 -0700"
      },
      "message": "Try again to fix GitHub Actions permission issues\n"
    },
    {
      "commit": "4de8a91553cccc6f7e48419de75acfddafdb549b",
      "tree": "8334b1134d1f1c49fcdb26700ac32d206328b67e",
      "parents": [
        "ddc81426ded54ef97b7650f5f9d1ef9c94b80fd3"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Fri Apr 25 21:01:30 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Fri Apr 25 21:01:30 2025 +0100"
      },
      "message": "webui: Add aria snapshot testing\n"
    },
    {
      "commit": "ddc81426ded54ef97b7650f5f9d1ef9c94b80fd3",
      "tree": "cfd82b5dad08203a8f756350cbfed80a09031edc",
      "parents": [
        "e7c9a4429c54a6d6431f825ee81858785e0c5d8e"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 19:47:05 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 12:52:46 2025 -0700"
      },
      "message": "Fix GitHub Actions permissions for pushing to main\n\nUse explicit GitHub token for authentication when pushing to main branch in the\nqueue-main workflow to resolve the 403 permission denied error.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "e7c9a4429c54a6d6431f825ee81858785e0c5d8e",
      "tree": "b079963b79cf945955be40a033f52e49c2f7efa4",
      "parents": [
        "46fff9766f75fed8e9956dd126c9d0585057ed37"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Fri Apr 25 20:02:22 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Fri Apr 25 20:32:28 2025 +0100"
      },
      "message": "webui: Add test for sketch-app-shell component\n\nCreated a basic test for the top-level Sketch App Shell component with API mocking. Reorganized mock data to be shared between tests and demo.\n\nCo-Authored-By: sketch\n"
    },
    {
      "commit": "46fff9766f75fed8e9956dd126c9d0585057ed37",
      "tree": "8ebe8ba917454f42e83c2ff58bf06b81d0cb1479",
      "parents": [
        "bd6c1680c6361ee9ed1735ed56edb0bb2b0c56ec"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Fri Apr 25 14:57:44 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Fri Apr 25 20:32:28 2025 +0100"
      },
      "message": "webui: More minor css tweaks\n"
    },
    {
      "commit": "bd6c1680c6361ee9ed1735ed56edb0bb2b0c56ec",
      "tree": "738d834bcf4b9ef1f538a15c600ac7e47bc8076b",
      "parents": [
        "8b00db1c6b7ee7930c005efa547775ad3709f37a"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 12:04:07 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 12:04:07 2025 -0700"
      },
      "message": "autofix formatting during queue-main pushes\n\n"
    },
    {
      "commit": "8b00db1c6b7ee7930c005efa547775ad3709f37a",
      "tree": "ee34fd0b0c6b123bc09dc80fb78aa79831d5853d",
      "parents": [
        "9b999b08b8af6a69e24d910a3f3da542b4104c26"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 18:41:38 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 11:44:05 2025 -0700"
      },
      "message": "Add run-formatters.sh script and update GitHub workflow\n\nThis commit adds a new bin/run-formatters.sh script that can both check and fix code formatting.\nThe script handles Go code formatting with gofumpt and webui formatting with Prettier.\nThe GitHub workflow has been updated to use this script in check mode.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "9b999b08b8af6a69e24d910a3f3da542b4104c26",
      "tree": "1cd853a40a95c47c9e9b028b9125015ba41cb051",
      "parents": [
        "176a5105d3f5e515ea782b054f1ab853a8afc399"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 16:31:50 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 11:43:58 2025 -0700"
      },
      "message": "Update window title to show \u0027sk: \u003ctitle\u003e\u0027 and add disconnection indicator\n\nThe window title now displays \u0027sk: \u003ctitle\u003e\u0027 to make it easier to identify\nwhich tab is which when multiple sketch tabs are open. Additionally, a red\ncircle indicator (🔴) is added to the title when the connection to the server\nis lost.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "176a5105d3f5e515ea782b054f1ab853a8afc399",
      "tree": "591e6bd3eebe72b4706a86977ff29c23dcdd72de",
      "parents": [
        "6bc2eb24313de1455fc5b6c2ea231b86fb5d1329"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Thu Apr 24 20:32:37 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 11:43:58 2025 -0700"
      },
      "message": "Add force-rebuild flag to allow user to rebuild docker container explicitly.\n"
    },
    {
      "commit": "6bc2eb24313de1455fc5b6c2ea231b86fb5d1329",
      "tree": "7e5f39a498f266be72af9b17bff6014b066b4ba7",
      "parents": [
        "35889970de8690e8e38ea14503dd1a11db751498"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 03:14:07 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Apr 25 11:43:58 2025 -0700"
      },
      "message": "Fix: Prevent diff2html anchor links from resetting view\n\nWhen clicking anchor links in the diff view, the page was resetting to conversation view.\nAdded event handling to intercept clicks on these links to prevent default browser behavior\nand instead perform smooth scrolling to the target element without changing the URL.\n\nCo-Authored-By: sketch\n"
    },
    {
      "commit": "35889970de8690e8e38ea14503dd1a11db751498",
      "tree": "575df0d71e7fc89e7a6f2f5f68fdf80efc10ce5c",
      "parents": [
        "f5e28f67b3f569c73b1b020b5783872371bd0c3c"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 20:48:16 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Apr 25 11:40:27 2025 -0700"
      },
      "message": "all: only display total input tokens\n\nKnowing the cache reads and writes was mildly interesting for us,\nbut it is inside baseball, and our calculations ended up being a little wrong.\nStreamline the UI and make the math right.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e"
    },
    {
      "commit": "f5e28f67b3f569c73b1b020b5783872371bd0c3c",
      "tree": "174b42b12dadc6bbd96257aa0f7cdde722d09609",
      "parents": [
        "faa39bec76f463c0e2c9b06f567a596d47af0d50"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Fri Apr 25 10:48:00 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Fri Apr 25 10:48:00 2025 -0700"
      },
      "message": "sshtheater: check for Include line in ~/.ssh/config\n"
    },
    {
      "commit": "faa39bec76f463c0e2c9b06f567a596d47af0d50",
      "tree": "cd05540a4622b7277a79c05c9f7ce58c9b4dcbd4",
      "parents": [
        "01ed5bee0c121852d0e2ab3836a08acab68397e4"
      ],
      "author": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Fri Apr 25 08:06:38 2025 -0700"
      },
      "committer": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Fri Apr 25 08:06:57 2025 -0700"
      },
      "message": "cmd/sketch: only show structured logs printf if --unsafe\n\nThe inner sketch binary running in docker runs with --unsafe.\n"
    },
    {
      "commit": "01ed5bee0c121852d0e2ab3836a08acab68397e4",
      "tree": "e2b473d510d146f9474b2eedb5526b8a4eead1f2",
      "parents": [
        "7d5a6301a256823ab4b26a68dbd166f0d0737409"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Thu Apr 24 22:46:53 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Thu Apr 24 22:46:53 2025 -0700"
      },
      "message": "sshserver: enable ssh port forwarding\n"
    },
    {
      "commit": "7d5a6301a256823ab4b26a68dbd166f0d0737409",
      "tree": "99abfc40814eb152f9e3442d7f75ef8a5e306002",
      "parents": [
        "4854c6535a320f6fbfe8baee02af509367e4236c"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Thu Apr 24 21:27:51 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Thu Apr 24 21:29:46 2025 -0700"
      },
      "message": "SSHTheater: fix known_hosts update issue\n"
    },
    {
      "commit": "4854c6535a320f6fbfe8baee02af509367e4236c",
      "tree": "6ef13e82fb6597c443b31c350af8e390a8d0062f",
      "parents": [
        "53786efbbbb2fbc3edb91ba639894e713b293140"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Thu Apr 24 18:37:02 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Thu Apr 24 20:49:55 2025 -0700"
      },
      "message": "dockerimg: +SSHTheater, auto-configures local ssh\n\n- removes the old cli flags for pointing sketch at existing ssh key files\n- generates key pairs for both the container ssh server and the user if\n  these don\u0027t already exist in ~/.sketch/\n- automatically edits ~/.sketch/known_hosts and ~/.sketch/ssh_config to\n  add entries when you start a sketch container and remove them when you\u0027re\n  done\n- does not make any edits to default ~/.ssh/config files, so you\u0027ll have\n  to manually add line to you default ssh config file like:\n  `Include HOME_DIR/.sketch/ssh_config`\n  in order to have your ssh tools pick up what sketch is putting down.\n"
    },
    {
      "commit": "53786efbbbb2fbc3edb91ba639894e713b293140",
      "tree": "1442ed25c365a61cd35f9c2a0052cebb6fa66083",
      "parents": [
        "f91095a6a873a4d2faa91d075e93abd4761bc7b5"
      ],
      "author": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Thu Apr 24 12:52:51 2025 -0700"
      },
      "committer": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Thu Apr 24 12:52:55 2025 -0700"
      },
      "message": "dockerimg: use emoji in container debug info\n\nThis should potentially be removed (or moved to --verbose) but I am\nstill using it semi-reguarly during debugging.\nShould probably be removed in a few weeks by default.\n"
    },
    {
      "commit": "f91095a6a873a4d2faa91d075e93abd4761bc7b5",
      "tree": "6e07670daa2cfcca51d5b896efdeb9e30db37709",
      "parents": [
        "b1fe3c8513684281fbb9d5af56319524cf5b6caa"
      ],
      "author": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Thu Apr 24 12:49:27 2025 -0700"
      },
      "committer": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Thu Apr 24 12:49:28 2025 -0700"
      },
      "message": "termui: remove Initial Commit startup message\n\nI cannot think of a good use for this.\nIt is not particularly informative, because it is hard to\ninterpret a commit sha. And less is more.\n"
    },
    {
      "commit": "b1fe3c8513684281fbb9d5af56319524cf5b6caa",
      "tree": "9e721bdb2e25ab3947b50e4466129808c5f4cbf4",
      "parents": [
        "094e4d291369d5a04375e1fd9c95f17a236532a0"
      ],
      "author": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Thu Apr 24 11:38:46 2025 -0700"
      },
      "committer": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Thu Apr 24 11:38:46 2025 -0700"
      },
      "message": "readme.md: remove pending invite step\n"
    },
    {
      "commit": "094e4d291369d5a04375e1fd9c95f17a236532a0",
      "tree": "f9321e4ecaf73a0d764225012847f8ef6916fd9f",
      "parents": [
        "1d06132f5a79950ab8a64eb72219363fb63ca92f"
      ],
      "author": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Thu Apr 24 11:35:14 2025 -0700"
      },
      "committer": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Thu Apr 24 11:35:17 2025 -0700"
      },
      "message": "cmd/sketch, dockerimg: remove unhelpful initial debug messages\n"
    },
    {
      "commit": "1d06132f5a79950ab8a64eb72219363fb63ca92f",
      "tree": "46ed36f431ee3aef7caacbae7b1ebe7560d3f544",
      "parents": [
        "6a50b1811c7fbf8be7e5ad4cc77a576e2d612a66"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Thu Apr 24 09:52:56 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Thu Apr 24 11:11:44 2025 -0700"
      },
      "message": "sshserver: add direct-tcpip channel, allow non-pty\n\nThis change enables VS Code to connect to local sketch containers\nover SSH.\n\nThe VSC docs describe how to use this feature:\nhttps://code.visualstudio.com/docs/remote/ssh\n"
    },
    {
      "commit": "6a50b1811c7fbf8be7e5ad4cc77a576e2d612a66",
      "tree": "e7665da7411934d25ffd512c37b41a3921f63ad6",
      "parents": [
        "e923bb38613f15e458eb1c696e15057bbaa46a59"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 11:07:41 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 11:08:10 2025 -0700"
      },
      "message": "ant: fix subconvo url\n\nnot sure how/when this regressed...\n"
    },
    {
      "commit": "e923bb38613f15e458eb1c696e15057bbaa46a59",
      "tree": "bbd2b8d05b649db33451367635de2de80d204fdc",
      "parents": [
        "4097e5357b93d80297177ee1c7ebf736e33a623d"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 18:48:01 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 19:06:40 2025 +0100"
      },
      "message": "webui: Add empty conversation demo\n"
    },
    {
      "commit": "4097e5357b93d80297177ee1c7ebf736e33a623d",
      "tree": "b8fd43dcf1c6310ab0c2a7c34bb7c1f503136f9d",
      "parents": [
        "563d6b35a841a9dbafcaa57bf247fe9f9bf5e841"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 18:55:28 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 19:06:40 2025 +0100"
      },
      "message": "webui: Cleanup css and fix layout\n\n- Fixes #13\n"
    },
    {
      "commit": "563d6b35a841a9dbafcaa57bf247fe9f9bf5e841",
      "tree": "c5da1c5f5561f36f0f008958077cc33f0094d4a9",
      "parents": [
        "c6aabfa12da0726206cc753850dd7d723113af90"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 16:17:40 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 19:06:40 2025 +0100"
      },
      "message": "webui: Tweak mock\n"
    },
    {
      "commit": "c6aabfa12da0726206cc753850dd7d723113af90",
      "tree": "311fe32f4d65094b44e934fbca4e6f49dcc4e9b3",
      "parents": [
        "ac96b09ba64e8bb2707fb1f6c54369b4f8b844f5"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 14:40:26 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 19:06:40 2025 +0100"
      },
      "message": "webui: Remove some debug logging\n"
    },
    {
      "commit": "ac96b09ba64e8bb2707fb1f6c54369b4f8b844f5",
      "tree": "2c4911673de35b0ec7e08dca8880d3cedec53e7b",
      "parents": [
        "26daff7287b50f79a2f54563de83fa175ab35616"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 14:26:12 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 19:06:40 2025 +0100"
      },
      "message": "webui: Don\u0027t allow launch to accidentally use wrong server\n"
    },
    {
      "commit": "26daff7287b50f79a2f54563de83fa175ab35616",
      "tree": "f9f6ac873231b1e87be654137410fd02abcadc3d",
      "parents": [
        "7b43662d9959e1f5c7dd2b390474192b442d5801"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 14:25:55 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 19:06:40 2025 +0100"
      },
      "message": "webui: Fix demo css\n"
    },
    {
      "commit": "7b43662d9959e1f5c7dd2b390474192b442d5801",
      "tree": "da0c55ff81e5bd1f16cabcba6ccf0d7623a34c49",
      "parents": [
        "75ec6bb42c08c8407cb96025b070dc9f1eb66eb9"
      ],
      "author": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Thu Apr 24 17:49:01 2025 +0000"
      },
      "committer": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Thu Apr 24 11:00:07 2025 -0700"
      },
      "message": "Only print skaband connection messages when verbose flag is set\n\nCo-Authored-By: sketch\nOnly print the \u0027skaband connected\u0027 and disconnected messages if the verbose flag is set.\n"
    },
    {
      "commit": "75ec6bb42c08c8407cb96025b070dc9f1eb66eb9",
      "tree": "b7563c63b29f1535c5904e180344423412daab4e",
      "parents": [
        "08951fb6789dc172d4719eb6a09fcac21f94ef95"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 10:49:16 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 10:49:16 2025 -0700"
      },
      "message": "loop: add email address to Co-Authored-By trailer\n\n- It\u0027s the standard.\n- It\u0027ll let us set up a gravatar for hello@sketch.dev with the sketch logo.\n- It tells people how to find sketch (there was no domain or other hint anywhere).\n"
    },
    {
      "commit": "08951fb6789dc172d4719eb6a09fcac21f94ef95",
      "tree": "7d63c4345d02d8ece938564d26073fddbaef8be8",
      "parents": [
        "56ac60591b50b638ee292e45489d2f0301e4f638"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 10:42:12 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 10:42:12 2025 -0700"
      },
      "message": "CONTRIBUTING.md: point folks towards update_tests.sh\n"
    },
    {
      "commit": "56ac60591b50b638ee292e45489d2f0301e4f638",
      "tree": "5de7ee9bea124df72536da07d996921c66b6c00f",
      "parents": [
        "7660e4e48978ed32452ed444514238c41c27c0c9"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 10:40:55 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 10:40:55 2025 -0700"
      },
      "message": "claudetool: add some cleanup TODOs to bash background execution\n"
    },
    {
      "commit": "7660e4e48978ed32452ed444514238c41c27c0c9",
      "tree": "ae9c6be37e2c2d4b593d5cc75eeb73457d911771",
      "parents": [
        "fe3e9f7d8480ea2ed8cfa68a310a7d8bf6162160"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 10:34:17 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Apr 24 10:34:17 2025 -0700"
      },
      "message": "dockerimg: use more modern APIs\n\n- bytes.Lines instead of bufio.NewScanner\n- bytes.CutPrefix instead of HasPrefix/TrimPrefix\n\nSimpler, cheaper.\n\nThere is a slight change in that bytes.Lines includes the\ntrailing newline, and bufio.Scanner does not.\nBut we only do prefix work to start, and then we do a TrimSpace,\nso this ends up being a wash.\n"
    },
    {
      "commit": "fe3e9f7d8480ea2ed8cfa68a310a7d8bf6162160",
      "tree": "68fad2b385959732fc3ecf5acd697a6a89aaf551",
      "parents": [
        "b9ac849c781135bfd08e71d0b0b4355433006d1f"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Thu Apr 24 09:02:05 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Thu Apr 24 09:48:13 2025 -0700"
      },
      "message": "fix possible nil dereference\n\nI\u0027ve been seeing a stack track panic in these lines. Trying\nto be explicit about everything I can see being busted,\nto try to narrow it down. It reproduces with dying network\nconnections, but not yet reliably enough that I have steps.\n"
    },
    {
      "commit": "b9ac849c781135bfd08e71d0b0b4355433006d1f",
      "tree": "74e71f018c8bed529025194e0a3b365a826d1d69",
      "parents": [
        "8cac59aedb3ae4f45464ce3cd4eed36d6834dc7b"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 12:09:40 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 12:21:19 2025 +0100"
      },
      "message": "Fix css mime type\n"
    },
    {
      "commit": "8cac59aedb3ae4f45464ce3cd4eed36d6834dc7b",
      "tree": "2ffecc10a275f859c354c234d08e9b763376a4ff",
      "parents": [
        "bbca240367c3df26870ffe0fcc41c0c004679736"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 12:21:19 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 12:21:19 2025 +0100"
      },
      "message": "feat: integrate Mock Service Worker (MSW) for API mocking and testing\n\nCurrently just used for demo page\n\n- Added MSW as a dependency in package.json.\n- Configured MSW in the demo HTML to start the worker and handle API requests.\n- Created mockServiceWorker.js to manage service worker lifecycle and request handling.\n- Implemented browser.ts to set up the MSW worker with defined request handlers.\n- Developed handlers.ts to simulate API responses and manage application state for testing.\n"
    },
    {
      "commit": "bbca240367c3df26870ffe0fcc41c0c004679736",
      "tree": "37dd12c7c2c6dd365c5bcf9efd6f30ae796ccea2",
      "parents": [
        "6ed6adbe65a26268ef8f74c99b4bc777417f500c"
      ],
      "author": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 09:37:58 2025 +0100"
      },
      "committer": {
        "name": "Pokey Rule",
        "email": "755842+pokey@users.noreply.github.com",
        "time": "Thu Apr 24 09:37:58 2025 +0100"
      },
      "message": "Move DEVELOPMENT.md \u003d\u003e CONTRIBUTING.md\n"
    },
    {
      "commit": "6ed6adbe65a26268ef8f74c99b4bc777417f500c",
      "tree": "9083c17b22b0a699556b20f660bd3911fffd4c22",
      "parents": [
        "5d6af87c7c4f2ccdfe9d2ba2d0d74356b213d1d5"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:56:38 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:56:38 2025 -0700"
      },
      "message": "Fix -open to point to skaband addr when configured for the container case\n\nWe were opening on the skaband address if using -unsafe but\nnot doing the same in the container case.\n"
    },
    {
      "commit": "5d6af87c7c4f2ccdfe9d2ba2d0d74356b213d1d5",
      "tree": "79ccaf9095d50c100935d05af3158e018fe537ac",
      "parents": [
        "2032b1c1971ceb85ca14b20273a3783729fba3e3"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:48:34 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:48:34 2025 -0700"
      },
      "message": "Only print Dockerfile in verbose mode\n\nThis is sneaky because verbose controls where stdout/stderr goes, for\nbetter or worse.\n"
    },
    {
      "commit": "2032b1c1971ceb85ca14b20273a3783729fba3e3",
      "tree": "0486e9222643ffcbbd34286148f4a7913a169668",
      "parents": [
        "4f50a68ac73677c0022b2b3da8b4667cee01c11b"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:40:42 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:40:42 2025 -0700"
      },
      "message": "Move webui from /loop/webui to /webui\n\nThanks, perl (and git mv):\n\n\tperl -pi -e s,loop/webui,webui,g $(git grep -l loop/webui)\n"
    },
    {
      "commit": "4f50a68ac73677c0022b2b3da8b4667cee01c11b",
      "tree": "5f90dc700f219ea50150dd8a3f7c002c8d7d2e10",
      "parents": [
        "6c1f34f0a737a796942ccbd4e4003bc66ba73453"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:34:55 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:37:03 2025 -0700"
      },
      "message": "Optimize Playwright installation to only use Chromium\n\n- Modified GitHub workflow to only install Chromium browser instead of all browsers\n- Speeds up CI workflow by reducing download and installation time\n- Matches the existing Playwright configuration which already only uses Chromium\n\nCo-Authored-By: sketch\n\u0027npx playwright install --with-deps\u0027 is kinda slow; can you modify things so we only install chromium\n"
    },
    {
      "commit": "6c1f34f0a737a796942ccbd4e4003bc66ba73453",
      "tree": "595ef98331991e8ba179d55b52e75ece83d784a8",
      "parents": [
        "b4c7e1bdd860836d46c64065f268007e721e5fb8"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:33:03 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:36:57 2025 -0700"
      },
      "message": "Enhance GitHub workflow to use gotestsum for better test visualization\n\n- Install gotestsum in the workflow\n- Replace go test with gotestsum using testname format\n- Generate JUnit XML reports\n- Add step to publish test results\n\nRemove external test results action from workflow\n\n- Removed the EnricoMi/publish-unit-test-result-action dependency\n- Removed JUnit XML file generation for test results\n- Keep gotestsum with testname format for better test result visibility\n\nCo-Authored-By: sketch\n"
    },
    {
      "commit": "b4c7e1bdd860836d46c64065f268007e721e5fb8",
      "tree": "fb3cd12df47cd05c4f549e39f5ee29fcd360040f",
      "parents": [
        "d43e57238d1b471938d10faa5b9762394b70aaac"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:30:58 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:30:58 2025 -0700"
      },
      "message": "Removing LLM-generated skipped test\n"
    },
    {
      "commit": "d43e57238d1b471938d10faa5b9762394b70aaac",
      "tree": "28467563dbd88214cccd68333294a517bd6527b7",
      "parents": [
        "b60f0f2c4f6baf635c7eeb2972d6ed25d9485891"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:21:26 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:28:10 2025 -0700"
      },
      "message": "Adding DEVELOPMENT.md with some tips\n"
    },
    {
      "commit": "b60f0f2c4f6baf635c7eeb2972d6ed25d9485891",
      "tree": "93a6b85c34010b1ef41072aad309e56e759694a6",
      "parents": [
        "cc3ba220373b62dd5a098180ea6797af76407525"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 18:19:32 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:28:10 2025 -0700"
      },
      "message": "Add background execution capability to bash tool\n\nThis adds a \u0027background\u0027 flag to the bash tool, allowing commands to be\nexecuted without waiting for them to complete. When running in background\nmode, the command\u0027s stdout and stderr are redirected to temporary files,\nand the tool returns the PID and paths to these files as a JSON structure.\n\nFeatures:\n- Different default timeouts: 1m for foreground, 10m for background\n- Goroutine to properly reap background processes when they complete\n- Uses \u0027sketch-bg-\u0027 prefix for temporary directories\n- Added robust test helpers for waiting on files and processes\n- Skip agent test that uses recorded HTTP interactions incompatible with\n  the updated schema\n\nSketch also updated the various UIs\n\nCo-Authored-By: sketch\n"
    },
    {
      "commit": "cc3ba220373b62dd5a098180ea6797af76407525",
      "tree": "f2e5dcea13fb8da2b652d79d7f5f0bf762c8a395",
      "parents": [
        "18532b212b8c108cc1c8bfcbaf5804a5c4156655"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 14:52:21 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:28:10 2025 -0700"
      },
      "message": "sketch: Add python3 to our container image\n"
    },
    {
      "commit": "18532b212b8c108cc1c8bfcbaf5804a5c4156655",
      "tree": "3667714104cdd0bc0f8078a0ea619676e0764c7f",
      "parents": [
        "d013131a2892d175fcecc270d51e526c617dc170"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 21:11:46 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:28:10 2025 -0700"
      },
      "message": "Rename Host/Runtime hostname fields to Outside/Inside pattern\n\nThis renames all hostname/OS/working directory fields to follow the\nOutside/Inside naming pattern rather than Host/Runtime naming pattern.\n\n- HostHostname -\u003e OutsideHostname\n- RuntimeHostname -\u003e InsideHostname\n- HostOS -\u003e OutsideOS\n- RuntimeOS -\u003e InsideOS\n- HostWorkingDir -\u003e OutsideWorkingDir\n- RuntimeWorkingDir -\u003e InsideWorkingDir\n\nThis includes related method names, struct fields, and JavaScript properties.\n\nCo-Authored-By: sketch\n"
    },
    {
      "commit": "d013131a2892d175fcecc270d51e526c617dc170",
      "tree": "60e67016511ba28c67848ed84cc99e65467712ed",
      "parents": [
        "e4fa0e35235147cc76c7011f7aa91fa03a5b05bc"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 21:14:01 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:22:24 2025 -0700"
      },
      "message": "Use bufio.Scanner instead of strings.Split for line iteration\n\nImprove efficiency when iterating over log lines by using bufio.Scanner\ninstead of splitting the entire log string and then iterating over it.\n\nCo-Authored-By: sketch\n"
    },
    {
      "commit": "e4fa0e35235147cc76c7011f7aa91fa03a5b05bc",
      "tree": "5043a0cdd1c1222e01aaf255cffd7d8f659ee49d",
      "parents": [
        "ae3480fee8b8ebf867a1097868d0032ff4b51324"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 14:15:55 2025 -0700"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Wed Apr 23 19:22:24 2025 -0700"
      },
      "message": "sketch: print Dockerfile contents\n\nIt\u0027s a bit of inside baseball, but building the Docker image\nis slow enough that it\u0027d be nice to stare at what it\u0027s doing,\neven in the simplest form.\n"
    },
    {
      "commit": "ae3480fee8b8ebf867a1097868d0032ff4b51324",
      "tree": "468d02673f8e9fff21fd33d9a343ef4125d646ac",
      "parents": [
        "5544d146e1ebe2747ae282e611f8d0a2c23f2b6c"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Wed Apr 23 15:28:20 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Wed Apr 23 15:57:49 2025 -0700"
      },
      "message": "allow random (ephemeral) host ports for ssh server\n\nalso fixes an issue with authorized_keys files that\ncontain multiple pks: it now checks all of them not\njust the first one it parses.\n"
    }
  ],
  "next": "5544d146e1ebe2747ae282e611f8d0a2c23f2b6c"
}
