)]}'
{
  "commit": "7e89d206c2b77caf36aea3c8b44271f9f1c0f75a",
  "tree": "564872775b4a57e548dba9b2412a8db2aa2d38cc",
  "parents": [
    "dbff0c47e7e36180a0fda66613fbb5cbfbe1cde8"
  ],
  "author": {
    "name": "vadikmironov",
    "email": "77026200+vadikmironov@users.noreply.github.com",
    "time": "Tue Feb 10 16:28:34 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Feb 10 16:28:34 2026 +0000"
  },
  "message": "fix: Handle email-style usernames in Coursier cache path credential stripping (#1538)\n\nWhen a repository uses an email address as the username (e.g.,\nuser@domain.com), Coursier encodes the cache path as\n\"user%40domain.com%40host\". The existing credential stripping logic\nuses find(\"%40\") which locates the first %40 (the email\u0027s @), leaving\n\"domain.com%40host\" in the path instead of just \"host\".\n\nThis change:\n- Replaces find(\"%40\") with rfind(\"%40\") to locate the last %40,\n  which is always the user@host separator\n- Extracts the stripping logic into a public\n  strip_credentials_from_cache_path() function for testability\n- Adds unit tests covering: no credentials, simple username, and\n  email-style username cases\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "16f29ded37b0170015dcba9ddd3736eb4b6d1c27",
      "old_mode": 33188,
      "old_path": "private/rules/coursier.bzl",
      "new_id": "26c18cc203e881e13356295b7947516ebec00e50",
      "new_mode": 33188,
      "new_path": "private/rules/coursier.bzl"
    },
    {
      "type": "modify",
      "old_id": "7ea0dfc32a3516bf2a780923ea293c7c454d6ee5",
      "old_mode": 33188,
      "old_path": "tests/unit/coursier_test.bzl",
      "new_id": "3cfecc3d8523b32e8d78996390ec690677ec5681",
      "new_mode": 33188,
      "new_path": "tests/unit/coursier_test.bzl"
    }
  ]
}
