Payload
{
"action": "submitted",
"review": {
"id": 4418057398,
"node_id": "PRR_kwDOSB6EzM8AAAABB1Y0tg",
"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": "## Pull request overview\n\nThis PR appears to reconcile a previously incomplete merge by bringing in a set of missing commits that collectively (1) add Nix-based formatting support + CI evaluation, (2) split frontend state into a backend-mirrored ViewModel vs UI-only store, and (3) adjust backend event/state plumbing (including summarizer queue serialization).\n\n**Changes:**\n- Introduce `treefmt-nix` formatter wiring in the flake and add a GitHub Actions workflow to type-check/build and run treefmt over changed Nix/shell files.\n- Refactor the native frontend state model: add a read-optimized `useViewModel` store + `viewmodel/*` sync shims, and separate ephemeral UI concerns into `useUiState`.\n- Update Rust backend event emissions and summarizer queue processing (single mpsc worker), plus assorted UI/theme/styling and IPC type updates.\n\n### Reviewed changes\n\nCopilot reviewed 96 out of 98 changed files in this pull request and generated 5 comments.\n\n<details>\n<summary>Show a summary per file</summary>\n\n| File | Description |\r\n| ---- | ----------- |\r\n| treefmt.nix | Adds treefmt module config (nixfmt/shellcheck/oxfmt). |\r\n| flake.nix | Adds `treefmt-nix` input and exposes `formatter` wrapper. |\r\n| flake.lock | Locks `treefmt-nix` and its nixpkgs input. |\r\n| apps/native/treefmt.nix | Adds a second treefmt config under `apps/native/` (currently appears unused). |\r\n| apps/native/src/viewmodel/viewmodel.test.ts | Adds tests for ViewModel hydration + event mirroring. |\r\n| apps/native/src/viewmodel/index.ts | Adds `startViewModelSync()` orchestrator for sync modules. |\r\n| apps/native/src/viewmodel/history.ts | Adds helper to refresh history into ViewModel. |\r\n| apps/native/src/viewmodel/git.ts | Adds git slice hydration + event mirroring (+ history refresh). |\r\n| apps/native/src/viewmodel/evolve.ts | Adds evolve slice hydration + event mirroring. |\r\n| apps/native/src/viewmodel/change-map.ts | Adds change-map hydration + event mirroring (+ history refresh). |\r\n| apps/native/src/utils/widget-test-helpers.ts | Updates test helpers to read/reset change map via ViewModel. |\r\n| apps/native/src/stores/widget-store.test.ts | Removes widget-store git status setter test. |\r\n| apps/native/src/stores/widget-store.impl.ts | Removes backend-owned slices from widget-store; `useCurrentStep` now pulls evolve from ViewModel. |\r\n| apps/native/src/stores/view-model.ts | Introduces backend-mirrored ViewModel Zustand store. |\r\n| apps/native/src/stores/ui-state.ts | Introduces UI-only Zustand store (dialogs, flags, logs, etc.). |\r\n| apps/native/src/stores/ui-state.test.ts | Adds tests for UI-only store behavior/immutability. |\r\n| apps/native/src/stores/__mocks__/widget-store.ts | Updates mock `useCurrentStep` to incorporate ViewModel evolve state. |\r\n| apps/native/src/ipc/types.ts | Regenerates/updates Specta TS IPC types (new schema types, GitState, etc.). |\r\n| apps/native/src/ipc/preferences.ts | Adds in-memory caching/coalescing for ui prefs IPC reads. |\r\n| apps/native/src/ipc/api.ts | Wires prefs cache + adds settings export/import + dev config APIs. |\r\n| apps/native/src/ipc/api.test.ts | Adds tests for prefs caching/coalescing + invalidation on write. |\r\n| apps/native/src/index.css | Updates Monaco diff colors and adds right padding for diff view. |\r\n| apps/native/src/hooks/use-widget-initialization.ts | Routes evolve-state hydration through ViewModel mirror. |\r\n| apps/native/src/hooks/use-watcher.ts | Deletes legacy compound watcher hook. |\r\n| apps/native/src/hooks/use-summary.ts | Routes change-map updates through ViewModel mirror. |\r\n| apps/native/src/hooks/use-rollback.ts | Uses ViewModel for committable check; mirrors git/evolve updates into ViewModel. |\r\n| apps/native/src/hooks/use-queue-summarizer.ts | Deletes legacy summarizer:update subscription hook. |\r\n| apps/native/src/hooks/use-homebrew-diff.ts | Mirrors post-apply backend slices into ViewModel. |\r\n| apps/native/src/hooks/use-history.ts | Writes history results into ViewModel; reads history from ViewModel for analysis. |\r\n| apps/native/src/hooks/use-history-restore.ts | Reads git status from ViewModel; mirrors finalize restore git state into ViewModel. |\r\n| apps/native/src/hooks/use-history-card.ts | Uses ViewModel git status to determine HEAD card state. |\r\n| apps/native/src/hooks/use-git-operations.ts | Mirrors git/evolve/changeMap state updates into ViewModel. |\r\n| apps/native/src/hooks/use-evolve.ts | Uses ViewModel + mirror helpers for git/evolve/changeMap updates; clears external-build flag via ViewModel build slice. |\r\n| apps/native/src/hooks/use-darwin-config.ts | Mirrors evolve/git state changes into ViewModel after config dir changes. |\r\n| apps/native/src/hooks/use-apply.ts | Mirrors git/evolve updates into ViewModel and clears external-build flag via ViewModel. |\r\n| apps/native/src/components/widget/widget.tsx | Starts ViewModel sync on mount; removes legacy watcher/summarizer hooks. |\r\n| apps/native/src/components/widget/widget.test.tsx | Updates widget test setup to set git state via ViewModel. |\r\n| apps/native/src/components/widget/widget.stories.tsx | Updates stories to seed git/changeMap via ViewModel. |\r\n| apps/native/src/components/widget/utils.ts | Refactors `computeCurrentStep` typing to accept a minimal state shape including evolveState. |\r\n| apps/native/src/components/widget/summaries/unsummarized-changes-section.stories.tsx | Seeds change map via ViewModel in story setup. |\r\n| apps/native/src/components/widget/summaries/summary-or-diff.tsx | Reads git/evolve/changeMap from ViewModel; prefetches diff contents from ViewModel git. |\r\n| apps/native/src/components/widget/summaries/monaco-theme.ts | Switches Monaco theme to a Minted-derived theme with token rule extraction. |\r\n| apps/native/src/components/widget/summaries/hunk-pill.tsx | Reads change map from ViewModel. |\r\n| apps/native/src/components/widget/summaries/hunk-pill.stories.tsx | Seeds change map via ViewModel for stories. |\r\n| apps/native/src/components/widget/summaries/full-file-diff-editor.stories.tsx | Seeds change map via ViewModel for stories. |\r\n| apps/native/src/components/widget/steps/history-step.tsx | Reads history from ViewModel. |\r\n| apps/native/src/components/widget/steps/evolve-step.tsx | Tweaks button styling (uses `bg-primary`). |\r\n| apps/native/src/components/widget/settings/tuning-tab.tsx | Adds a “Tuning” settings tab driven by backend-provided configurable schemas. |\r\n| apps/native/src/components/widget/settings/settings-dialog.tsx | Adds navigation + rendering for new Tuning tab; removes evolution limit fields from AI Models tab. |\r\n| apps/native/src/components/widget/settings/developer-tab.tsx | Clears backend-owned slices via ViewModel; clears change map via mirror helper. |\r\n| apps/native/src/components/widget/settings/backup-restore-section.tsx | Adds settings export/import UI with optional secret inclusion. |\r\n| apps/native/src/components/widget/settings/api-keys-tab.tsx | Renames vLLM section to “OpenAI Compatible” and updates copy. |\r\n| apps/native/src/components/widget/settings/ai-models-tab.tsx | Removes evolution limit controls; adjusts provider label and copy. |\r\n| apps/native/src/components/widget/settings/__snapshots__/ai-models-tab.stories.tsx.snap | Updates snapshot (but currently out-of-sync with new `AiModelsTab` copy). |\r\n| apps/native/src/components/widget/promptinput/system-defaults-cta.tsx | Reads evolve state from ViewModel; mirrors git/evolve/changeMap results into ViewModel. |\r\n| apps/native/src/components/widget/promptinput/prompt-input.tsx | Reads git/evolve state from ViewModel. |\r\n| apps/native/src/components/widget/promptinput/homebrew-badge.tsx | Reads evolve state from ViewModel. |\r\n| apps/native/src/components/widget/promptinput/begin-evolve-warning.tsx | Reads git status from ViewModel; checks post-rollback state via ViewModel. |\r\n| apps/native/src/components/widget/notifications/unsummarized-changes-detected.tsx | Reads change map from ViewModel. |\r\n| apps/native/src/components/widget/notifications/uncommitted-changes-detected.tsx | Reads git status from ViewModel. |\r\n| apps/native/src/components/widget/notifications/external-build-detected.tsx | Reads external-build flag from ViewModel build slice. |\r\n| apps/native/src/components/widget/notifications/external-build-detected.stories.tsx | Seeds evolve/build state via ViewModel in story setup. |\r\n| apps/native/src/components/widget/layout/merge-section.tsx | Reads change map from ViewModel. |\r\n| apps/native/src/components/widget/layout/header.tsx | Computes step using widget-store state + ViewModel evolve state. |\r\n| apps/native/src/components/widget/layout/git-status-debug.tsx | Reads git status from ViewModel. |\r\n| apps/native/src/components/widget/layout/debug-overlay.tsx | Reads evolve from ViewModel and clears via mirror helper. |\r\n| apps/native/src/components/widget/layout/console.tsx | Adds resizable console UI (drag header to resize). |\r\n| apps/native/src/components/widget/history/history-restore-item-button.tsx | Reads uncommitted-change state from ViewModel git slice. |\r\n| apps/native/src/components/widget/history/discard-uncommitted-dialog.tsx | Reads git status from ViewModel; checks remaining files via ViewModel. |\r\n| apps/native/src/components/widget/history/analyze-history-button.tsx | Reads history from ViewModel. |\r\n| apps/native/src/components/widget/evolve-flow.stories.tsx | Seeds evolve/git/changeMap in ViewModel for animated story flow. |\r\n| apps/native/src/components/widget/controls/build-head-button.tsx | Reads uncommitted-change state from ViewModel git slice. |\r\n| apps/native/src/components/widget/controls/bootstrap-config.tsx | Reads git status from ViewModel. |\r\n| apps/native/src-tauri/src/system/nix.rs | Simplifies host attr determination to store lookup. |\r\n| apps/native/src-tauri/src/summarize/queue_summarizer.rs | Adds mpsc-backed single-worker summarizer state; changes change-map event name. |\r\n| apps/native/src-tauri/src/summarize/pipelines/fresh_changeset.rs | Enqueues summarizer work via managed SummarizerState when available. |\r\n| apps/native/src-tauri/src/summarize/pipelines/evolved_changeset.rs | Enqueues summarizer work via managed SummarizerState when available. |\r\n| apps/native/src-tauri/src/storage/credential_store.rs | Removes legacy plaintext credential migration code; documents keychain usage. |\r\n| apps/native/src-tauri/src/shared_types/system.rs | Removes trailing whitespace/newline. |\r\n| apps/native/src-tauri/src/shared_types/git.rs | Replaces WatcherEvent with GitState payload type. |\r\n| apps/native/src-tauri/src/shared_types/evolve.rs | Removes unused `changeset_at_build` compatibility field. |\r\n| apps/native/src-tauri/src/shared_types/events.rs | Removes SummarizerUpdateEvent payload type; adds module docs. |\r\n| apps/native/src-tauri/src/README.md | Updates watcher documentation to “slice update events” wording. |\r\n| apps/native/src-tauri/src/managed_edits/managed_edit.rs | Updates EvolveState initialization after field removal. |\r\n| apps/native/src-tauri/src/git/mod.rs | Refactors git module surface/reexports (currently breaks existing internal references). |\r\n| apps/native/src-tauri/src/evolve/tools.rs | Updates tool schema description string. |\r\n| apps/native/src-tauri/src/evolve/search_packages.rs | Formatting/logging tweaks and minor refactors. |\r\n| apps/native/src-tauri/src/evolve/providers/ollama.rs | Minor formatting change to init_recording call. |\r\n| apps/native/src-tauri/src/evolve/mod.rs | Makes evolve config module pub(crate); switches repo_root import; reads EvolutionLimits from Slice state. |\r\n| apps/native/src-tauri/src/commands/updater.rs | Adds module docs and renames a test description. |\r\n| apps/native/src-tauri/src/commands/permissions.rs | Removes trailing whitespace/newline. |\r\n| apps/native/src-tauri/src/commands/git.rs | Uses pooled DB handle for commit upsert and adjusts command signature. |\r\n| apps/native/src-tauri/migrations/03-evolutions-origin-branch/up.sql | Removes placeholder SQL content. |\r\n| .gitignore | Un-ignores `.envrc`. |\r\n| .github/workflows/evaluate.yml | Adds Evaluate workflow (Rust build, TS typecheck, treefmt on changed files). |\r\n| .beads/issues.jsonl | Adds/updates beads issues (architecture phases, tasks). |\n</details>\n\n\n\n\n\n",
"commit_id": "9be67b719bcce760ef21e5d01cf26eae6e65ae7b",
"state": "commented",
"html_url": "https://github.com/darkmatter/nixmac/pull/292#pullrequestreview-4418057398",
"pull_request_url": "https://api.github.com/repos/darkmatter/nixmac/pulls/292",
"_links": {
"html": {
"href": "https://github.com/darkmatter/nixmac/pull/292#pullrequestreview-4418057398"
},
"pull_request": {
"href": "https://api.github.com/repos/darkmatter/nixmac/pulls/292"
}
},
"submitted_at": "2026-06-03T11:29:45Z",
"updated_at": "2026-06-03T11:29:45Z",
"author_association": "CONTRIBUTOR"
},
"pull_request": {
"url": "https://api.github.com/repos/darkmatter/nixmac/pulls/292",
"id": 3794878845,
"node_id": "PR_kwDOSB6EzM7iMUF9",
"html_url": "https://github.com/darkmatter/nixmac/pull/292",
"diff_url": "https://github.com/darkmatter/nixmac/pull/292.diff",
"patch_url": "https://github.com/darkmatter/nixmac/pull/292.patch",
"issue_url": "https://api.github.com/repos/darkmatter/nixmac/issues/292",
"number": 292,
"state": "open",
"locked": false,
"title": "Jp/fix merge pr 255",
"user": {
"login": "arximboldi",
"id": 4521138,
"node_id": "MDQ6VXNlcjQ1MjExMzg=",
"avatar_url": "https://avatars.githubusercontent.com/u/4521138?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/arximboldi",
"html_url": "https://github.com/arximboldi",
"followers_url": "https://api.github.com/users/arximboldi/followers",
"following_url": "https://api.github.com/users/arximboldi/following{/other_user}",
"gists_url": "https://api.github.com/users/arximboldi/gists{/gist_id}",
"starred_url": "https://api.github.com/users/arximboldi/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/arximboldi/subscriptions",
"organizations_url": "https://api.github.com/users/arximboldi/orgs",
"repos_url": "https://api.github.com/users/arximboldi/repos",
"events_url": "https://api.github.com/users/arximboldi/events{/privacy}",
"received_events_url": "https://api.github.com/users/arximboldi/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"body": "## Summary\r\n\r\nSome commits where missing due to issues between the git history and Graphite and what not.\r\n\r\n## Test Plan\r\n\r\n- [x] No test plan needed\r\n\r\n## Docs\r\n\r\n- [ ] Docs updated (companion PR in darkmatter/nixmac-web: #\\_\\_\\_)\r\n- [x] No docs update needed\n\n<!-- codesmith:footer -->\n---\n<a href=\"https://app.blacksmith.sh/darkmatter/codesmith/nixmac/pr/292\"><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></a> <a href=\"https://backend.blacksmith.sh/track/enable-autofix?expires=1783077690&installation_id=137091173&pr_number=292&repository=darkmatter%2Fnixmac&return_to=https%3A%2F%2Fgithub.com%2Fdarkmatter%2Fnixmac%2Fpull%2F292&signature=b70ed58881648cba78df74a3b12fcb43e4d9afba7116e0692f7f826be2ef67a4\"><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></a>\n<sup>Need help on this PR? Tag <code>/codesmith</code> with what you need. Autofix is disabled.</sup>\n\n<!-- codesmith:autofix:disabled -->\n<!-- /codesmith:footer -->",
"created_at": "2026-06-03T11:21:26Z",
"updated_at": "2026-06-03T11:29:45Z",
"closed_at": null,
"merged_at": null,
"merge_commit_sha": null,
"assignees": [],
"requested_reviewers": [],
"requested_teams": [],
"labels": [],
"milestone": null,
"draft": false,
"commits_url": "https://api.github.com/repos/darkmatter/nixmac/pulls/292/commits",
"review_comments_url": "https://api.github.com/repos/darkmatter/nixmac/pulls/292/comments",
"review_comment_url": "https://api.github.com/repos/darkmatter/nixmac/pulls/comments{/number}",
"comments_url": "https://api.github.com/repos/darkmatter/nixmac/issues/292/comments",
"statuses_url": "https://api.github.com/repos/darkmatter/nixmac/statuses/9be67b719bcce760ef21e5d01cf26eae6e65ae7b",
"head": {
"label": "darkmatter:jp/fix-merge-pr-255",
"ref": "jp/fix-merge-pr-255",
"sha": "9be67b719bcce760ef21e5d01cf26eae6e65ae7b",
"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-03T06:35:32Z",
"pushed_at": "2026-06-03T11:20:34Z",
"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": 679363,
"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": 68,
"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": 68,
"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:develop",
"ref": "develop",
"sha": "dd78e5f8fc4d85c062a07b3c39703d07cf8b6e8a",
"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-03T06:35:32Z",
"pushed_at": "2026-06-03T11:20:34Z",
"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": 679363,
"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": 68,
"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": 68,
"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/292"
},
"html": {
"href": "https://github.com/darkmatter/nixmac/pull/292"
},
"issue": {
"href": "https://api.github.com/repos/darkmatter/nixmac/issues/292"
},
"comments": {
"href": "https://api.github.com/repos/darkmatter/nixmac/issues/292/comments"
},
"review_comments": {
"href": "https://api.github.com/repos/darkmatter/nixmac/pulls/292/comments"
},
"review_comment": {
"href": "https://api.github.com/repos/darkmatter/nixmac/pulls/comments{/number}"
},
"commits": {
"href": "https://api.github.com/repos/darkmatter/nixmac/pulls/292/commits"
},
"statuses": {
"href": "https://api.github.com/repos/darkmatter/nixmac/statuses/9be67b719bcce760ef21e5d01cf26eae6e65ae7b"
}
},
"author_association": "CONTRIBUTOR",
"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-03T06:35:32Z",
"pushed_at": "2026-06-03T11:20:34Z",
"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": 679363,
"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": 68,
"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": 68,
"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"
}
}