Darkmatter · github-bot stage: prod
preview@internal.darkmatter
Events received
80300
Ignored
80263
Jobs dispatched
37

Event 5aabb560…

← All events

Event

Delivery
5aabb560-5fc3-11f1-9bb8-be1c4aa10fd1
Event
pull_request_review_comment
Action
created
Received
2026-06-04T03:13:28.354Z
Signature
valid
Parsed
yes
Sender
Copilot
Repo
darkmatter/nixmac
Status
ignored — missing_command

Headers

{
  "accept": "*/*",
  "accept-encoding": "gzip, br",
  "cf-connecting-ip": "140.82.115.245",
  "cf-ipcountry": "US",
  "cf-ray": "a063c307cb761f96",
  "cf-visitor": "{\"scheme\":\"https\"}",
  "connection": "Keep-Alive",
  "content-length": "36058",
  "content-type": "application/json",
  "host": "github-bot.darkmatter.io",
  "user-agent": "GitHub-Hookshot/933e3d3",
  "x-forwarded-proto": "https",
  "x-github-delivery": "5aabb560-5fc3-11f1-9bb8-be1c4aa10fd1",
  "x-github-event": "pull_request_review_comment",
  "x-github-hook-id": "628737947",
  "x-github-hook-installation-target-id": "3663660",
  "x-github-hook-installation-target-type": "integration",
  "x-real-ip": "140.82.115.245"
}

Payload

