)]}'
{
  "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": "d52d39d31ad33400b6bdb0ff678a6739de92b2eb",
      "tree": "a777c975562ee7ace6e3459a4701f6098c80fa8c",
      "parents": [
        "23a35b8da9da135ad130bee89a1f96cac4d02bf6"
      ],
      "author": {
        "name": "banksean",
        "email": "banksean@gmail.com",
        "time": "Sun Jul 20 14:57:38 2025 -0700"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Mon Jul 21 01:16:10 2025 +0000"
      },
      "message": "webui: clean up component demos\n"
    },
    {
      "commit": "254c49faa2537d79e1394c4109f48a6e0990967c",
      "tree": "3b13d86f48e45846dc225ccd24253f5b0dca0398",
      "parents": [
        "55b4ab50d0ee61e15825cb4254cfc63b8f5489bd"
      ],
      "author": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Thu Jul 17 17:26:24 2025 -0700"
      },
      "committer": {
        "name": "Autoformatter",
        "email": "bot@sketch.dev",
        "time": "Fri Jul 18 00:40:30 2025 +0000"
      },
      "message": "sketch: \"git push\" button\n\nUltimately, we want to allow users to push their changes to github, and\nthereby do a good chunk of work without resorting to the terminal (and\nfiguring out how to move the git references around, which requires a\nbunch of esotiric and annoying expertise).\n\nThis commit introduces:\n\n1. For outtie\u0027s HTTP server (which is now comically Go HTTP -\u003e\n   CGI-effing-bin -\u003e git -\u003e shell script -\u003e git in this case), there\u0027s a\n   custom git hook that forwards changes to refs/remotes/origin/foo to\n   origin/foo. This is a git proxy of sorts. By forwarding the\n   SSH_AUTH_SOCK, we can use outtie\u0027s auth options without giving innie\n   the actual credentials. This works by creating a temporary directory\n   for git hooks (for outtie).\n\n2. Innie sets up a new remote, \"upstream\" when a \"passthrough-upstream\"\n   flag is pasksed. This remote kind of looks like the real upstream (so\n   upstream/foo) is fetched. This will let the agent handle rebases\n   better.\n\n3. Innie exposes a /pushinfo handler that returns the list of remotes\n   and the current commit and such. These have nice display names for\n   the outtie\u0027s machine and github if useful.\n\n   There\u0027s also a /push handler. This is the thing that knows about the\n   refs/remotes/origin/foo thing. There\u0027s no magic git push refspec that\n   makes this all work without that, I think. (Maybe there is? I don\u0027t\n   think there is.)\n\n   Note that there\u0027s been some changes about what the remotes look like,\n   and when we use the remotes and when we use agent.GitOrigin().\n   We may be able to simplify this by using git\u0027s insteadof\n   configurations, but I think it\u0027s fine.\n\n4. The web UI exposes a button to push, choose the remote and branch,\n   and such. If it can\u0027t do the push, you\u0027ll get a button to try to get\n   the agent to rebase.\n\n   We don\u0027t allow force pushes in the UI. We\u0027re treating those\n   as an advanced feature, and, if you need to do that, you can\n   figure it out.\n\nThis was collaboration with a gazillion sketch sessions.\n"
    }
  ]
}
