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

481 行
40 KiB
JSON

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

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

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

{
"issue": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/14595",
"repository_url": "https://api.github.com/repos/laurent22/joplin",
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14595/labels{/name}",
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14595/comments",
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14595/events",
"html_url": "https://github.com/laurent22/joplin/pull/14595",
"id": 4032281293,
"node_id": "PR_kwDOBLftOs7IZvta",
"number": 14595,
"title": "Desktop: Fixes #14396: Prevent stray ** markers when pasting from Google Docs",
"user": {
"login": "ashokkmt",
"id": 72979218,
"node_id": "MDQ6VXNlcjcyOTc5MjE4",
"avatar_url": "https://avatars.githubusercontent.com/u/72979218?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/ashokkmt",
"html_url": "https://github.com/ashokkmt",
"followers_url": "https://api.github.com/users/ashokkmt/followers",
"following_url": "https://api.github.com/users/ashokkmt/following{/other_user}",
"gists_url": "https://api.github.com/users/ashokkmt/gists{/gist_id}",
"starred_url": "https://api.github.com/users/ashokkmt/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/ashokkmt/subscriptions",
"organizations_url": "https://api.github.com/users/ashokkmt/orgs",
"repos_url": "https://api.github.com/users/ashokkmt/repos",
"events_url": "https://api.github.com/users/ashokkmt/events{/privacy}",
"received_events_url": "https://api.github.com/users/ashokkmt/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"labels": [
{
"id": 1366672371,
"node_id": "MDU6TGFiZWwxMzY2NjcyMzcx",
"url": "https://api.github.com/repos/laurent22/joplin/labels/editor",
"name": "editor",
"color": "91ca55",
"default": false,
"description": ""
},
{
"id": 5991245949,
"node_id": "LA_kwDOBLftOs8AAAABZRsofQ",
"url": "https://api.github.com/repos/laurent22/joplin/labels/markdown-editor",
"name": "markdown-editor",
"color": "91ca55",
"default": false,
"description": "About the Markdown editor"
}
],
"state": "closed",
"locked": false,
"assignees": [],
"milestone": null,
"comments": 5,
"created_at": "2026-03-06T05:18:42Z",
"updated_at": "2026-03-07T16:11:02Z",
"closed_at": "2026-03-07T16:10:54Z",
"assignee": null,
"author_association": "NONE",
"active_lock_reason": null,
"draft": false,
"pull_request": {
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14595",
"html_url": "https://github.com/laurent22/joplin/pull/14595",
"diff_url": "https://github.com/laurent22/joplin/pull/14595.diff",
"patch_url": "https://github.com/laurent22/joplin/pull/14595.patch",
"merged_at": null
},
"body": "## AI Assistance Disclosure\r\nParts of this pull request were drafted with the help of an AI assistant, including structuring the explanation and writing test cases based on the implemented changes. All code and tests have been reviewed and verified manually.\r\n\r\n---\r\n\r\n## Problem\r\n\r\nWhen content copied from **Google Docs** is pasted into Joplin’s **Rich Text editor**, stray `**` lines appear in the pasted content even when the copied text does not contain bold formatting.\r\n\r\nGoogle Docs wraps copied content inside a wrapper element like:\r\n\r\n<b style=\"font-weight: normal\">\r\n\r\nDuring the paste pipeline, this HTML is converted to Markdown using **Turndown**. Because the wrapper uses a `<b>` tag, Turndown interprets it as bold formatting and generates Markdown bold markers (`**`). Since this wrapper does not represent real bold text, these markers appear as literal `**` lines in the resulting note.\r\n\r\nAs a result:\r\n- Extra `**` lines appear in the Rich Text editor and Markdown view\r\n- Paragraph spacing may change\r\n- The pasted content does not match the original formatting from Google Docs\r\n\r\nThis behaviour can be reproduced by copying plain text paragraphs from Google Docs and pasting them into the Rich Text editor.\r\n\r\nFixes #14396.\r\n\r\n---\r\n\r\n## Solution\r\n\r\nThis pull request adds a **Turndown rule** to ignore fake bold wrappers generated by Google Docs.\r\n\r\nThe rule detects `<b>` or `<strong>` elements that explicitly specify:\r\n\r\nfont-weight: normal \r\nfont-weight: 400\r\n\r\nThese values indicate that the element is **not actually bold**, but only used as a wrapper by Google Docs. The rule unwraps these elements during HTML → Markdown conversion, preventing Turndown from generating Markdown bold markers (`**`).\r\n\r\nAfter this change:\r\n\r\n- Google Docs wrapper elements no longer produce stray `**`\r\n- The pasted content structure remains intact\r\n- Paragraphs and headings are preserved correctly\r\n\r\n---\r\n\r\n## Screenshots\r\n\r\n### Before\r\n- Content copied from Google Docs\r\n- Stray `**` lines appearing in the Rich Text editor or Markdown view after pasting\r\n\r\n<img width=\"883\" height=\"613\" alt=\"docs\" src=\"https://github.com/user-attachments/assets/e3885b5f-1672-4641-a653-1dbde62340c9\" />\r\n<img width=\"726\" height=\"562\" alt=\"bug\" src=\"https://github.com/user-attachments/assets/5cf0e1f6-c853-4f6a-b9fa-33706a30daf5\" />\r\n\r\n### After\r\n- The same content pasted from Google Docs\r\n- No stray `**` markers\r\n- Paragraphs and headings preserved correctly\r\n\r\n<img width=\"989\" height=\"459\" alt=\"solved\" src=\"https://github.com/user-attachments/assets/dc9f2d45-a920-4457-9a76-1e0f71723285\" />\r\n\r\n---\r\n\r\n## Testing\r\n\r\nAdded unit tests to ensure the paste pipeline correctly handles Google Docs wrapper elements.\r\n\r\nThe tests simulate HTML content copied from Google Docs and verify that:\r\n\r\n- No `**` markers are generated during conversion\r\n- Paragraphs remain intact\r\n- Headings remain intact\r\n- Mixed content (paragraphs and headings) inside the wrapper is processed correctly\r\n\r\nTests were added in:\r\n\r\npackages/app-desktop/gui/NoteEditor/utils/resourceHandling.test.ts\r\n\r\nAll tests pass locally.\r\n<img width=\"1192\" height=\"299\" alt=\"testSuccess\" src=\"https://github.com/user-attachments/assets/7b8556f0-7f94-41ff-a223-607e67ee4ea2\" />\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/14595/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/14595/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"comments": [
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4009640835",
"html_url": "https://github.com/laurent22/joplin/pull/14595#issuecomment-4009640835",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14595",
"id": 4009640835,
"node_id": "IC_kwDOBLftOs7u_kOD",
"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-06T05:18:54Z",
"updated_at": "2026-03-07T16:11:02Z",
"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/4009640835/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/4009650487",
"html_url": "https://github.com/laurent22/joplin/pull/14595#issuecomment-4009650487",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14595",
"id": 4009650487,
"node_id": "IC_kwDOBLftOs7u_mk3",
"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-06T05:21:10Z",
"updated_at": "2026-03-06T08:14:31Z",
"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**: `6bbc9703-daab-40c4-8322-91dda6b0abd3`\n\n</details>\n\n<details>\n<summary>📥 Commits</summary>\n\nReviewing files that changed from the base of the PR and between 9be2bbe462834e507a5671e6ab3afc37c3b4d583 and d532c87509840e75189984acdc626ee66e7fd9b0.\n\n</details>\n\n<details>\n<summary>📒 Files selected for processing (1)</summary>\n\n* `packages/app-desktop/gui/NoteEditor/utils/resourceHandling.test.ts`\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/NoteEditor/utils/resourceHandling.test.ts\n\n</details>\n\n</details>\n\n---\n\n\n<!-- walkthrough_start -->\n\n<details>\n<summary>📝 Walkthrough</summary>\n\n## Walkthrough\n\nAdds a Turndown rule to ignore Google Docs fake-bold wrappers during HTML→Markdown conversion and adds a test ensuring Google Docs mixed content with line breaks is processed without producing stray Markdown bold artifacts or literal `<br` text.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Test Coverage** <br> `packages/app-desktop/gui/NoteEditor/utils/resourceHandling.test.ts`|Adds a test \"should process Google Docs mixed content with line breaks without producing artifacts\" that feeds Google Docs–style HTML into `processPastedHtml` and asserts no `**`, heading preserved, text intact, and no literal `<br` artifacts.|\n|**HTML-to-Markdown Conversion** <br> `packages/lib/HtmlToMd.ts`|Adds an `ignoreGoogleDocsWrapper` Turndown rule that skips bold/strong nodes with `font-weight: 400` (Google Docs fake-bold wrappers), emitting their contents unchanged and adjusting the Turndown parse pipeline accordingly.|\n\n## Possibly related PRs\n\n- laurent22/joplin#14556: Adds a Turndown rule and changes HtmlToMd parsing/options addressing similar Google Docs conversion issues.\n\n## Suggested labels\n\n`editor`, `markdown-editor`\n\n## Suggested reviewers\n\n- personalizedrefrigerator\n\n</details>\n\n<!-- walkthrough_end -->\n\n\n<!-- pre_merge_checks_walkthrough_start -->\n\n---\n\n<!-- pre_merge_checks_override_start -->\n> [!IMPORTANT]\n> ## Pre-merge checks failed\n> \n> Please resolve all errors before merging. Addressing warnings is optional.\n<!-- pre_merge_checks_override_end -->\n\n### ❌ Failed checks (2 inconclusive)\n\n| Check name | Status | Explanation | Resolution |\n| :-----------------------------------: | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Linked Issues check | ❓ Inconclusive | The PR addresses the primary objective from `#14396` (preventing stray ** markers), but reviewer feedback indicates the linked issue also mentions <br/> and paragraph break problems that appear unresolved. | Verify that the solution also handles Google Docs <br class=\"kix-line-break\"> elements and paragraph spacing, as mentioned in `#14396` and requested by the reviewer. |\n| Pr Description Must Follow Guidelines | ❓ Inconclusive | Unable to assess PR description format without access to the actual pull request details, repository structure, or contributing guidelines. | Provide the actual PR description, the contributing guidelines document, and repository structure to complete the verification. |\n\n<details>\n<summary>✅ Passed checks (4 passed)</summary>\n\n| Check name | Status | Explanation |\n| :------------------------: | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Title check | ✅ Passed | The title accurately describes the main change: preventing stray ** markers when pasting from Google Docs, which directly aligns with the primary fix in the PR. |\n| Description check | ✅ Passed | The description comprehensively explains the problem, solution, screenshots, and testing approach, all directly related to fixing the Google Docs paste issue. |\n| Out of Scope Changes check | ✅ Passed | All changes are directly scoped to fixing the Google Docs paste issue: the Turndown rule targets fake bold wrappers and tests verify the fix, with no unrelated modifications present. |\n| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. |\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=14595)! 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/4009650487/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/4009666008",
"html_url": "https://github.com/laurent22/joplin/pull/14595#issuecomment-4009666008",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14595",
"id": 4009666008,
"node_id": "IC_kwDOBLftOs7u_qXY",
"user": {
"login": "ashokkmt",
"id": 72979218,
"node_id": "MDQ6VXNlcjcyOTc5MjE4",
"avatar_url": "https://avatars.githubusercontent.com/u/72979218?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/ashokkmt",
"html_url": "https://github.com/ashokkmt",
"followers_url": "https://api.github.com/users/ashokkmt/followers",
"following_url": "https://api.github.com/users/ashokkmt/following{/other_user}",
"gists_url": "https://api.github.com/users/ashokkmt/gists{/gist_id}",
"starred_url": "https://api.github.com/users/ashokkmt/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/ashokkmt/subscriptions",
"organizations_url": "https://api.github.com/users/ashokkmt/orgs",
"repos_url": "https://api.github.com/users/ashokkmt/repos",
"events_url": "https://api.github.com/users/ashokkmt/events{/privacy}",
"received_events_url": "https://api.github.com/users/ashokkmt/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-06T05:25:16Z",
"updated_at": "2026-03-06T05:25:16Z",
"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/4009666008/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/4009861136",
"html_url": "https://github.com/laurent22/joplin/pull/14595#issuecomment-4009861136",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14595",
"id": 4009861136,
"node_id": "IC_kwDOBLftOs7vAaAQ",
"user": {
"login": "varunkumar-22",
"id": 219557905,
"node_id": "U_kgDODRYwEQ",
"avatar_url": "https://avatars.githubusercontent.com/u/219557905?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/varunkumar-22",
"html_url": "https://github.com/varunkumar-22",
"followers_url": "https://api.github.com/users/varunkumar-22/followers",
"following_url": "https://api.github.com/users/varunkumar-22/following{/other_user}",
"gists_url": "https://api.github.com/users/varunkumar-22/gists{/gist_id}",
"starred_url": "https://api.github.com/users/varunkumar-22/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/varunkumar-22/subscriptions",
"organizations_url": "https://api.github.com/users/varunkumar-22/orgs",
"repos_url": "https://api.github.com/users/varunkumar-22/repos",
"events_url": "https://api.github.com/users/varunkumar-22/events{/privacy}",
"received_events_url": "https://api.github.com/users/varunkumar-22/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-06T06:24:56Z",
"updated_at": "2026-03-06T06:28:48Z",
"body": "Hey its looking good fix for the ** issue! but one thing is the original issue also mentions `<br/>` showing up as literal text and paragraph breaks getting messed up\r\n\r\ngoogle docs pastes tend to have `<br class=\"kix-line-break\">` inside paragraphs and bare `<br>` tags between them for extra spacing, which can end up as lines with just trailing spaces in the markdown\r\n\r\ncould you check if those are handled correctly too, maybe with a test case that covers that?",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4009861136/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/4016813206",
"html_url": "https://github.com/laurent22/joplin/pull/14595#issuecomment-4016813206",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14595",
"id": 4016813206,
"node_id": "IC_kwDOBLftOs7va7SW",
"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-07T16:10:54Z",
"updated_at": "2026-03-07T16:10:54Z",
"body": "Hello we merge a related PR today",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4016813206/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
}
]
}