)]}'
{
  "log": [
    {
      "commit": "3d1308e3468915212bea595ddef14952eb82f7fc",
      "tree": "de337e13601c4f73496f529bcd0ddfa6fc6d2cf5",
      "parents": [
        "5c86165937d556a7a37f51f609661d9c4910087e"
      ],
      "author": {
        "name": "banksean",
        "email": "banksean@gmail.com",
        "time": "Tue Jul 29 17:20:10 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Tue Jul 29 17:23:01 2025 +0000"
      },
      "message": "webui: dark mode support to demo fmwk, tool cards\n\nDemo framework fixes:\n- sketch-push-button.demo.ts: add dark variants for bg, border, text colors\n- chat-input.ts: add dark variants for message containers and status sections\n- demo-runner.ts: replace inline error styles with Tailwind dark mode classes\n- sketch-call-status.demo.ts: fix hardcoded white backgrounds in status cards\n- sketch-diff-range-picker.demo.ts: add dark variants to picker and status displays\n- sketch-timeline-message.demo.ts: fix message container backgrounds\n- sketch-view-mode-select.demo.ts: comprehensive dark mode for all scenarios\n\nTool card fixes:\n- Update shared createPreElement function with dark:bg-gray-700/dark:text-gray-100\n- bash tool: fix command display and result areas\n- think tool: fix input content area with proper dark background\n- patch tool: comprehensive diff rendering with dark variants for added/removed/context lines\n- codereview tool: inherits dark mode through shared utilities\n\nAll components now use consistent dark mode patterns with proper contrast:\nbg-white dark:bg-gray-800, border-gray-200 dark:border-gray-700,\ntext-gray-600 dark:text-gray-300, matching existing components.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s8ac5253d0cbaa3ack\n"
    },
    {
      "commit": "a6b995b83277dd730e35a8f5be14c139d82a544e",
      "tree": "2cb9d54d6c38916a6639061e2086f24055e68ecf",
      "parents": [
        "57afbca4ac1dbd4351aae93302e34ee45b36a25f"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Jul 24 00:45:05 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Wed Jul 23 17:53:58 2025 -0700"
      },
      "message": "webui: kill eslint\u0027s no-explicit-any warning dead dead dead\n\nA sign that it maybe it\u0027s not a good fit for us\nis the fact that it was sprinkled around our codebase\nas prolifically as blinding snow in an Antarctic blizzard.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s79f40917a73a3320k\n"
    },
    {
      "commit": "26bc659f8f7e8864a6fb0a71dcbee7d3742d3763",
      "tree": "5429b19391d26f2cf8a82253237a52d2d33543e6",
      "parents": [
        "a14b0183208df257a43748b51666043db7e62138"
      ],
      "author": {
        "name": "philip.zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Mon Jun 30 20:15:30 2025 -0700"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Tue Jul 01 03:20:42 2025 +0000"
      },
      "message": "webui: add ESLint and eslint-typescript\n\nI\u0027ve historically found this stuff worthwhile, so let\u0027s swallow the pill.\n\nFortunately, sketch was happy to oblige.\n\n- Install ESLint, @eslint/js, and typescript-eslint packages\n- Configure eslint.config.mjs with recommended TypeScript ESLint rules\n- Add browser globals support for DOM and web APIs\n- Integrate ESLint into npm test workflow via package.json scripts\n- Update Makefile to run lint checks as part of test suite\n- Fix 249+ linting issues including:\n  * Remove unused imports and variables (with _ prefix convention)\n  * Fix case declaration issues with eslint-disable blocks\n  * Remove unnecessary escape characters\n  * Address prefer-const violations\n  * Handle unused function parameters appropriately\n- Configure ignore patterns to exclude dist/ and node_modules/\n- Set rules to allow explicit \u0027any\u0027 types temporarily\n- Convert warnings for ts-ignore, async promise executors, and unsafe optional chaining\n\nResults:\n- ESLint now runs successfully with 0 errors and only 6 warnings\n- TypeScript compilation continues to work correctly\n- Linting integrated into test workflow for continuous quality enforcement\n- Codebase follows consistent ESLint TypeScript recommended practices\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: sd7b538be0a28d294k\n"
    },
    {
      "commit": "b379592340a40c4c22ac1a52be4d2e612a9aa4f4",
      "tree": "37d9ce08602651cc11b0b1bc2f46ebdd6907fc6a",
      "parents": [
        "659b98361783ad139412ea2a0bc62c8ed25c292e"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Fri Jun 27 01:59:41 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Fri Jun 27 02:04:42 2025 +0000"
      },
      "message": "webui: convert sketch-call-status and sketch-chat-input to SketchTailwindElement with comprehensive demo support\n\nConvert both sketch-call-status and sketch-chat-input components from shadow DOM CSS to Tailwind classes while maintaining test compatibility and adding comprehensive demo infrastructure.\n\nProblems Solved:\n\nShadow DOM Styling Limitations:\n- Both components used CSS-in-JS with shadow DOM preventing Tailwind integration\n- Large static styles blocks with custom CSS duplicated Tailwind functionality\n- Components couldn\u0027t benefit from design system consistency\n- Difficult to maintain custom CSS alongside Tailwind-based components\n\nMissing Demo Infrastructure:\n- sketch-call-status had no demo fixtures for testing component states\n- sketch-chat-input needed dedicated demo fixture following naming convention\n- Components not properly integrated into demo runner system\n\nTest Compatibility Issues:\n- Conversion to Tailwind required updating shadow DOM selectors\n- renderRoot.querySelector calls needed conversion to direct querySelector\n- Component tests needed updating for non-shadow DOM structure\n\nSolution Implementation:\n\nTailwind CSS Conversion - sketch-call-status:\n- Changed sketch-call-status to inherit from SketchTailwindElement\n- Replaced CSS-in-JS styles with Tailwind utility classes and inline animations\n- Converted animations using @keyframes in inline \u003cstyle\u003e tag\n- Maintained exact visual appearance while using Tailwind classes\n\nTailwind CSS Conversion - sketch-chat-input:\n- Changed sketch-chat-input to inherit from SketchTailwindElement\n- Replaced extensive static styles CSS block with Tailwind utility classes\n- Converted complex chat container, input wrapper, and button styling\n- Added custom fade-in animation to tailwind.config.js with keyframes\n\nKey Tailwind Class Mappings:\n- Call status indicators: bg-yellow-100 text-amber-500 (active), text-gray-400 (idle)\n- Status banners: bg-green-50 text-green-700 (idle), bg-orange-50 text-orange-600 (working)\n- Chat container: w-full bg-gray-100 p-4 min-h-[40px] relative\n- Chat input: flex-1 p-3 border border-gray-300 rounded resize-y font-mono\n- Send button: bg-blue-500 hover:bg-blue-600 disabled:bg-gray-400\n\nShadow DOM to Light DOM Conversion:\n- Removed static styles properties completely\n- Updated all renderRoot.querySelector calls to direct querySelector calls\n- Changed shadow DOM event handler setup to work with light DOM\n- Maintained all drag-and-drop and event handling functionality\n\nTest Compatibility Maintenance:\n- Added semantic CSS classes back to elements for test selectors\n- Updated sketch-chat-input.test.ts to use querySelector instead of renderRoot.querySelector\n- Fixed drag event simulation to work with light DOM structure\n- All existing tests continue to pass with updated selectors\n\nDemo Infrastructure Implementation:\n- Created call-status.ts demo fixtures with CallStatusState interface\n- Added comprehensive sketch-call-status.demo.ts with interactive controls\n- Created chat-input.ts demo fixture with message display and controls\n- Added both components to demo-runner.ts knownComponents list\n\nInteractive Demo Features:\n- Call status: Status variations, interactive LLM/tool call controls, connection toggle\n- Chat input: Message display with user/bot styling, multiple preset buttons\n- Both demos include real-time state updates and comprehensive examples\n\nDependencies:\n- Added @tailwindcss/vite package for Tailwind integration\n- Updated package.json and package-lock.json with new dependency\n\nFiles Modified:\n- sketch/webui/src/web-components/sketch-call-status.ts: Converted to SketchTailwindElement\n- sketch/webui/src/web-components/sketch-chat-input.ts: Converted to SketchTailwindElement\n- sketch/webui/src/web-components/sketch-chat-input.test.ts: Updated selectors for light DOM\n- sketch/webui/src/web-components/demo/demo-fixtures/call-status.ts: Added call status fixtures\n- sketch/webui/src/web-components/demo/demo-fixtures/index.ts: Export call status fixtures\n- sketch/webui/src/web-components/demo/sketch-call-status.demo.ts: Complete interactive demo\n- sketch/webui/src/web-components/demo/chat-input.ts: New chat input demo fixture\n- sketch/webui/src/web-components/demo/demo-framework/demo-runner.ts: Added both components\n- sketch/webui/tailwind.config.js: Added custom fade-in animation\n- sketch/webui/package.json: Added @tailwindcss/vite dependency\n\nTesting and Validation:\n- All component tests pass with updated selectors\n- Components render correctly with Tailwind classes\n- All functionality preserved including animations and interactions\n- Interactive demos load and function properly\n- Components appear in demo runner list\n\nThe conversion maintains all functionality while enabling better integration\nwith the Tailwind-based design system and providing comprehensive demo\ninfrastructure for development and testing.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s97f4190763cfe17ak\n"
    }
  ]
}
