一些检查失败了
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
345 行
15 KiB
JSON
345 行
15 KiB
JSON
{
|
|
"issue": {
|
|
"url": "https://api.github.com/repos/laurent22/joplin/issues/15245",
|
|
"repository_url": "https://api.github.com/repos/laurent22/joplin",
|
|
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/15245/labels{/name}",
|
|
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/15245/comments",
|
|
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/15245/events",
|
|
"html_url": "https://github.com/laurent22/joplin/pull/15245",
|
|
"id": 4368537276,
|
|
"node_id": "PR_kwDOBLftOs7Xn3OZ",
|
|
"number": 15245,
|
|
"title": "All: Improved: Exclude user_data from note revisions",
|
|
"user": {
|
|
"login": "alondmnt",
|
|
"id": 17462125,
|
|
"node_id": "MDQ6VXNlcjE3NDYyMTI1",
|
|
"avatar_url": "https://avatars.githubusercontent.com/u/17462125?v=4",
|
|
"gravatar_id": "",
|
|
"url": "https://api.github.com/users/alondmnt",
|
|
"html_url": "https://github.com/alondmnt",
|
|
"followers_url": "https://api.github.com/users/alondmnt/followers",
|
|
"following_url": "https://api.github.com/users/alondmnt/following{/other_user}",
|
|
"gists_url": "https://api.github.com/users/alondmnt/gists{/gist_id}",
|
|
"starred_url": "https://api.github.com/users/alondmnt/starred{/owner}{/repo}",
|
|
"subscriptions_url": "https://api.github.com/users/alondmnt/subscriptions",
|
|
"organizations_url": "https://api.github.com/users/alondmnt/orgs",
|
|
"repos_url": "https://api.github.com/users/alondmnt/repos",
|
|
"events_url": "https://api.github.com/users/alondmnt/events{/privacy}",
|
|
"received_events_url": "https://api.github.com/users/alondmnt/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": 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": 7478909668,
|
|
"node_id": "LA_kwDOBLftOs8AAAABvcca5A",
|
|
"url": "https://api.github.com/repos/laurent22/joplin/labels/performance",
|
|
"name": "performance",
|
|
"color": "786E3A",
|
|
"default": false,
|
|
"description": "Performance issues"
|
|
}
|
|
],
|
|
"state": "closed",
|
|
"locked": false,
|
|
"assignees": [],
|
|
"milestone": null,
|
|
"comments": 3,
|
|
"created_at": "2026-05-02T09:17:47Z",
|
|
"updated_at": "2026-05-04T11:03:01Z",
|
|
"closed_at": "2026-05-04T10:19:42Z",
|
|
"assignee": null,
|
|
"author_association": "CONTRIBUTOR",
|
|
"active_lock_reason": null,
|
|
"draft": false,
|
|
"pull_request": {
|
|
"url": "https://api.github.com/repos/laurent22/joplin/pulls/15245",
|
|
"html_url": "https://github.com/laurent22/joplin/pull/15245",
|
|
"diff_url": "https://github.com/laurent22/joplin/pull/15245.diff",
|
|
"patch_url": "https://github.com/laurent22/joplin/pull/15245.patch",
|
|
"merged_at": "2026-05-04T10:19:42Z"
|
|
},
|
|
"body": "## summary\n\nI noticed that whenever a plugin updates `user_data` (even a single char), the next revision collected for that note stores the entire new `user_data` blob, not a delta. plugins that write often accumulate full-size snapshots in revision history, especially with the default 90-day retention.\n\nforum discussion (with the full case): https://discourse.joplinapp.org/t/exclude-user-data-from-note-revisions/49722\n\n## change\n\nadd `user_data` to the existing `excludedFields` list in `RevisionService.noteMetadata_()`.\n\nreasoning:\n\n- `user_data` is plugin storage, not user-authored content\n- reverting it from history has no clear meaning (plugins write to it programmatically)\n- the existing list already covers similar non-content fields (encryption state, conflict flag, etc.)\n\n## backward compatibility\n\n- existing revisions still decode and apply normally.\n- new revisions stop carrying `user_data`. an edit that *only* changes `user_data` won't create a revision (after a one-time transition revision recording the deletion, `metadata_diff` ends up empty and `Revision.isEmptyRevision` filters it out).\n- restoring a pre-fix revision still recovers the historical `user_data`. restoring a post-fix revision creates a new note without it (plugins regenerate as needed).\n- sync format unchanged. old Joplin versions handle the existing `deleted` array fine.\n\n## tests\n\n- added `should not track user_data in revisions` to `RevisionService.test.ts`. covers two cases: a mixed change excludes `user_data` from the diff; a user_data-only change produces no revision.\n- full `RevisionService.test.ts` suite passes (27/27); `Revision.test.ts` suite also passes.\n- manually verified in a live Joplin desktop dev build via the Web Clipper API: post-patch revisions for a note with active plugin user_data have `user_data` excluded from `metadata_diff.new` and `metadata_diff.deleted`; user_data-only changes produce no new revision.",
|
|
"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/15245/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/15245/timeline",
|
|
"performed_via_github_app": null,
|
|
"state_reason": null
|
|
},
|
|
"comments": [
|
|
{
|
|
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4363484774",
|
|
"html_url": "https://github.com/laurent22/joplin/pull/15245#issuecomment-4363484774",
|
|
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/15245",
|
|
"id": 4363484774,
|
|
"node_id": "IC_kwDOBLftOs8AAAABBBV-Zg",
|
|
"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-05-02T09:17:59Z",
|
|
"updated_at": "2026-05-04T11:03:01Z",
|
|
"body": "All contributors have signed the CLA ✍️ ✅<br/><sub>Posted by the ****CLA Assistant Lite bot****.</sub>",
|
|
"author_association": "CONTRIBUTOR",
|
|
"reactions": {
|
|
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4363484774/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/4363645915",
|
|
"html_url": "https://github.com/laurent22/joplin/pull/15245#issuecomment-4363645915",
|
|
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/15245",
|
|
"id": 4363645915,
|
|
"node_id": "IC_kwDOBLftOs8AAAABBBfz2w",
|
|
"user": {
|
|
"login": "alondmnt",
|
|
"id": 17462125,
|
|
"node_id": "MDQ6VXNlcjE3NDYyMTI1",
|
|
"avatar_url": "https://avatars.githubusercontent.com/u/17462125?v=4",
|
|
"gravatar_id": "",
|
|
"url": "https://api.github.com/users/alondmnt",
|
|
"html_url": "https://github.com/alondmnt",
|
|
"followers_url": "https://api.github.com/users/alondmnt/followers",
|
|
"following_url": "https://api.github.com/users/alondmnt/following{/other_user}",
|
|
"gists_url": "https://api.github.com/users/alondmnt/gists{/gist_id}",
|
|
"starred_url": "https://api.github.com/users/alondmnt/starred{/owner}{/repo}",
|
|
"subscriptions_url": "https://api.github.com/users/alondmnt/subscriptions",
|
|
"organizations_url": "https://api.github.com/users/alondmnt/orgs",
|
|
"repos_url": "https://api.github.com/users/alondmnt/repos",
|
|
"events_url": "https://api.github.com/users/alondmnt/events{/privacy}",
|
|
"received_events_url": "https://api.github.com/users/alondmnt/received_events",
|
|
"type": "User",
|
|
"user_view_type": "public",
|
|
"site_admin": false
|
|
},
|
|
"created_at": "2026-05-02T11:01:58Z",
|
|
"updated_at": "2026-05-02T11:01:58Z",
|
|
"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/4363645915/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/4370246604",
|
|
"html_url": "https://github.com/laurent22/joplin/pull/15245#issuecomment-4370246604",
|
|
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/15245",
|
|
"id": 4370246604,
|
|
"node_id": "IC_kwDOBLftOs8AAAABBHyrzA",
|
|
"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-05-04T10:19:29Z",
|
|
"updated_at": "2026-05-04T10:19:29Z",
|
|
"body": "Thanks @alondmnt, it indeed makes sense to keep user data out of the revision history",
|
|
"author_association": "OWNER",
|
|
"reactions": {
|
|
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/4370246604/reactions",
|
|
"total_count": 1,
|
|
"+1": 0,
|
|
"-1": 0,
|
|
"laugh": 0,
|
|
"hooray": 1,
|
|
"confused": 0,
|
|
"heart": 0,
|
|
"rocket": 0,
|
|
"eyes": 0
|
|
},
|
|
"performed_via_github_app": null
|
|
}
|
|
]
|
|
} |