文件
mynode/readme/cla/consent_records/madhan112007_192893760.json
chen 301194963b
一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
feat: Initial clean release of CHM
2026-11-04 11:29:39 +08:00

400 行
32 KiB
JSON

此文件含有不可见的 Unicode 字符

此文件含有人类无法区分的不可见的 Unicode 字符,但可以由计算机进行不同的处理。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

{
"issue": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/14765",
"repository_url": "https://api.github.com/repos/laurent22/joplin",
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14765/labels{/name}",
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14765/comments",
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14765/events",
"html_url": "https://github.com/laurent22/joplin/pull/14765",
"id": 4082831438,
"node_id": "PR_kwDOBLftOs7K8K_v",
"number": 14765,
"title": "Mobile: fix openFolder x-callback-url link on Android",
"user": {
"login": "madhan112007",
"id": 192893760,
"node_id": "U_kgDOC39TQA",
"avatar_url": "https://avatars.githubusercontent.com/u/192893760?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/madhan112007",
"html_url": "https://github.com/madhan112007",
"followers_url": "https://api.github.com/users/madhan112007/followers",
"following_url": "https://api.github.com/users/madhan112007/following{/other_user}",
"gists_url": "https://api.github.com/users/madhan112007/gists{/gist_id}",
"starred_url": "https://api.github.com/users/madhan112007/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/madhan112007/subscriptions",
"organizations_url": "https://api.github.com/users/madhan112007/orgs",
"repos_url": "https://api.github.com/users/madhan112007/repos",
"events_url": "https://api.github.com/users/madhan112007/events{/privacy}",
"received_events_url": "https://api.github.com/users/madhan112007/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": 1079605111,
"node_id": "MDU6TGFiZWwxMDc5NjA1MTEx",
"url": "https://api.github.com/repos/laurent22/joplin/labels/mobile",
"name": "mobile",
"color": "ffc274",
"default": false,
"description": "All mobile platforms"
},
{
"id": 1366672041,
"node_id": "MDU6TGFiZWwxMzY2NjcyMDQx",
"url": "https://api.github.com/repos/laurent22/joplin/labels/android",
"name": "android",
"color": "bfd4f2",
"default": false,
"description": ""
}
],
"state": "closed",
"locked": false,
"assignees": [],
"milestone": null,
"comments": 3,
"created_at": "2026-03-16T14:27:53Z",
"updated_at": "2026-03-16T22:06:31Z",
"closed_at": "2026-03-16T20:50:39Z",
"assignee": null,
"author_association": "CONTRIBUTOR",
"active_lock_reason": null,
"draft": false,
"pull_request": {
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14765",
"html_url": "https://github.com/laurent22/joplin/pull/14765",
"diff_url": "https://github.com/laurent22/joplin/pull/14765.diff",
"patch_url": "https://github.com/laurent22/joplin/pull/14765.patch",
"merged_at": "2026-03-16T20:50:39Z"
},
"body": "Fixes #14286\r\n\r\n## Summary\r\nFixes `joplin://x-callback-url/openFolder?id=<id>` links not working on Android.\r\n\r\n## Problem\r\nOn Android, clicking a `joplin://x-callback-url/openFolder` link resulted in the error:\r\n\r\nUnsupported item type for links: 2\r\n\r\nThe deep-link handler did not correctly support folder targets, causing the app to fail when attempting to open a notebook via an external link.\r\n\r\n## Solution\r\nUpdate the Android deep-link handling logic so that folder links are recognized and the application navigates to the corresponding notebook instead of treating the link as an unsupported item type.\r\n\r\n## Testing\r\nTested on an Android emulator (Pixel 6, API 34):\r\n\r\n1. Created a notebook in Joplin\r\n2. Copied its external link\r\n3. Triggered the link using:\r\n\r\nadb shell am start -a android.intent.action.VIEW -d \"joplin://x-callback-url/openFolder?id=<folderId>\"\r\n\r\nResult:\r\n- Joplin opens and navigates to the correct notebook.\r\n- Verified that `openNote` links still work as expected (no regression).\r\n\r\n**Result**\r\n\r\nhttps://github.com/user-attachments/assets/4d254dcf-ff82-46ff-ad5b-c15d7ea492b9\r\n\r\n\r\n",
"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/14765/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/14765/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"comments": [
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4068070228",
"html_url": "https://github.com/laurent22/joplin/pull/14765#issuecomment-4068070228",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14765",
"id": 4068070228,
"node_id": "IC_kwDOBLftOs7yedNU",
"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-03-16T14:28:08Z",
"updated_at": "2026-03-16T22:06:31Z",
"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/4068070228/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/4068072328",
"html_url": "https://github.com/laurent22/joplin/pull/14765#issuecomment-4068072328",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14765",
"id": 4068072328,
"node_id": "IC_kwDOBLftOs7yeduI",
"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-03-16T14:28:23Z",
"updated_at": "2026-03-16T15:01:59Z",
"body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generated in the recent review. 🎉\n\n<details>\n<summary>ℹ️ Recent review info</summary>\n\n<details>\n<summary>⚙️ Run configuration</summary>\n\n**Configuration used**: Path: .coderabbit.yaml\n\n**Review profile**: CHILL\n\n**Plan**: Pro\n\n**Run ID**: `1c939229-2093-4a23-9f8f-7d1ddf525be7`\n\n</details>\n\n<details>\n<summary>📥 Commits</summary>\n\nReviewing files that changed from the base of the PR and between 5cb776eb9d9e5c47e7de7cc46fdf7b4f328b3525 and a659e892f74a8ce5263705b403dc81ab56eed0e8.\n\n</details>\n\n<details>\n<summary>📒 Files selected for processing (2)</summary>\n\n* `.eslintignore`\n* `.gitignore`\n\n</details>\n\n<details>\n<summary>✅ Files skipped from review due to trivial changes (1)</summary>\n\n* .eslintignore\n\n</details>\n\n</details>\n\n---\n\n\n<!-- walkthrough_start -->\n\n<details>\n<summary>📝 Walkthrough</summary>\n\n## Walkthrough\n\nopenItem was extended to handle Folder items by calling a new goToFolder utility. Item existence validation was added. A new util module loads the Folder and navigates to the Notes view; auxiliary .eslintignore and .gitignore entries for the generated JS file were added.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Command Enhancement** <br> `packages/app-mobile/commands/openItem.ts`|Imports and uses `goToFolder` for items of type Folder; validates item existence and throws if not found; retains Note and Resource handling.|\n|**Utility Function** <br> `packages/app-mobile/commands/util/goToFolder.ts`|New default-exported async `goToFolder(id: string)` that loads `Folder.load(id)`, throws if missing, and calls `NavService.go('Notes', { folderId: id })`.|\n|**Ignore Lists** <br> `.eslintignore`, `.gitignore`|Added `packages/app-mobile/commands/util/goToFolder.js` to ESLint and Git ignore files (generated JS ignored).|\n\n## Sequence Diagram(s)\n\n```mermaid\nsequenceDiagram\n participant Cmd as openItem command\n participant Util as goToFolder\n participant Model as Folder\n participant Nav as NavService\n\n Cmd->>Util: goToFolder(item.id)\n Util->>Model: Folder.load(id)\n alt folder found\n Util->>Nav: NavService.go('Notes', { folderId: id })\n Nav-->>Cmd: navigation complete\n else not found\n Util-->>Cmd: throw Error(\"Folder not found\")\n end\n```\n\n## Suggested labels\n\nmobile, android, bug\n\n## Suggested reviewers\n\n- laurent22\n\n</details>\n\n<!-- walkthrough_end -->\n\n\n<!-- pre_merge_checks_walkthrough_start -->\n\n<details>\n<summary>🚥 Pre-merge checks | ✅ 6</summary>\n\n<details>\n<summary>✅ Passed checks (6 passed)</summary>\n\n| Check name | Status | Explanation |\n| :-----------------------------------: | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Title check | ✅ Passed | The title clearly describes the main change: fixing openFolder x-callback-url links on Android, which directly addresses the primary objective of the PR. |\n| Description check | ✅ Passed | The description provides detailed context about the problem, solution, and testing methodology, all directly related to the changeset's objective of fixing folder link handling on Android. |\n| Linked Issues check | ✅ Passed | The PR successfully implements support for openFolder x-callback-url links on Android by extending openItemById to handle ModelType.Folder and adding goToFolder utility function, fully addressing issue `#14286`'s requirement to open folders via external links. |\n| Out of Scope Changes check | ✅ Passed | Changes to .eslintignore and .gitignore to ignore the new goToFolder.js file are ancillary to the primary functionality and are standard practice for generated or compiled output files. |\n| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. |\n| Pr Description Must Follow Guidelines | ✅ Passed | The PR description includes all required sections: problem statement (x-callback-url/openFolder failing on Android), solution explanation (changes to openItem.ts and new goToFolder.ts), and test plan (Android emulator verification with specific steps). |\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<!-- pr_review_plan_action_start -->\n\n<details>\n<summary>📝 Coding Plan</summary>\n\n- [ ] <!-- {\"checkboxId\": \"6ad8a4e1-0b3a-4ea2-9b5b-d82c1f47d1f2\"} --> Generate coding plan for human review comments\n\n</details>\n\n<!-- pr_review_plan_action_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=14765)! 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<!-- 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 -->\n\n<!-- internal state end -->\n<!-- usage_tips_start -->\n\n> [!TIP]\n> <details>\n> <summary>CodeRabbit can use your project's `biome` configuration to improve the quality of JS/TS/CSS/JSON code reviews.</summary>\n> \n> Add a [configuration file](https://biomejs.dev/reference/configuration/) to your project to customize how CodeRabbit runs `biome`.\n> \n> </details>\n\n<!-- usage_tips_end -->",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4068072328/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/4068086841",
"html_url": "https://github.com/laurent22/joplin/pull/14765#issuecomment-4068086841",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14765",
"id": 4068086841,
"node_id": "IC_kwDOBLftOs7yehQ5",
"user": {
"login": "madhan112007",
"id": 192893760,
"node_id": "U_kgDOC39TQA",
"avatar_url": "https://avatars.githubusercontent.com/u/192893760?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/madhan112007",
"html_url": "https://github.com/madhan112007",
"followers_url": "https://api.github.com/users/madhan112007/followers",
"following_url": "https://api.github.com/users/madhan112007/following{/other_user}",
"gists_url": "https://api.github.com/users/madhan112007/gists{/gist_id}",
"starred_url": "https://api.github.com/users/madhan112007/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/madhan112007/subscriptions",
"organizations_url": "https://api.github.com/users/madhan112007/orgs",
"repos_url": "https://api.github.com/users/madhan112007/repos",
"events_url": "https://api.github.com/users/madhan112007/events{/privacy}",
"received_events_url": "https://api.github.com/users/madhan112007/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-16T14:30:15Z",
"updated_at": "2026-03-16T14:30:15Z",
"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/4068086841/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
}
]
}