{
	"issue": {
		"url": "https://api.github.com/repos/laurent22/joplin/issues/13673",
		"repository_url": "https://api.github.com/repos/laurent22/joplin",
		"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/13673/labels{/name}",
		"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/13673/comments",
		"events_url": "https://api.github.com/repos/laurent22/joplin/issues/13673/events",
		"html_url": "https://github.com/laurent22/joplin/pull/13673",
		"id": 3613702563,
		"node_id": "PR_kwDOBLftOs6y1NM1",
		"number": 13673,
		"title": "Server: Update `@aws-sdk/client-s3` to v3.928.0",
		"user": {
			"login": "saturneric",
			"id": 20257134,
			"node_id": "MDQ6VXNlcjIwMjU3MTM0",
			"avatar_url": "https://avatars.githubusercontent.com/u/20257134?v=4",
			"gravatar_id": "",
			"url": "https://api.github.com/users/saturneric",
			"html_url": "https://github.com/saturneric",
			"followers_url": "https://api.github.com/users/saturneric/followers",
			"following_url": "https://api.github.com/users/saturneric/following{/other_user}",
			"gists_url": "https://api.github.com/users/saturneric/gists{/gist_id}",
			"starred_url": "https://api.github.com/users/saturneric/starred{/owner}{/repo}",
			"subscriptions_url": "https://api.github.com/users/saturneric/subscriptions",
			"organizations_url": "https://api.github.com/users/saturneric/orgs",
			"repos_url": "https://api.github.com/users/saturneric/repos",
			"events_url": "https://api.github.com/users/saturneric/events{/privacy}",
			"received_events_url": "https://api.github.com/users/saturneric/received_events",
			"type": "User",
			"user_view_type": "public",
			"site_admin": false
		},
		"labels": [],
		"state": "closed",
		"locked": false,
		"assignee": null,
		"assignees": [],
		"milestone": null,
		"comments": 4,
		"created_at": "2025-11-11T19:56:28Z",
		"updated_at": "2025-11-15T11:29:28Z",
		"closed_at": "2025-11-15T09:01:50Z",
		"author_association": "CONTRIBUTOR",
		"active_lock_reason": null,
		"draft": false,
		"pull_request": {
			"url": "https://api.github.com/repos/laurent22/joplin/pulls/13673",
			"html_url": "https://github.com/laurent22/joplin/pull/13673",
			"diff_url": "https://github.com/laurent22/joplin/pull/13673.diff",
			"patch_url": "https://github.com/laurent22/joplin/pull/13673.patch",
			"merged_at": "2025-11-15T09:01:50Z"
		},
		"body": "When using Hetzner Object Storage as the S3 backend, the server failed during the initial storage health check with the following error:\r\n\r\n```\r\n...\r\n2025-11-11T18:33:17: PM2 log: Launching in no daemon mode\r\n2025-11-11T18:33:17: PM2 log: [PM2][Module] Starting NPM module pm2-logrotate\r\n2025-11-11T18:33:17: PM2 log: [PM2][WARN] Applications pm2-logrotate not running, starting...\r\n2025-11-11T18:33:17: PM2 log: App [pm2-logrotate:0] starting in -fork mode-\r\n2025-11-11T18:33:17: PM2 log: App [pm2-logrotate:0] online\r\n2025-11-11T18:33:17: PM2 log: [PM2] App [pm2-logrotate] launched (1 instances)\r\n2025-11-11T18:33:17: PM2 log: [PM2] Starting /home/joplin/packages/server/dist/app.js in fork_mode (1 instance)\r\n2025-11-11T18:33:17: PM2 log: App [app:1] starting in -fork mode-\r\n2025-11-11T18:33:17: PM2 log: App [app:1] online\r\n2025-11-11T18:33:17: PM2 log: [PM2] Done.\r\n...\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: Starting server v3.4.3 (prod) on port 22300 and PID 81...\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: Checking for time drift using NTP server: pool.ntp.org:123\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: NTP time offset: -3ms\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: Running in Docker: true\r\n...\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: Content driver: {\r\n18:33:19 1|app  |   type: 4,\r\n18:33:19 1|app  |   region: 'us-east-1',\r\n18:33:19 1|app  |   bucket: '********',\r\n18:33:19 1|app  |   endpoint: 'https://nbg1.your-objectstorage.com',\r\n18:33:19 1|app  |   accessKeyId: '********',\r\n18:33:19 1|app  |   secretAccessKeyId: '********'\r\n18:33:19 1|app  | }\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: Content driver (fallback): null\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: Trying to connect to database...\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: Connection check: {\r\n18:33:19 1|app  |   latestMigration: { name: '20250720103211_fix_sso_auth_code_expire_at.js', done: true },\r\n18:33:19 1|app  |   isCreated: true,\r\n18:33:19 1|app  |   error: null\r\n18:33:19 1|app  | }\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: Auto-migrating database...\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: Latest migration: { name: '20250720103211_fix_sso_auth_code_expire_at.js', done: true }\r\n18:33:19 1|app  | 2025-11-11 18:33:19: App: Not using database replication...\r\n18:33:19 1|app  | 2025-11-11 18:33:19: EmailService: Service will be disabled because mailer config is not set or is explicitly disabled\r\n18:33:20 1|app  | 2025-11-11 18:33:20: App: Performing main storage check...\r\n18:35:20 1|app  | BadRequest: N/A\r\n18:35:20 1|app  |     at throwDefaultError (/home/joplin/packages/server/node_modules/@aws-sdk/smithy-client/dist-cjs/default-error-handler.js:8:22)\r\n18:35:20 1|app  |     at deserializeAws_restXmlDeleteObjectsCommandError (/home/joplin/packages/server/node_modules/@aws-sdk/client-s3/dist-cjs/protocols/Aws_restXml.js:3610:43)\r\n18:35:20 1|app  |     at processTicksAndRejections (node:internal/process/task_queues:95:5)\r\n18:35:20 1|app  |     at /home/joplin/packages/server/node_modules/@aws-sdk/middleware-serde/dist-cjs/deserializerMiddleware.js:7:24\r\n18:35:20 1|app  |     at /home/joplin/packages/server/node_modules/@aws-sdk/middleware-signing/dist-cjs/middleware.js:14:20\r\n18:35:20 1|app  |     at /home/joplin/packages/server/node_modules/@aws-sdk/middleware-retry/dist-cjs/retryMiddleware.js:27:46\r\n18:35:20 1|app  |     at /home/joplin/packages/server/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/flexibleChecksumsMiddleware.js:58:20\r\n18:35:20 1|app  |     at /home/joplin/packages/server/node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:7:26\r\n18:35:20 1|app  |     at StorageDriverS3.delete (/home/joplin/packages/server/src/models/items/storage/StorageDriverS3.ts:79:3)\r\n18:35:20 1|app  |     at default_1 (/home/joplin/packages/server/src/utils/storageConnectionCheck.ts:33:2) {\r\n18:35:20 1|app  |   '$fault': 'client',\r\n18:35:20 1|app  |   '$metadata': {\r\n18:35:20 1|app  |     httpStatusCode: 400,\r\n18:35:20 1|app  |     requestId: undefined,\r\n18:35:20 1|app  |     extendedRequestId: undefined,\r\n18:35:20 1|app  |     cfId: undefined,\r\n18:35:20 1|app  |     attempts: 1,\r\n18:35:20 1|app  |     totalRetryDelay: 0\r\n18:35:20 1|app  |   },\r\n18:35:20 1|app  |   Code: 'BadRequest',\r\n18:35:20 1|app  |   RequestId: 'N/A',\r\n18:35:20 1|app  |   HostId: 'N/A'\r\n18:35:20 1|app  | }\r\n2025-11-11T18:35:20: PM2 log: App [app:1] exited with code [1] via signal [SIGINT]\r\n2025-11-11T18:35:20: PM2 log: App [app:1] will restart in 1000ms\r\n18:35:20 PM2      | App [app:1] exited with code [1] via signal [SIGINT]\r\n18:35:20 PM2      | App [app:1] will restart in 1000ms\r\n...\r\n```\r\n\r\nThis happened while performing a DeleteObjects operation during startup. Other S3 operations (PUT, GET) worked correctly, and manual testing with the AWS CLI confirmed that the endpoint and credentials were valid.\r\n\r\nAfter further investigation, the issue appeared to originate from an incompatibility between Hetzner’s S3 implementation and the older version of AWS SDK v3 used by Joplin Server. The current SDK version in packages/server is v3.296.0, which was released nearly two years ago, and it seems to produce an invalid DeleteObjects request for certain S3-compatible providers.\r\n\r\nUpgrading `@aws-sdk/client-s3` (and related dependencies) to the latest version v3.928.0 resolves the issue.\r\nAfter rebuilding and redeploying, the storage check passes successfully:\r\n\r\n```\r\n19:34:26 1|app  | 2025-11-11 19:34:26: App: Content driver: {\r\n19:34:26 1|app  |   type: 4,\r\n19:34:26 1|app  |   region: 'us-east-1',\r\n19:34:26 1|app  |   bucket: '******',\r\n19:34:26 1|app  |   endpoint: 'https://nbg1.your-objectstorage.com',\r\n19:34:26 1|app  |   accessKeyId: '*********',\r\n19:34:26 1|app  |   secretAccessKeyId: '********'\r\n19:34:26 1|app  | }\r\n19:34:26 1|app  | 2025-11-11 19:34:26: App: Content driver (fallback): null\r\n19:34:26 1|app  | 2025-11-11 19:34:26: App: Trying to connect to database...\r\n19:34:26 1|app  | 2025-11-11 19:34:26: App: Connection check: {\r\n19:34:26 1|app  |   latestMigration: { name: '20250720103211_fix_sso_auth_code_expire_at.js', done: true },\r\n19:34:26 1|app  |   isCreated: true,\r\n19:34:26 1|app  |   error: null\r\n19:34:26 1|app  | }\r\n19:34:26 1|app  | 2025-11-11 19:34:26: App: Auto-migrating database...\r\n19:34:27 1|app  | 2025-11-11 19:34:27: App: Latest migration: { name: '20251107113000_fix_delta_performance.js', done: true }\r\n19:34:27 1|app  | 2025-11-11 19:34:27: App: Not using database replication...\r\n19:34:27 1|app  | 2025-11-11 19:34:27: EmailService: Service will be disabled because mailer config is not set or is explicitly disabled\r\n19:34:27 1|app  | 2025-11-11 19:34:27: App: Performing main storage check...\r\n19:34:27 1|app  | 2025-11-11 19:34:27: App: Item was written, read back and deleted without any error.\r\n19:34:27 1|app  | 2025-11-11 19:34:27: App: Starting services...\r\n19:34:27 1|app  | 2025-11-11 19:34:27: TaskService: Scheduling #1 (Delete expired tokens): 0 */6 * * *\r\n```\r\n\r\nSuggested Change: Bump AWS SDK dependencies to the latest stable version in `packages/server/package.json` and rebuild. This ensures compatibility with a wider range of S3-compatible providers(at least Hetzner).",
		"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/13673/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/13673/timeline",
		"performed_via_github_app": null,
		"state_reason": null
	},
	"comments": [
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3518540777",
			"html_url": "https://github.com/laurent22/joplin/pull/13673#issuecomment-3518540777",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/13673",
			"id": 3518540777,
			"node_id": "IC_kwDOBLftOs7RuKvp",
			"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-11-11T19:56:40Z",
			"updated_at": "2025-11-15T11:29:28Z",
			"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/3518540777/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/3518727296",
			"html_url": "https://github.com/laurent22/joplin/pull/13673#issuecomment-3518727296",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/13673",
			"id": 3518727296,
			"node_id": "IC_kwDOBLftOs7Ru4SA",
			"user": {
				"login": "saturneric",
				"id": 20257134,
				"node_id": "MDQ6VXNlcjIwMjU3MTM0",
				"avatar_url": "https://avatars.githubusercontent.com/u/20257134?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/saturneric",
				"html_url": "https://github.com/saturneric",
				"followers_url": "https://api.github.com/users/saturneric/followers",
				"following_url": "https://api.github.com/users/saturneric/following{/other_user}",
				"gists_url": "https://api.github.com/users/saturneric/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/saturneric/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/saturneric/subscriptions",
				"organizations_url": "https://api.github.com/users/saturneric/orgs",
				"repos_url": "https://api.github.com/users/saturneric/repos",
				"events_url": "https://api.github.com/users/saturneric/events{/privacy}",
				"received_events_url": "https://api.github.com/users/saturneric/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2025-11-11T21:06:19Z",
			"updated_at": "2025-11-11T21:06:19Z",
			"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/3518727296/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/3521501682",
			"html_url": "https://github.com/laurent22/joplin/pull/13673#issuecomment-3521501682",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/13673",
			"id": 3521501682,
			"node_id": "IC_kwDOBLftOs7R5dny",
			"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-11-12T11:39:55Z",
			"updated_at": "2025-11-12T11:39:55Z",
			"body": "```\r\n2025-11-11T22:51:08.1652200Z ➤ YN0028: The lockfile would have been modified by this install, which is explicitly forbidden.\r\n2025-11-11T22:51:08.1652733Z ➤ YN0000: └ Completed in 0s 299ms\r\n2025-11-11T22:51:08.1653114Z ➤ YN0000: · Failed with errors in 31s 623ms\r\n2025-11-11T22:51:08.5252465Z ##[error]Process completed with exit code 1.\r\n```\r\n\r\nyou need to run `yarn install`",
			"author_association": "OWNER",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3521501682/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/3523587490",
			"html_url": "https://github.com/laurent22/joplin/pull/13673#issuecomment-3523587490",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/13673",
			"id": 3523587490,
			"node_id": "IC_kwDOBLftOs7SBa2i",
			"user": {
				"login": "saturneric",
				"id": 20257134,
				"node_id": "MDQ6VXNlcjIwMjU3MTM0",
				"avatar_url": "https://avatars.githubusercontent.com/u/20257134?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/saturneric",
				"html_url": "https://github.com/saturneric",
				"followers_url": "https://api.github.com/users/saturneric/followers",
				"following_url": "https://api.github.com/users/saturneric/following{/other_user}",
				"gists_url": "https://api.github.com/users/saturneric/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/saturneric/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/saturneric/subscriptions",
				"organizations_url": "https://api.github.com/users/saturneric/orgs",
				"repos_url": "https://api.github.com/users/saturneric/repos",
				"events_url": "https://api.github.com/users/saturneric/events{/privacy}",
				"received_events_url": "https://api.github.com/users/saturneric/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2025-11-12T19:35:16Z",
			"updated_at": "2025-11-12T19:35:16Z",
			"body": "> ```\r\n> 2025-11-11T22:51:08.1652200Z ➤ YN0028: The lockfile would have been modified by this install, which is explicitly forbidden.\r\n> 2025-11-11T22:51:08.1652733Z ➤ YN0000: └ Completed in 0s 299ms\r\n> 2025-11-11T22:51:08.1653114Z ➤ YN0000: · Failed with errors in 31s 623ms\r\n> 2025-11-11T22:51:08.5252465Z ##[error]Process completed with exit code 1.\r\n> ```\r\n> \r\n> you need to run `yarn install`\r\n\r\ndone",
			"author_association": "CONTRIBUTOR",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/3523587490/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
		}
	]
}