)]}'
{
  "log": [
    {
      "commit": "542bda3968c6dd5b79392dd63e2955e04520401a",
      "tree": "ea1a0743849495ca2489c6363d2dc689dd0a56a7",
      "parents": [
        "225e9668aeebc0cae667872dd45222d69ac3cbd8"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Wed Jun 11 18:31:03 2025 -0700"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Thu Jun 12 01:31:34 2025 +0000"
      },
      "message": "browser: rename browser_read_image to read_image and auto-send screenshots to LLM\n\nRename browser_read_image tool to read_image and modify browser_take_screenshot\nto automatically send image content to the LLM instead of requiring a separate\nread_image tool call, streamlining the screenshot workflow.\n\nProblem Analysis:\nThe current browser screenshot workflow required two separate tool calls:\n1. browser_take_screenshot - saves screenshot and returns file path\n2. browser_read_image - reads saved screenshot and sends to LLM\n\nThis two-step process was inefficient and created unnecessary round trips.\nAdditionally, browser_read_image was specific to browser automation but\nthe functionality of reading and encoding images is more general purpose.\n\nImplementation Changes:\n\n1. Screenshot Tool Behavior (claudetool/browse/browse.go):\n   - Modified browser_take_screenshot to automatically return image content\n   - Removed screenshotOutput struct as ID-only response no longer needed\n   - Added base64 encoding of screenshot data directly in screenshotRun\n   - Returns []llm.Content with both text description and image data\n   - Still saves screenshot file for potential future reference\n   - Uses same image encoding format as existing read_image tool\n\n2. Tool Rename (claudetool/browse/browse.go):\n   - Renamed browser_read_image tool to read_image\n   - Updated tool name in NewReadImageTool from \u0027browser_read_image\u0027 to \u0027read_image\u0027\n   - Maintained all existing functionality and input/output format\n   - Tool description and schema remain unchanged\n\n3. UI Updates (termui/termui.go):\n   - Updated template condition from \u0027browser_read_image\u0027 to \u0027read_image\u0027\n   - Maintains existing emoji and display format for read_image tool calls\n\n4. WebUI Updates (webui/src/web-components/):\n   - Updated sketch-tool-calls.ts to reference \u0027read_image\u0027 instead of \u0027browser_read_image\u0027\n   - Renamed sketch-tool-card-browser-read-image.ts to sketch-tool-card-read-image.ts\n   - Updated component class name from SketchToolCardBrowserReadImage to SketchToolCardReadImage\n   - Updated custom element name from \u0027sketch-tool-card-browser-read-image\u0027 to \u0027sketch-tool-card-read-image\u0027\n   - Updated import statement to reference new component file name\n   - Removed old component file and updated TypeScript declarations\n\n5. Test Updates (claudetool/browse/browse_test.go):\n   - Modified TestGetTools to allow read_image tool without \u0027browser_\u0027 prefix\n   - Added special case handling for read_image in tool naming convention check\n   - All existing tests continue to pass with updated tool name\n\nTechnical Details:\n- Screenshot auto-send uses same base64 encoding as existing read_image tool\n- Content structure matches browser_read_image output format for consistency\n- File saving still occurs for potential debugging or future reference\n- Error handling preserves existing behavior with proper fallbacks\n- Tool count remains the same (12 tools with screenshots, 10 without)\n\nBenefits:\n- Eliminates need for two-step screenshot workflow\n- Reduces round trips and simplifies user experience\n- More intuitive tool naming (read_image is general purpose)\n- Maintains full backward compatibility for read_image functionality\n- Consistent image encoding across all browser tools\n- Automatic screenshot viewing improves debugging and validation workflows\n\nTesting:\n- All existing browser tool tests pass with updated expectations\n- TestReadImageTool verifies renamed tool functionality\n- Tool naming convention test updated to handle read_image exception\n- TypeScript compilation successful with no type errors\n- Web component functionality preserved across rename\n\nThis enhancement streamlines screenshot workflows while maintaining the\ngeneral-purpose read_image tool for reading arbitrary image files, creating\na more efficient and intuitive browser automation experience.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: se3e81f997f30f01ek\n"
    },
    {
      "commit": "80b488d853e2766b638e65cfe44a5904d7cb24ee",
      "tree": "abd280ec3924efb4dbbd72622129bc4af56e28ca",
      "parents": [
        "6458e7c751856a9f7f4004367cb6274e564a1489"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Sat May 10 18:21:54 2025 -0700"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Sun May 11 01:22:37 2025 +0000"
      },
      "message": "Browser tools: initialize lazily and add timeouts.\n\nAlso rename browser_screenshot to browser_take_screenshot for clarity\\n- Update both Go and UI code to maintain consistency\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s8a5cabff914f88dfk\n"
    },
    {
      "commit": "4962f153fa0d6812543addd690be8dba8c04a406",
      "tree": "3a90c5736422c77f8ef3dc8d552640e65f1e07a0",
      "parents": [
        "8b43ffbf41d06aee5ad5c734f1661a3b62cfe1a9"
      ],
      "author": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Tue May 06 17:24:20 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Tue May 06 17:24:20 2025 +0000"
      },
      "message": "all: fix formatting\n"
    },
    {
      "commit": "33d282f80db786cc60ba521a38ed5166f23239ed",
      "tree": "9ed1f15c6d3081d5bef7d16b9d72e78a2c7780cf",
      "parents": [
        "a9d87aa69cfefdc91ec7aaa6bc42907749748e76"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Sat May 03 04:01:54 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Tue May 06 10:23:39 2025 -0700"
      },
      "message": "Add browse tool support.\n\nI reviewed some MCPs (using OpenAI\u0027s deep research to help), and it\nhelped me choose chromedp as the relevant library and helped me come up\nwith an interface. This commit adds chrome to the Docker image which is\nkind of big. (I\u0027ve noticed that it\u0027s smaller on Ubuntu, where it doesn\u0027t\npull in X11.) go-playwright was a library contender as well.\n\nImplement browser automation tooling using chromedp\n\nThis implementation adds browser automation capabilities to the system via the chromedp library,\nenabling Claude to interact with web content effectively.\n\nKey features include:\n\n1. Core browser automation functionality:\n   - Created new browsertools package in claudetool/browser\n   - Implemented tools for navigating, clicking, typing, waiting for elements,\n     getting text, evaluating JavaScript, taking screenshots, and scrolling\n   - Added lazy browser initialization that defers until first use\n   - Integrated with the agent to expose these tools to Claude\n\n2. Screenshot handling and display:\n   - Implemented screenshot storage with UUID-based IDs in /tmp/sketch-screenshots\n   - Added endpoint to serve screenshots via /screenshot/{id}\n   - Created dedicated UI component for displaying screenshots\n   - Ensured proper responsive design with loading states and error handling\n   - Fixed URL paths for proper rehomed URL support\n   - Modified tool calls component to auto-expand screenshot results\n\n3. Error handling and reliability:\n   - Added graceful error handling for browser initialization failures\n   - Implemented proper cleanup of browser resources\n\nThe browser automation tools provide a powerful way for Claude to interact with web content,\nmaking it possible to scrape data, test web applications, and automate web-based tasks.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    }
  ]
}
