Payload
{
"action": "edited",
"changes": {
"body": {
"from": "<!-- linear-linkback -->\n<details>\n<summary><a href=\"https://linear.app/darkmatterlabs/issue/ENG-223/launch-blocker-privacy-policy-draft-host-and-link-from-app-settings\">ENG-223 [Launch Blocker] Privacy Policy: Draft, host, and link from app Settings</a></summary>\n<p>\n\n## Context\n\nThe PRD v2 states: \"A full privacy policy will be hosted on the nixmac website and linked from app Settings. This is a requirement for MVP.\"\n\nCurrently there is no privacy policy document, no hosted page, and no link in the app. The \"send diagnostics\" toggle in settings references privacy behavior that isn't formally defined anywhere.\n\n## Requirements\n\n* Draft a privacy policy covering: what data nixmac collects (telemetry, crash reports), what it doesn't (prompts, config content — unless user opts in), how BYOLLM data flows to third-party AI providers, and Ollama's local-only behavior\n* Host the privacy policy on [nixmac.com](<http://nixmac.com>) (likely a `/privacy` route on the marketing site)\n* Link to the privacy policy from the app Settings screen\n* The policy should be reviewed by the team before publishing\n\n## Out of scope\n\n* The actual telemetry/data collection implementation (that's [ENG-205](https://linear.app/darkmatterlabs/issue/ENG-205/privacy-and-telemetry-implement-data-collection-opt-inout-toggles-and))\n* Legal review by an attorney (team decision on whether this is needed for closed beta)\n\n## Why it matters\n\nUsers are trusting nixmac with system-level access to their Mac. A clear privacy policy is table stakes for trust, especially given Scott's concerns about Sentry potentially leaking prompt data. It's also an MVP release criterion in the PRD.\n\n---\n\n## Acceptance Criteria / Gherkin Specs\n\n```gherkin\nScenario: Privacy policy page is live on nixmac.com\n Given I navigate to nixmac.com/privacy\n Then a privacy policy document is displayed\n And it covers: data collected (telemetry/crash reports), data NOT collected (prompts, config unless opted-in), BYOLLM data flows, and Ollama's local-only behavior\n\nScenario: App Settings links to the privacy policy\n Given I am on the nixmac Settings screen\n Then there is a visible link labeled \"Privacy Policy\" or similar\n When I click it\n Then it opens nixmac.com/privacy in a browser\n\nScenario: \"Send diagnostics\" toggle references the privacy policy\n Given I am on the Settings screen viewing the send diagnostics toggle\n Then there is either inline text or a link that explains what data is sent\n And the link or description is consistent with the published privacy policy\n\nScenario: Privacy policy has been team-reviewed before publishing\n Given the privacy policy draft has been written\n When the team reviews it\n Then at least one team member explicitly approves before it goes live\n And the published version reflects any feedback from the review\n```\n</p>\n</details>"
}
},
"issue": {
"url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/264",
"repository_url": "https://api.github.com/repos/darkmatter/nixmac-web",
"labels_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/264/labels{/name}",
"comments_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/264/comments",
"events_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/264/events",
"html_url": "https://github.com/darkmatter/nixmac-web/pull/264",
"id": 4583027924,
"node_id": "PR_kwDOQc69G87iYfqD",
"number": 264,
"title": "Add nixmac privacy policy",
"user": {
"login": "fkb032",
"id": 249513614,
"node_id": "U_kgDODt9Gjg",
"avatar_url": "https://avatars.githubusercontent.com/u/249513614?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/fkb032",
"html_url": "https://github.com/fkb032",
"followers_url": "https://api.github.com/users/fkb032/followers",
"following_url": "https://api.github.com/users/fkb032/following{/other_user}",
"gists_url": "https://api.github.com/users/fkb032/gists{/gist_id}",
"starred_url": "https://api.github.com/users/fkb032/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/fkb032/subscriptions",
"organizations_url": "https://api.github.com/users/fkb032/orgs",
"repos_url": "https://api.github.com/users/fkb032/repos",
"events_url": "https://api.github.com/users/fkb032/events{/privacy}",
"received_events_url": "https://api.github.com/users/fkb032/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"labels": [],
"state": "open",
"locked": false,
"assignees": [],
"milestone": null,
"comments": 1,
"created_at": "2026-06-03T19:33:07Z",
"updated_at": "2026-06-03T19:33:12Z",
"closed_at": null,
"assignee": null,
"author_association": "CONTRIBUTOR",
"issue_field_values": [],
"type": null,
"active_lock_reason": null,
"draft": true,
"pull_request": {
"url": "https://api.github.com/repos/darkmatter/nixmac-web/pulls/264",
"html_url": "https://github.com/darkmatter/nixmac-web/pull/264",
"diff_url": "https://github.com/darkmatter/nixmac-web/pull/264.diff",
"patch_url": "https://github.com/darkmatter/nixmac-web/pull/264.patch",
"merged_at": null
},
"body": "## Summary\n- add the public nixmac privacy policy content to the web app\n- serve the policy at /privacy while keeping /privacy-policy as a compatibility route\n- update the desktop Settings privacy link to /privacy and describe diagnostics as redacted crash/error reporting\n- update existing website footer links to the canonical /privacy route after Claude review\n\n## Verification\n- bun --filter web check-types\n- bunx tsc --noEmit -p apps/native/tsconfig.json\n- bun --filter web build\n- git diff --check\n- /claude-review with Opus 4.8 xhigh: 0 blocking issues; accepted footer-link follow-up and applied it\n\n## Notes\n- Confirm privacy@nixmac.com is provisioned and monitored before launch/merge; Claude review could not verify mailbox existence from the repo.\n- bunx oxlint <touched files> is blocked by the existing oxlint config: plugin eslint rules correctness/perf/style/suspicious are not found.\n- bunx ultracite check <touched files> / bunx biome format <touched files> are blocked by the existing Biome config import: ultracite/core cannot be resolved.\n\n<!-- codesmith:footer -->\n---\n<a href=\"https://app.blacksmith.sh/darkmatter/codesmith/nixmac-web/pr/264\"><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=1783107192&installation_id=137091173&pr_number=264&repository=darkmatter%2Fnixmac-web&return_to=https%3A%2F%2Fgithub.com%2Fdarkmatter%2Fnixmac-web%2Fpull%2F264&signature=598313cab374282ed314f126b1d2a4546648e1a9c747c5ab2232723032db4fc3\"><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 -->",
"reactions": {
"url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/264/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"timeline_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/264/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"comment": {
"url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/comments/4616038170",
"html_url": "https://github.com/darkmatter/nixmac-web/pull/264#issuecomment-4616038170",
"issue_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/264",
"id": 4616038170,
"node_id": "IC_kwDOQc69G88AAAABEyMnGg",
"user": {
"login": "linear-code[bot]",
"id": 222613912,
"node_id": "BOT_kgDODUTRmA",
"avatar_url": "https://avatars.githubusercontent.com/in/1658531?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/linear-code%5Bbot%5D",
"html_url": "https://github.com/apps/linear-code",
"followers_url": "https://api.github.com/users/linear-code%5Bbot%5D/followers",
"following_url": "https://api.github.com/users/linear-code%5Bbot%5D/following{/other_user}",
"gists_url": "https://api.github.com/users/linear-code%5Bbot%5D/gists{/gist_id}",
"starred_url": "https://api.github.com/users/linear-code%5Bbot%5D/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/linear-code%5Bbot%5D/subscriptions",
"organizations_url": "https://api.github.com/users/linear-code%5Bbot%5D/orgs",
"repos_url": "https://api.github.com/users/linear-code%5Bbot%5D/repos",
"events_url": "https://api.github.com/users/linear-code%5Bbot%5D/events{/privacy}",
"received_events_url": "https://api.github.com/users/linear-code%5Bbot%5D/received_events",
"type": "Bot",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-06-03T19:33:12Z",
"updated_at": "2026-06-03T19:33:29Z",
"body": "<!-- linear-linkback -->\n<details>\n<summary><a href=\"https://linear.app/darkmatterlabs/issue/ENG-223/launch-blocker-privacy-policy-draft-host-and-link-from-app-settings\">ENG-223 [Launch Blocker] Privacy Policy: Draft, host, and link from app Settings</a></summary>\n<p>\n\n## Context\n\nThe PRD v2 states: \"A full privacy policy will be hosted on the nixmac website and linked from app Settings. This is a requirement for MVP.\"\n\nCurrently there is no privacy policy document, no hosted page, and no link in the app. The \"send diagnostics\" toggle in settings references privacy behavior that isn't formally defined anywhere.\n\n## Requirements\n\n* Draft a privacy policy covering: what data nixmac collects (telemetry, crash reports), what it doesn't (prompts, config content — unless user opts in), how BYOLLM data flows to third-party AI providers, and Ollama's local-only behavior\n* Host the privacy policy on [nixmac.com](<http://nixmac.com>) (likely a `/privacy` route on the marketing site)\n* Link to the privacy policy from the app Settings screen\n* The policy should be reviewed by the team before publishing\n\n## Out of scope\n\n* The actual telemetry/data collection implementation (that's [ENG-205](https://linear.app/darkmatterlabs/issue/ENG-205/privacy-and-telemetry-implement-data-collection-opt-inout-toggles-and))\n* Legal review by an attorney (team decision on whether this is needed for closed beta)\n\n## Why it matters\n\nUsers are trusting nixmac with system-level access to their Mac. A clear privacy policy is table stakes for trust, especially given Scott's concerns about Sentry potentially leaking prompt data. It's also an MVP release criterion in the PRD.\n\n---\n\n## Acceptance Criteria / Gherkin Specs\n\n```gherkin\nScenario: Privacy policy page is live on nixmac.com\n Given I navigate to nixmac.com/privacy\n Then a privacy policy document is displayed\n And it covers: data collected (telemetry/crash reports), data NOT collected (prompts, config unless opted-in), BYOLLM data flows, and Ollama's local-only behavior\n\nScenario: App Settings links to the privacy policy\n Given I am on the nixmac Settings screen\n Then there is a visible link labeled \"Privacy Policy\" or similar\n When I click it\n Then it opens nixmac.com/privacy in a browser\n\nScenario: \"Send diagnostics\" toggle references the privacy policy\n Given I am on the Settings screen viewing the send diagnostics toggle\n Then there is either inline text or a link that explains what data is sent\n And the link or description is consistent with the published privacy policy\n\nScenario: Privacy policy has been team-reviewed before publishing\n Given the privacy policy draft has been written\n When the team reviews it\n Then at least one team member explicitly approves before it goes live\n And the published version reflects any feedback from the review\n```\n</p>\n</details>\n<!-- linear-review-link -->\n<p><a href=\"https://linear.app/darkmatterlabs/review/add-nixmac-privacy-policy-629c0fa12b07\">Review in Linear</a></p>\n",
"author_association": "NONE",
"reactions": {
"url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/comments/4616038170/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": {
"id": 1658531,
"client_id": "Iv23lia2it3rsjIhboVE",
"slug": "linear-code",
"node_id": "A_kwHOAshhgs4AGU6j",
"owner": {
"login": "linear",
"id": 46686594,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjQ2Njg2NTk0",
"avatar_url": "https://avatars.githubusercontent.com/u/46686594?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/linear",
"html_url": "https://github.com/linear",
"followers_url": "https://api.github.com/users/linear/followers",
"following_url": "https://api.github.com/users/linear/following{/other_user}",
"gists_url": "https://api.github.com/users/linear/gists{/gist_id}",
"starred_url": "https://api.github.com/users/linear/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/linear/subscriptions",
"organizations_url": "https://api.github.com/users/linear/orgs",
"repos_url": "https://api.github.com/users/linear/repos",
"events_url": "https://api.github.com/users/linear/events{/privacy}",
"received_events_url": "https://api.github.com/users/linear/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"name": "Linear Code",
"description": "",
"external_url": "https://linear.app",
"html_url": "https://github.com/apps/linear-code",
"created_at": "2025-07-24T11:29:06Z",
"updated_at": "2026-04-14T21:31:51Z",
"permissions": {
"actions": "write",
"checks": "read",
"contents": "write",
"deployments": "read",
"issues": "write",
"members": "read",
"merge_queues": "read",
"metadata": "read",
"pull_requests": "write",
"statuses": "read",
"workflows": "write"
},
"events": [
"check_run",
"check_suite",
"commit_comment",
"issues",
"issue_comment",
"member",
"membership",
"organization",
"pull_request",
"pull_request_review",
"pull_request_review_comment",
"pull_request_review_thread",
"repository",
"status",
"sub_issues",
"team",
"team_add"
]
}
},
"repository": {
"id": 1104067867,
"node_id": "R_kgDOQc69Gw",
"name": "nixmac-web",
"full_name": "darkmatter/nixmac-web",
"private": true,
"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-web",
"description": null,
"fork": false,
"url": "https://api.github.com/repos/darkmatter/nixmac-web",
"forks_url": "https://api.github.com/repos/darkmatter/nixmac-web/forks",
"keys_url": "https://api.github.com/repos/darkmatter/nixmac-web/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/darkmatter/nixmac-web/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/darkmatter/nixmac-web/teams",
"hooks_url": "https://api.github.com/repos/darkmatter/nixmac-web/hooks",
"issue_events_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/events{/number}",
"events_url": "https://api.github.com/repos/darkmatter/nixmac-web/events",
"assignees_url": "https://api.github.com/repos/darkmatter/nixmac-web/assignees{/user}",
"branches_url": "https://api.github.com/repos/darkmatter/nixmac-web/branches{/branch}",
"tags_url": "https://api.github.com/repos/darkmatter/nixmac-web/tags",
"blobs_url": "https://api.github.com/repos/darkmatter/nixmac-web/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/darkmatter/nixmac-web/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/darkmatter/nixmac-web/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/darkmatter/nixmac-web/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/darkmatter/nixmac-web/statuses/{sha}",
"languages_url": "https://api.github.com/repos/darkmatter/nixmac-web/languages",
"stargazers_url": "https://api.github.com/repos/darkmatter/nixmac-web/stargazers",
"contributors_url": "https://api.github.com/repos/darkmatter/nixmac-web/contributors",
"subscribers_url": "https://api.github.com/repos/darkmatter/nixmac-web/subscribers",
"subscription_url": "https://api.github.com/repos/darkmatter/nixmac-web/subscription",
"commits_url": "https://api.github.com/repos/darkmatter/nixmac-web/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/darkmatter/nixmac-web/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/darkmatter/nixmac-web/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/darkmatter/nixmac-web/contents/{+path}",
"compare_url": "https://api.github.com/repos/darkmatter/nixmac-web/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/darkmatter/nixmac-web/merges",
"archive_url": "https://api.github.com/repos/darkmatter/nixmac-web/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/darkmatter/nixmac-web/downloads",
"issues_url": "https://api.github.com/repos/darkmatter/nixmac-web/issues{/number}",
"pulls_url": "https://api.github.com/repos/darkmatter/nixmac-web/pulls{/number}",
"milestones_url": "https://api.github.com/repos/darkmatter/nixmac-web/milestones{/number}",
"notifications_url": "https://api.github.com/repos/darkmatter/nixmac-web/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/darkmatter/nixmac-web/labels{/name}",
"releases_url": "https://api.github.com/repos/darkmatter/nixmac-web/releases{/id}",
"deployments_url": "https://api.github.com/repos/darkmatter/nixmac-web/deployments",
"created_at": "2025-11-25T17:53:44Z",
"updated_at": "2026-06-02T22:19:34Z",
"pushed_at": "2026-06-03T19:32:56Z",
"git_url": "git://github.com/darkmatter/nixmac-web.git",
"ssh_url": "git@github.com:darkmatter/nixmac-web.git",
"clone_url": "https://github.com/darkmatter/nixmac-web.git",
"svn_url": "https://github.com/darkmatter/nixmac-web",
"homepage": null,
"size": 69563,
"stargazers_count": 1,
"watchers_count": 1,
"language": "TypeScript",
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": false,
"has_discussions": false,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 1,
"license": null,
"allow_forking": false,
"is_template": false,
"web_commit_signoff_required": false,
"has_pull_requests": true,
"pull_request_creation_policy": "all",
"topics": [],
"visibility": "internal",
"forks": 0,
"open_issues": 1,
"watchers": 1,
"default_branch": "main",
"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": "linear-code[bot]",
"id": 222613912,
"node_id": "BOT_kgDODUTRmA",
"avatar_url": "https://avatars.githubusercontent.com/in/1658531?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/linear-code%5Bbot%5D",
"html_url": "https://github.com/apps/linear-code",
"followers_url": "https://api.github.com/users/linear-code%5Bbot%5D/followers",
"following_url": "https://api.github.com/users/linear-code%5Bbot%5D/following{/other_user}",
"gists_url": "https://api.github.com/users/linear-code%5Bbot%5D/gists{/gist_id}",
"starred_url": "https://api.github.com/users/linear-code%5Bbot%5D/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/linear-code%5Bbot%5D/subscriptions",
"organizations_url": "https://api.github.com/users/linear-code%5Bbot%5D/orgs",
"repos_url": "https://api.github.com/users/linear-code%5Bbot%5D/repos",
"events_url": "https://api.github.com/users/linear-code%5Bbot%5D/events{/privacy}",
"received_events_url": "https://api.github.com/users/linear-code%5Bbot%5D/received_events",
"type": "Bot",
"user_view_type": "public",
"site_admin": false
},
"installation": {
"id": 131074261,
"node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTMxMDc0MjYx"
}
}