{
	"issue": {
		"url": "https://api.github.com/repos/laurent22/joplin/issues/14374",
		"repository_url": "https://api.github.com/repos/laurent22/joplin",
		"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14374/labels{/name}",
		"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14374/comments",
		"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14374/events",
		"html_url": "https://github.com/laurent22/joplin/pull/14374",
		"id": 3955562079,
		"node_id": "PR_kwDOBLftOs7EgLOh",
		"number": 14374,
		"title": "fix: explicit error for missing app_min_version in plugin manifest (#14271)",
		"user": {
			"login": "akshajrawat",
			"id": 159126002,
			"node_id": "U_kgDOCXwR8g",
			"avatar_url": "https://avatars.githubusercontent.com/u/159126002?v=4",
			"gravatar_id": "",
			"url": "https://api.github.com/users/akshajrawat",
			"html_url": "https://github.com/akshajrawat",
			"followers_url": "https://api.github.com/users/akshajrawat/followers",
			"following_url": "https://api.github.com/users/akshajrawat/following{/other_user}",
			"gists_url": "https://api.github.com/users/akshajrawat/gists{/gist_id}",
			"starred_url": "https://api.github.com/users/akshajrawat/starred{/owner}{/repo}",
			"subscriptions_url": "https://api.github.com/users/akshajrawat/subscriptions",
			"organizations_url": "https://api.github.com/users/akshajrawat/orgs",
			"repos_url": "https://api.github.com/users/akshajrawat/repos",
			"events_url": "https://api.github.com/users/akshajrawat/events{/privacy}",
			"received_events_url": "https://api.github.com/users/akshajrawat/received_events",
			"type": "User",
			"user_view_type": "public",
			"site_admin": false
		},
		"labels": [
			{
				"id": 519700741,
				"node_id": "MDU6TGFiZWw1MTk3MDA3NDE=",
				"url": "https://api.github.com/repos/laurent22/joplin/labels/bug",
				"name": "bug",
				"color": "cf353b",
				"default": true,
				"description": "It's a bug"
			},
			{
				"id": 2431153506,
				"node_id": "MDU6TGFiZWwyNDMxMTUzNTA2",
				"url": "https://api.github.com/repos/laurent22/joplin/labels/plugins",
				"name": "plugins",
				"color": "91ca55",
				"default": false,
				"description": "Anything related to Joplin's plugin system"
			}
		],
		"state": "closed",
		"locked": false,
		"assignees": [],
		"milestone": null,
		"comments": 6,
		"created_at": "2026-02-18T02:31:03Z",
		"updated_at": "2026-03-03T13:36:33Z",
		"closed_at": "2026-03-03T13:36:08Z",
		"assignee": null,
		"author_association": "CONTRIBUTOR",
		"active_lock_reason": null,
		"draft": false,
		"pull_request": {
			"url": "https://api.github.com/repos/laurent22/joplin/pulls/14374",
			"html_url": "https://github.com/laurent22/joplin/pull/14374",
			"diff_url": "https://github.com/laurent22/joplin/pull/14374.diff",
			"patch_url": "https://github.com/laurent22/joplin/pull/14374.patch",
			"merged_at": "2026-03-03T13:36:08Z"
		},
		"body": "## Summary\r\nFixes #14271\r\n\r\nCurrently, when a plugin manifest is missing the mandatory `app_min_version` field, Joplin returns a generic error: *\"This plugin doesn't support Joplin Desktop\"* (or Mobile). This is misleading as it implies a platform incompatibility rather than a missing manifest field.\r\n\r\nThis PR adds an explicit check for the `app_min_version` field to provide clear, actionable feedback to developers.\r\n\r\n## Proposed Changes\r\n- **Explicit Check:** Modified `describeIncompatibility` in `PluginService.ts` to detect a missing `app_min_version` before proceeding to platform version resolution.\r\n- **Improved Error Message:** Returns a specific localized string: _\"The plugin manifest is missing the required \"app_min_version\" field.\"_\r\n- **Regression Test:** Added a test case to `packages/lib/services/plugins/utils/isCompatible/index.test.ts` to ensure that a manifest without this field specifically triggers the new error message.\r\n\r\n## Test Plan\r\n- [x] **Manual Verification:** Confirmed the code builds correctly via `yarn watch`.\r\n- [x] **Automated Tests:** Ran the compatibility test suite in `packages/lib`.\r\n- [x] **Result:** All 24 tests passed (including the new regression test).\r\n\r\n`PASS  services/plugins/utils/isCompatible/index.test.js`",
		"closed_by": {
			"login": "laurent22",
			"id": 1285584,
			"node_id": "MDQ6VXNlcjEyODU1ODQ=",
			"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
			"gravatar_id": "",
			"url": "https://api.github.com/users/laurent22",
			"html_url": "https://github.com/laurent22",
			"followers_url": "https://api.github.com/users/laurent22/followers",
			"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
			"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
			"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
			"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
			"organizations_url": "https://api.github.com/users/laurent22/orgs",
			"repos_url": "https://api.github.com/users/laurent22/repos",
			"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
			"received_events_url": "https://api.github.com/users/laurent22/received_events",
			"type": "User",
			"user_view_type": "public",
			"site_admin": false
		},
		"reactions": {
			"url": "https://api.github.com/repos/laurent22/joplin/issues/14374/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/laurent22/joplin/issues/14374/timeline",
		"performed_via_github_app": null,
		"state_reason": null
	},
	"comments": [
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3918153350",
			"html_url": "https://github.com/laurent22/joplin/pull/14374#issuecomment-3918153350",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14374",
			"id": 3918153350,
			"node_id": "IC_kwDOBLftOs7pikaG",
			"user": {
				"login": "github-actions[bot]",
				"id": 41898282,
				"node_id": "MDM6Qm90NDE4OTgyODI=",
				"avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/github-actions%5Bbot%5D",
				"html_url": "https://github.com/apps/github-actions",
				"followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
				"following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
				"gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
				"organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
				"repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
				"events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
				"received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
				"type": "Bot",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2026-02-18T02:31:13Z",
			"updated_at": "2026-03-03T13:36:33Z",
			"body": "****CLA Assistant Lite bot**** All contributors have signed the CLA  ✍️ ✅",
			"author_association": "CONTRIBUTOR",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3918153350/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": 15368,
				"client_id": "Iv1.05c79e9ad1f6bdfa",
				"slug": "github-actions",
				"node_id": "MDM6QXBwMTUzNjg=",
				"owner": {
					"login": "github",
					"id": 9919,
					"node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=",
					"avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4",
					"gravatar_id": "",
					"url": "https://api.github.com/users/github",
					"html_url": "https://github.com/github",
					"followers_url": "https://api.github.com/users/github/followers",
					"following_url": "https://api.github.com/users/github/following{/other_user}",
					"gists_url": "https://api.github.com/users/github/gists{/gist_id}",
					"starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}",
					"subscriptions_url": "https://api.github.com/users/github/subscriptions",
					"organizations_url": "https://api.github.com/users/github/orgs",
					"repos_url": "https://api.github.com/users/github/repos",
					"events_url": "https://api.github.com/users/github/events{/privacy}",
					"received_events_url": "https://api.github.com/users/github/received_events",
					"type": "Organization",
					"user_view_type": "public",
					"site_admin": false
				},
				"name": "GitHub Actions",
				"description": "Automate your workflow from idea to production",
				"external_url": "https://help.github.com/en/actions",
				"html_url": "https://github.com/apps/github-actions",
				"created_at": "2018-07-30T09:30:17Z",
				"updated_at": "2026-05-05T14:51:38Z",
				"permissions": {
					"actions": "write",
					"administration": "read",
					"artifact_metadata": "write",
					"attestations": "write",
					"checks": "write",
					"code_quality": "write",
					"contents": "write",
					"copilot_requests": "write",
					"deployments": "write",
					"discussions": "write",
					"issues": "write",
					"merge_queues": "write",
					"metadata": "read",
					"models": "read",
					"packages": "write",
					"pages": "write",
					"pull_requests": "write",
					"repository_hooks": "write",
					"repository_projects": "write",
					"security_events": "write",
					"statuses": "write",
					"vulnerability_alerts": "read"
				},
				"events": [
					"branch_protection_rule",
					"check_run",
					"check_suite",
					"create",
					"delete",
					"deployment",
					"deployment_status",
					"discussion",
					"discussion_comment",
					"fork",
					"gollum",
					"issues",
					"issue_comment",
					"label",
					"merge_group",
					"milestone",
					"page_build",
					"public",
					"pull_request",
					"pull_request_review",
					"pull_request_review_comment",
					"push",
					"registry_package",
					"release",
					"repository",
					"repository_dispatch",
					"status",
					"watch",
					"workflow_dispatch",
					"workflow_run"
				]
			}
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3918154653",
			"html_url": "https://github.com/laurent22/joplin/pull/14374#issuecomment-3918154653",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14374",
			"id": 3918154653,
			"node_id": "IC_kwDOBLftOs7pikud",
			"user": {
				"login": "coderabbitai[bot]",
				"id": 136622811,
				"node_id": "BOT_kgDOCCSy2w",
				"avatar_url": "https://avatars.githubusercontent.com/in/347564?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/coderabbitai%5Bbot%5D",
				"html_url": "https://github.com/apps/coderabbitai",
				"followers_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/followers",
				"following_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/following{/other_user}",
				"gists_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/subscriptions",
				"organizations_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/orgs",
				"repos_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/repos",
				"events_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/events{/privacy}",
				"received_events_url": "https://api.github.com/users/coderabbitai%5Bbot%5D/received_events",
				"type": "Bot",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2026-02-18T02:31:41Z",
			"updated_at": "2026-03-01T14:48:48Z",
			"body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- This is an auto-generated comment: review paused by coderabbit.ai -->\n\n> [!NOTE]\n> ## Reviews paused\n> \n> It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the `reviews.auto_review.auto_pause_after_reviewed_commits` setting.\n> \n> Use the following commands to manage reviews:\n> - `@coderabbitai resume` to resume automatic reviews.\n> - `@coderabbitai review` to trigger a single review.\n> \n> Use the checkboxes below for quick actions:\n> - [ ] <!-- {\"checkboxId\": \"7f6cc2e2-2e4e-497a-8c31-c9e4573e93d1\"} --> ▶️ Resume reviews\n> - [ ] <!-- {\"checkboxId\": \"e9bb8d72-00e8-4f67-9cb2-caf3b22574fe\"} --> 🔍 Trigger review\n\n<!-- end of auto-generated comment: review paused by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<details>\n<summary>📝 Walkthrough</summary>\n\n## Walkthrough\n\ndescribeIncompatibility now validates the provided manifest by calling manifestFromObject and, on validation error, returns a localized message \"Invalid plugin manifest: %s\" with the underlying error; if validation succeeds the previous compatibility checks (isCompatible / minVersionForPlatform) continue unchanged.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Plugin Service Implementation** <br> `packages/lib/services/plugins/PluginService.ts`|Adds manifest validation in `describeIncompatibility` using `manifestFromObject`; catches validation errors and returns a localized \"Invalid plugin manifest: %s\" message, preventing further compatibility logic for invalid manifests.|\n|**Plugin Service Tests** <br> `packages/app-cli/tests/services/plugins/PluginService.ts`|Adds an import for `PluginManifest` and a test `\"should report a missing app_min_version field specifically\"` that constructs an invalid manifest (missing `app_min_version`) and asserts the returned error mentions the missing field / validation error.|\n\n## Suggested labels\n\n`Regression`\n\n</details>\n\n<!-- walkthrough_end -->\n\n<!-- pre_merge_checks_walkthrough_start -->\n\n<details>\n<summary>🚥 Pre-merge checks | ✅ 5</summary>\n\n<details>\n<summary>✅ Passed checks (5 passed)</summary>\n\n|         Check name         | Status   | Explanation                                                                                                                                                                                       |\n| :------------------------: | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|         Title check        | ✅ Passed | The title clearly summarises the main change: adding an explicit error for a missing app_min_version field in plugin manifests.                                                                   |\n|      Description check     | ✅ Passed | The description is well-documented and directly related to the changeset, explaining the problem, proposed changes, and test results.                                                             |\n|     Linked Issues check    | ✅ Passed | The PR successfully addresses issue `#14271` by adding validation for the missing app_min_version field and returning a specific error message instead of a generic platform incompatibility error. |\n| Out of Scope Changes check | ✅ Passed | All changes are directly related to fixing the missing app_min_version validation issue; no out-of-scope modifications detected.                                                                  |\n|     Docstring Coverage     | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.                                                                                        |\n\n</details>\n\n<sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub>\n\n</details>\n\n<!-- pre_merge_checks_walkthrough_end -->\n\n<!-- finishing_touch_checkbox_start -->\n\n<details>\n<summary>✨ Finishing Touches</summary>\n\n<details>\n<summary>🧪 Generate unit tests (beta)</summary>\n\n- [ ] <!-- {\"checkboxId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} -->   Create PR with unit tests\n- [ ] <!-- {\"checkboxId\": \"07f1e7d6-8a8e-4e23-9900-8731c2c87f58\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} -->   Post copyable unit tests in a comment\n\n</details>\n\n</details>\n\n<!-- finishing_touch_checkbox_end -->\n\n<!-- tips_start -->\n\n---\n\nThanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=laurent22/joplin&utm_content=14374)! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.\n\n<details>\n<summary>❤️ Share</summary>\n\n- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)\n- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)\n- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)\n- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)\n\n</details>\n\n<sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub>\n\n<!-- tips_end -->\n\n<!-- internal state start -->\n\n\n<!-- [encoded data, 6480 characters] -->\n\n<!-- internal state end -->",
			"author_association": "CONTRIBUTOR",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3918154653/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": 347564,
				"client_id": "Iv1.6aaafe4fe882736b",
				"slug": "coderabbitai",
				"node_id": "A_kwHOB96YWc4ABU2s",
				"owner": {
					"login": "coderabbitai",
					"id": 132028505,
					"node_id": "O_kgDOB96YWQ",
					"avatar_url": "https://avatars.githubusercontent.com/u/132028505?v=4",
					"gravatar_id": "",
					"url": "https://api.github.com/users/coderabbitai",
					"html_url": "https://github.com/coderabbitai",
					"followers_url": "https://api.github.com/users/coderabbitai/followers",
					"following_url": "https://api.github.com/users/coderabbitai/following{/other_user}",
					"gists_url": "https://api.github.com/users/coderabbitai/gists{/gist_id}",
					"starred_url": "https://api.github.com/users/coderabbitai/starred{/owner}{/repo}",
					"subscriptions_url": "https://api.github.com/users/coderabbitai/subscriptions",
					"organizations_url": "https://api.github.com/users/coderabbitai/orgs",
					"repos_url": "https://api.github.com/users/coderabbitai/repos",
					"events_url": "https://api.github.com/users/coderabbitai/events{/privacy}",
					"received_events_url": "https://api.github.com/users/coderabbitai/received_events",
					"type": "Organization",
					"user_view_type": "public",
					"site_admin": false
				},
				"name": "coderabbitai",
				"description": "# Transforming Code Reviews with AI\r\n\r\n## Features\r\n\r\n**Automated Reviews**: Continuous reviews of the pull requests including incremental commits. \r\n\r\n**Summarization**: Generates high-level summary and a technical walkthrough of the PR changes. \r\n\r\n**Line-by-line review**: Provides line-by-line suggestions committable with one click.\r\n\r\n**Codebase verification**:  Verifies the impact on the overall codebase and identifies missing changes.\r\n\r\n**Insights into your code**:  Ask any questions on your codebase within the pull request \r\n\r\n**Chat about your code** : Chat with the bot around your code. The more you chat, the smarter it gets.\r\n\r\n**Issue Validation**:  Validates the PR against the linked issues and identifies other related issues \r\n\r\n\r\n\r\n",
				"external_url": "https://coderabbit.ai?utm_source=cr_app&utm_medium=github",
				"html_url": "https://github.com/apps/coderabbitai",
				"created_at": "2023-06-14T15:47:27Z",
				"updated_at": "2026-03-14T07:58:44Z",
				"permissions": {
					"actions": "read",
					"checks": "write",
					"contents": "write",
					"discussions": "read",
					"issues": "write",
					"members": "read",
					"metadata": "read",
					"pull_requests": "write",
					"statuses": "write"
				},
				"events": [
					"issues",
					"issue_comment",
					"label",
					"organization",
					"pull_request",
					"pull_request_review",
					"pull_request_review_comment",
					"pull_request_review_thread",
					"release",
					"repository"
				]
			}
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3918157579",
			"html_url": "https://github.com/laurent22/joplin/pull/14374#issuecomment-3918157579",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14374",
			"id": 3918157579,
			"node_id": "IC_kwDOBLftOs7pilcL",
			"user": {
				"login": "akshajrawat",
				"id": 159126002,
				"node_id": "U_kgDOCXwR8g",
				"avatar_url": "https://avatars.githubusercontent.com/u/159126002?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/akshajrawat",
				"html_url": "https://github.com/akshajrawat",
				"followers_url": "https://api.github.com/users/akshajrawat/followers",
				"following_url": "https://api.github.com/users/akshajrawat/following{/other_user}",
				"gists_url": "https://api.github.com/users/akshajrawat/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/akshajrawat/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/akshajrawat/subscriptions",
				"organizations_url": "https://api.github.com/users/akshajrawat/orgs",
				"repos_url": "https://api.github.com/users/akshajrawat/repos",
				"events_url": "https://api.github.com/users/akshajrawat/events{/privacy}",
				"received_events_url": "https://api.github.com/users/akshajrawat/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2026-02-18T02:32:49Z",
			"updated_at": "2026-02-18T02:32:49Z",
			"body": "I have read the CLA Document and I hereby sign the CLA",
			"author_association": "CONTRIBUTOR",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3918157579/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3927931831",
			"html_url": "https://github.com/laurent22/joplin/pull/14374#issuecomment-3927931831",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14374",
			"id": 3927931831,
			"node_id": "IC_kwDOBLftOs7qH3u3",
			"user": {
				"login": "akshajrawat",
				"id": 159126002,
				"node_id": "U_kgDOCXwR8g",
				"avatar_url": "https://avatars.githubusercontent.com/u/159126002?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/akshajrawat",
				"html_url": "https://github.com/akshajrawat",
				"followers_url": "https://api.github.com/users/akshajrawat/followers",
				"following_url": "https://api.github.com/users/akshajrawat/following{/other_user}",
				"gists_url": "https://api.github.com/users/akshajrawat/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/akshajrawat/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/akshajrawat/subscriptions",
				"organizations_url": "https://api.github.com/users/akshajrawat/orgs",
				"repos_url": "https://api.github.com/users/akshajrawat/repos",
				"events_url": "https://api.github.com/users/akshajrawat/events{/privacy}",
				"received_events_url": "https://api.github.com/users/akshajrawat/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2026-02-19T15:18:02Z",
			"updated_at": "2026-02-19T16:48:11Z",
			"body": "Hi! This is my first contribution to Joplin.. really enjoyed working on it!\r\nBtw is it okay to open another PR while this one is still under review, or should I wait until it’s merged/closed? as it was mentioned to wait in your guideline in the other repo..\r\n\r\nAlso, thanks for your patience with my earlier ABC renderer PR that was closed. I didn't knew abt the guideline..",
			"author_association": "CONTRIBUTOR",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3927931831/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3937695168",
			"html_url": "https://github.com/laurent22/joplin/pull/14374#issuecomment-3937695168",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14374",
			"id": 3937695168,
			"node_id": "IC_kwDOBLftOs7qtHXA",
			"user": {
				"login": "akshajrawat",
				"id": 159126002,
				"node_id": "U_kgDOCXwR8g",
				"avatar_url": "https://avatars.githubusercontent.com/u/159126002?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/akshajrawat",
				"html_url": "https://github.com/akshajrawat",
				"followers_url": "https://api.github.com/users/akshajrawat/followers",
				"following_url": "https://api.github.com/users/akshajrawat/following{/other_user}",
				"gists_url": "https://api.github.com/users/akshajrawat/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/akshajrawat/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/akshajrawat/subscriptions",
				"organizations_url": "https://api.github.com/users/akshajrawat/orgs",
				"repos_url": "https://api.github.com/users/akshajrawat/repos",
				"events_url": "https://api.github.com/users/akshajrawat/events{/privacy}",
				"received_events_url": "https://api.github.com/users/akshajrawat/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2026-02-20T23:57:37Z",
			"updated_at": "2026-02-20T23:57:37Z",
			"body": "I updated the test to use `newPluginService()` so it runs in isolation. \r\nThe tests pass perfectly for me locally!\r\n\r\nThe macOS CI runner was failing during the yarn install / linking step during my last push.... Since this seems unrelated to my TypeScript changes, I'll leave this ready for your review whenever you have time! \r\n",
			"author_association": "CONTRIBUTOR",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3937695168/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3970586964",
			"html_url": "https://github.com/laurent22/joplin/pull/14374#issuecomment-3970586964",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14374",
			"id": 3970586964,
			"node_id": "IC_kwDOBLftOs7sqllU",
			"user": {
				"login": "akshajrawat",
				"id": 159126002,
				"node_id": "U_kgDOCXwR8g",
				"avatar_url": "https://avatars.githubusercontent.com/u/159126002?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/akshajrawat",
				"html_url": "https://github.com/akshajrawat",
				"followers_url": "https://api.github.com/users/akshajrawat/followers",
				"following_url": "https://api.github.com/users/akshajrawat/following{/other_user}",
				"gists_url": "https://api.github.com/users/akshajrawat/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/akshajrawat/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/akshajrawat/subscriptions",
				"organizations_url": "https://api.github.com/users/akshajrawat/orgs",
				"repos_url": "https://api.github.com/users/akshajrawat/repos",
				"events_url": "https://api.github.com/users/akshajrawat/events{/privacy}",
				"received_events_url": "https://api.github.com/users/akshajrawat/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2026-02-27T03:53:02Z",
			"updated_at": "2026-02-27T03:53:02Z",
			"body": "Sry for late changes, I got fever.",
			"author_association": "CONTRIBUTOR",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3970586964/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		}
	]
}