文件
mynode/readme/cla/consent_records/Vinayreddy765_195867846.json
chen 301194963b
一些检查失败了
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
feat: Initial clean release of CHM
2026-11-04 11:29:39 +08:00

400 行
28 KiB
JSON

此文件含有不可见的 Unicode 字符

此文件含有人类无法区分的不可见的 Unicode 字符,但可以由计算机进行不同的处理。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

{
"issue": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/14566",
"repository_url": "https://api.github.com/repos/laurent22/joplin",
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14566/labels{/name}",
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14566/comments",
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14566/events",
"html_url": "https://github.com/laurent22/joplin/pull/14566",
"id": 4023232195,
"node_id": "PR_kwDOBLftOs7H8QAs",
"number": 14566,
"title": "Desktop: Show feedback message when master passwords do not match",
"user": {
"login": "Vinayreddy765",
"id": 195867846,
"node_id": "U_kgDOC6y0xg",
"avatar_url": "https://avatars.githubusercontent.com/u/195867846?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Vinayreddy765",
"html_url": "https://github.com/Vinayreddy765",
"followers_url": "https://api.github.com/users/Vinayreddy765/followers",
"following_url": "https://api.github.com/users/Vinayreddy765/following{/other_user}",
"gists_url": "https://api.github.com/users/Vinayreddy765/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Vinayreddy765/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Vinayreddy765/subscriptions",
"organizations_url": "https://api.github.com/users/Vinayreddy765/orgs",
"repos_url": "https://api.github.com/users/Vinayreddy765/repos",
"events_url": "https://api.github.com/users/Vinayreddy765/events{/privacy}",
"received_events_url": "https://api.github.com/users/Vinayreddy765/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": 1079605111,
"node_id": "MDU6TGFiZWwxMDc5NjA1MTEx",
"url": "https://api.github.com/repos/laurent22/joplin/labels/mobile",
"name": "mobile",
"color": "ffc274",
"default": false,
"description": "All mobile platforms"
},
{
"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"
}
],
"state": "closed",
"locked": false,
"assignees": [],
"milestone": null,
"comments": 3,
"created_at": "2026-03-04T17:36:29Z",
"updated_at": "2026-03-05T09:01:20Z",
"closed_at": "2026-03-05T09:01:03Z",
"assignee": null,
"author_association": "CONTRIBUTOR",
"active_lock_reason": null,
"draft": false,
"pull_request": {
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14566",
"html_url": "https://github.com/laurent22/joplin/pull/14566",
"diff_url": "https://github.com/laurent22/joplin/pull/14566.diff",
"patch_url": "https://github.com/laurent22/joplin/pull/14566.patch",
"merged_at": "2026-03-05T09:01:03Z"
},
"body": "## Description\r\n\r\nThis PR adds a feedback message in the master password dialog when the two entered passwords do not match.\r\n\r\nPreviously, only the invalid icon was displayed when the passwords differed. This change improves user feedback by showing a clear message: \"Passwords do not match\".\r\n\r\n## Changes\r\n\r\n- Added a conditional message below the password fields when the entered passwords do not match.\r\n- The message is shown only when the second password field has input and the passwords differ.\r\n\r\n## Testing\r\n\r\n1. Open **Tools → Options → Encryption → Manage master password**\r\n2. Enter a password in the \"Enter password\" field\r\n3. Enter a different value in the \"Re-enter password\" field\r\n4. Verify that the message **\"Passwords do not match\"** appears below the field\r\n<img width=\"781\" height=\"663\" alt=\"Password-mismatch\" src=\"https://github.com/user-attachments/assets/d03d886f-47a1-4475-933a-fcd749d0e3e1\" />\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/14566/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/14566/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"comments": [
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3999085475",
"html_url": "https://github.com/laurent22/joplin/pull/14566#issuecomment-3999085475",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14566",
"id": 3999085475,
"node_id": "IC_kwDOBLftOs7uXTOj",
"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-04T17:36:40Z",
"updated_at": "2026-03-05T09:01:20Z",
"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/3999085475/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/3999087593",
"html_url": "https://github.com/laurent22/joplin/pull/14566#issuecomment-3999087593",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14566",
"id": 3999087593,
"node_id": "IC_kwDOBLftOs7uXTvp",
"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-04T17:37:04Z",
"updated_at": "2026-03-05T01:20:21Z",
"body": "<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\nNo actionable comments were generated in the recent review. 🎉\n\n<details>\n<summary>ℹ️ Recent review info</summary>\n\n<details>\n<summary>⚙️ Run configuration</summary>\n\n**Configuration used**: Path: .coderabbit.yaml\n\n**Review profile**: CHILL\n\n**Plan**: Pro\n\n**Run ID**: `26421991-b2f6-470f-b4a1-b2c073ccfc3c`\n\n</details>\n\n<details>\n<summary>📥 Commits</summary>\n\nReviewing files that changed from the base of the PR and between 449ef38098a31c4cb0f46d14b3fde83960ed2341 and da2087443bfb83ae8c3501e6e2c883c43a91e6b1.\n\n</details>\n\n<details>\n<summary>📒 Files selected for processing (1)</summary>\n\n* `packages/app-desktop/gui/MasterPasswordDialog/Dialog.tsx`\n\n</details>\n\n<details>\n<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>\n\n* packages/app-desktop/gui/MasterPasswordDialog/Dialog.tsx\n\n</details>\n\n</details>\n\n---\n\n\n<!-- walkthrough_start -->\n\n<details>\n<summary>📝 Walkthrough</summary>\n\n## Walkthrough\n\nThe PR adds inline password validation feedback to the MasterPasswordDialog component. It introduces a local computed boolean to compare the two password inputs and displays an error message when they do not match, with validation state passed to the repeated-password input field.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Password Validation UI** <br> `packages/app-desktop/gui/MasterPasswordDialog/Dialog.tsx`|Adds a local `passwordsMatch` computed boolean within `renderPasswordForm` and renders inline \"Passwords do not match\" error feedback when the repeated password input is non-empty and does not match the first password. Passes validation state to the LabelledPasswordInput component.|\n\n## Possibly related issues\n\n- **Laurent22/Joplin#14545**: The inline password mismatch validation and valid-state feedback directly addresses the missing validation feedback mechanism described in this issue.\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 accurately describes the primary change: adding a feedback message when master passwords do not match in the desktop application. |\n| Description check | ✅ Passed | The description is clearly related to the changeset, providing context, detailed changes, and testing steps for the password mismatch feedback feature. |\n| Pr Description Must Follow Guidelines | ✅ Passed | The pull request description follows Joplin contribution guidelines by including clear sections for problem statement, high-level solution explanation, comprehensive testing steps, and a screenshot demonstrating the feature. |\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<!-- tips_start -->\n\n---\n\nThanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=laurent22/joplin&utm_content=14566)! 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/3999087593/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/3999099707",
"html_url": "https://github.com/laurent22/joplin/pull/14566#issuecomment-3999099707",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14566",
"id": 3999099707,
"node_id": "IC_kwDOBLftOs7uXWs7",
"user": {
"login": "Vinayreddy765",
"id": 195867846,
"node_id": "U_kgDOC6y0xg",
"avatar_url": "https://avatars.githubusercontent.com/u/195867846?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Vinayreddy765",
"html_url": "https://github.com/Vinayreddy765",
"followers_url": "https://api.github.com/users/Vinayreddy765/followers",
"following_url": "https://api.github.com/users/Vinayreddy765/following{/other_user}",
"gists_url": "https://api.github.com/users/Vinayreddy765/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Vinayreddy765/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Vinayreddy765/subscriptions",
"organizations_url": "https://api.github.com/users/Vinayreddy765/orgs",
"repos_url": "https://api.github.com/users/Vinayreddy765/repos",
"events_url": "https://api.github.com/users/Vinayreddy765/events{/privacy}",
"received_events_url": "https://api.github.com/users/Vinayreddy765/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-04T17:39:22Z",
"updated_at": "2026-03-04T17:39:22Z",
"body": "I have read the CLA Document and I hereby sign the CLA",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3999099707/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
}
]
}