{
"issue": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"repository_url": "https://api.github.com/repos/laurent22/joplin",
"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/12868/labels{/name}",
"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/12868/comments",
"events_url": "https://api.github.com/repos/laurent22/joplin/issues/12868/events",
"html_url": "https://github.com/laurent22/joplin/pull/12868",
"id": 3289124141,
"node_id": "PR_kwDOBLftOs6h_LDS",
"number": 12868,
"title": "Desktop: Fixes #12531: Fix the order of attached images (#12531)",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"labels": [],
"state": "closed",
"locked": false,
"assignee": null,
"assignees": [],
"milestone": null,
"comments": 33,
"created_at": "2025-08-04T11:52:54Z",
"updated_at": "2025-09-30T20:12:21Z",
"closed_at": "2025-09-30T16:44:39Z",
"author_association": "CONTRIBUTOR",
"active_lock_reason": null,
"draft": false,
"pull_request": {
"url": "https://api.github.com/repos/laurent22/joplin/pulls/12868",
"html_url": "https://github.com/laurent22/joplin/pull/12868",
"diff_url": "https://github.com/laurent22/joplin/pull/12868.diff",
"patch_url": "https://github.com/laurent22/joplin/pull/12868.patch",
"merged_at": "2025-09-30T16:44:39Z"
},
"body": "\r\n### What it does\r\nFixes an off-by-one error in the attachments loop that caused images to render in reverse order.\r\nInsert white space in the expected area.\r\n\r\n### How to test\r\n1. Open a note with multiple attachments in the desktop app. \r\n2. Verify that they now appear in the order they were added. \r\n3. All existing automated tests pass (`yarn test resourceHandlingt`).\r\n\r\n### Related issues\r\nFixes #12531",
"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/12868/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/12868/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"comments": [
{
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3150304074",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3150304074",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3150304074,
"node_id": "IC_kwDOBLftOs67xdNK",
"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": "2025-08-04T11:53:06Z",
"updated_at": "2025-09-30T20:12:21Z",
"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/3150304074/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": "2025-11-12T15:38:39Z",
"permissions": {
"actions": "write",
"administration": "read",
"artifact_metadata": "write",
"attestations": "write",
"checks": "write",
"contents": "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/3150316104",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3150316104",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3150316104,
"node_id": "IC_kwDOBLftOs67xgJI",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-08-04T11:57:22Z",
"updated_at": "2025-08-04T11:57:22Z",
"body": "I have read the CLA Document and I hereby sign the CLA",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3150316104/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/3154877187",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3154877187",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3154877187,
"node_id": "IC_kwDOBLftOs68C5sD",
"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": "2025-08-05T11:45:58Z",
"updated_at": "2025-08-05T11:45:58Z",
"body": "> All existing automated tests pass (yarn test resourceHandlingt).\r\n\r\nBut how can they pass if the order is flipped? I think it just means there's not test to validate this change and as a result I'm not very confident to merge this.",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3154877187/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/3155352499",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3155352499",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3155352499,
"node_id": "IC_kwDOBLftOs68Etuz",
"user": {
"login": "q2343454",
"id": 51936970,
"node_id": "MDQ6VXNlcjUxOTM2OTcw",
"avatar_url": "https://avatars.githubusercontent.com/u/51936970?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/q2343454",
"html_url": "https://github.com/q2343454",
"followers_url": "https://api.github.com/users/q2343454/followers",
"following_url": "https://api.github.com/users/q2343454/following{/other_user}",
"gists_url": "https://api.github.com/users/q2343454/gists{/gist_id}",
"starred_url": "https://api.github.com/users/q2343454/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/q2343454/subscriptions",
"organizations_url": "https://api.github.com/users/q2343454/orgs",
"repos_url": "https://api.github.com/users/q2343454/repos",
"events_url": "https://api.github.com/users/q2343454/events{/privacy}",
"received_events_url": "https://api.github.com/users/q2343454/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-08-05T13:57:06Z",
"updated_at": "2025-08-05T13:57:06Z",
"body": "Thank you for restoring the fallen black mage back to a white mage!",
"author_association": "NONE",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3155352499/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/3156814394",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3156814394",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3156814394,
"node_id": "IC_kwDOBLftOs68KSo6",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-08-05T22:21:53Z",
"updated_at": "2025-08-05T22:21:53Z",
"body": "> > All existing automated tests pass (yarn test resourceHandlingt).\r\n> \r\n> But how can they pass if the order is flipped? I think it just means there's not test to validate this change and as a result I'm not very confident to merge this.\r\n\r\nYes—I’ve looked through the test suite, and I don’t see anything that verifies insertion order. I tried writing my own tests, but I couldn’t get them to behave as expected—the way the code jumps between helpers and methods is a bit complicated for me to follow.\r\n\r\nAt the moment, I’ve simply reversed the for-loop inside commandAttachFileToBody. Alternatively, I could leave the existing source untouched and just call filePaths.reverse() before the loop, which also fixes the images-in-reverse issue. Would either of these solutions put your mind at ease? If so, I’ll go ahead and update my PR.\r\n",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3156814394/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/3159075701",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3159075701",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3159075701,
"node_id": "IC_kwDOBLftOs68S6t1",
"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": "2025-08-06T10:09:48Z",
"updated_at": "2025-08-06T10:09:48Z",
"body": "Any chance you could provide a before/after screenshot? I think that would at least show what it does, even if it's hard to test with automated tests.",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3159075701/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/3159344782",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3159344782",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3159344782,
"node_id": "IC_kwDOBLftOs68T8aO",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-08-06T10:32:22Z",
"updated_at": "2025-08-06T10:32:22Z",
"body": "\r\n> Any chance you could provide a before/after screenshot? I think that would at least show what it does, even if it's hard to test with automated tests.\r\n\r\n### No problem. Here are the screenshots:\r\n\r\n### Selected Images (Usually expected the insertion order to match the order shown here)\r\n
\r\n\r\n### Before the code change (images were sorted in reverse order)\r\n
\r\n
\r\n\r\n### After the code change (images were sorted in ascending order)\r\n
\r\n
\r\n\r\n",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3159344782/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/3172466431",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3172466431",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3172466431,
"node_id": "IC_kwDOBLftOs69F_7_",
"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": "2025-08-10T08:28:01Z",
"updated_at": "2025-08-10T08:28:01Z",
"body": "Thanks for looking into this, and I agree it's an annoying behaviour that the system drops the files in reverse order (you could fix this by selecting them in reverse order before dropping them), but I'm not sure your fix would help in all cases or is actually cross-platform.\r\n\r\nMaybe we should decide what we want regardless of the order the system is providing. Do we want the files in alphabetical order? Maybe. But then what if someone select their files sorted by creation time for example and expect them to end up in that order?\r\n\r\nSo I'm not sure what to do here. Maybe your change makes it slightly better, but it might also break someone's workflow, or flip the order in some operating systems, even though it was already in the correct order. Perhaps we need to check that other apps are doing? Is there a strong case for example to always sort the files in alphabetical order? Is that what other apps are doing?",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3172466431/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/3172479495",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3172479495",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3172479495,
"node_id": "IC_kwDOBLftOs69GDIH",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-08-10T08:51:09Z",
"updated_at": "2025-08-10T08:51:09Z",
"body": "In my opinion, I think this change as keeping the overall workflow intact and simply reversing the array. The change only touches the attachment upload, so in theory it should be safe.\r\n\r\nMoreover, In my own usage of apps that support bulk image uploads, I usually rename files alphabetically first. After uploading in bulk, the files appear in the order I expect.\r\n\r\nI tested it on both Windows and macOS, and the behavior before vs. after the change is consistent on both systems. But as you pointed out, I can’t ensure this change won’t have any negative impact at all.\r\n\r\nThat said, I completely understand your caution—this project has many users and contributors, so every change needs care. If this can be accepted, I’d be thrilled, because this is my first PR to a real project as a beginner. If it can’t be merged for any reason, I totally get that as well. Thanks a lot for reviewing my request so patiently.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3172479495/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/3172485753",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3172485753",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3172485753,
"node_id": "IC_kwDOBLftOs69GEp5",
"user": {
"login": "tomasz1986",
"id": 5626656,
"node_id": "MDQ6VXNlcjU2MjY2NTY=",
"avatar_url": "https://avatars.githubusercontent.com/u/5626656?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/tomasz1986",
"html_url": "https://github.com/tomasz1986",
"followers_url": "https://api.github.com/users/tomasz1986/followers",
"following_url": "https://api.github.com/users/tomasz1986/following{/other_user}",
"gists_url": "https://api.github.com/users/tomasz1986/gists{/gist_id}",
"starred_url": "https://api.github.com/users/tomasz1986/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/tomasz1986/subscriptions",
"organizations_url": "https://api.github.com/users/tomasz1986/orgs",
"repos_url": "https://api.github.com/users/tomasz1986/repos",
"events_url": "https://api.github.com/users/tomasz1986/events{/privacy}",
"received_events_url": "https://api.github.com/users/tomasz1986/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-08-10T09:03:15Z",
"updated_at": "2025-08-10T09:10:25Z",
"body": "> Do we want the files in alphabetical order? Maybe. But then what if someone select their files sorted by creation time for example and expect them to end up in that order?\r\n\r\nJust a comment, and this is only about Windows, but if you order the files using a different criteria in the Explorer, e.g. size, then they are attached to Joplin following that one, i.e. it doesn't need to be alphabetical. However, in either case, the order is still always reversed.\r\n\r\nI haven't tested in other applications, but for example in Thunderbird, the order of attachments is correct (= not reversed like in Joplin).\r\n\r\n> (you could fix this by selecting them in reverse order before dropping them)\r\n\r\nThis is true, so with this PR, even if you do select the files in another order on purpose, would they still get reversed when attached? Is this right?",
"author_association": "NONE",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3172485753/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/3172495401",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3172495401",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3172495401,
"node_id": "IC_kwDOBLftOs69GHAp",
"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": "2025-08-10T09:20:05Z",
"updated_at": "2025-08-10T09:20:27Z",
"body": "I've worked with applications where I would sort in reverse alphabetical order in Finder before dropping the files, so that they are in correct (alphabetical) order in the app. You can do that for Joplin too.\r\n\r\nI'm not sure there's any consistency between apps and even those that are \"correct\" as far as I can see it just means that internally they sort the files in alphabetical order. For example whether I reverse the order in Finder or not, the files always end up in the same alphabetical order in the app.\r\n\r\nBut maybe that's reasonable too. Perhaps we should change the app to sort the files before attaching them?",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3172495401/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/3172544232",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3172544232",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3172544232,
"node_id": "IC_kwDOBLftOs69GS7o",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-08-10T10:55:16Z",
"updated_at": "2025-08-10T10:55:16Z",
"body": "> > (you could fix this by selecting them in reverse order before dropping them)\r\n> \r\n> This is true, so with this PR, even if you do select the files in another order on purpose, would they still get reversed when attached? Is this right?\r\n\r\n\r\nI just tested this on Windows: you can sort files however you like when selected them—by date, size, etc.—in ascending or descending order. Whether you select all files or only some of them, and regardless of the order you click them, the files will be attached in the same order they’re displayed in Windows. In other words, whatever the current Windows sort order is, that’s the order the files are added to the editor.\r\n",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3172544232/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/3172547042",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3172547042",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3172547042,
"node_id": "IC_kwDOBLftOs69GTni",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-08-10T11:00:48Z",
"updated_at": "2025-08-10T11:00:48Z",
"body": "> But maybe that's reasonable too. Perhaps we should change the app to sort the files before attaching them?但也许这也合理。也许我们应该修改一下应用程序,让它在上传文件之前先进行排序?\r\n\r\nYou’re right—defining the order up front when adding files to the array and then inserting them into the editor at the end in that expected order is definitely more reliable. That was my original plan, but I couldn’t pin down the single source of truth for the ordering, so I went with this approach instead. If it helps, here’s the result of a small test I just ran on Windows:\r\n\r\nUsers can sort files however you like when selected them—by date, size, etc.—in ascending or descending order. Whether you select all files or only some of them, and regardless of the order you click them, the files will be attached in the same order they’re displayed in Windows. In other words, whatever the current Windows sort order is, that’s the order the files are added to the editor.\r\n",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3172547042/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/3196718484",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3196718484",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3196718484,
"node_id": "IC_kwDOBLftOs6-ig2U",
"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": "2025-08-18T13:01:02Z",
"updated_at": "2025-08-18T13:01:02Z",
"body": "> That was my original plan, but I couldn’t pin down the single source of truth for the ordering, so I went with this approach instead\r\n\r\nI guess sorting should be done where you've currently added your code? @JZou-Code JZou-Code",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3196718484/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/3239711082",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3239711082",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3239711082,
"node_id": "IC_kwDOBLftOs7BGhFq",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-08-31T03:15:06Z",
"updated_at": "2025-08-31T03:15:06Z",
"body": "Sorry, I’ve been tied up with coursework and some difficult personal issues over the last two weeks, so I haven’t had the chance to refine this PR further. I’ll get back to debugging it from here.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3239711082/reactions",
"total_count": 1,
"+1": 1,
"-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/3240457990",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3240457990",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3240457990,
"node_id": "IC_kwDOBLftOs7BJXcG",
"user": {
"login": "q2343454",
"id": 51936970,
"node_id": "MDQ6VXNlcjUxOTM2OTcw",
"avatar_url": "https://avatars.githubusercontent.com/u/51936970?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/q2343454",
"html_url": "https://github.com/q2343454",
"followers_url": "https://api.github.com/users/q2343454/followers",
"following_url": "https://api.github.com/users/q2343454/following{/other_user}",
"gists_url": "https://api.github.com/users/q2343454/gists{/gist_id}",
"starred_url": "https://api.github.com/users/q2343454/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/q2343454/subscriptions",
"organizations_url": "https://api.github.com/users/q2343454/orgs",
"repos_url": "https://api.github.com/users/q2343454/repos",
"events_url": "https://api.github.com/users/q2343454/events{/privacy}",
"received_events_url": "https://api.github.com/users/q2343454/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-08-31T22:30:07Z",
"updated_at": "2025-08-31T22:30:07Z",
"body": "“If it’s a difficult problem, wouldn’t it be a good idea to ask artificial intelligence for bug fixes?\r\nWith your skills combined with the support of AI, I think the results could be very good.”",
"author_association": "NONE",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3240457990/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/3261937001",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3261937001",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3261937001,
"node_id": "IC_kwDOBLftOs7CbTVp",
"user": {
"login": "q2343454",
"id": 51936970,
"node_id": "MDQ6VXNlcjUxOTM2OTcw",
"avatar_url": "https://avatars.githubusercontent.com/u/51936970?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/q2343454",
"html_url": "https://github.com/q2343454",
"followers_url": "https://api.github.com/users/q2343454/followers",
"following_url": "https://api.github.com/users/q2343454/following{/other_user}",
"gists_url": "https://api.github.com/users/q2343454/gists{/gist_id}",
"starred_url": "https://api.github.com/users/q2343454/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/q2343454/subscriptions",
"organizations_url": "https://api.github.com/users/q2343454/orgs",
"repos_url": "https://api.github.com/users/q2343454/repos",
"events_url": "https://api.github.com/users/q2343454/events{/privacy}",
"received_events_url": "https://api.github.com/users/q2343454/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-06T11:49:24Z",
"updated_at": "2025-09-06T11:49:24Z",
"body": "In version 3.4.10, images are still attached in reverse order.\r\nThe issue has not been resolved (crying).",
"author_association": "NONE",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3261937001/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/3263528141",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3263528141",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3263528141,
"node_id": "IC_kwDOBLftOs7ChXzN",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-07T06:30:18Z",
"updated_at": "2025-09-07T06:30:18Z",
"body": "@mrjo118 Hi there—thank you very much for the suggestion. I’d been confused about where and how to sort, and your guidance helped clarify things.\r\n\r\nI also tried your approach. After applying sort, all files selected in a single upload end up being fixed to name-based order (just like the situation you mentioned), even if the original selection was sorted by size or creation date. That may not match expectations. By the same token, doing a different fixed sort before the for loop would also fail to preserve the user’s chosen ordering. Adding a configuration object just to pick an ordering feels a bit heavy.\r\n\r\nAt the moment, my logs show the root cause of the reversed image order: when adding multiple files in one go, options.position doesn’t advance with each inserted link, so every insertion happens at the same index. That produces reversed effect.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3263528141/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/3263539561",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3263539561",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3263539561,
"node_id": "IC_kwDOBLftOs7Chalp",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-07T06:52:15Z",
"updated_at": "2025-09-07T06:52:15Z",
"body": "@laurent22 \r\n\r\nHello, I investigated further and found that when adding multiple files in a single action, the insertion position (options.position) stays unchanged. As a result, the earlier a file is processed in the loop, the farther back it appears in the note—the actual attachment order ends up reversed from the intended order.\r\n\r\nAccordingly, my earlier fix was to iterate the for loop in reverse, which cancels out this reversal.\r\n\r\nI also tried two alternative approaches:\r\n\r\n1. Call filePaths.reverse() before the loop, so the array order counteracts the original reversal.\r\n\r\n2. Advance the insertion position by the length of each inserted link after every insertion, so subsequent inserts are appended after the previous one:\r\n```ts\r\n\t// NewLine: record the initial position\r\n\tlet pos = options.position ?? 0; \r\n\r\n\tfor (let i = 0; i < filePaths.length; i++) {\r\n\t\tconst filePath = filePaths[i];\r\n\r\n\t\t// NewLine: record the body length before new file insertion\r\n \t\tconst beforeLen = body.length; \r\n\r\n\t\ttry {\r\n\t\t\tlogger.info(`Attaching ${filePath}`);\r\n\t\t\tconst newBody = await shim.attachFileToNoteBody(body, filePath, pos, {\r\n\t\t\t\tcreateFileURL: options.createFileURL,\r\n\t\t\t\tresizeLargeImages: Setting.value('imageResizing'),\r\n\t\t\t\tmarkupLanguage: options.markupLanguage,\r\n\r\n\t\t\t\t// Modification: insert a white space at the start point if this isn't the first file\r\n\t\t\t\tresourcePrefix: i > 0 ? ' ' : '', \r\n\t\t\t});\r\n\r\n\t\t\tif (!newBody) {\r\n\t\t\t\tlogger.info('File attachment was cancelled');\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// NewLine: move the position with the length of the length of new file link\r\n\t\t\tpos += newBody.length - beforeLen; \r\n\r\n\t\t\tbody = newBody;\r\n\t\t\tlogger.info('File was attached.');\r\n\t\t} catch (error) {\r\n\t\t\tlogger.error(error);\r\n\t\t\tbridge().showErrorMessageBox(error.message);\r\n\t\t}\r\n\t}\r\n```\r\n\r\nI tested all three approaches with selections sorted by name, file size, and creation time, and with different file types; they all behaved as expected. If you have a preference among these approaches, please let me know and I’ll update the code accordingly.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3263539561/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/3263541913",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3263541913",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3263541913,
"node_id": "IC_kwDOBLftOs7ChbKZ",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-07T06:58:07Z",
"updated_at": "2025-09-07T06:58:07Z",
"body": "> “If it’s a difficult problem, wouldn’t it be a good idea to ask artificial intelligence for bug fixes? With your skills combined with the support of AI, I think the results could be very good.”\r\n\r\nHello. The issue itself isn’t particularly difficult. The main challenge is ensuring that users of the modified version won’t encounter other problems—potentially even more serious ones. That’s a point I may struggle to resolve; it’s difficult even with AI, but I’m working on it. Hope it ultimately resolves your issue.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3263541913/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/3263569779",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3263569779",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3263569779,
"node_id": "IC_kwDOBLftOs7Chh9z",
"user": {
"login": "mrjo118",
"id": 6963004,
"node_id": "MDQ6VXNlcjY5NjMwMDQ=",
"avatar_url": "https://avatars.githubusercontent.com/u/6963004?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/mrjo118",
"html_url": "https://github.com/mrjo118",
"followers_url": "https://api.github.com/users/mrjo118/followers",
"following_url": "https://api.github.com/users/mrjo118/following{/other_user}",
"gists_url": "https://api.github.com/users/mrjo118/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mrjo118/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/mrjo118/subscriptions",
"organizations_url": "https://api.github.com/users/mrjo118/orgs",
"repos_url": "https://api.github.com/users/mrjo118/repos",
"events_url": "https://api.github.com/users/mrjo118/events{/privacy}",
"received_events_url": "https://api.github.com/users/mrjo118/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-07T07:55:48Z",
"updated_at": "2025-09-07T07:55:48Z",
"body": "> I also tried your approach. After applying sort, all files selected in a single upload end up being fixed to name-based order (just like the situation you mentioned), even if the original selection was sorted by size or creation date. That may not match expectations. By the same token, doing a different fixed sort before the for loop would also fail to preserve the user’s chosen ordering\r\n\r\n@JZou-Code I may be wrong, but from what I understood from Laurent's last reply, while initially hesitent, I think he was saying that always applying alphabetical sort would be an acceptable solution.\r\n\r\nHowever, as you have found the root cause and proved the ordering is consistently reversed due to a logic error, it does make sense to keep the order the user has selected. Glad I could be of help.\r\n\r\nI think your current approach or calling .reverse explicitly are likely ok, as long as you add a comment in the code to explain why it needs to be reversed. Your other alternative is more explicit about the problem without a comment, and is possibly the best choice",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3263569779/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/3263592718",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3263592718",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3263592718,
"node_id": "IC_kwDOBLftOs7ChnkO",
"user": {
"login": "mrjo118",
"id": 6963004,
"node_id": "MDQ6VXNlcjY5NjMwMDQ=",
"avatar_url": "https://avatars.githubusercontent.com/u/6963004?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/mrjo118",
"html_url": "https://github.com/mrjo118",
"followers_url": "https://api.github.com/users/mrjo118/followers",
"following_url": "https://api.github.com/users/mrjo118/following{/other_user}",
"gists_url": "https://api.github.com/users/mrjo118/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mrjo118/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/mrjo118/subscriptions",
"organizations_url": "https://api.github.com/users/mrjo118/orgs",
"repos_url": "https://api.github.com/users/mrjo118/repos",
"events_url": "https://api.github.com/users/mrjo118/events{/privacy}",
"received_events_url": "https://api.github.com/users/mrjo118/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-07T08:40:17Z",
"updated_at": "2025-09-07T08:40:17Z",
"body": "@JZou-Code Actually for your 2nd alternative solution, does it work if you insert images mid way through the note? If not then one of the other approaches may be better",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3263592718/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/3263611533",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3263611533",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3263611533,
"node_id": "IC_kwDOBLftOs7ChsKN",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-07T09:14:15Z",
"updated_at": "2025-09-07T09:14:15Z",
"body": "> @JZou-Code Actually for your 2nd alternative solution, does it work if you insert images mid way through the note? If not then one of the other approaches may be better\r\n\r\nYes. I tested inserting in the middle of the note, in the middle of a sentence, and in the middle of a single bullet point. The insertion order appears to match expectations. See the reference images: \r\n1. The first group is sorted by file size (order 8–3–1, which matches the display).\r\n2. The second one is sorted by creation time (order 7-8-1).\r\n3. The other one groups are sorted by name in ascending order.\r\n\r\n\r\n\r\n",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3263611533/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/3263706111",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3263706111",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3263706111,
"node_id": "IC_kwDOBLftOs7CiDP_",
"user": {
"login": "mrjo118",
"id": 6963004,
"node_id": "MDQ6VXNlcjY5NjMwMDQ=",
"avatar_url": "https://avatars.githubusercontent.com/u/6963004?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/mrjo118",
"html_url": "https://github.com/mrjo118",
"followers_url": "https://api.github.com/users/mrjo118/followers",
"following_url": "https://api.github.com/users/mrjo118/following{/other_user}",
"gists_url": "https://api.github.com/users/mrjo118/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mrjo118/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/mrjo118/subscriptions",
"organizations_url": "https://api.github.com/users/mrjo118/orgs",
"repos_url": "https://api.github.com/users/mrjo118/repos",
"events_url": "https://api.github.com/users/mrjo118/events{/privacy}",
"received_events_url": "https://api.github.com/users/mrjo118/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-07T11:26:31Z",
"updated_at": "2025-09-07T11:26:31Z",
"body": "> > @JZou-Code Actually for your 2nd alternative solution, does it work if you insert images mid way through the note? If not then one of the other approaches may be better\r\n> \r\n> Yes. I tested inserting in the middle of the note, in the middle of a sentence, and in the middle of a single bullet point. The insertion order appears to match expectations. See the reference images:\r\n> \r\n> 1. The first group is sorted by file size (order 8–3–1, which matches the display).\r\n> 2. The second one is sorted by creation time (order 7-8-1).\r\n> 3. The other one groups are sorted by name in ascending order.\r\n> \r\n> \r\n\r\nIn that case, I'd say go for that option",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3263706111/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/3274605251",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3274605251",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3274605251,
"node_id": "IC_kwDOBLftOs7DLoLD",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-10T11:50:40Z",
"updated_at": "2025-09-10T11:50:40Z",
"body": "> In that case, I'd say go for that option\r\n\r\nThanks, @mrjo118 . I've implemented with that option and updated this PR accordingly.\r\n\r\n",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3274605251/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/3274613572",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3274613572",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3274613572,
"node_id": "IC_kwDOBLftOs7DLqNE",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-10T11:53:06Z",
"updated_at": "2025-09-10T11:53:06Z",
"body": "Hi @laurent22, I’ve updated the code to use the insert-position approach discussed above and manually verified that the insertion order behaves as expected. If anything looks off or you’d prefer a different direction, please let me know. Thanks!",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3274613572/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/3288323751",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3288323751",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3288323751,
"node_id": "IC_kwDOBLftOs7D_9an",
"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": "2025-09-13T12:58:03Z",
"updated_at": "2025-09-13T12:58:03Z",
"body": "@JZou-Code, why not add the files in alphabetical order as discussed previously?",
"author_association": "OWNER",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3288323751/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/3289148322",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3289148322",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3289148322,
"node_id": "IC_kwDOBLftOs7EDGui",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-14T03:29:56Z",
"updated_at": "2025-09-14T03:29:56Z",
"body": "@laurent22 Sorry—I may have misread the requirement and didn’t realize it should be sorted alphabetically.\r\nHowever, I’ve tested it and can make the list end up sorted by name regardless of whether the original sort is by file name, size, or last modified. Is that the expected behavior for now? If so, I’ll update the code and submit the change right away.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3289148322/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/3289409457",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3289409457",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3289409457,
"node_id": "IC_kwDOBLftOs7EEGex",
"user": {
"login": "mrjo118",
"id": 6963004,
"node_id": "MDQ6VXNlcjY5NjMwMDQ=",
"avatar_url": "https://avatars.githubusercontent.com/u/6963004?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/mrjo118",
"html_url": "https://github.com/mrjo118",
"followers_url": "https://api.github.com/users/mrjo118/followers",
"following_url": "https://api.github.com/users/mrjo118/following{/other_user}",
"gists_url": "https://api.github.com/users/mrjo118/gists{/gist_id}",
"starred_url": "https://api.github.com/users/mrjo118/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/mrjo118/subscriptions",
"organizations_url": "https://api.github.com/users/mrjo118/orgs",
"repos_url": "https://api.github.com/users/mrjo118/repos",
"events_url": "https://api.github.com/users/mrjo118/events{/privacy}",
"received_events_url": "https://api.github.com/users/mrjo118/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-14T10:00:30Z",
"updated_at": "2025-09-14T10:00:30Z",
"body": "> @laurent22 Sorry—I may have misread the requirement and didn’t realize it should be sorted alphabetically. However, I’ve tested it and can make the list end up sorted by name regardless of whether the original sort is by file name, size, or last modified. Is that the expected behavior for now? If so, I’ll update the code and submit the change right away.\r\n\r\nI think he's made it clear now that he wants you to implement fixed alphabetical sorting, rather than any of the other options you gave",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3289409457/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/3289506611",
"html_url": "https://github.com/laurent22/joplin/pull/12868#issuecomment-3289506611",
"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/12868",
"id": 3289506611,
"node_id": "IC_kwDOBLftOs7EEeMz",
"user": {
"login": "JZou-Code",
"id": 187935430,
"node_id": "U_kgDOCzOqxg",
"avatar_url": "https://avatars.githubusercontent.com/u/187935430?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/JZou-Code",
"html_url": "https://github.com/JZou-Code",
"followers_url": "https://api.github.com/users/JZou-Code/followers",
"following_url": "https://api.github.com/users/JZou-Code/following{/other_user}",
"gists_url": "https://api.github.com/users/JZou-Code/gists{/gist_id}",
"starred_url": "https://api.github.com/users/JZou-Code/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/JZou-Code/subscriptions",
"organizations_url": "https://api.github.com/users/JZou-Code/orgs",
"repos_url": "https://api.github.com/users/JZou-Code/repos",
"events_url": "https://api.github.com/users/JZou-Code/events{/privacy}",
"received_events_url": "https://api.github.com/users/JZou-Code/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2025-09-14T12:32:09Z",
"updated_at": "2025-09-14T12:32:09Z",
"body": "> I think he's made it clear now that he wants you to implement fixed alphabetical sorting, rather than any of the other options you gave\r\n\r\nOk, I'll go update the code. Thank you very much.",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3289506611/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
}
]
}