一些检查失败了
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
391 行
27 KiB
JSON
391 行
27 KiB
JSON
{
|
||
"issue": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/14745",
|
||
"repository_url": "https://api.github.com/repos/laurent22/joplin",
|
||
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14745/labels{/name}",
|
||
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14745/comments",
|
||
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14745/events",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14745",
|
||
"id": 4078028303,
|
||
"node_id": "PR_kwDOBLftOs7KtM95",
|
||
"number": 14745,
|
||
"title": "Desktop: fixes #12135: Trim Joplin Server URL to prevent sync errors with leading/trailing spaces ",
|
||
"user": {
|
||
"login": "Jean-Regis-M",
|
||
"id": 190766850,
|
||
"node_id": "U_kgDOC17fAg",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/190766850?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/Jean-Regis-M",
|
||
"html_url": "https://github.com/Jean-Regis-M",
|
||
"followers_url": "https://api.github.com/users/Jean-Regis-M/followers",
|
||
"following_url": "https://api.github.com/users/Jean-Regis-M/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/Jean-Regis-M/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/Jean-Regis-M/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/Jean-Regis-M/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/Jean-Regis-M/orgs",
|
||
"repos_url": "https://api.github.com/users/Jean-Regis-M/repos",
|
||
"events_url": "https://api.github.com/users/Jean-Regis-M/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/Jean-Regis-M/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": 1366675015,
|
||
"node_id": "MDU6TGFiZWwxMzY2Njc1MDE1",
|
||
"url": "https://api.github.com/repos/laurent22/joplin/labels/sync",
|
||
"name": "sync",
|
||
"color": "91ca55",
|
||
"default": false,
|
||
"description": "sync related issue"
|
||
}
|
||
],
|
||
"state": "closed",
|
||
"locked": false,
|
||
"assignees": [],
|
||
"milestone": null,
|
||
"comments": 3,
|
||
"created_at": "2026-03-15T09:34:15Z",
|
||
"updated_at": "2026-03-16T15:20:56Z",
|
||
"closed_at": "2026-03-16T15:20:56Z",
|
||
"assignee": null,
|
||
"author_association": "NONE",
|
||
"active_lock_reason": null,
|
||
"draft": false,
|
||
"pull_request": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14745",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14745",
|
||
"diff_url": "https://github.com/laurent22/joplin/pull/14745.diff",
|
||
"patch_url": "https://github.com/laurent22/joplin/pull/14745.patch",
|
||
"merged_at": null
|
||
},
|
||
"body": "**Problem:**\r\nWhen configuring Joplin Server sync, entering a URL with leading or trailing spaces would pass the configuration check but fail during actual synchronisation with an \"invalid URL\" error. This occurred because the URL was not trimmed before being used in API requests, leading to malformed URLs (e.g., `' https://server.com/api/...'`).\r\n\r\n**Solution:**\r\nTrim leading and trailing whitespace from the server URL in both the configuration check and the sync API initialisation. This ensures the URL is valid in all contexts. Changes applied in `SyncTargetJoplinServer.ts`:\r\n- In `newFileApi`, trim the result of `options.path()` and `options.userContentPath()` when setting `baseUrl` and `userContentBaseUrl`.\r\n- In `checkConfig`, trim the path before protocol validation to keep behaviour consistent.\r\n\r\n**Test Plan:**\r\n- **Automated tests**: Added Jest tests that verify URLs with leading/trailing spaces are correctly trimmed when passed to `JoplinServerApi`, and that empty/whitespace‑only strings are handled.\r\n- **Manual test** (on iOS and any platform):\r\n 1. Set sync target to Joplin Server.\r\n 2. Enter a URL with a leading space, e.g., ` https://example.com`.\r\n 3. Run configuration check; it should succeed (if server reachable).\r\n 4. Perform a full sync; it should complete without errors.\r\n 5. Repeat with trailing spaces, multiple spaces, and an empty string (which should show an error).\r\n\r\n**AI Assistance Disclosure:** \r\nNo AI was used in generating this PR.",
|
||
"closed_by": {
|
||
"login": "Jean-Regis-M",
|
||
"id": 190766850,
|
||
"node_id": "U_kgDOC17fAg",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/190766850?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/Jean-Regis-M",
|
||
"html_url": "https://github.com/Jean-Regis-M",
|
||
"followers_url": "https://api.github.com/users/Jean-Regis-M/followers",
|
||
"following_url": "https://api.github.com/users/Jean-Regis-M/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/Jean-Regis-M/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/Jean-Regis-M/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/Jean-Regis-M/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/Jean-Regis-M/orgs",
|
||
"repos_url": "https://api.github.com/users/Jean-Regis-M/repos",
|
||
"events_url": "https://api.github.com/users/Jean-Regis-M/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/Jean-Regis-M/received_events",
|
||
"type": "User",
|
||
"user_view_type": "public",
|
||
"site_admin": false
|
||
},
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/14745/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/14745/timeline",
|
||
"performed_via_github_app": null,
|
||
"state_reason": null
|
||
},
|
||
"comments": [
|
||
{
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4062656457",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14745#issuecomment-4062656457",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14745",
|
||
"id": 4062656457,
|
||
"node_id": "IC_kwDOBLftOs7yJzfJ",
|
||
"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-15T09:34:27Z",
|
||
"updated_at": "2026-03-15T09:49: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/4062656457/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/4062656883",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14745#issuecomment-4062656883",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14745",
|
||
"id": 4062656883,
|
||
"node_id": "IC_kwDOBLftOs7yJzlz",
|
||
"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-15T09:34:47Z",
|
||
"updated_at": "2026-03-15T09:39:47Z",
|
||
"body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- walkthrough_start -->\n\n<details>\n<summary>📝 Walkthrough</summary>\n\n## Walkthrough\n\nThe Joplin Server sync integration now trims whitespace from baseUrl and userContentBaseUrl values in newFileApi, and performs path trimming before protocol validation in checkConfig to prevent validation failures caused by extraneous spaces.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**URL and Path Whitespace Trimming** <br> `packages/lib/SyncTargetJoplinServer.ts`|Added trimming of whitespace from baseUrl and userContentBaseUrl values retrieved from newFileApi, and implemented path trimming before protocol validation in checkConfig to ensure validation operates on clean input.|\n\n## Suggested labels\n\n`sync`, `bug`\n\n</details>\n\n<!-- walkthrough_end -->\n\n\n<!-- pre_merge_checks_walkthrough_start -->\n\n<details>\n<summary>🚥 Pre-merge checks | ✅ 3 | ❌ 1</summary>\n\n### ❌ Failed checks (1 warning)\n\n| Check name | Status | Explanation | Resolution |\n| :----------------: | :--------- | :----------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- |\n| Docstring Coverage | ⚠️ Warning | Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. | Write docstrings for the functions missing them to satisfy the coverage threshold. |\n\n<details>\n<summary>✅ Passed checks (3 passed)</summary>\n\n| Check name | Status | Explanation |\n| :-----------------------------------: | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Title check | ✅ Passed | The title clearly and concisely summarizes the main change: trimming Joplin Server URLs to prevent sync errors caused by leading/trailing spaces. |\n| Description check | ✅ Passed | The description provides comprehensive context about the problem, solution, testing approach, and includes an AI assistance disclosure, all directly related to the changeset. |\n| Pr Description Must Follow Guidelines | ✅ Passed | The PR description includes all three required sections: clear problem statement on whitespace in URLs causing sync failures, high-level solution explanation of trimming changes in SyncTargetJoplinServer.ts, and comprehensive test plan with automated and manual verification. |\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=14745)! 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/4062656883/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/4062660163",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14745#issuecomment-4062660163",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14745",
|
||
"id": 4062660163,
|
||
"node_id": "IC_kwDOBLftOs7yJ0ZD",
|
||
"user": {
|
||
"login": "Jean-Regis-M",
|
||
"id": 190766850,
|
||
"node_id": "U_kgDOC17fAg",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/190766850?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/Jean-Regis-M",
|
||
"html_url": "https://github.com/Jean-Regis-M",
|
||
"followers_url": "https://api.github.com/users/Jean-Regis-M/followers",
|
||
"following_url": "https://api.github.com/users/Jean-Regis-M/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/Jean-Regis-M/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/Jean-Regis-M/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/Jean-Regis-M/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/Jean-Regis-M/orgs",
|
||
"repos_url": "https://api.github.com/users/Jean-Regis-M/repos",
|
||
"events_url": "https://api.github.com/users/Jean-Regis-M/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/Jean-Regis-M/received_events",
|
||
"type": "User",
|
||
"user_view_type": "public",
|
||
"site_admin": false
|
||
},
|
||
"created_at": "2026-03-15T09:37:08Z",
|
||
"updated_at": "2026-03-15T09:37:08Z",
|
||
"body": "I have read the CLA Document and I hereby sign the CLA",
|
||
"author_association": "NONE",
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4062660163/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
|
||
}
|
||
]
|
||
} |