)]}'
{
  "log": [
    {
      "commit": "3999593021336893670576875c130c1b171e797d",
      "tree": "9568daa2fefa7cdef0ec5416fc734b640822ecc3",
      "parents": [
        "0635c776054d5ced92328a2c8cd4014ef5f4a86f"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Wed Jun 25 19:32:08 2025 +0000"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Wed Jun 25 19:42:32 2025 +0000"
      },
      "message": "webui: generate tailwind.css in esbuild.go, output to dist/\n\nMove Tailwind CSS generation from npm script to esbuild.go build process\nand output generated file to dist/tailwind.css instead of src/tailwind.css\nto prevent tracking generated files in git.\n\nProblems Solved:\n- Generated CSS file was tracked in git causing unnecessary diffs\n- Build process relied on manual npm script execution\n- Generated CSS mixed with source files\n\nSolution Architecture:\n- Integrated Tailwind CSS generation into Go build process\n- Moved output location to dist/ directory (already gitignored)\n- Added automatic CSS generation during webui.Build()\n- Moved @tailwindcss/cli from devDependencies to regular dependencies\n\nImplementation Details:\n- Added generateTailwindCSS() function to run tailwindcss CLI during build\n- Modified Build() to call generateTailwindCSS() after npm ci\n- Updated file copying logic to skip src/tailwind.css (no longer needed)\n- Moved @tailwindcss/cli to regular dependencies to work with --omit dev\n- Updated npm tailwind script to output to dist/tailwind.css\n- Added src/tailwind.css to .gitignore to prevent accidental tracking\n\nFiles Modified:\n- sketch/webui/esbuild.go: Added CSS generation and updated build process\n- sketch/webui/.gitignore: Added src/tailwind.css exclusion\n- sketch/webui/package.json: Moved @tailwindcss/cli to dependencies, updated script\n- sketch/webui/src/tailwind.css: Removed from git tracking\n\nThe generated CSS is now properly separated from source files and\nautomatically created during the build process.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s3464450fc2c7851fk\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": "b29f8911e4c0d99d6c32866d7174a51b6730e9d8",
      "tree": "34e445527e949fb27970d4264db8a776323be485",
      "parents": [
        "ec3ad1a7798b0dc1d17d363c91680b7828d7fce2"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Sun Apr 20 15:39:11 2025 -0700"
      },
      "committer": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Sun Apr 20 15:53:30 2025 -0700"
      },
      "message": "webui: Migrate from @open-wc/testing to Playwright\n"
    },
    {
      "commit": "86b56862f8d3e192646a17548ef5294582c31f8f",
      "tree": "d0235f3f56695de8e6281ba3f57a663847204f33",
      "parents": [
        "f5bb3d3f1aa33e2a066c4139675f096f73c1f9d4"
      ],
      "author": {
        "name": "Sean McCullough",
        "email": "banksean@gmail.com",
        "time": "Fri Apr 18 13:04:03 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 18 13:04:03 2025 -0700"
      },
      "message": "loop/webui: swtich to web components impl (#1)\n\n* loop/webui: swtich to web components impl\n\nThis change reorganizes the original vibe-coded\nfrontend code into a structure that\u0027s much\neasier for a human to read and reason about,\nwhile retaining the user-visible functionality\nof its vibe-coded predecessor. Perhaps most\nimportantly, this change makes the code testable.\n\nSome other notable details:\n\nThis does not use any of the popular large web\nframeworks, but instead follows more of an\n\"a la carte\" approach: leverage features\nthat already exist in modern web browsers,\nlike custom elements and shadow DOM.\n\nTemplating and basic component lifecycle\nmanagement are provided by lit.\n\nState management is nothing fancy. It\ndoesn\u0027t use any library or framework, just\na basic \"Events up, properties down\"\napproach.\n\n* fix bad esbuild.go merge\n\n* loop/webui: don\u0027t bundle src/web-components/demo\n\n* loop/webui: don\u0027t \u0027npm ci\u0027 dev deps in the container\n\n* rebase to main, undo README.md changes, add webuil.Build() call to LaunchContainer()"
    }
  ]
}
