文件
mynode/readme/cla/consent_records/Sandesh13fr_107756643.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

499 行
35 KiB
JSON

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

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

{
"issue": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/14755",
"repository_url": "https://api.github.com/repos/laurent22/joplin",
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14755/labels{/name}",
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14755/comments",
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14755/events",
"html_url": "https://github.com/laurent22/joplin/pull/14755",
"id": 4078756865,
"node_id": "PR_kwDOBLftOs7KvTN0",
"number": 14755,
"title": "Mobile: Fixes #14747: Android new note/to-do autofocus keyboard regression",
"user": {
"login": "Sandesh13fr",
"id": 107756643,
"node_id": "U_kgDOBmw8Yw",
"avatar_url": "https://avatars.githubusercontent.com/u/107756643?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Sandesh13fr",
"html_url": "https://github.com/Sandesh13fr",
"followers_url": "https://api.github.com/users/Sandesh13fr/followers",
"following_url": "https://api.github.com/users/Sandesh13fr/following{/other_user}",
"gists_url": "https://api.github.com/users/Sandesh13fr/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Sandesh13fr/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Sandesh13fr/subscriptions",
"organizations_url": "https://api.github.com/users/Sandesh13fr/orgs",
"repos_url": "https://api.github.com/users/Sandesh13fr/repos",
"events_url": "https://api.github.com/users/Sandesh13fr/events{/privacy}",
"received_events_url": "https://api.github.com/users/Sandesh13fr/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"labels": [
{
"id": 519700741,
"node_id": "MDU6TGFiZWw1MTk3MDA3NDE=",
"url": "https://api.github.com/repos/laurent22/joplin/labels/bug",
"name": "bug",
"color": "cf353b",
"default": true,
"description": "It's a bug"
},
{
"id": 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": 1366672041,
"node_id": "MDU6TGFiZWwxMzY2NjcyMDQx",
"url": "https://api.github.com/repos/laurent22/joplin/labels/android",
"name": "android",
"color": "bfd4f2",
"default": false,
"description": ""
},
{
"id": 1366672371,
"node_id": "MDU6TGFiZWwxMzY2NjcyMzcx",
"url": "https://api.github.com/repos/laurent22/joplin/labels/editor",
"name": "editor",
"color": "91ca55",
"default": false,
"description": ""
}
],
"state": "closed",
"locked": false,
"assignees": [],
"milestone": null,
"comments": 5,
"created_at": "2026-03-15T16:59:59Z",
"updated_at": "2026-03-16T12:09:39Z",
"closed_at": "2026-03-16T12:09:27Z",
"assignee": null,
"author_association": "CONTRIBUTOR",
"active_lock_reason": null,
"draft": false,
"pull_request": {
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14755",
"html_url": "https://github.com/laurent22/joplin/pull/14755",
"diff_url": "https://github.com/laurent22/joplin/pull/14755.diff",
"patch_url": "https://github.com/laurent22/joplin/pull/14755.patch",
"merged_at": null
},
"body": "Mobile: Fixes #14747: Android new note/to-do autofocus keyboard regression\r\n\r\n## Summary\r\nOn Android, when creating a new to-do the title field could receive focus without the software keyboard opening. In some cases typing would then cause the keyboard to dismiss unexpectedly.\r\n\r\n## Root cause\r\nThe mobile Note screen autofocus logic treated \"input is focused\" as a successful autofocus state. \r\nOn Android it is possible for the title input to be focused while the software keyboard is still hidden, which caused the retry loop to stop too early.\r\n\r\n## Fix\r\nUpdate the autofocus logic so that Android title autofocus only completes when:\r\n\r\n- the title input is focused\r\n- the software keyboard is visible\r\n\r\nAdditional changes:\r\n- clear any pending autofocus retry timer when the Note screen unmounts\r\n- add regression test coverage for delayed keyboard visibility during provisional note autofocus\r\n\r\n## Scope\r\nChanges are limited to the mobile Note screen autofocus lifecycle and its related tests.\r\n\r\n## Testing\r\nVerified locally on Android:\r\n- Creating a new to-do opens the keyboard automatically\r\n- Typing in the title no longer causes keyboard dismissal\r\n- Existing notes do not trigger autofocus\r\n\r\n## FInal Output\r\n\r\n\r\nhttps://github.com/user-attachments/assets/dd352b33-ee3a-4e1e-9db2-9f8d923729fb\r\n\r\n\r\n\r\n## Dev Notes\r\nHad multiple & significant while initial setup for mobile , had to refactor & go through different docs & learn how everything functions. It was super duper slow yet had fun , like a lot. I also have a minor yet crucial feature suggestion as well. This is my first PR for Joplin. Let's see how it goes.",
"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/14755/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/14755/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"comments": [
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4063405945",
"html_url": "https://github.com/laurent22/joplin/pull/14755#issuecomment-4063405945",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14755",
"id": 4063405945,
"node_id": "IC_kwDOBLftOs7yMqd5",
"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-15T17:00:13Z",
"updated_at": "2026-03-16T12:09:39Z",
"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/4063405945/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/4063406918",
"html_url": "https://github.com/laurent22/joplin/pull/14755#issuecomment-4063406918",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14755",
"id": 4063406918,
"node_id": "IC_kwDOBLftOs7yMqtG",
"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-15T17:00:46Z",
"updated_at": "2026-03-15T19:51: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\nNote screen autofocus logic was enhanced with Android-aware refocus tracking and keyboard visibility handling; NoteScreen now receives `keyboardVisible` from Redux and includes new autofocus timers/fields. Tests were added (and duplicated) to validate provisional to-do autofocus, refocus suppression after edits, and that existing notes are not auto-focused.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Tests** <br> `packages/app-mobile/components/screens/Note/Note.test.tsx`|Adds mocks for focus/blur handling and `TextInput`, introduces `mockFocus`/`mockBlur` test wrappers and `setNoteProvisional()` helper, and adds a new (duplicated) test verifying provisional to-do autofocus, suppression of refocus after edits, and absence of autofocus for existing notes.|\n|**Note screen logic** <br> `packages/app-mobile/components/screens/Note/Note.tsx`|Adds `keyboardVisible: boolean` prop (via Redux) and widens `noteId` to `string | null`; introduces `titleKeyboardRefocusDone_` and `titleKeyboardRefocusPendingUntil_`, strengthens schedule/unmount cleanup, and implements Android-specific multi-step autofocus and recovery behavior in `scheduleFocusUpdate()`.|\n\n## Sequence Diagram(s)\n\nmermaid\nsequenceDiagram\n participant Note as NoteScreen\n participant Redux as AppState\n participant Keyboard as AndroidKeyboard\n participant Input as TextInput\n Note->>Redux: read `keyboardVisible` and note state\n Note->>Note: scheduleFocusUpdate()\n Note->>Keyboard: check `keyboardVisible`\n alt Keyboard visible\n Note->>Input: focus title\n Input->>Keyboard: show\n Note->>Note: set titleKeyboardRefocusDone_\n else Keyboard not visible (Android)\n Note->>Input: blur\n Note->>Note: set titleKeyboardRefocusPendingUntil_\n Note-->>Input: focus title after delay\n Input->>Keyboard: show\n Note->>Note: set titleKeyboardRefocusDone_\n end\n Note->>Note: ignore subsequent edits if titleKeyboardRefocusDone_\n\n## Possibly related PRs\n\n- laurent22/joplin#14533 — Related changes addressing focus/keyboard behaviour in the Note screen; may overlap with autofocus and title handling adjustments.\n\n## Suggested reviewers\n\n- laurent22\n\n</details>\n\n<!-- walkthrough_end -->\n\n\n<!-- pre_merge_checks_walkthrough_start -->\n\n<details>\n<summary>🚥 Pre-merge checks | ✅ 6</summary>\n\n<details>\n<summary>✅ Passed checks (6 passed)</summary>\n\n| Check name | Status | Explanation |\n| :-----------------------------------: | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Title check | ✅ Passed | The title clearly summarizes the main change: fixing an Android autofocus regression for new notes/to-dos by ensuring keyboard visibility, which aligns with the primary objective. |\n| Linked Issues check | ✅ Passed | The code changes address all primary requirements from `#14747`: Android title autofocus now waits for both focus and keyboard visibility, keyboard dismissal is prevented, and existing notes skip autofocus. |\n| Out of Scope Changes check | ✅ Passed | All changes are scoped to the mobile Note screen autofocus lifecycle: component props, internal state fields, autofocus logic, and related test coverage without introducing unrelated modifications. |\n| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. |\n| Pr Description Must Follow Guidelines | ✅ Passed | The pull request description includes all three required sections: problem description (Android keyboard regression), high-level solution explanation (root cause and fix details), and test plan with verification steps. |\n| Description check | ✅ Passed | The pull request description clearly relates to the changeset, addressing a specific Android autofocus keyboard regression with detailed root cause analysis and the implemented fix. |\n\n</details>\n\n<sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub>\n\n</details>\n\n<!-- pre_merge_checks_walkthrough_end -->\n\n<!-- finishing_touch_checkbox_start -->\n\n<details>\n<summary>✨ Finishing Touches</summary>\n\n<details>\n<summary>🧪 Generate unit tests (beta)</summary>\n\n- [ ] <!-- {\"checkboxId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} --> Create PR with unit tests\n- [ ] <!-- {\"checkboxId\": \"07f1e7d6-8a8e-4e23-9900-8731c2c87f58\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} --> Post copyable unit tests in a comment\n\n</details>\n\n</details>\n\n<!-- finishing_touch_checkbox_end -->\n\n<!-- pr_review_plan_action_start -->\n\n<details>\n<summary>📝 Coding Plan</summary>\n\n- [ ] <!-- {\"checkboxId\": \"6ad8a4e1-0b3a-4ea2-9b5b-d82c1f47d1f2\"} --> Generate coding plan for human review comments\n\n</details>\n\n<!-- pr_review_plan_action_end -->\n\n<!-- tips_start -->\n\n---\n\nThanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=laurent22/joplin&utm_content=14755)! 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/4063406918/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/4063411811",
"html_url": "https://github.com/laurent22/joplin/pull/14755#issuecomment-4063411811",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14755",
"id": 4063411811,
"node_id": "IC_kwDOBLftOs7yMr5j",
"user": {
"login": "Sandesh13fr",
"id": 107756643,
"node_id": "U_kgDOBmw8Yw",
"avatar_url": "https://avatars.githubusercontent.com/u/107756643?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Sandesh13fr",
"html_url": "https://github.com/Sandesh13fr",
"followers_url": "https://api.github.com/users/Sandesh13fr/followers",
"following_url": "https://api.github.com/users/Sandesh13fr/following{/other_user}",
"gists_url": "https://api.github.com/users/Sandesh13fr/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Sandesh13fr/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Sandesh13fr/subscriptions",
"organizations_url": "https://api.github.com/users/Sandesh13fr/orgs",
"repos_url": "https://api.github.com/users/Sandesh13fr/repos",
"events_url": "https://api.github.com/users/Sandesh13fr/events{/privacy}",
"received_events_url": "https://api.github.com/users/Sandesh13fr/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-15T17:03:26Z",
"updated_at": "2026-03-15T17:03:26Z",
"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/4063411811/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/4063577608",
"html_url": "https://github.com/laurent22/joplin/pull/14755#issuecomment-4063577608",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14755",
"id": 4063577608,
"node_id": "IC_kwDOBLftOs7yNUYI",
"user": {
"login": "Sandesh13fr",
"id": 107756643,
"node_id": "U_kgDOBmw8Yw",
"avatar_url": "https://avatars.githubusercontent.com/u/107756643?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Sandesh13fr",
"html_url": "https://github.com/Sandesh13fr",
"followers_url": "https://api.github.com/users/Sandesh13fr/followers",
"following_url": "https://api.github.com/users/Sandesh13fr/following{/other_user}",
"gists_url": "https://api.github.com/users/Sandesh13fr/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Sandesh13fr/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Sandesh13fr/subscriptions",
"organizations_url": "https://api.github.com/users/Sandesh13fr/orgs",
"repos_url": "https://api.github.com/users/Sandesh13fr/repos",
"events_url": "https://api.github.com/users/Sandesh13fr/events{/privacy}",
"received_events_url": "https://api.github.com/users/Sandesh13fr/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-15T18:15:57Z",
"updated_at": "2026-03-15T18:15:57Z",
"body": "Working on fixing the test leak issues.\r\n",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4063577608/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/4067204596",
"html_url": "https://github.com/laurent22/joplin/pull/14755#issuecomment-4067204596",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14755",
"id": 4067204596,
"node_id": "IC_kwDOBLftOs7ybJ30",
"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-16T12:09:27Z",
"updated_at": "2026-03-16T12:09:27Z",
"body": "Hello, this was actually fixed in https://github.com/laurent22/joplin/pull/14533",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4067204596/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
}
]
}