)]}'
{
  "log": [
    {
      "commit": "7de3bdd597e962ab2533f67018545c6fd2a33d16",
      "tree": "5c3116b9e2fc88f47f820014a1ce071d104b1773",
      "parents": [
        "ebe74cdcc911d70afd804b6218bab25744513578"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Jul 18 01:51:53 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu Jul 17 19:13:58 2025 -0700"
      },
      "message": "webui: hide GitHub link in push dialog for non-GitHub remotes\n\nOnly show \"Open on GitHub\" button when pushing to GitHub remotes.\nThe dialog now checks the remote\u0027s is_github property before generating\na branch URL, returning empty string for non-GitHub remotes.\n\nChanges:\n- Modified _computeBranchURL() to check selectedRemote.is_github\n- Added test coverage for GitHub, GitLab, and self-hosted remotes\n- Updated demo mock to include non-GitHub remotes for testing\n\nThis prevents the confusing \"Open on GitHub\" button from appearing\nwhen pushing to GitLab, self-hosted Git servers, or other non-GitHub\nremote repositories.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: sb441bfcebf8fea07k\n"
    },
    {
      "commit": "3a41f1501568811b7a6a83e6d674f19188595848",
      "tree": "2545072c225a258ac2b2d0fe35eb862c237ecc76",
      "parents": [
        "75b45f5665fad8d386d36f88bf7dc37808a8dcac"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Jul 18 01:51:54 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri Jul 18 01:51:54 2025 +0000"
      },
      "message": "webui: update Push button tooltip to indicate it opens a dialog\n\nChange tooltip from \u0027Push current HEAD to remote\u0027 to \u0027Open push dialog\nto push current HEAD to remote\u0027 to better communicate that clicking\nthe button opens a dialog interface rather than immediately pushing.\n\nUser changes from diff view.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: sa22bbc9efe9d6ad2k\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"
    }
  ]
}
