一些检查失败了
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
427 行
33 KiB
JSON
427 行
33 KiB
JSON
{
|
||
"issue": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/14650",
|
||
"repository_url": "https://api.github.com/repos/laurent22/joplin",
|
||
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14650/labels{/name}",
|
||
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14650/comments",
|
||
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14650/events",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14650",
|
||
"id": 4042043828,
|
||
"node_id": "PR_kwDOBLftOs7I5LBe",
|
||
"number": 14650,
|
||
"title": "Desktop: Fix note list losing focus after moving note to trash",
|
||
"user": {
|
||
"login": "anuradha1304",
|
||
"id": 150290402,
|
||
"node_id": "U_kgDOCPU_4g",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/150290402?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/anuradha1304",
|
||
"html_url": "https://github.com/anuradha1304",
|
||
"followers_url": "https://api.github.com/users/anuradha1304/followers",
|
||
"following_url": "https://api.github.com/users/anuradha1304/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/anuradha1304/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/anuradha1304/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/anuradha1304/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/anuradha1304/orgs",
|
||
"repos_url": "https://api.github.com/users/anuradha1304/repos",
|
||
"events_url": "https://api.github.com/users/anuradha1304/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/anuradha1304/received_events",
|
||
"type": "User",
|
||
"user_view_type": "public",
|
||
"site_admin": false
|
||
},
|
||
"labels": [
|
||
{
|
||
"id": 3467743982,
|
||
"node_id": "LA_kwDOBLftOs7OsZLu",
|
||
"url": "https://api.github.com/repos/laurent22/joplin/labels/accessibility",
|
||
"name": "accessibility",
|
||
"color": "91ca55",
|
||
"default": false,
|
||
"description": "Related to accessibility"
|
||
}
|
||
],
|
||
"state": "closed",
|
||
"locked": false,
|
||
"assignees": [],
|
||
"milestone": null,
|
||
"comments": 4,
|
||
"created_at": "2026-03-08T19:53:54Z",
|
||
"updated_at": "2026-04-06T16:21:46Z",
|
||
"closed_at": "2026-03-16T21:23:40Z",
|
||
"assignee": null,
|
||
"author_association": "CONTRIBUTOR",
|
||
"active_lock_reason": null,
|
||
"draft": false,
|
||
"pull_request": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14650",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14650",
|
||
"diff_url": "https://github.com/laurent22/joplin/pull/14650.diff",
|
||
"patch_url": "https://github.com/laurent22/joplin/pull/14650.patch",
|
||
"merged_at": "2026-03-16T21:23:40Z"
|
||
},
|
||
"body": "**AI Assistance Disclosure** - Used an AI tool to help navigate the codebase and understand the focus \r\nmanagement pattern in NoteList2.tsx. The fix approach, code, and tests were written by me. I have reviewed everything carefully and fully understand each line.\r\n\r\nWhen a note is deleted, the next note becomes visually selected but keyboard focus is lost - arrow keys stop working.\r\n\r\nThe fix adds a `useRefocusOnDeletion` hook that detects when the note count drops and calls `focusNote` on the newly selected note, using the existing `usePrevious` hook.\r\n\r\nhttps://github.com/user-attachments/assets/8193b241-dc2c-4ccc-b770-872b99e91297\r\n\r\nFixes #10753\r\n\r\n**Test plan**\r\nManual: create a few notes, delete one, press arrow keys - focus moves correctly to the next note. Also verified that focus is not stolen when the editor or title field is active.\r\n\r\nAutomated: added unit tests in `useRefocusOnDeletion.test.ts` covering deletion, no-op on addition, multi-select, and the focusedField guard.",
|
||
"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/14650/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/14650/timeline",
|
||
"performed_via_github_app": null,
|
||
"state_reason": null
|
||
},
|
||
"comments": [
|
||
{
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4019869030",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14650#issuecomment-4019869030",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14650",
|
||
"id": 4019869030,
|
||
"node_id": "IC_kwDOBLftOs7vmlVm",
|
||
"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-08T19:54:05Z",
|
||
"updated_at": "2026-03-17T00:09:49Z",
|
||
"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/4019869030/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/4019869400",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14650#issuecomment-4019869400",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14650",
|
||
"id": 4019869400,
|
||
"node_id": "IC_kwDOBLftOs7vmlbY",
|
||
"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-08T19:54:22Z",
|
||
"updated_at": "2026-03-15T08:55:54Z",
|
||
"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\nIntroduces a custom React hook, `useRefocusOnDeletion`, that automatically refocuses on the appropriate note in the list after a deletion occurs. The hook is integrated into the NoteList component and includes comprehensive unit tests covering various deletion scenarios.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Note Refocus Hook** <br> `packages/app-desktop/gui/NoteList/utils/useRefocusOnDeletion.ts`, `packages/app-desktop/gui/NoteList/utils/useRefocusOnDeletion.test.ts`|New hook that detects note deletions by tracking noteCount changes and refocuses on the selected note when exactly one note is selected and no editor field is focused. Includes four unit tests covering deletion detection, single/multiple note selection, and focus state conditions.|\n|**NoteList Component Integration** <br> `packages/app-desktop/gui/NoteList/NoteList2.tsx`|Adds import and invocation of the `useRefocusOnDeletion` hook, passing noteCount, selectedNoteIds, focusedField, and focusNote callback to enable automatic refocusing behaviour after deletions.|\n\n## Suggested labels\n\n`accessibility`\n\n## Suggested reviewers\n\n- personalizedrefrigerator\n\n</details>\n\n<!-- walkthrough_end -->\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 and specifically describes the main fix: restoring keyboard focus to the note list after a note is deleted/moved to trash. |\n| Description check | ✅ Passed | The description provides clear context about the problem, the solution approach, and includes test plan details that align with the changeset. |\n| Linked Issues check | ✅ Passed | The pull request successfully addresses issue `#10753` by implementing automatic refocus of the note list after deletion, restoring keyboard navigation capability. |\n| Out of Scope Changes check | ✅ Passed | All changes are directly related to fixing the focus issue: the hook implementation, its integration into NoteList2.tsx, and comprehensive unit tests. |\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 pull request description includes all required sections: problem statement, solution explanation, and test coverage details. The description articulates user impact and rationale, adhering to good PR documentation practices. |\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=14650)! 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 TruffleHog to scan for secrets in your code with verification capabilities.</summary>\n> \n> Add a [TruffleHog config file](https://docs.trufflesecurity.com/configuration-file-reference) (e.g. trufflehog-config.yml, trufflehog.yml) to your project to customize detectors and scanning behavior. The tool runs only when a config file is present.\n> \n> </details>\n\n<!-- usage_tips_end -->",
|
||
"author_association": "CONTRIBUTOR",
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4019869400/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/4019875995",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14650#issuecomment-4019875995",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14650",
|
||
"id": 4019875995,
|
||
"node_id": "IC_kwDOBLftOs7vmnCb",
|
||
"user": {
|
||
"login": "anuradha1304",
|
||
"id": 150290402,
|
||
"node_id": "U_kgDOCPU_4g",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/150290402?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/anuradha1304",
|
||
"html_url": "https://github.com/anuradha1304",
|
||
"followers_url": "https://api.github.com/users/anuradha1304/followers",
|
||
"following_url": "https://api.github.com/users/anuradha1304/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/anuradha1304/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/anuradha1304/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/anuradha1304/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/anuradha1304/orgs",
|
||
"repos_url": "https://api.github.com/users/anuradha1304/repos",
|
||
"events_url": "https://api.github.com/users/anuradha1304/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/anuradha1304/received_events",
|
||
"type": "User",
|
||
"user_view_type": "public",
|
||
"site_admin": false
|
||
},
|
||
"created_at": "2026-03-08T19:58:08Z",
|
||
"updated_at": "2026-03-08T19:58:08Z",
|
||
"body": "I have read the CLA Document and I hereby sign the CLA\r\n",
|
||
"author_association": "CONTRIBUTOR",
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4019875995/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/4193441394",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14650#issuecomment-4193441394",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14650",
|
||
"id": 4193441394,
|
||
"node_id": "IC_kwDOBLftOs758tZy",
|
||
"user": {
|
||
"login": "personalizedrefrigerator",
|
||
"id": 46334387,
|
||
"node_id": "MDQ6VXNlcjQ2MzM0Mzg3",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/46334387?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/personalizedrefrigerator",
|
||
"html_url": "https://github.com/personalizedrefrigerator",
|
||
"followers_url": "https://api.github.com/users/personalizedrefrigerator/followers",
|
||
"following_url": "https://api.github.com/users/personalizedrefrigerator/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/personalizedrefrigerator/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/personalizedrefrigerator/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/personalizedrefrigerator/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/personalizedrefrigerator/orgs",
|
||
"repos_url": "https://api.github.com/users/personalizedrefrigerator/repos",
|
||
"events_url": "https://api.github.com/users/personalizedrefrigerator/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/personalizedrefrigerator/received_events",
|
||
"type": "User",
|
||
"user_view_type": "public",
|
||
"site_admin": false
|
||
},
|
||
"created_at": "2026-04-06T16:21:23Z",
|
||
"updated_at": "2026-04-06T16:21:46Z",
|
||
"body": "This pull request seems to have introduced a focus-related regression (see https://github.com/laurent22/joplin/issues/15029).",
|
||
"author_association": "COLLABORATOR",
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4193441394/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
|
||
}
|
||
]
|
||
} |