)]}'
{
  "commit": "c7c2cc1e9d2a90515e071527241e0ce680fe0738",
  "tree": "df1b7548a47fa1e4f219bcd8a27e5fadaa0acc3c",
  "parents": [
    "83c5be6f73607c6add6d5c389f7894e1d7b5e06a"
  ],
  "author": {
    "name": "Sean McCullough",
    "email": "banksean@gmail.com",
    "time": "Fri Jun 13 03:21:18 2025 +0000"
  },
  "committer": {
    "name": "Autoformatter",
    "email": "bot@sketch.dev",
    "time": "Fri Jun 13 03:48:18 2025 +0000"
  },
  "message": "webui: fix repository name parsing for names containing dots\n\nFix GitHub repository URL parsing in sketch-container-status component to\nproperly handle repository names containing dots, resolving broken GitHub\nlinks in the ongoing session log banner.\n\nProblem Analysis:\nThe formatGitHubRepo function used regex patterns with [^/\\s.]+ character\nclasses that excluded dots from repository names. This caused repository names\nlike \u0027boldsoftware/sketch.git\u0027 to be truncated to \u0027boldsoftware/sketch\u0027 when\nparsed, breaking GitHub links and repository display in the session banner.\n\nThe issue occurred in three regex patterns for different GitHub URL formats:\n- HTTPS URLs: /https:\\/\\/github\\.com\\/([^/]+)\\/([^/\\s.]+)(?:\\.git)?/\n- SSH URLs: /git@github\\.com:([^/]+)\\/([^/\\s.]+)(?:\\.git)?/\n- Git protocol: /git:\\/\\/github\\.com\\/([^/]+)\\/([^/\\s.]+)(?:\\.git)?/\n\nThe [^/\\s.]+ pattern specifically excluded dots (.) from matching, which was\nproblematic for legitimate repository names containing dots.\n\nImplementation Changes:\n\n1. Regex Pattern Updates:\n   - Changed [^/\\s.]+ to [^/\\s]+? in all three URL patterns\n   - Removed dot exclusion while maintaining whitespace and slash exclusion\n   - Added non-greedy quantifier (?) to prevent over-matching\n   - Added end-of-string anchor ($) for precise matching\n\n2. Updated patterns:\n   - HTTPS: /https:\\/\\/github\\.com\\/([^/]+)\\/([^/\\s]+?)(?:\\.git)?$/\n   - SSH: /git@github\\.com:([^/]+)\\/([^/\\s]+?)(?:\\.git)?$/\n   - Git: /git:\\/\\/github\\.com\\/([^/]+)\\/([^/\\s]+?)(?:\\.git)?$/\n\nTechnical Details:\n- Non-greedy matching (+?) ensures proper handling of .git suffix\n- End anchors ($) prevent partial matches and improve precision\n- Dots now allowed in repository names while preserving .git detection\n- Existing functionality preserved for repositories without dots\n\nTesting:\nVerified fix with comprehensive test cases:\n- git@github.com:boldsoftware/sketch.git → boldsoftware/sketch ✓\n- https://github.com/user/repo.with.dots.git → user/repo.with.dots ✓\n- git@github.com:org/project.name.git → org/project.name ✓\n- https://github.com/test/normal-repo → test/normal-repo ✓\n\nBenefits:\n- GitHub links now work correctly for repositories with dots in names\n- Session banner displays proper repository information\n- Maintains backward compatibility with existing repository names\n- Improves user experience for repository navigation\n\nThis fix resolves the specific issue where repository names containing dots\nwould have their GitHub links truncated, breaking navigation to the actual\nrepository on GitHub.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: sda0a251af3d756b6k\n\nwebui: improve GitHub repo parsing tests\n\nReplace internal method testing with component behavior testing for better\nintegration coverage and maintainability.\n\n- Test actual GitHub link rendering in DOM instead of calling private methods\n- Add separate test cases for repository names with dots\n- Verify href attributes, text content, and title attributes are correct\n- Cover both general dot-containing names and the specific boldsoftware/sketch case\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s216977b6be91a2bak\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dd37d1f2932f8c1f367d46642e6d4141642ca18c",
      "old_mode": 33188,
      "old_path": "webui/src/web-components/sketch-container-status.test.ts",
      "new_id": "ca1a8f533132505f2cfaf0a7ef8a518f126a1768",
      "new_mode": 33188,
      "new_path": "webui/src/web-components/sketch-container-status.test.ts"
    },
    {
      "type": "modify",
      "old_id": "4385571239b0209d087c6c5ea466f0c4f9545824",
      "old_mode": 33188,
      "old_path": "webui/src/web-components/sketch-container-status.ts",
      "new_id": "088244f03f1ce7e0045f9b822e294bd0b9165049",
      "new_mode": 33188,
      "new_path": "webui/src/web-components/sketch-container-status.ts"
    }
  ]
}