{
  "action": "created",
  "comment": {
    "url": "https://api.github.com/repos/darkmatter/nixmac/pulls/comments/3353194273",
    "pull_request_review_id": 4424330748,
    "id": 3353194273,
    "node_id": "PRRC_kwDOSB6EzM7H3a8h",
    "diff_hunk": "@@ -191,39 +191,134 @@ pub fn commit_all(dir: &str, message: &str) -> Result<CommitInfo> {\n \n /// Restores tracked files to `commit_hash`, removes untracked files, and leaves HEAD in place.\n ///\n-/// Ignored build outputs are preserved because this intentionally uses\n-/// `git clean -fd`, not `git clean -fdx`.\n+/// Simulates:\n+/// - `git read-tree --reset -u <commit_hash>` by replacing the repository index\n+///   with the target commit tree and checking that index out to the worktree.\n+/// - `git clean -fd` with `remove_untracked`.\n+///\n+/// Behavior notes:\n+/// - This operates on the entire discovered repository, even when `dir` is a\n+///   nested directory. The previous CLI implementation only restored and\n+///   cleaned working-tree files beneath `dir`, although it reset the full index.\n+///   **THAT SEEMS UNINTENDED** and is maybe an artifact of how we used to assume\n+///   that `dir` would always be the repository root.\n+///\n+/// - The index and worktree are changed to match the target.\n+/// - Ignored files are preserved. Completely empty untracked directories may\n+///   remain because Git does not report them through status.\n pub fn checkout_files_at_commit(dir: &str, commit_hash: &str) -> Result<()> {\n-    git_command()\n-        .args([\"read-tree\", \"--reset\", \"-u\", commit_hash])\n-        .current_dir(dir)\n-        .output()\n-        .context(\"git read-tree --reset -u\")?;\n+    let repo = git2::Repository::discover(dir)?;\n+    let commit = repo\n+        .revparse_single(commit_hash)\n+        .with_context(|| format!(\"git2 resolve restore target `{commit_hash}`\"))?\n+        .peel_to_commit()\n+        .with_context(|| format!(\"git2 peel restore target `{commit_hash}` to commit\"))?;\n+    let tree = commit.tree().context(\"git2 read restore target tree\")?;\n \n-    git_command()\n-        .args([\"clean\", \"-fd\"])\n-        .current_dir(dir)\n-        .output()\n-        .context(\"git clean -fd\")?;\n-    Ok(())\n+    let mut index = repo.index().context(\"git2 open repository index\")?;\n+    index\n+        .read_tree(&tree)\n+        .context(\"git2 replace index with restore target tree\")?;\n+    index.write().context(\"git2 write restore target index\")?;\n+\n+    let mut checkout = git2::build::CheckoutBuilder::new();\n+    checkout.force().remove_ignored(false);\n+    repo.checkout_index(Some(&mut index), Some(&mut checkout))\n+        .context(\"git2 checkout restore target index\")?;\n+\n+    remove_untracked(&repo)\n }\n \n-/// Restore all uncommitted, discard untracked.\n+/// Restore the entire repository to HEAD and discard untracked files.\n+///\n+/// Simulates:\n+/// - `git reset HEAD --`\n+/// - `git checkout -- .`\n+/// - `git clean -fd`\n+///\n+/// Behavior notes:\n+/// - This operates on the entire discovered repository, even when `dir` is a\n+///   nested directory. The previous CLI implementation only restored and\n+///   cleaned working-tree files beneath `dir`, although it reset the full index.\n+///   **THAT SEEMS UNINTENDED** and is maybe an artifact of how we used to assume\n+///   that `dir` would always be the repository root.\n+///\n+/// - All staged AND unstaged changes are discarded across the repository.\n+///\n+/// - Reported untracked files and any now-empty tracked parent directories are\n+///   removed; ignored files are preserved. This requires a bit more sophisticated\n+///   approach (in the helper than `git clean -fd` alone because git2 does not expose\n+///   that command with those semantices.\n pub fn restore_all(dir: &str) -> Result<()> {\n-    git_command()\n-        .args([\"reset\", \"HEAD\", \"--\"])\n-        .current_dir(dir)\n-        .output()?;\n+    let repo = git2::Repository::discover(dir)?;\n+    let head = repo\n+        .revparse_single(\"HEAD\")\n+        .context(\"git2 resolve HEAD for restore\")?;\n \n-    git_command()\n-        .args([\"checkout\", \"--\", \".\"])\n-        .current_dir(dir)\n-        .output()?;\n+    let mut checkout = git2::build::CheckoutBuilder::new();\n+    checkout.force().remove_ignored(false);\n \n-    git_command()\n-        .args([\"clean\", \"-fd\"])\n-        .current_dir(dir)\n-        .output()?;\n+    repo.reset(&head, git2::ResetType::Hard, Some(&mut checkout))\n+        .context(\"git2 hard reset repository to HEAD\")?;\n+\n+    remove_untracked(&repo)\n+}\n+\n+/// Removes the non-ignored untracked files reported by git2 after a reset.\n+///\n+/// `CheckoutBuilder::remove_untracked(true)` only removes untracked paths that\n+/// obstruct checkout operations; it is not a complete replacement for\n+/// `git clean -fd`. Git does not report empty untracked _directories_ through\n+/// status, so those directories may remain.\n+fn remove_untracked(repo: &git2::Repository) -> Result<()> {\n+    let workdir = repo\n+        .workdir()\n+        .context(\"cannot remove untracked files from a bare repository\")?;\n+\n+    let mut status_opts = git2::StatusOptions::new();\n+    status_opts\n+        .show(git2::StatusShow::Workdir)\n+        .include_untracked(true)\n+        .include_ignored(false)\n+        .recurse_untracked_dirs(true);\n+\n+    let statuses = repo.statuses(Some(&mut status_opts))?;\n+    let mut parent_dirs = Vec::new();\n+\n+    for entry in statuses.iter().filter(|entry| entry.status().is_wt_new()) {\n+        let relative_path = Path::new(entry.path()?);\n+        let full_path = workdir.join(relative_path);\n+\n+        let metadata = std::fs::symlink_metadata(&full_path)\n+            .with_context(|| format!(\"inspect untracked path `{}`\", full_path.display()))?;\n+\n+        if metadata.is_dir() {\n+            // Don't do recursive removal here: a reported untracked directory may\n+            // contain ignored files.\n+            std::fs::remove_dir(&full_path)\n+                .with_context(|| format!(\"remove empty untracked dir `{}`\", full_path.display()))?;\n+        } else {\n+            std::fs::remove_file(&full_path)\n+                .with_context(|| format!(\"remove untracked file `{}`\", full_path.display()))?;\n+        }\n+\n+        let mut parent = relative_path.parent();\n+        while let Some(path) = parent {\n+            if path.as_os_str().is_empty() {\n+                break;\n+            }\n+            parent_dirs.push(workdir.join(path));\n+            parent = path.parent();\n+        }\n+    }\n+\n+    parent_dirs.sort_by_key(|path| std::cmp::Reverse(path.components().count()));\n+    parent_dirs.dedup();",
    "path": "apps/native/src-tauri/src/git/exec.rs",
    "commit_id": "3efa5898d7722bcfa20774d0683e063524b7e72a",
    "original_commit_id": "3efa5898d7722bcfa20774d0683e063524b7e72a",
    "user": {
      "login": "Copilot",
      "id": 175728472,
      "node_id": "BOT_kgDOCnlnWA",
      "avatar_url": "https://avatars.githubusercontent.com/in/946600?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/Copilot",
      "html_url": "https://github.com/apps/copilot-pull-request-reviewer",
      "followers_url": "https://api.github.com/users/Copilot/followers",
      "following_url": "https://api.github.com/users/Copilot/following{/other_user}",
      "gists_url": "https://api.github.com/users/Copilot/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/Copilot/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/Copilot/subscriptions",
      "organizations_url": "https://api.github.com/users/Copilot/orgs",
      "repos_url": "https://api.github.com/users/Copilot/repos",
      "events_url": "https://api.github.com/users/Copilot/events{/privacy}",
      "received_events_url": "https://api.github.com/users/Copilot/received_events",
      "type": "Bot",
      "user_view_type": "public",
      "site_admin": false
    },
    "body": "`parent_dirs.dedup()` only removes adjacent duplicates, but the current sort key only uses path depth. If multiple duplicate paths share the same depth they may not become adjacent, leaving duplicates and causing redundant `remove_dir` attempts.",
    "created_at": "2026-06-04T03:13:26Z",
    "updated_at": "2026-06-04T03:13:26Z",
    "html_url": "https://github.com/darkmatter/nixmac/pull/311#discussion_r3353194273",
    "pull_request_url": "https://api.github.com/repos/darkmatter/nixmac/pulls/311",
    "_links": {
      "self": {
        "href": "https://api.github.com/repos/darkmatter/nixmac/pulls/comments/3353194273"
      },
      "html": {
        "href": "https://github.com/darkmatter/nixmac/pull/311#discussion_r3353194273"
      },
      "pull_request": {
        "href": "https://api.github.com/repos/darkmatter/nixmac/pulls/311"
      }
    },
    "reactions": {
      "url": "https://api.github.com/repos/darkmatter/nixmac/pulls/comments/3353194273/reactions",
      "total_count": 0,
      "+1": 0,
      "-1": 0,
      "laugh": 0,
      "hooray": 0,
      "confused": 0,
      "heart": 0,
      "rocket": 0,
      "eyes": 0
    },
    "start_line": 315,
    "original_start_line": 315,
    "start_side": "RIGHT",
    "line": 316,
    "original_line": 316,
    "side": "RIGHT",
    "author_association": "CONTRIBUTOR",
    "original_position": 152,
    "position": 152,
    "subject_type": "line"
  },
  "pull_request": {
    "url": "https://api.github.com/repos/darkmatter/nixmac/pulls/311",
    "id": 3800123549,
    "node_id": "PR_kwDOSB6EzM7igUid",
    "html_url": "https://github.com/darkmatter/nixmac/pull/311",
    "diff_url": "https://github.com/darkmatter/nixmac/pull/311.diff",
    "patch_url": "https://github.com/darkmatter/nixmac/pull/311.patch",
    "issue_url": "https://api.github.com/repos/darkmatter/nixmac/issues/311",
    "number": 311,
    "state": "open",
    "locked": false,
    "title": "refactor: migrate checkout_files_at_commit, restore_all, and restore_from_branch_ref to git2",
    "user": {
      "login": "scottmcmaster",
      "id": 3137688,
      "node_id": "MDQ6VXNlcjMxMzc2ODg=",
      "avatar_url": "https://avatars.githubusercontent.com/u/3137688?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/scottmcmaster",
      "html_url": "https://github.com/scottmcmaster",
      "followers_url": "https://api.github.com/users/scottmcmaster/followers",
      "following_url": "https://api.github.com/users/scottmcmaster/following{/other_user}",
      "gists_url": "https://api.github.com/users/scottmcmaster/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/scottmcmaster/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/scottmcmaster/subscriptions",
      "organizations_url": "https://api.github.com/users/scottmcmaster/orgs",
      "repos_url": "https://api.github.com/users/scottmcmaster/repos",
      "events_url": "https://api.github.com/users/scottmcmaster/events{/privacy}",
      "received_events_url": "https://api.github.com/users/scottmcmaster/received_events",
      "type": "User",
      "user_view_type": "public",
      "site_admin": false
    },
    "body": "## Summary\n\nPort the following methods to git2:\n\n- `checkout_files_at_commit`\n- `restore_all`\n- `restore_from_branch_ref`\n\nI also verified that these are actually used, which is not something to take for granted. I had delayed taking these on because they rely on behavior of `git clean -fd` which doesn't have a direct analogue in git2, but now we have an implementation in the helper method `remove_untracked`.\n\nI should point out that the previous CLI-based methods had some weird behavior which is _not_ replicated namely to reset the entire repo but only clean under the target dir, which I imagine is an artifact of when we were assuming that the \"config dir\" and the \"repo dir\" were always one and the same. I added tests to pin the new behavior which I think was intended by the API contract and the HEAD reset, namely, cleaning the entire repo when we simulate `-fd`. @czxtm let me know if you have any concerns about this.\n\n<!-- What does this PR do? Why? -->\n\n## Test Plan\n\nRan through several manual tests in addition to verifying that the several existing unit tests still pass, and added a number of new unit tests in the process.\n\n- [ ] No test plan needed\n\n## Docs\n\n- [ ] Docs updated (companion PR in darkmatter/nixmac-web: #\\___)\n- [x] No docs update needed\n\n<!-- codesmith:footer -->\n\n---\n\n<picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg\"><img alt=\"View with Codesmith\" src=\"https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg\"></picture> <picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg\"><img alt=\"Autofix with Codesmith\" src=\"https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg\"></picture>\n<sup>Need help on this PR? Tag `/codesmith` with what you need. Autofix is disabled.</sup>\n\n<!-- codesmith:autofix:disabled -->\n\n<!-- /codesmith:footer -->",
    "created_at": "2026-06-04T02:56:58Z",
    "updated_at": "2026-06-04T03:13:26Z",
    "closed_at": null,
    "merged_at": null,
    "merge_commit_sha": "5aa8a3e2ffb74855b21f7cf19de0a8e7a600de2a",
    "assignees": [],
    "requested_reviewers": [
      {
        "login": "czxtm",
        "id": 1325802,
        "node_id": "MDQ6VXNlcjEzMjU4MDI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1325802?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/czxtm",
        "html_url": "https://github.com/czxtm",
        "followers_url": "https://api.github.com/users/czxtm/followers",
        "following_url": "https://api.github.com/users/czxtm/following{/other_user}",
        "gists_url": "https://api.github.com/users/czxtm/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/czxtm/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/czxtm/subscriptions",
        "organizations_url": "https://api.github.com/users/czxtm/orgs",
        "repos_url": "https://api.github.com/users/czxtm/repos",
        "events_url": "https://api.github.com/users/czxtm/events{/privacy}",
        "received_events_url": "https://api.github.com/users/czxtm/received_events",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      }
    ],
    "requested_teams": [],
    "labels": [],
    "milestone": null,
    "draft": false,
    "commits_url": "https://api.github.com/repos/darkmatter/nixmac/pulls/311/commits",
    "review_comments_url": "https://api.github.com/repos/darkmatter/nixmac/pulls/311/comments",
    "review_comment_url": "https://api.github.com/repos/darkmatter/nixmac/pulls/comments{/number}",
    "comments_url": "https://api.github.com/repos/darkmatter/nixmac/issues/311/comments",
    "statuses_url": "https://api.github.com/repos/darkmatter/nixmac/statuses/3efa5898d7722bcfa20774d0683e063524b7e72a",
    "head": {
      "label": "darkmatter:06-04-scott-port-git-clean-fd-funcs",
      "ref": "06-04-scott-port-git-clean-fd-funcs",
      "sha": "3efa5898d7722bcfa20774d0683e063524b7e72a",
      "user": {
        "login": "darkmatter",
        "id": 17834193,
        "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/darkmatter",
        "html_url": "https://github.com/darkmatter",
        "followers_url": "https://api.github.com/users/darkmatter/followers",
        "following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
        "gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
        "organizations_url": "https://api.github.com/users/darkmatter/orgs",
        "repos_url": "https://api.github.com/users/darkmatter/repos",
        "events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
        "received_events_url": "https://api.github.com/users/darkmatter/received_events",
        "type": "Organization",
        "user_view_type": "public",
        "site_admin": false
      },
      "repo": {
        "id": 1209959628,
        "node_id": "R_kgDOSB6EzA",
        "name": "nixmac",
        "full_name": "darkmatter/nixmac",
        "private": false,
        "owner": {
          "login": "darkmatter",
          "id": 17834193,
          "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
          "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/darkmatter",
          "html_url": "https://github.com/darkmatter",
          "followers_url": "https://api.github.com/users/darkmatter/followers",
          "following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
          "gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
          "starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
          "subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
          "organizations_url": "https://api.github.com/users/darkmatter/orgs",
          "repos_url": "https://api.github.com/users/darkmatter/repos",
          "events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
          "received_events_url": "https://api.github.com/users/darkmatter/received_events",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "html_url": "https://github.com/darkmatter/nixmac",
        "description": "Home manager and nix-darwin that understands plain English",
        "fork": false,
        "url": "https://api.github.com/repos/darkmatter/nixmac",
        "forks_url": "https://api.github.com/repos/darkmatter/nixmac/forks",
        "keys_url": "https://api.github.com/repos/darkmatter/nixmac/keys{/key_id}",
        "collaborators_url": "https://api.github.com/repos/darkmatter/nixmac/collaborators{/collaborator}",
        "teams_url": "https://api.github.com/repos/darkmatter/nixmac/teams",
        "hooks_url": "https://api.github.com/repos/darkmatter/nixmac/hooks",
        "issue_events_url": "https://api.github.com/repos/darkmatter/nixmac/issues/events{/number}",
        "events_url": "https://api.github.com/repos/darkmatter/nixmac/events",
        "assignees_url": "https://api.github.com/repos/darkmatter/nixmac/assignees{/user}",
        "branches_url": "https://api.github.com/repos/darkmatter/nixmac/branches{/branch}",
        "tags_url": "https://api.github.com/repos/darkmatter/nixmac/tags",
        "blobs_url": "https://api.github.com/repos/darkmatter/nixmac/git/blobs{/sha}",
        "git_tags_url": "https://api.github.com/repos/darkmatter/nixmac/git/tags{/sha}",
        "git_refs_url": "https://api.github.com/repos/darkmatter/nixmac/git/refs{/sha}",
        "trees_url": "https://api.github.com/repos/darkmatter/nixmac/git/trees{/sha}",
        "statuses_url": "https://api.github.com/repos/darkmatter/nixmac/statuses/{sha}",
        "languages_url": "https://api.github.com/repos/darkmatter/nixmac/languages",
        "stargazers_url": "https://api.github.com/repos/darkmatter/nixmac/stargazers",
        "contributors_url": "https://api.github.com/repos/darkmatter/nixmac/contributors",
        "subscribers_url": "https://api.github.com/repos/darkmatter/nixmac/subscribers",
        "subscription_url": "https://api.github.com/repos/darkmatter/nixmac/subscription",
        "commits_url": "https://api.github.com/repos/darkmatter/nixmac/commits{/sha}",
        "git_commits_url": "https://api.github.com/repos/darkmatter/nixmac/git/commits{/sha}",
        "comments_url": "https://api.github.com/repos/darkmatter/nixmac/comments{/number}",
        "issue_comment_url": "https://api.github.com/repos/darkmatter/nixmac/issues/comments{/number}",
        "contents_url": "https://api.github.com/repos/darkmatter/nixmac/contents/{+path}",
        "compare_url": "https://api.github.com/repos/darkmatter/nixmac/compare/{base}...{head}",
        "merges_url": "https://api.github.com/repos/darkmatter/nixmac/merges",
        "archive_url": "https://api.github.com/repos/darkmatter/nixmac/{archive_format}{/ref}",
        "downloads_url": "https://api.github.com/repos/darkmatter/nixmac/downloads",
        "issues_url": "https://api.github.com/repos/darkmatter/nixmac/issues{/number}",
        "pulls_url": "https://api.github.com/repos/darkmatter/nixmac/pulls{/number}",
        "milestones_url": "https://api.github.com/repos/darkmatter/nixmac/milestones{/number}",
        "notifications_url": "https://api.github.com/repos/darkmatter/nixmac/notifications{?since,all,participating}",
        "labels_url": "https://api.github.com/repos/darkmatter/nixmac/labels{/name}",
        "releases_url": "https://api.github.com/repos/darkmatter/nixmac/releases{/id}",
        "deployments_url": "https://api.github.com/repos/darkmatter/nixmac/deployments",
        "created_at": "2026-04-14T00:37:13Z",
        "updated_at": "2026-06-03T12:43:14Z",
        "pushed_at": "2026-06-04T02:56:57Z",
        "git_url": "git://github.com/darkmatter/nixmac.git",
        "ssh_url": "git@github.com:darkmatter/nixmac.git",
        "clone_url": "https://github.com/darkmatter/nixmac.git",
        "svn_url": "https://github.com/darkmatter/nixmac",
        "homepage": "https://nixmac.com",
        "size": 679110,
        "stargazers_count": 5,
        "watchers_count": 5,
        "language": "Rust",
        "has_issues": true,
        "has_projects": true,
        "has_downloads": true,
        "has_wiki": true,
        "has_pages": false,
        "has_discussions": false,
        "forks_count": 1,
        "mirror_url": null,
        "archived": false,
        "disabled": false,
        "open_issues_count": 84,
        "license": {
          "key": "mit",
          "name": "MIT License",
          "spdx_id": "MIT",
          "url": "https://api.github.com/licenses/mit",
          "node_id": "MDc6TGljZW5zZTEz"
        },
        "allow_forking": true,
        "is_template": false,
        "web_commit_signoff_required": false,
        "has_pull_requests": true,
        "pull_request_creation_policy": "all",
        "topics": [
          "home-manager",
          "nix",
          "nix-darwin",
          "nix-flake",
          "opencode"
        ],
        "visibility": "public",
        "forks": 1,
        "open_issues": 84,
        "watchers": 5,
        "default_branch": "develop",
        "allow_squash_merge": true,
        "allow_merge_commit": true,
        "allow_rebase_merge": true,
        "allow_auto_merge": true,
        "delete_branch_on_merge": true,
        "allow_update_branch": true,
        "use_squash_pr_title_as_default": false,
        "squash_merge_commit_message": "COMMIT_MESSAGES",
        "squash_merge_commit_title": "COMMIT_OR_PR_TITLE",
        "merge_commit_message": "PR_TITLE",
        "merge_commit_title": "MERGE_MESSAGE"
      }
    },
    "base": {
      "label": "darkmatter:06-04-scott-port-intent-to-add-to-git2",
      "ref": "06-04-scott-port-intent-to-add-to-git2",
      "sha": "ac97e5c46dbfae5d75c5a191441712db001fe72d",
      "user": {
        "login": "darkmatter",
        "id": 17834193,
        "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/darkmatter",
        "html_url": "https://github.com/darkmatter",
        "followers_url": "https://api.github.com/users/darkmatter/followers",
        "following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
        "gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
        "organizations_url": "https://api.github.com/users/darkmatter/orgs",
        "repos_url": "https://api.github.com/users/darkmatter/repos",
        "events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
        "received_events_url": "https://api.github.com/users/darkmatter/received_events",
        "type": "Organization",
        "user_view_type": "public",
        "site_admin": false
      },
      "repo": {
        "id": 1209959628,
        "node_id": "R_kgDOSB6EzA",
        "name": "nixmac",
        "full_name": "darkmatter/nixmac",
        "private": false,
        "owner": {
          "login": "darkmatter",
          "id": 17834193,
          "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
          "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/darkmatter",
          "html_url": "https://github.com/darkmatter",
          "followers_url": "https://api.github.com/users/darkmatter/followers",
          "following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
          "gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
          "starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
          "subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
          "organizations_url": "https://api.github.com/users/darkmatter/orgs",
          "repos_url": "https://api.github.com/users/darkmatter/repos",
          "events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
          "received_events_url": "https://api.github.com/users/darkmatter/received_events",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "html_url": "https://github.com/darkmatter/nixmac",
        "description": "Home manager and nix-darwin that understands plain English",
        "fork": false,
        "url": "https://api.github.com/repos/darkmatter/nixmac",
        "forks_url": "https://api.github.com/repos/darkmatter/nixmac/forks",
        "keys_url": "https://api.github.com/repos/darkmatter/nixmac/keys{/key_id}",
        "collaborators_url": "https://api.github.com/repos/darkmatter/nixmac/collaborators{/collaborator}",
        "teams_url": "https://api.github.com/repos/darkmatter/nixmac/teams",
        "hooks_url": "https://api.github.com/repos/darkmatter/nixmac/hooks",
        "issue_events_url": "https://api.github.com/repos/darkmatter/nixmac/issues/events{/number}",
        "events_url": "https://api.github.com/repos/darkmatter/nixmac/events",
        "assignees_url": "https://api.github.com/repos/darkmatter/nixmac/assignees{/user}",
        "branches_url": "https://api.github.com/repos/darkmatter/nixmac/branches{/branch}",
        "tags_url": "https://api.github.com/repos/darkmatter/nixmac/tags",
        "blobs_url": "https://api.github.com/repos/darkmatter/nixmac/git/blobs{/sha}",
        "git_tags_url": "https://api.github.com/repos/darkmatter/nixmac/git/tags{/sha}",
        "git_refs_url": "https://api.github.com/repos/darkmatter/nixmac/git/refs{/sha}",
        "trees_url": "https://api.github.com/repos/darkmatter/nixmac/git/trees{/sha}",
        "statuses_url": "https://api.github.com/repos/darkmatter/nixmac/statuses/{sha}",
        "languages_url": "https://api.github.com/repos/darkmatter/nixmac/languages",
        "stargazers_url": "https://api.github.com/repos/darkmatter/nixmac/stargazers",
        "contributors_url": "https://api.github.com/repos/darkmatter/nixmac/contributors",
        "subscribers_url": "https://api.github.com/repos/darkmatter/nixmac/subscribers",
        "subscription_url": "https://api.github.com/repos/darkmatter/nixmac/subscription",
        "commits_url": "https://api.github.com/repos/darkmatter/nixmac/commits{/sha}",
        "git_commits_url": "https://api.github.com/repos/darkmatter/nixmac/git/commits{/sha}",
        "comments_url": "https://api.github.com/repos/darkmatter/nixmac/comments{/number}",
        "issue_comment_url": "https://api.github.com/repos/darkmatter/nixmac/issues/comments{/number}",
        "contents_url": "https://api.github.com/repos/darkmatter/nixmac/contents/{+path}",
        "compare_url": "https://api.github.com/repos/darkmatter/nixmac/compare/{base}...{head}",
        "merges_url": "https://api.github.com/repos/darkmatter/nixmac/merges",
        "archive_url": "https://api.github.com/repos/darkmatter/nixmac/{archive_format}{/ref}",
        "downloads_url": "https://api.github.com/repos/darkmatter/nixmac/downloads",
        "issues_url": "https://api.github.com/repos/darkmatter/nixmac/issues{/number}",
        "pulls_url": "https://api.github.com/repos/darkmatter/nixmac/pulls{/number}",
        "milestones_url": "https://api.github.com/repos/darkmatter/nixmac/milestones{/number}",
        "notifications_url": "https://api.github.com/repos/darkmatter/nixmac/notifications{?since,all,participating}",
        "labels_url": "https://api.github.com/repos/darkmatter/nixmac/labels{/name}",
        "releases_url": "https://api.github.com/repos/darkmatter/nixmac/releases{/id}",
        "deployments_url": "https://api.github.com/repos/darkmatter/nixmac/deployments",
        "created_at": "2026-04-14T00:37:13Z",
        "updated_at": "2026-06-03T12:43:14Z",
        "pushed_at": "2026-06-04T02:56:57Z",
        "git_url": "git://github.com/darkmatter/nixmac.git",
        "ssh_url": "git@github.com:darkmatter/nixmac.git",
        "clone_url": "https://github.com/darkmatter/nixmac.git",
        "svn_url": "https://github.com/darkmatter/nixmac",
        "homepage": "https://nixmac.com",
        "size": 679110,
        "stargazers_count": 5,
        "watchers_count": 5,
        "language": "Rust",
        "has_issues": true,
        "has_projects": true,
        "has_downloads": true,
        "has_wiki": true,
        "has_pages": false,
        "has_discussions": false,
        "forks_count": 1,
        "mirror_url": null,
        "archived": false,
        "disabled": false,
        "open_issues_count": 84,
        "license": {
          "key": "mit",
          "name": "MIT License",
          "spdx_id": "MIT",
          "url": "https://api.github.com/licenses/mit",
          "node_id": "MDc6TGljZW5zZTEz"
        },
        "allow_forking": true,
        "is_template": false,
        "web_commit_signoff_required": false,
        "has_pull_requests": true,
        "pull_request_creation_policy": "all",
        "topics": [
          "home-manager",
          "nix",
          "nix-darwin",
          "nix-flake",
          "opencode"
        ],
        "visibility": "public",
        "forks": 1,
        "open_issues": 84,
        "watchers": 5,
        "default_branch": "develop",
        "allow_squash_merge": true,
        "allow_merge_commit": true,
        "allow_rebase_merge": true,
        "allow_auto_merge": true,
        "delete_branch_on_merge": true,
        "allow_update_branch": true,
        "use_squash_pr_title_as_default": false,
        "squash_merge_commit_message": "COMMIT_MESSAGES",
        "squash_merge_commit_title": "COMMIT_OR_PR_TITLE",
        "merge_commit_message": "PR_TITLE",
        "merge_commit_title": "MERGE_MESSAGE"
      }
    },
    "_links": {
      "self": {
        "href": "https://api.github.com/repos/darkmatter/nixmac/pulls/311"
      },
      "html": {
        "href": "https://github.com/darkmatter/nixmac/pull/311"
      },
      "issue": {
        "href": "https://api.github.com/repos/darkmatter/nixmac/issues/311"
      },
      "comments": {
        "href": "https://api.github.com/repos/darkmatter/nixmac/issues/311/comments"
      },
      "review_comments": {
        "href": "https://api.github.com/repos/darkmatter/nixmac/pulls/311/comments"
      },
      "review_comment": {
        "href": "https://api.github.com/repos/darkmatter/nixmac/pulls/comments{/number}"
      },
      "commits": {
        "href": "https://api.github.com/repos/darkmatter/nixmac/pulls/311/commits"
      },
      "statuses": {
        "href": "https://api.github.com/repos/darkmatter/nixmac/statuses/3efa5898d7722bcfa20774d0683e063524b7e72a"
      }
    },
    "author_association": "COLLABORATOR",
    "auto_merge": null,
    "assignee": null,
    "active_lock_reason": null
  },
  "repository": {
    "id": 1209959628,
    "node_id": "R_kgDOSB6EzA",
    "name": "nixmac",
    "full_name": "darkmatter/nixmac",
    "private": false,
    "owner": {
      "login": "darkmatter",
      "id": 17834193,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
      "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/darkmatter",
      "html_url": "https://github.com/darkmatter",
      "followers_url": "https://api.github.com/users/darkmatter/followers",
      "following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
      "gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
      "organizations_url": "https://api.github.com/users/darkmatter/orgs",
      "repos_url": "https://api.github.com/users/darkmatter/repos",
      "events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
      "received_events_url": "https://api.github.com/users/darkmatter/received_events",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "html_url": "https://github.com/darkmatter/nixmac",
    "description": "Home manager and nix-darwin that understands plain English",
    "fork": false,
    "url": "https://api.github.com/repos/darkmatter/nixmac",
    "forks_url": "https://api.github.com/repos/darkmatter/nixmac/forks",
    "keys_url": "https://api.github.com/repos/darkmatter/nixmac/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/darkmatter/nixmac/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/darkmatter/nixmac/teams",
    "hooks_url": "https://api.github.com/repos/darkmatter/nixmac/hooks",
    "issue_events_url": "https://api.github.com/repos/darkmatter/nixmac/issues/events{/number}",
    "events_url": "https://api.github.com/repos/darkmatter/nixmac/events",
    "assignees_url": "https://api.github.com/repos/darkmatter/nixmac/assignees{/user}",
    "branches_url": "https://api.github.com/repos/darkmatter/nixmac/branches{/branch}",
    "tags_url": "https://api.github.com/repos/darkmatter/nixmac/tags",
    "blobs_url": "https://api.github.com/repos/darkmatter/nixmac/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/darkmatter/nixmac/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/darkmatter/nixmac/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/darkmatter/nixmac/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/darkmatter/nixmac/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/darkmatter/nixmac/languages",
    "stargazers_url": "https://api.github.com/repos/darkmatter/nixmac/stargazers",
    "contributors_url": "https://api.github.com/repos/darkmatter/nixmac/contributors",
    "subscribers_url": "https://api.github.com/repos/darkmatter/nixmac/subscribers",
    "subscription_url": "https://api.github.com/repos/darkmatter/nixmac/subscription",
    "commits_url": "https://api.github.com/repos/darkmatter/nixmac/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/darkmatter/nixmac/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/darkmatter/nixmac/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/darkmatter/nixmac/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/darkmatter/nixmac/contents/{+path}",
    "compare_url": "https://api.github.com/repos/darkmatter/nixmac/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/darkmatter/nixmac/merges",
    "archive_url": "https://api.github.com/repos/darkmatter/nixmac/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/darkmatter/nixmac/downloads",
    "issues_url": "https://api.github.com/repos/darkmatter/nixmac/issues{/number}",
    "pulls_url": "https://api.github.com/repos/darkmatter/nixmac/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/darkmatter/nixmac/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/darkmatter/nixmac/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/darkmatter/nixmac/labels{/name}",
    "releases_url": "https://api.github.com/repos/darkmatter/nixmac/releases{/id}",
    "deployments_url": "https://api.github.com/repos/darkmatter/nixmac/deployments",
    "created_at": "2026-04-14T00:37:13Z",
    "updated_at": "2026-06-03T12:43:14Z",
    "pushed_at": "2026-06-04T02:56:57Z",
    "git_url": "git://github.com/darkmatter/nixmac.git",
    "ssh_url": "git@github.com:darkmatter/nixmac.git",
    "clone_url": "https://github.com/darkmatter/nixmac.git",
    "svn_url": "https://github.com/darkmatter/nixmac",
    "homepage": "https://nixmac.com",
    "size": 679110,
    "stargazers_count": 5,
    "watchers_count": 5,
    "language": "Rust",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": true,
    "has_pages": false,
    "has_discussions": false,
    "forks_count": 1,
    "mirror_url": null,
    "archived": false,
    "disabled": false,
    "open_issues_count": 84,
    "license": {
      "key": "mit",
      "name": "MIT License",
      "spdx_id": "MIT",
      "url": "https://api.github.com/licenses/mit",
      "node_id": "MDc6TGljZW5zZTEz"
    },
    "allow_forking": true,
    "is_template": false,
    "web_commit_signoff_required": false,
    "has_pull_requests": true,
    "pull_request_creation_policy": "all",
    "topics": [
      "home-manager",
      "nix",
      "nix-darwin",
      "nix-flake",
      "opencode"
    ],
    "visibility": "public",
    "forks": 1,
    "open_issues": 84,
    "watchers": 5,
    "default_branch": "develop",
    "custom_properties": {}
  },
  "organization": {
    "login": "darkmatter",
    "id": 17834193,
    "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
    "url": "https://api.github.com/orgs/darkmatter",
    "repos_url": "https://api.github.com/orgs/darkmatter/repos",
    "events_url": "https://api.github.com/orgs/darkmatter/events",
    "hooks_url": "https://api.github.com/orgs/darkmatter/hooks",
    "issues_url": "https://api.github.com/orgs/darkmatter/issues",
    "members_url": "https://api.github.com/orgs/darkmatter/members{/member}",
    "public_members_url": "https://api.github.com/orgs/darkmatter/public_members{/member}",
    "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
    "description": ""
  },
  "enterprise": {
    "id": 469843,
    "slug": "darkmatter",
    "name": "darkmatter",
    "node_id": "E_kgDOAAcrUw",
    "avatar_url": "https://avatars.githubusercontent.com/b/469843?v=4",
    "description": "",
    "website_url": "darkmatter.io",
    "html_url": "https://github.com/enterprises/darkmatter",
    "created_at": "2025-09-07T16:01:00Z",
    "updated_at": "2026-05-09T15:34:55Z"
  },
  "sender": {
    "login": "Copilot",
    "id": 175728472,
    "node_id": "BOT_kgDOCnlnWA",
    "avatar_url": "https://avatars.githubusercontent.com/in/946600?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/Copilot",
    "html_url": "https://github.com/apps/copilot-pull-request-reviewer",
    "followers_url": "https://api.github.com/users/Copilot/followers",
    "following_url": "https://api.github.com/users/Copilot/following{/other_user}",
    "gists_url": "https://api.github.com/users/Copilot/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/Copilot/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/Copilot/subscriptions",
    "organizations_url": "https://api.github.com/users/Copilot/orgs",
    "repos_url": "https://api.github.com/users/Copilot/repos",
    "events_url": "https://api.github.com/users/Copilot/events{/privacy}",
    "received_events_url": "https://api.github.com/users/Copilot/received_events",
    "type": "Bot",
    "user_view_type": "public",
    "site_admin": false
  },
  "installation": {
    "id": 131074261,
    "node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTMxMDc0MjYx"
  }
}