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

436 行
32 KiB
JSON

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

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

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

{
"issue": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/14952",
"repository_url": "https://api.github.com/repos/laurent22/joplin",
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/14952/labels{/name}",
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/14952/comments",
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/14952/events",
"html_url": "https://github.com/laurent22/joplin/pull/14952",
"id": 4165791215,
"node_id": "PR_kwDOBLftOs7ObOIe",
"number": 14952,
"title": "Fix disabled desktop button interaction styles issue #14934",
"user": {
"login": "Mahaprasadnanda",
"id": 140647643,
"node_id": "U_kgDOCGIc2w",
"avatar_url": "https://avatars.githubusercontent.com/u/140647643?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Mahaprasadnanda",
"html_url": "https://github.com/Mahaprasadnanda",
"followers_url": "https://api.github.com/users/Mahaprasadnanda/followers",
"following_url": "https://api.github.com/users/Mahaprasadnanda/following{/other_user}",
"gists_url": "https://api.github.com/users/Mahaprasadnanda/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Mahaprasadnanda/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Mahaprasadnanda/subscriptions",
"organizations_url": "https://api.github.com/users/Mahaprasadnanda/orgs",
"repos_url": "https://api.github.com/users/Mahaprasadnanda/repos",
"events_url": "https://api.github.com/users/Mahaprasadnanda/events{/privacy}",
"received_events_url": "https://api.github.com/users/Mahaprasadnanda/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": 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": 4,
"created_at": "2026-03-29T21:00:52Z",
"updated_at": "2026-03-31T15:49:09Z",
"closed_at": "2026-03-31T14:55:47Z",
"assignee": null,
"author_association": "NONE",
"active_lock_reason": null,
"draft": false,
"pull_request": {
"url": "https://api.github.com/repos/laurent22/joplin/pulls/14952",
"html_url": "https://github.com/laurent22/joplin/pull/14952",
"diff_url": "https://github.com/laurent22/joplin/pull/14952.diff",
"patch_url": "https://github.com/laurent22/joplin/pull/14952.patch",
"merged_at": null
},
"body": "## Problem\r\n\r\nDisabled desktop buttons were still picking up hover and active styling in some variants, while primary and secondary buttons were not applying their interactive feedback consistently. This made button behaviour feel uneven across the desktop UI and caused disabled buttons to still look interactive in places like settings and sidebar-related actions.\r\n\r\nFrom a user perspective, this is confusing because disabled controls should appear non-interactive, and enabled controls should respond consistently to hover and click states.\r\n\r\n## Solution\r\n\r\nThis change updates the shared desktop button styles so interactive states are only applied when a button is enabled.\r\n\r\nAt a high level:\r\n- primary and secondary button variants now use explicit enabled-only hover and active selectors\r\n- tertiary and sidebar-secondary variants no longer apply hover or active styles when disabled\r\n- a focused regression test was added around the shared button component styling so this behaviour stays consistent across variants\r\n\r\nThis is a low-risk change because it is scoped to the desktop shared button component and only affects how interaction states are styled.\r\n\r\n## Test Plan\r\n\r\nVerified with:\r\n- `yarn workspace @joplin/app-desktop tsc --noEmit`\r\n\r\nAdded a regression test in:\r\n- `packages/app-desktop/gui/Button/Button.test.tsx`\r\n\r\nManual review of the updated shared button styling confirms that:\r\n- hover and active styles are gated behind enabled state\r\n- disabled buttons no longer receive interactive styling\r\n- button variants now behave consistently\r\n\r\nNote:\r\n- A focused Jest run was attempted for the new test, but the desktop test bootstrap currently fails before the test executes because of an existing module-resolution issue in `jest.setup.js` (`Cannot find module '@joplin/utils/Logger'`).\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/14952/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/14952/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"comments": [
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4151081956",
"html_url": "https://github.com/laurent22/joplin/pull/14952#issuecomment-4151081956",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14952",
"id": 4151081956,
"node_id": "IC_kwDOBLftOs73bHvk",
"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-29T21:01:05Z",
"updated_at": "2026-03-31T15:49:09Z",
"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/4151081956/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/4151082320",
"html_url": "https://github.com/laurent22/joplin/pull/14952#issuecomment-4151082320",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14952",
"id": 4151082320,
"node_id": "IC_kwDOBLftOs73bH1Q",
"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-29T21:01:17Z",
"updated_at": "2026-03-29T21:31:17Z",
"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**: `e4b728c8-cc1c-40de-9499-94cb089ea6a6`\n\n</details>\n\n<details>\n<summary>📥 Commits</summary>\n\nReviewing files that changed from the base of the PR and between 8737c7fbe20c3d89a7d6eeb99648559d967dc32c and d335f2b9047edbe6de81068e707f4a63b2b59000.\n\n</details>\n\n<details>\n<summary>📒 Files selected for processing (2)</summary>\n\n* `.eslintignore`\n* `.gitignore`\n\n</details>\n\n<details>\n<summary>✅ Files skipped from review due to trivial changes (2)</summary>\n\n* .eslintignore\n* .gitignore\n\n</details>\n\n</details>\n\n---\n\n\n<!-- walkthrough_start -->\n\n<details>\n<summary>📝 Walkthrough</summary>\n\n## Walkthrough\n\nRefactors Button styling to centralise hover/active logic via a shared helper and CSS custom properties, adds a Jest test to validate generated styled-components CSS, and updates ignore files to exclude the generated test artefact.\n\n## Changes\n\n|Cohort / File(s)|Summary|\n|---|---|\n|**Button Component Styling** <br> `packages/app-desktop/gui/Button/Button.tsx`|Added a shared `interactiveStates` (styled-components `css`) and replaced direct `&:hover`/`&:active`/disabled blocks with `&:enabled:hover` and `&:enabled:active`. Moved theme hover/active colours into CSS custom properties (`--button-hover-background-color`, `--button-active-background-color`).|\n|**Button Styling Tests** <br> `packages/app-desktop/gui/Button/Button.test.tsx`|New Jest test rendering multiple `Button` variants inside `ThemeProvider`, capturing server-side styles and asserting exactly four `:enabled:hover` and four `:enabled:active` occurrences and absence of `true{`/`false{` substrings.|\n|**Ignore patterns** <br> `.eslintignore`, `.gitignore`|Added `packages/app-desktop/gui/Button/Button.test.js` to `.eslintignore` and `.gitignore` to exclude the generated test artefact from linting and VCS ignore listings.|\n\n## Sequence Diagram(s)\n\n(omitted)\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 | ✅ 4</summary>\n\n<details>\n<summary>✅ Passed checks (4 passed)</summary>\n\n| Check name | Status | Explanation |\n| :-----------------------------------: | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Title check | ✅ Passed | The title clearly and specifically refers to the main change: fixing disabled button interaction styles for the desktop UI, directly matching the changeset's core objective. |\n| Description check | ✅ Passed | The description is comprehensively related to the changeset, detailing the problem, solution, and test plan that align with the code changes across all modified files. |\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: a clear problem statement describing user-impact, a high-level solution explanation, and a comprehensive test plan with verification steps. |\n\n</details>\n\n<sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub>\n\n</details>\n\n<!-- pre_merge_checks_walkthrough_end -->\n\n<!-- finishing_touch_checkbox_start -->\n\n<details>\n<summary>✨ Finishing Touches</summary>\n\n<details>\n<summary>🧪 Generate unit tests (beta)</summary>\n\n- [ ] <!-- {\"checkboxId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} --> Create PR with unit tests\n\n</details>\n\n</details>\n\n<!-- finishing_touch_checkbox_end -->\n\n<!-- tips_start -->\n\n---\n\nThanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=laurent22/joplin&utm_content=14952)! 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/4151082320/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/4151102130",
"html_url": "https://github.com/laurent22/joplin/pull/14952#issuecomment-4151102130",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14952",
"id": 4151102130,
"node_id": "IC_kwDOBLftOs73bMqy",
"user": {
"login": "Mahaprasadnanda",
"id": 140647643,
"node_id": "U_kgDOCGIc2w",
"avatar_url": "https://avatars.githubusercontent.com/u/140647643?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Mahaprasadnanda",
"html_url": "https://github.com/Mahaprasadnanda",
"followers_url": "https://api.github.com/users/Mahaprasadnanda/followers",
"following_url": "https://api.github.com/users/Mahaprasadnanda/following{/other_user}",
"gists_url": "https://api.github.com/users/Mahaprasadnanda/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Mahaprasadnanda/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Mahaprasadnanda/subscriptions",
"organizations_url": "https://api.github.com/users/Mahaprasadnanda/orgs",
"repos_url": "https://api.github.com/users/Mahaprasadnanda/repos",
"events_url": "https://api.github.com/users/Mahaprasadnanda/events{/privacy}",
"received_events_url": "https://api.github.com/users/Mahaprasadnanda/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-03-29T21:12:45Z",
"updated_at": "2026-03-29T21:12:45Z",
"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/4151102130/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/4163275098",
"html_url": "https://github.com/laurent22/joplin/pull/14952#issuecomment-4163275098",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/14952",
"id": 4163275098,
"node_id": "IC_kwDOBLftOs74Jola",
"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-31T14:55:47Z",
"updated_at": "2026-03-31T14:55:47Z",
"body": "Thanks for the contribution. We’re closing this PR because it does not follow the project’s contribution policy: it is not based on a triaged, accepted issue and does not address a concrete problem agreed upon by maintainers.\r\n\r\nWhile the change itself is not necessarily incorrect, reviewing and maintaining such PRs takes time away from higher-priority work.\r\n\r\nPlease see our [Contribution Scope Policy](https://joplinapp.org/help/dev/#contribution-scope) for details on what kinds of contributions we accept.\r\n\r\nIf you intend to participate in GSoC, please make sure you read our [GSoC guidelines](https://github.com/joplin/gsoc).\r\n\r\nAnd [please pay attention to our AI policy](https://github.com/joplin/gsoc/blob/master/ai_policy.md).\r\n",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4163275098/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
}
]
}