)]}'
{
  "log": [
    {
      "commit": "1ee0bc6c8f6ee7a6d0b26189815879f7455069c6",
      "tree": "9779a6c73738efb9375887d2dcd6de84a3ddcbc6",
      "parents": [
        "d37f7a73a0b77329d4701edee3d6d9a6b79d4e47"
      ],
      "author": {
        "name": "banksean",
        "email": "banksean@gmail.com",
        "time": "Tue Jul 22 23:24:18 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Tue Jul 22 23:31:38 2025 +0000"
      },
      "message": "webui: add dark mode support to demo server\n\nCore Component Dark Mode Support:\n- sketch-timeline.ts: Welcome box, loading indicators, thinking bubbles, navigation\n- sketch-tool-card-base.ts: Status icons, elapsed time, hover states, details panel\n- All 14 sketch-tool-card-* components: Consistent dark styling for tool results\n\nDemo System Infrastructure:\n- Enhanced demo runner (demo.html) with complete dark theme CSS variables\n- Added sketch-theme-toggle integration in sidebar for easy theme switching\n- Extended demo-fixtures utilities with semantic color system (8 new CSS variables)\n- Comprehensive color mappings: backgrounds, text, borders, controls, buttons\n\nDemo File Compatibility (13 files updated):\n- Fixed 60+ instances of hardcoded colors across all demo components\n- Replaced light-mode-only colors (#24292f, #f6f8fa, etc.) with CSS variables\n- Updated text colors, backgrounds, borders for proper contrast in both themes\n- Maintained visual hierarchy while ensuring accessibility\n\nTechnical Implementation:\n- CSS custom properties system with automatic :root/.dark theme switching\n- GitHub-inspired dark color palette for professional appearance\n- Smooth 0.2s transitions for seamless theme changes\n- Semantic variable naming for maintainability and consistency\n\nKey Features Added:\n- Theme toggle accessible from any demo (no need to navigate to Theme Toggle demo)\n- Complete visual consistency between light and dark modes\n- Proper contrast ratios throughout for accessibility\n- Tool card demos showcase dark mode styling with realistic content\n\nComponents Updated:\nTimeline: Welcome messages, loading states, thinking indicators, jump button\nTool Cards: Status icons, input/output display, hover states, detailed views\nDemos: Labels, backgrounds, instruction panels, control elements, text content\n\nThe demo system now provides a complete, professional dark mode experience\nthat matches modern development tool standards with excellent usability\nand visual consistency across all components and demonstrations.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s97589e2fe2fdeeb3k\n"
    },
    {
      "commit": "581bd795582ab99b1aa81a39466a8433c14d4485",
      "tree": "ce1e1b90c6800486ad94c8f1fa58cf2cbbce9e05",
      "parents": [
        "d52d39d31ad33400b6bdb0ff678a6739de92b2eb"
      ],
      "author": {
        "name": "banksean",
        "email": "banksean@gmail.com",
        "time": "Sun Jul 20 18:30:12 2025 -0700"
      },
      "committer": {
        "name": "banksean",
        "email": "banksean@gmail.com",
        "time": "Sun Jul 20 18:34:11 2025 -0700"
      },
      "message": "webui: s/demo-runner/demo/g\n"
    },
    {
      "commit": "4337aa70a436963ed0e1d563215dc9eb1f176085",
      "tree": "90c2d000e2d901af1116f27bbb9e3a4d7988b542",
      "parents": [
        "6fc754f4473d250a1873497d34727f540f214e79"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Fri Jun 27 23:41:33 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Sat Jun 28 01:04:16 2025 +0000"
      },
      "message": "add sketch-app-shell demo fixture\n\nCreates TypeScript demo module for sketch-app-shell component with:\n- Interactive controls for mode switching (chat, diff, terminal)\n- Follows established demo framework conventions\n- Added component to demo runner registry\n- Enables testing via npm run demo:runner or npx vite\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s25f711ddd94f1609k\n"
    },
    {
      "commit": "618bfb28892561a8ef2e3d6163de4fd6c990beda",
      "tree": "c1ef367f8a4ecea00f237bc084f1ecbd15773764",
      "parents": [
        "8b2bc8eacb6ca23c1dbfda31eb9f3651eb756820"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Wed Jun 25 20:52:30 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Wed Jun 25 22:24:00 2025 +0000"
      },
      "message": "webui: implement modular demo system with TypeScript and shared fixtures\n\nReplace hand-written HTML demo pages with TypeScript demo modules and\nautomated infrastructure to reduce maintenance overhead and improve\ndeveloper experience with type safety and shared code.\n\nProblems Solved:\n\nDemo Maintenance Overhead:\n- Hand-written HTML demo pages contained extensive boilerplate duplication\n- No type checking for demo setup code or component data\n- Manual maintenance of demo/index.html with available demos\n- Difficult to share common fake data between demo pages\n- No hot module replacement for demo development\n\nCode Quality and Consistency:\n- Demo setup code written in plain JavaScript without type safety\n- No validation that demo data matches component interfaces\n- Inconsistent styling and structure across demo pages\n- Duplicated fake data declarations in each demo file\n\nSolution Architecture:\n\nTypeScript Demo Module System:\n- Created DemoModule interface for standardized demo structure\n- Demo modules export title, description, imports, and setup functions\n- Full TypeScript compilation with type checking for demo code\n- Dynamic import system for on-demand demo loading with Vite integration\n\nShared Demo Infrastructure:\n- demo-framework/ with types.ts and demo-runner.ts for core functionality\n- DemoRunner class handles dynamic loading, cleanup, and error handling\n- Single demo-runner.html page loads any demo module dynamically\n- Supports URL hash routing for direct demo links\n\nCentralized Fake Data:\n- demo-fixtures/ directory with shared TypeScript data files\n- sampleToolCalls, sampleTimelineMessages, and sampleContainerState\n- Type-safe imports ensure demo data matches component interfaces\n- demoUtils with helper functions for consistent demo UI creation\n\nAuto-generated Index Page:\n- generate-index.ts scans for *.demo.ts files and extracts metadata\n- Creates index-generated.html with links to all available demos\n- Automatically includes demo titles and descriptions\n- Eliminates manual maintenance of demo listing\n\nImplementation Details:\n\nDemo Framework:\n- DemoRunner.loadDemo() uses dynamic imports with Vite ignore comments\n- Automatic component import based on demo module configuration\n- Support for demo-specific CSS and cleanup functions\n- Error handling with detailed error display for debugging\n\nDemo Module Structure:\n- sketch-chat-input.demo.ts: Interactive chat with message history\n- sketch-container-status.demo.ts: Status variations with real-time updates\n- sketch-tool-calls.demo.ts: Multiple tool call examples with progressive loading\n- All use shared fixtures and utilities for consistent experience\n\nVite Integration:\n- Hot Module Replacement works for demo modules and shared fixtures\n- TypeScript compilation on-the-fly for immediate feedback\n- Dynamic imports work seamlessly with Vite\u0027s module system\n- @vite-ignore comments prevent import analysis warnings\n\nTesting and Validation:\n- Tested demo runner loads and displays available components\n- Verified component discovery and dynamic import functionality\n- Confirmed shared fixture imports work correctly\n- Validated auto-generated index creation and content\n\nFiles Modified:\n- demo-framework/types.ts: TypeScript interfaces for demo system\n- demo-framework/demo-runner.ts: Core demo loading and execution logic\n- demo-fixtures/: Shared fake data (tool-calls.ts, timeline-messages.ts, container-status.ts, index.ts)\n- demo-runner.html: Interactive demo browser with sidebar navigation\n- generate-index.ts: Auto-generation script for demo index\n- sketch-chat-input.demo.ts: Converted chat input demo to TypeScript\n- sketch-container-status.demo.ts: Container status demo with variations\n- sketch-tool-calls.demo.ts: Tool calls demo with interactive examples\n- readme.md: Comprehensive documentation for new demo system\n\nBenefits:\n- Developers get full TypeScript type checking for demo code\n- Shared fake data ensures consistency and reduces duplication\n- Hot module replacement provides instant feedback during development\n- Auto-generated index eliminates manual maintenance\n- Modular architecture makes it easy to add new demos\n- Vite integration provides fast development iteration\n\nThe new system reduces demo maintenance overhead while providing\nbetter developer experience through TypeScript, shared code, and\nautomated infrastructure.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s3d91894eb7c4a79fk\n"
    }
  ]
}
