{
"issue": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/14965",
"repository_url": "https://api.github.com/repos/laurent22/joplin",
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14965/labels{/name}",
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14965/comments",
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14965/events",
"html_url": "https://github.com/laurent22/joplin/pull/14965",
"id": 4175546560,
"node_id": "PR_kwDOBLftOs7O0ddp",
"number": 14965,
"title": "Fix issue 14763: add settings search",
"user": {
"login": "AbdulRaafaay",
"id": 170205197,
"node_id": "U_kgDOCiUgDQ",
"avatar_url": "https://avatars.githubusercontent.com/u/170205197?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/AbdulRaafaay",
"html_url": "https://github.com/AbdulRaafaay",
"followers_url": "https://api.github.com/users/AbdulRaafaay/followers",
"following_url": "https://api.github.com/users/AbdulRaafaay/following{/other_user}",
"gists_url": "https://api.github.com/users/AbdulRaafaay/gists{/gist_id}",
"starred_url": "https://api.github.com/users/AbdulRaafaay/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/AbdulRaafaay/subscriptions",
"organizations_url": "https://api.github.com/users/AbdulRaafaay/orgs",
"repos_url": "https://api.github.com/users/AbdulRaafaay/repos",
"events_url": "https://api.github.com/users/AbdulRaafaay/events{/privacy}",
"received_events_url": "https://api.github.com/users/AbdulRaafaay/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": ""
}
],
"state": "closed",
"locked": false,
"assignees": [],
"milestone": null,
"comments": 4,
"created_at": "2026-03-31T03:56:39Z",
"updated_at": "2026-03-31T10:13:54Z",
"closed_at": "2026-03-31T10:13:42Z",
"assignee": null,
"author_association": "NONE",
"active_lock_reason": null,
"draft": false,
"pull_request": {
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14965",
"html_url": "https://github.com/laurent22/joplin/pull/14965",
"diff_url": "https://github.com/laurent22/joplin/pull/14965.diff",
"patch_url": "https://github.com/laurent22/joplin/pull/14965.patch",
"merged_at": null
},
"body": "Desktop: Fixes #14763: Add settings search\r\n\r\nProblem\r\nThe settings screen in the desktop application lacked a search functionality, making it difficult for users to find specific settings, especially as the number of options grows. This required users to manually scroll through all the sections to find what they were looking for.\r\n\r\nSolution\r\nThis pull request introduces a search bar on the configuration screen to allow users to quickly filter and find settings.\r\n\r\nThe implementation includes:\r\n\r\n- A new search input field added to the ConfigScreen component.\r\n- A filtering function that filters settings based on the user's search query. The search is case-insensitive and matches against the setting's label, description, and key.\r\n- Sections that have no matching settings are hidden from view.\r\n\r\nThis change improves the user experience by making the settings screen more accessible and efficient to use.\r\n\r\n\r\nTest Plan\r\nAutomated unit tests have been added in to cover the filtering logic. These tests verify:\r\n\r\n- Correct filtering by label, description, and key.\r\n- Case-insensitive search.\r\n- Handling of empty queries and no-match scenarios.\r\n- Correct behavior with multiple matching settings across different sections.\r\n\r\n\r\nManual Testing:\r\n\r\n- Open the settings screen.\r\n- Use the new search bar to search for a setting by its name (e.g., \"theme\"). Verify that only relevant settings are displayed.\r\n- Search for a setting by its description (e.g., \"application theme\"). Verify the correct setting is shown.\r\n- Search using a partial keyword (e.g., \"font\"). Verify all settings related to fonts are displayed.\r\n- Clear the search bar and verify that all settings are visible again.\r\n- Enter a search query that has no matches (e.g., \"nonexistent-setting\"). Verify that a \"no results\" message is displayed.",
"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/14965/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/14965/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"comments": [
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4159696641",
"html_url": "https://github.com/laurent22/joplin/pull/14965#issuecomment-4159696641",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14965",
"id": 4159696641,
"node_id": "IC_kwDOBLftOs737-8B",
"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-31T03:56:51Z",
"updated_at": "2026-03-31T10:13:54Z",
"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/4159696641/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/4159697909",
"html_url": "https://github.com/laurent22/joplin/pull/14965#issuecomment-4159697909",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14965",
"id": 4159697909,
"node_id": "IC_kwDOBLftOs737_P1",
"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-31T03:57:12Z",
"updated_at": "2026-03-31T05:11:38Z",
"body": "\nNo actionable comments were generated in the recent review. 🎉\n\n\nℹ️ Recent review info
\n\n\n⚙️ Run configuration
\n\n**Configuration used**: Path: .coderabbit.yaml\n\n**Review profile**: CHILL\n\n**Plan**: Pro\n\n**Run ID**: `19736ccc-7b68-4345-85ef-be3e99f9c55c`\n\n \n\n\n📥 Commits
\n\nReviewing files that changed from the base of the PR and between 4f2fa0c1b536256211b8b6cb3031719f7f36bb91 and 815fa5459587524cf7b26afe8a016ceaf3623f8f.\n\n \n\n\n📒 Files selected for processing (2)
\n\n* `packages/app-desktop/gui/ConfigScreen/ConfigScreen.tsx`\n* `packages/app-mobile/pluginAssets/index.web.js`\n\n \n\n\n✅ Files skipped from review due to trivial changes (1)
\n\n* packages/app-mobile/pluginAssets/index.web.js\n\n \n\n\n🚧 Files skipped from review as they are similar to previous changes (1)
\n\n* packages/app-desktop/gui/ConfigScreen/ConfigScreen.tsx\n\n \n\n \n\n---\n\n\n\n\n\n📝 Walkthrough
\n\n## Walkthrough\n\nAdded search functionality to the desktop ConfigScreen component. A search input was introduced in the Sidebar, which filters settings by label, description, and key in real time. Results are displayed in a dedicated panel replacing the normal section-based view when searching is active.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Search Functionality Implementation**
`packages/app-desktop/gui/ConfigScreen/ConfigScreen.tsx`, `packages/app-desktop/gui/ConfigScreen/Sidebar.tsx`, `packages/app-desktop/gui/ConfigScreen/utils/filterSettingsBySearchQuery.ts`|Integrated search feature: ConfigScreen manages search query state and renders filtered results via `filterSettingsBySearchQuery` utility; Sidebar provides search input UI with callback to update parent state. Search results displayed in dedicated panel replacing normal per-section view when active.|\n|**Search Tests**
`packages/app-desktop/gui/ConfigScreen/utils/filterSettingsBySearchQuery.test.ts`|Comprehensive test suite validating filter logic: empty/whitespace queries, case-insensitive matching in label/description/key, cross-section aggregation, screen-section exclusion, and empty result handling.|\n|**Ignore Configuration**
`.eslintignore`, `.gitignore`|Added entries to exclude new filter utility and test file from ESLint and git tracking.|\n|**Mobile Plugin Assets**
`packages/app-mobile/pluginAssets/abc/abc_render.js.base64.js`, `packages/app-mobile/pluginAssets/index.js`, `packages/app-mobile/pluginAssets/index.web.js`|Updated embedded ABC notation renderer template with SVG viewBox attribute logic; updated asset hashes and reordered file entries in asset manifests.|\n|**Build Configuration**
`packages/lib/tsconfig.json`|Minor formatting adjustment to `exclude` array closing bracket.|\n\n## Sequence Diagram(s)\n\n```mermaid\nsequenceDiagram\n actor User\n participant Sidebar\n participant ConfigScreen\n participant FilterUtil\n participant UI as Rendered Results\n\n User->>Sidebar: Types in search input\n Sidebar->>ConfigScreen: onSearchQueryChange(query)\n ConfigScreen->>ConfigScreen: Update searchQuery state\n ConfigScreen->>FilterUtil: filterSettingsBySearchQuery(sections, query, device)\n FilterUtil->>FilterUtil: Filter by label/description/key (case-insensitive)\n FilterUtil-->>ConfigScreen: Filtered sections array\n ConfigScreen->>UI: Render search results panel with matches\n UI-->>User: Display filtered settings or \"No results\" message\n```\n\n \n\n\n\n\n\n\n---\n\n\n> [!IMPORTANT]\n> ## Pre-merge checks failed\n> \n> Please resolve all errors before merging. Addressing warnings is optional.\n\n\n### ❌ Failed checks (1 error, 3 warnings)\n\n| Check name | Status | Explanation | Resolution |\n| :-----------------------------------: | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Pr Description Must Follow Guidelines | ❌ Error | The pull request description does not include clearly demarcated sections for Problem/User-Impact, High-level Solution, and Test Plan as required by the guidelines. | Restructure the PR description with three explicitly labelled sections: Problem Statement, Solution, and Testing. Ensure each section is clearly separated with a heading. |\n| Linked Issues check | ⚠️ Warning | The PR implements core search functionality but diverges from issue `#14763`: it hides non-matching sections rather than greying them out, lacks match highlighting, and does not explicitly cover section title searching or plugin settings. | Implement section visibility with greyed-out non-matching sections, add search term highlighting in matches, ensure section titles are searched, and verify plugin settings inclusion. |\n| Out of Scope Changes check | ⚠️ Warning | Changes to `.eslintignore`, `.gitignore`, and `tsconfig.json` are ancillary housekeeping; changes to mobile plugin assets and index files appear unrelated to desktop settings search. | Clarify rationale for mobile plugin asset and index changes; consider removing unrelated housekeeping changes or documenting their necessity. |\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\n✅ Passed checks (2 passed)
\n\n| Check name | Status | Explanation |\n| :---------------: | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Title check | ✅ Passed | The title accurately summarises the main change: adding a settings search feature to address issue 14763. |\n| Description check | ✅ Passed | The description is directly related to the changeset, explaining the problem, solution, implementation details, and test plan for the settings search feature. |\n\n \n\n\n\n\n\n\n✨ Finishing Touches
\n\n\n🧪 Generate unit tests (beta)
\n\n- [ ] Create PR with unit tests\n\n \n\n \n\n\n\n\n\n---\n\nThanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=laurent22/joplin&utm_content=14965)! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.\n\n\n❤️ Share
\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 \n\nComment `@coderabbitai help` to get the list of available commands and usage tips.\n\n\n\n\n\n\n\n\n",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4159697909/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/4159906902",
"html_url": "https://github.com/laurent22/joplin/pull/14965#issuecomment-4159906902",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14965",
"id": 4159906902,
"node_id": "IC_kwDOBLftOs738yRW",
"user": {
"login": "AbdulRaafaay",
"id": 170205197,
"node_id": "U_kgDOCiUgDQ",
"avatar_url": "https://avatars.githubusercontent.com/u/170205197?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/AbdulRaafaay",
"html_url": "https://github.com/AbdulRaafaay",
"followers_url": "https://api.github.com/users/AbdulRaafaay/followers",
"following_url": "https://api.github.com/users/AbdulRaafaay/following{/other_user}",
"gists_url": "https://api.github.com/users/AbdulRaafaay/gists{/gist_id}",
"starred_url": "https://api.github.com/users/AbdulRaafaay/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/AbdulRaafaay/subscriptions",
"organizations_url": "https://api.github.com/users/AbdulRaafaay/orgs",
"repos_url": "https://api.github.com/users/AbdulRaafaay/repos",
"events_url": "https://api.github.com/users/AbdulRaafaay/events{/privacy}",
"received_events_url": "https://api.github.com/users/AbdulRaafaay/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-31T05:04:19Z",
"updated_at": "2026-03-31T05:04:19Z",
"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/4159906902/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/4161498293",
"html_url": "https://github.com/laurent22/joplin/pull/14965#issuecomment-4161498293",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14965",
"id": 4161498293,
"node_id": "IC_kwDOBLftOs74C2y1",
"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-03-31T10:13:42Z",
"updated_at": "2026-03-31T10:13:42Z",
"body": "I'm sorry but as there are already many PR about we won't be taking more",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4161498293/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
}
]
}