一些检查失败了
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
544 行
52 KiB
JSON
544 行
52 KiB
JSON
{
|
||
"issue": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/14921",
|
||
"repository_url": "https://api.github.com/repos/laurent22/joplin",
|
||
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14921/labels{/name}",
|
||
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14921/comments",
|
||
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14921/events",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14921",
|
||
"id": 4151582545,
|
||
"node_id": "PR_kwDOBLftOs7OA6Gv",
|
||
"number": 14921,
|
||
"title": "Desktop: Resolves #14763: Added support for settings search in the Desktop App",
|
||
"user": {
|
||
"login": "ARPIT-NAYAK-LEGEND",
|
||
"id": 86902713,
|
||
"node_id": "MDQ6VXNlcjg2OTAyNzEz",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/86902713?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND",
|
||
"html_url": "https://github.com/ARPIT-NAYAK-LEGEND",
|
||
"followers_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/followers",
|
||
"following_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/orgs",
|
||
"repos_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/repos",
|
||
"events_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/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": 2394366066,
|
||
"node_id": "MDU6TGFiZWwyMzk0MzY2MDY2",
|
||
"url": "https://api.github.com/repos/laurent22/joplin/labels/search",
|
||
"name": "search",
|
||
"color": "91ca55",
|
||
"default": false,
|
||
"description": ""
|
||
},
|
||
{
|
||
"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": 6,
|
||
"created_at": "2026-03-27T11:02:20Z",
|
||
"updated_at": "2026-04-03T04:12:17Z",
|
||
"closed_at": "2026-04-02T15:35:06Z",
|
||
"assignee": null,
|
||
"author_association": "NONE",
|
||
"active_lock_reason": null,
|
||
"draft": false,
|
||
"pull_request": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14921",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14921",
|
||
"diff_url": "https://github.com/laurent22/joplin/pull/14921.diff",
|
||
"patch_url": "https://github.com/laurent22/joplin/pull/14921.patch",
|
||
"merged_at": null
|
||
},
|
||
"body": "## Description\r\n\r\nThis pull request implements search functionality for the Joplin Desktop settings screen, allowing users to quickly find settings by searching across labels, descriptions, and section names.\r\n\r\n## Features Implemented\r\n\r\n- **Search Input Field**: Added search box at top of settings sidebar\r\n- **Real-time Filtering**: Sections and settings filter as user types\r\n- **Multi-field Search**: Searches setting labels, descriptions, and section names\r\n- **Case-insensitive Matching**: Users don't need to worry about capitalization\r\n- **Visual Feedback**: \r\n - Matching text highlighted in yellow in section names\r\n - Sections without matching settings remain visible but with reduced opacity\r\n - Clear button appears when search is active\r\n- **Plugin Support**: Correctly filters plugin settings\r\n- **Keyboard Accessible**: Full keyboard navigation maintained\r\n\r\n## Implementation Details\r\n\r\n**Files Modified:**\r\n- `packages/app-desktop/gui/ConfigScreen/ConfigScreen.tsx` - Added search state management and filtering logic\r\n- `packages/app-desktop/gui/ConfigScreen/Sidebar.tsx` - Added search UI with styled components\r\n- `packages/app-desktop/gui/ConfigScreen/controls/HighlightedText.tsx` - New component for highlighting matching text\r\n- `packages/app-desktop/gui/ConfigScreen/ConfigScreen.search.test.ts` - Comprehensive Jest test suite (22 test cases)\r\n\r\n## Testing\r\n\r\n**Automated Tests:** 22 Jest test cases covering:\r\n- Case-insensitive matching\r\n- Partial string search\r\n- Search by label and description\r\n- Empty search results\r\n- Plugin filtering\r\n- State management\r\n\r\n**Build Status:** ✅ Successfully compiled with 0 errors\r\n\r\n## Notes\r\n\r\n- No breaking changes to existing functionality\r\n- Fully backwards compatible\r\n- Mirrors search implementation from Joplin Mobile for consistency\r\n- Low-risk implementation with optional feature\r\n\r\n## AI Assistance Disclosure\r\n\r\nGemini 3.1 was used to refine this PR description and give various test ideas.\r\n[Screencast_20260327_153220.webm](https://github.com/user-attachments/assets/878ac81d-8854-4b38-8acb-9f0dce10d641)\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/14921/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/14921/timeline",
|
||
"performed_via_github_app": null,
|
||
"state_reason": null
|
||
},
|
||
"comments": [
|
||
{
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4141815660",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14921#issuecomment-4141815660",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14921",
|
||
"id": 4141815660,
|
||
"node_id": "IC_kwDOBLftOs723xds",
|
||
"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-27T11:02:32Z",
|
||
"updated_at": "2026-04-02T17:08:58Z",
|
||
"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/4141815660/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/4141816996",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14921#issuecomment-4141816996",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14921",
|
||
"id": 4141816996,
|
||
"node_id": "IC_kwDOBLftOs723xyk",
|
||
"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-27T11:02:46Z",
|
||
"updated_at": "2026-03-27T12:59:12Z",
|
||
"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\nAdds a searchable desktop ConfigScreen with sidebar filtering and highlighted matches, many new setting controls (including font and plugin management UIs), unit tests for search, and updates to ignore files to exclude two new GUI modules from linters/build outputs.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Ignore/config** <br> `/.eslintignore`, `/.gitignore`|Added ignore entries for two new ConfigScreen GUI files to exclude them from ESLint/build outputs.|\n|**Core ConfigScreen** <br> `packages/app-desktop/gui/ConfigScreen/ConfigScreen.js`, `packages/app-desktop/gui/ConfigScreen/ConfigScreen.tsx`, `packages/app-desktop/gui/ConfigScreen/ConfigScreen.search.test.ts`|New Redux-connected ConfigScreen component; adds search state (`searchQuery`, `searching`), filtering logic for sections and metadata, save/apply/cancel/restart flows, and tests covering search matching and section filtering.|\n|**Sidebar & navigation** <br> `packages/app-desktop/gui/ConfigScreen/Sidebar.js`, `packages/app-desktop/gui/ConfigScreen/Sidebar.tsx`, `packages/app-desktop/gui/ConfigScreen/ButtonBar.js`|New Sidebar with keyboard navigation, optional search input/clear, highlighted labels via HighlightedText; ButtonBar for Back/OK/Apply actions with change tracking.|\n|**Search highlighting** <br> `packages/app-desktop/gui/ConfigScreen/controls/HighlightedText.js`, `packages/app-desktop/gui/ConfigScreen/controls/HighlightedText.tsx`|Added HighlightedText components that perform case-insensitive matching and render highlighted spans for matched query substrings.|\n|**Settings controls** <br> `packages/app-desktop/gui/ConfigScreen/controls/SettingComponent.js`, `.../SettingHeader.js`, `.../SettingLabel.js`, `.../SettingDescription.js`, `.../ToggleAdvancedSettingsButton.js`|New SettingComponent and small control components for rendering enums, booleans, strings (including path pickers and font selector), integers, labels, headers, descriptions and an advanced-settings toggle.|\n|**Font & misc controls** <br> `packages/app-desktop/gui/ConfigScreen/controls/FontSearch.js`, `packages/app-desktop/gui/ConfigScreen/controls/MissingPasswordHelpLink.js`|Added FontSearch with monospace filtering and a macOS-specific MissingPasswordHelpLink gated by platform/date.|\n|**Plugin management** <br> `packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.js`, `.../PluginsStates.js`, `.../SearchPlugins.js`|Plugin management UI: PluginBox card, PluginsStates for installed-plugin management with repo integration and update flows, and SearchPlugins for repo search, async queueing and installs.|\n\n## Sequence Diagram(s)\n\n```mermaid\nsequenceDiagram\n participant User as User\n participant Sidebar as Sidebar (UI)\n participant Config as ConfigScreen\n participant Renderer as SettingsRenderer\n participant Repo as RepoAPI\n participant Plugin as PluginService\n\n User->>Sidebar: Type search query\n Sidebar->>Config: onSearchQueryChange(query)\n Config->>Config: set state.searchQuery / compute filteredSections\n Config->>Renderer: render(filteredSections)\n Renderer->>Renderer: omit non-matching metadata entries\n Sidebar->>Sidebar: highlight matches (HighlightedText)\n alt plugin search\n Sidebar->>Repo: search(query)\n Repo-->>Sidebar: manifests/results\n Sidebar->>Plugin: install/update actions\n Plugin-->>Config: update plugin settings/state\n end\n```\n\n## Possibly related issues\n\n- laurent22/joplin#14763 — Implements settings search and filtering in ConfigScreen and Sidebar, matching the issue objective.\n\n## Possibly related PRs\n\n- laurent22/joplin#14825 — Touches the same ConfigScreen/Sidebar search UI and HighlightedText usage; strong overlap.\n\n## Suggested labels\n\n`desktop`, `search`, `accessibility`, `enhancement`\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 3.23% 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 specifically describes the main change: adding settings search functionality to the Desktop App, directly addressing the related issue `#14763`. |\n| Description check | ✅ Passed | The description is comprehensive and directly related to the changeset, detailing the search functionality implementation, features, files modified, testing approach, and implementation notes. |\n| Pr Description Must Follow Guidelines | ✅ Passed | The PR description includes all three required sections: problem statement, solution explanation, and comprehensive test plan with 22 test cases and build 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\n</details>\n\n</details>\n\n<!-- finishing_touch_checkbox_end -->\n\n<!-- tips_start -->\n\n---\n\nThanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=laurent22/joplin&utm_content=14921)! 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 -->",
|
||
"author_association": "CONTRIBUTOR",
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4141816996/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/4141884506",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14921#issuecomment-4141884506",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14921",
|
||
"id": 4141884506,
|
||
"node_id": "IC_kwDOBLftOs724CRa",
|
||
"user": {
|
||
"login": "ARPIT-NAYAK-LEGEND",
|
||
"id": 86902713,
|
||
"node_id": "MDQ6VXNlcjg2OTAyNzEz",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/86902713?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND",
|
||
"html_url": "https://github.com/ARPIT-NAYAK-LEGEND",
|
||
"followers_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/followers",
|
||
"following_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/orgs",
|
||
"repos_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/repos",
|
||
"events_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/received_events",
|
||
"type": "User",
|
||
"user_view_type": "public",
|
||
"site_admin": false
|
||
},
|
||
"created_at": "2026-03-27T11:16:08Z",
|
||
"updated_at": "2026-03-27T11:16: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/4141884506/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/4143076508",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14921#issuecomment-4143076508",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14921",
|
||
"id": 4143076508,
|
||
"node_id": "IC_kwDOBLftOs728lSc",
|
||
"user": {
|
||
"login": "ARPIT-NAYAK-LEGEND",
|
||
"id": 86902713,
|
||
"node_id": "MDQ6VXNlcjg2OTAyNzEz",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/86902713?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND",
|
||
"html_url": "https://github.com/ARPIT-NAYAK-LEGEND",
|
||
"followers_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/followers",
|
||
"following_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/orgs",
|
||
"repos_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/repos",
|
||
"events_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/received_events",
|
||
"type": "User",
|
||
"user_view_type": "public",
|
||
"site_admin": false
|
||
},
|
||
"created_at": "2026-03-27T14:36:26Z",
|
||
"updated_at": "2026-03-27T14:36:26Z",
|
||
"body": "@laurent22 can you review the changes made and if they are up top the mark according to the specifications.",
|
||
"author_association": "NONE",
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4143076508/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/4178730275",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14921#issuecomment-4178730275",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14921",
|
||
"id": 4178730275,
|
||
"node_id": "IC_kwDOBLftOs75El0j",
|
||
"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-04-02T15:35:06Z",
|
||
"updated_at": "2026-04-02T15:35:06Z",
|
||
"body": "Hello, unfortunately we no longer need this pull request as there's a duplicate here, that we will probably merge instead: https://github.com/laurent22/joplin/pull/14820",
|
||
"author_association": "OWNER",
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4178730275/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/4181742342",
|
||
"html_url": "https://github.com/laurent22/joplin/pull/14921#issuecomment-4181742342",
|
||
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14921",
|
||
"id": 4181742342,
|
||
"node_id": "IC_kwDOBLftOs75QFMG",
|
||
"user": {
|
||
"login": "ARPIT-NAYAK-LEGEND",
|
||
"id": 86902713,
|
||
"node_id": "MDQ6VXNlcjg2OTAyNzEz",
|
||
"avatar_url": "https://avatars.githubusercontent.com/u/86902713?v=4",
|
||
"gravatar_id": "",
|
||
"url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND",
|
||
"html_url": "https://github.com/ARPIT-NAYAK-LEGEND",
|
||
"followers_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/followers",
|
||
"following_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/following{/other_user}",
|
||
"gists_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/gists{/gist_id}",
|
||
"starred_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/starred{/owner}{/repo}",
|
||
"subscriptions_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/subscriptions",
|
||
"organizations_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/orgs",
|
||
"repos_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/repos",
|
||
"events_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/events{/privacy}",
|
||
"received_events_url": "https://api.github.com/users/ARPIT-NAYAK-LEGEND/received_events",
|
||
"type": "User",
|
||
"user_view_type": "public",
|
||
"site_admin": false
|
||
},
|
||
"created_at": "2026-04-03T04:12:17Z",
|
||
"updated_at": "2026-04-03T04:12:17Z",
|
||
"body": "oh OK @laurent22 no issues 👍",
|
||
"author_association": "NONE",
|
||
"reactions": {
|
||
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4181742342/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
|
||
}
|
||
]
|
||
} |