一些检查失败了
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
454 行
34 KiB
JSON
454 行
34 KiB
JSON
{
|
||
"issue": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/14395",
|
||
"repository_url": "https://api.github.com/repos/laurent22/joplin",
|
||
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14395/labels{/name}",
|
||
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14395/comments",
|
||
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14395/events",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14395",
|
||
"id": 3967052189,
|
||
"node_id": "PR_kwDOBLftOs7FFoxv",
|
||
"number": 14395,
|
||
"title": "Desktop: Fixes #14372: Enable Joplin Server OAuth flow on Desktop App",
|
||
"user": {
|
||
"login": "ManthanNimodiya",
|
||
"id": 124487538,
|
||
"node_id": "U_kgDOB2uHcg",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/124487538?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/ManthanNimodiya",
|
||
"html_url": "https://github.com/ManthanNimodiya",
|
||
"followers_url": "https://api.github.com/users/ManthanNimodiya/followers",
|
||
"following_url": "https://api.github.com/users/ManthanNimodiya/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/ManthanNimodiya/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/ManthanNimodiya/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/ManthanNimodiya/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/ManthanNimodiya/orgs",
|
||
"repos_url": "https://api.github.com/users/ManthanNimodiya/repos",
|
||
"events_url": "https://api.github.com/users/ManthanNimodiya/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/ManthanNimodiya/received_events",
|
||
"type": "User",
|
||
"user_view_type": "public",
|
||
"site_admin": false
|
||
},
|
||
"labels": [
|
||
{
|
||
"id": 519700743,
|
||
"node_id": "MDU6TGFiZWw1MTk3MDA3NDM=",
|
||
"url": "https://api.github.com/repos/laurent22/joplin/labels/enhancement",
|
||
"name": "enhancement",
|
||
"color": "5ebeff",
|
||
"default": true,
|
||
"description": "Feature requests and code enhancements"
|
||
},
|
||
{
|
||
"id": 1080341216,
|
||
"node_id": "MDU6TGFiZWwxMDgwMzQxMjE2",
|
||
"url": "https://api.github.com/repos/laurent22/joplin/labels/desktop",
|
||
"name": "desktop",
|
||
"color": "ffc274",
|
||
"default": false,
|
||
"description": "All desktop platforms"
|
||
},
|
||
{
|
||
"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"
|
||
},
|
||
{
|
||
"id": 2676541710,
|
||
"node_id": "MDU6TGFiZWwyNjc2NTQxNzEw",
|
||
"url": "https://api.github.com/repos/laurent22/joplin/labels/server",
|
||
"name": "server",
|
||
"color": "ffc274",
|
||
"default": false,
|
||
"description": "Issues related to Joplin Server"
|
||
}
|
||
],
|
||
"state": "closed",
|
||
"locked": false,
|
||
"assignees": [],
|
||
"milestone": null,
|
||
"comments": 4,
|
||
"created_at": "2026-02-20T07:27:19Z",
|
||
"updated_at": "2026-02-20T08:24:26Z",
|
||
"closed_at": "2026-02-20T08:10:56Z",
|
||
"assignee": null,
|
||
"author_association": "NONE",
|
||
"active_lock_reason": null,
|
||
"draft": false,
|
||
"pull_request": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14395",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14395",
|
||
"diff_url": "https://github.com/laurent22/joplin/pull/14395.diff",
|
||
"patch_url": "https://github.com/laurent22/joplin/pull/14395.patch",
|
||
"merged_at": null
|
||
},
|
||
"body": "### Description\r\nFixes #14372: Enable Joplin Server OAuth flow on Desktop App\r\n\r\nThe Desktop client lacked the OAuth flow implementation for the self-hosted Joplin Server sync target (`sync.target` 9) but correctly used it for the hosted Joplin Cloud. Since Joplin Server and Joplin Cloud share the same backend, this identical OAuth flow has now been configured natively for self-hosted instances without breaking legacy/direct-password entry capabilities.\r\n\r\n**Changes:**\r\n- Added a `JoplinServerLoginScreen` component to handle the OAuth flow and polling specifically tailored for the `sync.9` target (Joplin Server).\r\n- Hooked up `JoplinServerLoginScreen` in the [Root.tsx](cci:7://file:///Users/manthannimodiya/Coding/GitHub/GSOC/joplin/packages/app-desktop/gui/Root.tsx:0:0-0:0) navigator.\r\n- Updated [ConfigScreen.tsx](cci:7://file:///Users/manthannimodiya/Coding/GitHub/GSOC/joplin/packages/app-desktop/gui/JoplinCloudConfigScreen.tsx:0:0-0:0) to display a \"Login with Joplin Server\" button that routes to the new login screen when the sync target is set to Joplin Server.\r\n- Modified [SyncTargetJoplinServer.ts](cci:7://file:///Users/manthannimodiya/Coding/GitHub/GSOC/joplin/packages/lib/SyncTargetJoplinServer.ts:0:0-0:0) to implement [authRouteName()](cci:1://file:///Users/manthannimodiya/Coding/GitHub/GSOC/joplin/packages/lib/SyncTargetJoplinServer.ts:80:1-82:2) pointing to the new login screen, extracting session ID checks inside [isAuthenticated()](cci:1://file:///Users/manthannimodiya/Coding/GitHub/GSOC/joplin/packages/lib/SyncTargetJoplinServer.ts:66:1-78:2), and handling password requirements accurately.\r\n\r\n### Demo\r\n\r\n\r\n\r\n\r\n\r\nhttps://github.com/user-attachments/assets/ebd2cc70-1c16-4164-9504-f29043d16124\r\n\r\n\r\n\r\n\r\n\r\n### Testing steps\r\n1. Run a local Joplin Server.\r\n2. In the Config screen, change Synchronization to **Joplin Server**.\r\n3. Input the server URL and click \"Login with Joplin Server\".\r\n4. Authorize via the browser, and verify session establishes inside the Desktop App without errors.\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/14395/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/14395/timeline",
|
||
"performed_via_github_app": null,
|
||
"state_reason": null
|
||
},
|
||
"comments": [
|
||
{
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3932157687",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14395#issuecomment-3932157687",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14395",
|
||
"id": 3932157687,
|
||
"node_id": "IC_kwDOBLftOs7qX_b3",
|
||
"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-20T07:27:32Z",
|
||
"updated_at": "2026-02-20T08:11:11Z",
|
||
"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/3932157687/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/3932158627",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14395#issuecomment-3932158627",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14395",
|
||
"id": 3932158627,
|
||
"node_id": "IC_kwDOBLftOs7qX_qj",
|
||
"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-20T07:27:47Z",
|
||
"updated_at": "2026-02-20T07:45:01Z",
|
||
"body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generated in the recent review. 🎉\n\n---\n\n\n<!-- walkthrough_start -->\n\n<details>\n<summary>📝 Walkthrough</summary>\n\n## Walkthrough\n\nThis pull request adds Joplin Server OAuth support: a new login screen implements the OAuth/polling flow and UI actions, the config screen exposes a \"Login with Joplin Server\" path (button and navigation), and the sync target implementation is updated to support the new auth route and real authentication checks.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Joplin Server Login Screen** <br> `packages/app-desktop/gui/JoplinServerLoginScreen.tsx`|New connected React component implementing OAuth flow: generates confirm/application auth URLs, persistent applicationAuthId via useMemo, starts 2s polling to check auth status, updates settings with credentials on completion, loads file session, emits SessionEstablished, schedules initial sync, handles external open and copy-to-clipboard actions, and cleans up polling.|\n|**UI Integration** <br> `packages/app-desktop/gui/ConfigScreen/ConfigScreen.tsx`, `packages/app-desktop/gui/Root.tsx`|ConfigScreen: adds \"Login with Joplin Server\" button (shown when sync target is `joplinServer` and enabled only if server path present) which saves settings and navigates to `JoplinServerLogin`. Root: imports and registers `JoplinServerLogin` screen and title. Also minor JSX formatting whitespace changes.|\n|**Sync Target Authentication** <br> `packages/lib/SyncTargetJoplinServer.ts`|isAuthenticated() now checks real file API sessionId (handles 403 as unauthenticated), added authRouteName() returning `'JoplinServerLogin'`, requiresPassword() changed to return false, and minor typing/spacing adjustment to checkConfig parameter signature.|\n|**Minor formatting** <br> `packages/app-desktop/gui/ConfigScreen/ConfigScreen.tsx`|Whitespace/JSX self-closing tag formatting adjusted in a few branches (functional equivalence).|\n\n## Sequence Diagram(s)\n\n```mermaid\nsequenceDiagram\n participant User\n participant Config as ConfigScreen\n participant Root as Root (Navigator)\n participant Login as JoplinServerLoginScreen\n participant Browser as External Browser\n participant Server as Joplin Server API\n participant Redux as Redux State\n\n User->>Config: Click \"Login with Joplin Server\"\n Config->>Redux: Save settings\n Config->>Root: Navigate to JoplinServerLogin\n Root->>Login: Render (reads sync.9.path)\n Login->>Login: Generate auth URLs (confirm & applicationAuth) + applicationAuthId\n Login->>User: Show authorize button & copy link\n User->>Browser: Open auth URL / paste link\n Browser->>Server: User authorises in browser\n loop Poll every 2s\n Login->>Server: Poll confirm endpoint\n Server-->>Login: Poll response (pending/complete/error)\n end\n Server-->>Login: Auth complete (returns credentials)\n Login->>Redux: Update settings with username/password\n Login->>Login: Load file session, emit SessionEstablished, schedule initial sync\n Login->>User: Display success / finish\n```\n\n</details>\n\n<!-- walkthrough_end -->\n\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 accurately reflects the main change: enabling Joplin Server OAuth flow on Desktop App, which matches the core objective of the pull request. |\n| Description check | ✅ Passed | The description is directly related to the changeset, providing clear context about the OAuth flow implementation for Joplin Server (sync.target 9) with specific details about the changes made. |\n| Linked Issues check | ✅ Passed | The pull request implements the core requirement from issue `#14372` by adding OAuth flow support for Joplin Server on the Desktop client through new components and modifications to authentication handling. |\n| Out of Scope Changes check | ✅ Passed | All changes are scoped to enabling Joplin Server OAuth flow: new login screen component, navigator integration, config UI button, and sync target authentication methods. Minor formatting changes in JSX are incidental. |\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- [ ] <!-- {\"checkboxId\": \"7962f53c-55bc-4827-bfbf-6a18da830691\"} --> 📝 Generate docstrings (stacked PR)\n- [ ] <!-- {\"checkboxId\": \"3e1879ae-f29b-4d0d-8e06-d12b7ba33d98\"} --> 📝 Generate docstrings (commit on current branch)\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\n\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 -->",
|
||
"author_association": "CONTRIBUTOR",
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3932158627/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/3932165631",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14395#issuecomment-3932165631",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14395",
|
||
"id": 3932165631,
|
||
"node_id": "IC_kwDOBLftOs7qYBX_",
|
||
"user": {
|
||
"login": "ManthanNimodiya",
|
||
"id": 124487538,
|
||
"node_id": "U_kgDOB2uHcg",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/124487538?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/ManthanNimodiya",
|
||
"html_url": "https://github.com/ManthanNimodiya",
|
||
"followers_url": "https://api.github.com/users/ManthanNimodiya/followers",
|
||
"following_url": "https://api.github.com/users/ManthanNimodiya/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/ManthanNimodiya/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/ManthanNimodiya/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/ManthanNimodiya/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/ManthanNimodiya/orgs",
|
||
"repos_url": "https://api.github.com/users/ManthanNimodiya/repos",
|
||
"events_url": "https://api.github.com/users/ManthanNimodiya/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/ManthanNimodiya/received_events",
|
||
"type": "User",
|
||
"user_view_type": "public",
|
||
"site_admin": false
|
||
},
|
||
"created_at": "2026-02-20T07:29:40Z",
|
||
"updated_at": "2026-02-20T07:29:40Z",
|
||
"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/3932165631/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/3932312595",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14395#issuecomment-3932312595",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14395",
|
||
"id": 3932312595,
|
||
"node_id": "IC_kwDOBLftOs7qYlQT",
|
||
"user": {
|
||
"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
|
||
},
|
||
"created_at": "2026-02-20T08:10:56Z",
|
||
"updated_at": "2026-02-20T08:24:26Z",
|
||
"body": "Hello, the code has been copied and pasted from the Joplin Cloud implementation. This is not how we'd like to implement this as it makes maintenance difficult.\r\n\r\nWhile this PR targets an existing issue, the proposed solution is not suitable for the project in its current form. Bringing it up to an acceptable standard would require significant redesign and guidance.\r\n\r\nFor future contributions, please ensure changes are well-aligned with the existing architecture and sufficiently tested.",
|
||
"author_association": "OWNER",
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3932312595/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
|
||
}
|
||
]
|
||
} |