From 07e9ff9d10315de085af8ca68d4d92d3538baf19 Mon Sep 17 00:00:00 2001
From: sheodox <imagamer27@msn.com>
Date: Sat, 16 Dec 2023 21:32:21 -0600
Subject: [PATCH 1/2] Support 0.19 auth changes, nsfw edit fix

The main part of this is updating to the way 0.19 does auth.

Additionally, if you edit a post that was marked NSFW, the NSFW setting defaults to the current value. Previously you'd need to check it again, fixes #87.
---
 package-lock.json                             | 529 +++++++++---------
 package.json                                  |  46 +-
 src/lib/CommunityJoin.svelte                  |   1 -
 src/lib/CommunitySelector.svelte              |   2 -
 src/lib/InboxReadButton.svelte                |   3 -
 src/lib/MarkdownEditor.svelte                 |   1 -
 src/lib/PostPage.svelte                       |   5 +-
 src/lib/PrivateMessage.svelte                 |   2 -
 src/lib/PrivateMessageCompose.svelte          |   2 -
 src/lib/UserCounts.svelte                     |   6 +-
 src/lib/comments/Comment.svelte               |  12 +-
 .../community-context/community-context.ts    |   1 -
 src/lib/feed-query.ts                         |   3 -
 src/lib/feeds/posts/CommunityHeader.svelte    |   1 -
 src/lib/feeds/posts/PostLayout.svelte         |  12 +-
 src/lib/feeds/posts/UserBadges.svelte         |   5 +-
 src/lib/instance/InstanceSidebar.svelte       |   9 +-
 src/lib/lemmy-client.ts                       |  46 +-
 src/lib/mod/ModContext.svelte                 |  12 +-
 src/lib/profiles/profiles.ts                  |   2 +-
 src/routes/(app)/[instance]/+layout.svelte    |   8 +-
 src/routes/(app)/[instance]/+layout.ts        |   4 +-
 .../[instance]/c/[communityName]/+page.ts     |   5 +-
 .../[communityName]/post/[postId]/+layout.ts  |   5 +-
 .../post/[postId]/delete/+page.svelte         |   1 -
 .../post/[postId]/delete/+page.ts             |   4 +-
 .../post/[postId]/edit/+page.svelte           |   2 +-
 .../post/[postId]/edit/+page.ts               |   2 +-
 .../[instance]/comment/[commentId]/+page.ts   |   5 +-
 .../(app)/[instance]/communities/+page.svelte |   1 -
 .../(app)/[instance]/create/post/+layout.ts   |   3 +-
 .../(app)/[instance]/create/post/+page.svelte |   1 -
 .../(app)/[instance]/create/post/+page.ts     |   1 -
 .../(app)/[instance]/inbox/+page.svelte       |   5 +-
 .../[instance]/message/[recipientId]/+page.ts |   3 +-
 src/routes/(app)/[instance]/modlog/+layout.ts |   3 +-
 .../(app)/[instance]/modlog/view/+page.svelte |   5 +-
 .../(app)/[instance]/modlog/view/+page.ts     |   1 -
 .../(app)/[instance]/post/[postId]/+page.ts   |   2 +-
 .../(app)/[instance]/reports/+page.svelte     |   1 -
 .../[instance]/reports/ReportedComment.svelte |   1 -
 .../[instance]/reports/ReportedPost.svelte    |   1 -
 .../(app)/[instance]/search/+page.svelte      |   1 -
 src/routes/(app)/[instance]/search/+page.ts   |   2 -
 .../(app)/[instance]/settings/blocks/+page.ts |   4 +-
 .../settings/blocks/CommunityBlock.svelte     |   1 -
 .../settings/blocks/PersonBlock.svelte        |   1 -
 .../[instance]/settings/lemmy/+page.svelte    |   9 +-
 .../(app)/[instance]/settings/lemmy/+page.ts  |   4 +-
 .../(app)/[instance]/u/[username]/+page.ts    |   3 +-
 src/routes/(meta)/about/+page.svelte          |   8 +
 src/routes/(meta)/instance/+page.svelte       |  14 +-
 .../instance/signup/[instance]/+page.ts       |   2 +-
 static/buy_me_a_coffee.png                    | Bin 0 -> 4691 bytes
 54 files changed, 393 insertions(+), 420 deletions(-)
 create mode 100644 static/buy_me_a_coffee.png

diff --git a/package-lock.json b/package-lock.json
index cbe792a..c8ffc83 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,17 +1,17 @@
 {
 	"name": "Alexandrite",
-	"version": "0.8.11",
+	"version": "0.8.12",
 	"lockfileVersion": 3,
 	"requires": true,
 	"packages": {
 		"": {
 			"name": "Alexandrite",
-			"version": "0.8.11",
+			"version": "0.8.12",
 			"dependencies": {
-				"@fortawesome/fontawesome-free": "^6.4.0",
+				"@fortawesome/fontawesome-free": "^6.4.2",
 				"date-fns": "^2.30.0",
-				"lemmy-js-client": "^0.18.3-rc.3",
-				"markdown-it": "^13.0.1",
+				"lemmy-js-client": "^0.19.0-rc.19",
+				"markdown-it": "^13.0.2",
 				"markdown-it-container": "^3.0.0",
 				"markdown-it-footnote": "^3.0.3",
 				"markdown-it-ruby": "^0.1.1",
@@ -21,25 +21,25 @@
 			"devDependencies": {
 				"@sveltejs/adapter-auto": "^2.0.0",
 				"@sveltejs/adapter-node": "^1.3.1",
-				"@sveltejs/kit": "^1.22.3",
-				"@types/markdown-it": "^12.2.3",
-				"@types/markdown-it-container": "^2.0.6",
-				"@types/markdown-it-footnote": "^3.0.0",
-				"@typescript-eslint/eslint-plugin": "^6.2.0",
-				"@typescript-eslint/parser": "^6.2.0",
-				"eslint": "^8.45.0",
-				"eslint-config-prettier": "^8.5.0",
-				"eslint-plugin-svelte": "^2.32.4",
-				"prettier": "^3.0.0",
-				"prettier-plugin-svelte": "^3.0.0",
-				"sass": "^1.64.1",
+				"@sveltejs/kit": "^1.27.1",
+				"@types/markdown-it": "^13.0.5",
+				"@types/markdown-it-container": "^2.0.8",
+				"@types/markdown-it-footnote": "^3.0.2",
+				"@typescript-eslint/eslint-plugin": "^6.9.0",
+				"@typescript-eslint/parser": "^6.9.0",
+				"eslint": "^8.52.0",
+				"eslint-config-prettier": "^9.0.0",
+				"eslint-plugin-svelte": "^2.34.0",
+				"prettier": "^3.0.3",
+				"prettier-plugin-svelte": "^3.0.3",
+				"sass": "^1.69.4",
 				"sheodox-ui": "^0.20.3",
-				"svelte": "^4.1.1",
-				"svelte-check": "^3.4.6",
-				"tslib": "^2.6.1",
-				"typescript": "^5.1.6",
-				"vite": "^4.4.7",
-				"vitest": "^0.33.0"
+				"svelte": "^4.2.2",
+				"svelte-check": "^3.5.2",
+				"tslib": "^2.6.2",
+				"typescript": "^5.2.2",
+				"vite": "^4.5.0",
+				"vitest": "^0.34.6"
 			}
 		},
 		"node_modules/@aashutoshrathi/word-wrap": {
@@ -443,18 +443,18 @@
 			}
 		},
 		"node_modules/@eslint-community/regexpp": {
-			"version": "4.5.1",
-			"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
-			"integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
+			"version": "4.10.0",
+			"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+			"integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
 			"dev": true,
 			"engines": {
 				"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
 			}
 		},
 		"node_modules/@eslint/eslintrc": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz",
-			"integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==",
+			"version": "2.1.2",
+			"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+			"integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
 			"dev": true,
 			"dependencies": {
 				"ajv": "^6.12.4",
@@ -475,9 +475,9 @@
 			}
 		},
 		"node_modules/@eslint/js": {
-			"version": "8.44.0",
-			"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz",
-			"integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==",
+			"version": "8.52.0",
+			"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz",
+			"integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==",
 			"dev": true,
 			"engines": {
 				"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -508,21 +508,21 @@
 			}
 		},
 		"node_modules/@fortawesome/fontawesome-free": {
-			"version": "6.4.0",
-			"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.0.tgz",
-			"integrity": "sha512-0NyytTlPJwB/BF5LtRV8rrABDbe3TdTXqNB3PdZ+UUUZAEIrdOJdmABqKjt4AXwIoJNaRVVZEXxpNrqvE1GAYQ==",
+			"version": "6.4.2",
+			"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz",
+			"integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg==",
 			"hasInstallScript": true,
 			"engines": {
 				"node": ">=6"
 			}
 		},
 		"node_modules/@humanwhocodes/config-array": {
-			"version": "0.11.10",
-			"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
-			"integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
+			"version": "0.11.13",
+			"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
+			"integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
 			"dev": true,
 			"dependencies": {
-				"@humanwhocodes/object-schema": "^1.2.1",
+				"@humanwhocodes/object-schema": "^2.0.1",
 				"debug": "^4.1.1",
 				"minimatch": "^3.0.5"
 			},
@@ -544,15 +544,15 @@
 			}
 		},
 		"node_modules/@humanwhocodes/object-schema": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
-			"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
+			"integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
 			"dev": true
 		},
 		"node_modules/@jest/schemas": {
-			"version": "29.6.0",
-			"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz",
-			"integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==",
+			"version": "29.6.3",
+			"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+			"integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
 			"dev": true,
 			"dependencies": {
 				"@sinclair/typebox": "^0.27.8"
@@ -855,9 +855,9 @@
 			}
 		},
 		"node_modules/@sveltejs/kit": {
-			"version": "1.26.0",
-			"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.26.0.tgz",
-			"integrity": "sha512-CV/AlTziC05yrz7UjVqEd0pH6+2dnrbmcnHGr2d3jXtmOgzNnlDkXtX8g3BfJ6nntsPD+0jtS2PzhvRHblRz4A==",
+			"version": "1.27.1",
+			"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.27.1.tgz",
+			"integrity": "sha512-nYkOUJKbeI8fcwvt/cyhTdz6VG4kT6XVprNnzfIwif+IZ8RvxvJuPhPhYjz14ASIcMLpq8xC6D3X4xH3bvWi+Q==",
 			"dev": true,
 			"hasInstallScript": true,
 			"dependencies": {
@@ -953,9 +953,9 @@
 			"dev": true
 		},
 		"node_modules/@types/json-schema": {
-			"version": "7.0.12",
-			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
-			"integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
+			"version": "7.0.14",
+			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
+			"integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==",
 			"dev": true
 		},
 		"node_modules/@types/linkify-it": {
@@ -965,9 +965,9 @@
 			"dev": true
 		},
 		"node_modules/@types/markdown-it": {
-			"version": "12.2.3",
-			"resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
-			"integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
+			"version": "13.0.5",
+			"resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.5.tgz",
+			"integrity": "sha512-QhJP7hkq3FCrFNx0szMNCT/79CXfcEgUIA3jc5GBfeXqoKsk3R8JZm2wRXJ2DiyjbPE4VMFOSDemLFcUTZmHEQ==",
 			"dev": true,
 			"dependencies": {
 				"@types/linkify-it": "*",
@@ -975,18 +975,18 @@
 			}
 		},
 		"node_modules/@types/markdown-it-container": {
-			"version": "2.0.6",
-			"resolved": "https://registry.npmjs.org/@types/markdown-it-container/-/markdown-it-container-2.0.6.tgz",
-			"integrity": "sha512-euUVSCx2+tGV8BlI7yA7AXmNsLzYCoUbg/O2jJ0wzV/0oxKbmd5RJZI2map8cuEKgmjNy13ndFWRZZO+6rl0GA==",
+			"version": "2.0.8",
+			"resolved": "https://registry.npmjs.org/@types/markdown-it-container/-/markdown-it-container-2.0.8.tgz",
+			"integrity": "sha512-epl+pYkAXmMOncHnp0uWsGkM00r/+5ClRAiQJz7iX3NX5cydJcBkIJEPkORpL9DSgunXpXkZt9spYHbJPuSJZw==",
 			"dev": true,
 			"dependencies": {
 				"@types/markdown-it": "*"
 			}
 		},
 		"node_modules/@types/markdown-it-footnote": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/@types/markdown-it-footnote/-/markdown-it-footnote-3.0.0.tgz",
-			"integrity": "sha512-d6KGv1ZhzDdjMB0F+PmuCFuc4QPIsiyWbzldwxAqWz0TZHvSiHwTp5cj5D/6Qfqfv8mJ0HScaMgLt1zlcKjpyw==",
+			"version": "3.0.2",
+			"resolved": "https://registry.npmjs.org/@types/markdown-it-footnote/-/markdown-it-footnote-3.0.2.tgz",
+			"integrity": "sha512-9rr8j0a0TpTDTysTnMzdvbIV96X2p3XHWOOnlF+gwY8HOFCHxqN/93+1ZZlCrU7gpA4deiL63oKkdRrzRHzHxA==",
 			"dev": true,
 			"dependencies": {
 				"@types/markdown-it": "*"
@@ -1017,27 +1017,26 @@
 			"dev": true
 		},
 		"node_modules/@types/semver": {
-			"version": "7.5.0",
-			"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
-			"integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
+			"version": "7.5.4",
+			"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz",
+			"integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==",
 			"dev": true
 		},
 		"node_modules/@typescript-eslint/eslint-plugin": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.0.tgz",
-			"integrity": "sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==",
+			"version": "6.9.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz",
+			"integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==",
 			"dev": true,
 			"dependencies": {
 				"@eslint-community/regexpp": "^4.5.1",
-				"@typescript-eslint/scope-manager": "6.2.0",
-				"@typescript-eslint/type-utils": "6.2.0",
-				"@typescript-eslint/utils": "6.2.0",
-				"@typescript-eslint/visitor-keys": "6.2.0",
+				"@typescript-eslint/scope-manager": "6.9.0",
+				"@typescript-eslint/type-utils": "6.9.0",
+				"@typescript-eslint/utils": "6.9.0",
+				"@typescript-eslint/visitor-keys": "6.9.0",
 				"debug": "^4.3.4",
 				"graphemer": "^1.4.0",
 				"ignore": "^5.2.4",
 				"natural-compare": "^1.4.0",
-				"natural-compare-lite": "^1.4.0",
 				"semver": "^7.5.4",
 				"ts-api-utils": "^1.0.1"
 			},
@@ -1059,15 +1058,15 @@
 			}
 		},
 		"node_modules/@typescript-eslint/parser": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.0.tgz",
-			"integrity": "sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==",
+			"version": "6.9.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz",
+			"integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/scope-manager": "6.2.0",
-				"@typescript-eslint/types": "6.2.0",
-				"@typescript-eslint/typescript-estree": "6.2.0",
-				"@typescript-eslint/visitor-keys": "6.2.0",
+				"@typescript-eslint/scope-manager": "6.9.0",
+				"@typescript-eslint/types": "6.9.0",
+				"@typescript-eslint/typescript-estree": "6.9.0",
+				"@typescript-eslint/visitor-keys": "6.9.0",
 				"debug": "^4.3.4"
 			},
 			"engines": {
@@ -1087,13 +1086,13 @@
 			}
 		},
 		"node_modules/@typescript-eslint/scope-manager": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.0.tgz",
-			"integrity": "sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==",
+			"version": "6.9.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz",
+			"integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "6.2.0",
-				"@typescript-eslint/visitor-keys": "6.2.0"
+				"@typescript-eslint/types": "6.9.0",
+				"@typescript-eslint/visitor-keys": "6.9.0"
 			},
 			"engines": {
 				"node": "^16.0.0 || >=18.0.0"
@@ -1104,13 +1103,13 @@
 			}
 		},
 		"node_modules/@typescript-eslint/type-utils": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.0.tgz",
-			"integrity": "sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==",
+			"version": "6.9.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz",
+			"integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/typescript-estree": "6.2.0",
-				"@typescript-eslint/utils": "6.2.0",
+				"@typescript-eslint/typescript-estree": "6.9.0",
+				"@typescript-eslint/utils": "6.9.0",
 				"debug": "^4.3.4",
 				"ts-api-utils": "^1.0.1"
 			},
@@ -1131,9 +1130,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/types": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.0.tgz",
-			"integrity": "sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==",
+			"version": "6.9.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz",
+			"integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==",
 			"dev": true,
 			"engines": {
 				"node": "^16.0.0 || >=18.0.0"
@@ -1144,13 +1143,13 @@
 			}
 		},
 		"node_modules/@typescript-eslint/typescript-estree": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.0.tgz",
-			"integrity": "sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==",
+			"version": "6.9.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz",
+			"integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "6.2.0",
-				"@typescript-eslint/visitor-keys": "6.2.0",
+				"@typescript-eslint/types": "6.9.0",
+				"@typescript-eslint/visitor-keys": "6.9.0",
 				"debug": "^4.3.4",
 				"globby": "^11.1.0",
 				"is-glob": "^4.0.3",
@@ -1171,17 +1170,17 @@
 			}
 		},
 		"node_modules/@typescript-eslint/utils": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.0.tgz",
-			"integrity": "sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==",
+			"version": "6.9.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz",
+			"integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==",
 			"dev": true,
 			"dependencies": {
 				"@eslint-community/eslint-utils": "^4.4.0",
 				"@types/json-schema": "^7.0.12",
 				"@types/semver": "^7.5.0",
-				"@typescript-eslint/scope-manager": "6.2.0",
-				"@typescript-eslint/types": "6.2.0",
-				"@typescript-eslint/typescript-estree": "6.2.0",
+				"@typescript-eslint/scope-manager": "6.9.0",
+				"@typescript-eslint/types": "6.9.0",
+				"@typescript-eslint/typescript-estree": "6.9.0",
 				"semver": "^7.5.4"
 			},
 			"engines": {
@@ -1196,12 +1195,12 @@
 			}
 		},
 		"node_modules/@typescript-eslint/visitor-keys": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.0.tgz",
-			"integrity": "sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==",
+			"version": "6.9.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz",
+			"integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "6.2.0",
+				"@typescript-eslint/types": "6.9.0",
 				"eslint-visitor-keys": "^3.4.1"
 			},
 			"engines": {
@@ -1212,27 +1211,33 @@
 				"url": "https://opencollective.com/typescript-eslint"
 			}
 		},
+		"node_modules/@ungap/structured-clone": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+			"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+			"dev": true
+		},
 		"node_modules/@vitest/expect": {
-			"version": "0.33.0",
-			"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.33.0.tgz",
-			"integrity": "sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==",
+			"version": "0.34.6",
+			"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz",
+			"integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==",
 			"dev": true,
 			"dependencies": {
-				"@vitest/spy": "0.33.0",
-				"@vitest/utils": "0.33.0",
-				"chai": "^4.3.7"
+				"@vitest/spy": "0.34.6",
+				"@vitest/utils": "0.34.6",
+				"chai": "^4.3.10"
 			},
 			"funding": {
 				"url": "https://opencollective.com/vitest"
 			}
 		},
 		"node_modules/@vitest/runner": {
-			"version": "0.33.0",
-			"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.33.0.tgz",
-			"integrity": "sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==",
+			"version": "0.34.6",
+			"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz",
+			"integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==",
 			"dev": true,
 			"dependencies": {
-				"@vitest/utils": "0.33.0",
+				"@vitest/utils": "0.34.6",
 				"p-limit": "^4.0.0",
 				"pathe": "^1.1.1"
 			},
@@ -1268,9 +1273,9 @@
 			}
 		},
 		"node_modules/@vitest/snapshot": {
-			"version": "0.33.0",
-			"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.33.0.tgz",
-			"integrity": "sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==",
+			"version": "0.34.6",
+			"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz",
+			"integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==",
 			"dev": true,
 			"dependencies": {
 				"magic-string": "^0.30.1",
@@ -1282,9 +1287,9 @@
 			}
 		},
 		"node_modules/@vitest/spy": {
-			"version": "0.33.0",
-			"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.33.0.tgz",
-			"integrity": "sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==",
+			"version": "0.34.6",
+			"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz",
+			"integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==",
 			"dev": true,
 			"dependencies": {
 				"tinyspy": "^2.1.1"
@@ -1294,9 +1299,9 @@
 			}
 		},
 		"node_modules/@vitest/utils": {
-			"version": "0.33.0",
-			"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.33.0.tgz",
-			"integrity": "sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==",
+			"version": "0.34.6",
+			"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz",
+			"integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==",
 			"dev": true,
 			"dependencies": {
 				"diff-sequences": "^29.4.3",
@@ -1308,9 +1313,9 @@
 			}
 		},
 		"node_modules/acorn": {
-			"version": "8.9.0",
-			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
-			"integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
+			"version": "8.10.0",
+			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+			"integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
 			"dev": true,
 			"bin": {
 				"acorn": "bin/acorn"
@@ -1513,18 +1518,18 @@
 			}
 		},
 		"node_modules/chai": {
-			"version": "4.3.7",
-			"resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz",
-			"integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==",
+			"version": "4.3.10",
+			"resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz",
+			"integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==",
 			"dev": true,
 			"dependencies": {
 				"assertion-error": "^1.1.0",
-				"check-error": "^1.0.2",
-				"deep-eql": "^4.1.2",
-				"get-func-name": "^2.0.0",
-				"loupe": "^2.3.1",
+				"check-error": "^1.0.3",
+				"deep-eql": "^4.1.3",
+				"get-func-name": "^2.0.2",
+				"loupe": "^2.3.6",
 				"pathval": "^1.1.1",
-				"type-detect": "^4.0.5"
+				"type-detect": "^4.0.8"
 			},
 			"engines": {
 				"node": ">=4"
@@ -1547,10 +1552,13 @@
 			}
 		},
 		"node_modules/check-error": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
-			"integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
+			"integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
 			"dev": true,
+			"dependencies": {
+				"get-func-name": "^2.0.2"
+			},
 			"engines": {
 				"node": "*"
 			}
@@ -1802,9 +1810,9 @@
 			"dev": true
 		},
 		"node_modules/diff-sequences": {
-			"version": "29.4.3",
-			"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
-			"integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
+			"version": "29.6.3",
+			"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+			"integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
 			"dev": true,
 			"engines": {
 				"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -1901,27 +1909,28 @@
 			}
 		},
 		"node_modules/eslint": {
-			"version": "8.45.0",
-			"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz",
-			"integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==",
+			"version": "8.52.0",
+			"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz",
+			"integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==",
 			"dev": true,
 			"dependencies": {
 				"@eslint-community/eslint-utils": "^4.2.0",
-				"@eslint-community/regexpp": "^4.4.0",
-				"@eslint/eslintrc": "^2.1.0",
-				"@eslint/js": "8.44.0",
-				"@humanwhocodes/config-array": "^0.11.10",
+				"@eslint-community/regexpp": "^4.6.1",
+				"@eslint/eslintrc": "^2.1.2",
+				"@eslint/js": "8.52.0",
+				"@humanwhocodes/config-array": "^0.11.13",
 				"@humanwhocodes/module-importer": "^1.0.1",
 				"@nodelib/fs.walk": "^1.2.8",
-				"ajv": "^6.10.0",
+				"@ungap/structured-clone": "^1.2.0",
+				"ajv": "^6.12.4",
 				"chalk": "^4.0.0",
 				"cross-spawn": "^7.0.2",
 				"debug": "^4.3.2",
 				"doctrine": "^3.0.0",
 				"escape-string-regexp": "^4.0.0",
-				"eslint-scope": "^7.2.0",
-				"eslint-visitor-keys": "^3.4.1",
-				"espree": "^9.6.0",
+				"eslint-scope": "^7.2.2",
+				"eslint-visitor-keys": "^3.4.3",
+				"espree": "^9.6.1",
 				"esquery": "^1.4.2",
 				"esutils": "^2.0.2",
 				"fast-deep-equal": "^3.1.3",
@@ -1955,9 +1964,9 @@
 			}
 		},
 		"node_modules/eslint-config-prettier": {
-			"version": "8.8.0",
-			"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
-			"integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
+			"version": "9.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
+			"integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==",
 			"dev": true,
 			"bin": {
 				"eslint-config-prettier": "bin/cli.js"
@@ -1967,9 +1976,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-svelte": {
-			"version": "2.32.4",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.32.4.tgz",
-			"integrity": "sha512-VJ12i2Iogug1jvhwxSlognnfGj76P5gks/V4pUD4SCSVQOp14u47MNP0zAG8AQR3LT0Fi1iUvIFnY4l9z5Rwbg==",
+			"version": "2.34.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.34.0.tgz",
+			"integrity": "sha512-4RYUgNai7wr0v+T/kljMiYSjC/oqwgq5i+cPppawryAayj4C7WK1ixFlWCGmNmBppnoKCl4iA4ZPzPtlHcb4CA==",
 			"dev": true,
 			"dependencies": {
 				"@eslint-community/eslint-utils": "^4.2.0",
@@ -1982,7 +1991,7 @@
 				"postcss-safe-parser": "^6.0.0",
 				"postcss-selector-parser": "^6.0.11",
 				"semver": "^7.5.3",
-				"svelte-eslint-parser": "^0.32.2"
+				"svelte-eslint-parser": ">=0.33.0 <1.0.0"
 			},
 			"engines": {
 				"node": "^14.17.0 || >=16.0.0"
@@ -2001,9 +2010,9 @@
 			}
 		},
 		"node_modules/eslint-scope": {
-			"version": "7.2.1",
-			"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz",
-			"integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==",
+			"version": "7.2.2",
+			"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+			"integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
 			"dev": true,
 			"dependencies": {
 				"esrecurse": "^4.3.0",
@@ -2017,9 +2026,9 @@
 			}
 		},
 		"node_modules/eslint-visitor-keys": {
-			"version": "3.4.1",
-			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
-			"integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
+			"version": "3.4.3",
+			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+			"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
 			"dev": true,
 			"engines": {
 				"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2297,9 +2306,9 @@
 			}
 		},
 		"node_modules/globals": {
-			"version": "13.20.0",
-			"resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
-			"integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+			"version": "13.23.0",
+			"resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
+			"integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
 			"dev": true,
 			"dependencies": {
 				"type-fest": "^0.20.2"
@@ -2587,9 +2596,9 @@
 			"dev": true
 		},
 		"node_modules/lemmy-js-client": {
-			"version": "0.18.3-rc.3",
-			"resolved": "https://registry.npmjs.org/lemmy-js-client/-/lemmy-js-client-0.18.3-rc.3.tgz",
-			"integrity": "sha512-njixgXk4uMU4gGifnljwhSe9Kf445C4wAXcXhtpTtwPPLXpHQgxA1RASMb9Uq4zblfE6nC2JbrAka8y8N2N/Bw==",
+			"version": "0.19.0-rc.19",
+			"resolved": "https://registry.npmjs.org/lemmy-js-client/-/lemmy-js-client-0.19.0-rc.19.tgz",
+			"integrity": "sha512-kae8V33QixbyYIA+pn7+sCeOOWL3eRgnFaNkZU8Y8vxhwZExIhkZus9jzVt/BoyPddVlafyBHxgAUsWXLA4tRA==",
 			"dependencies": {
 				"cross-fetch": "^3.1.5",
 				"form-data": "^4.0.0"
@@ -2665,12 +2674,12 @@
 			"dev": true
 		},
 		"node_modules/loupe": {
-			"version": "2.3.6",
-			"resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
-			"integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
+			"version": "2.3.7",
+			"resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
+			"integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
 			"dev": true,
 			"dependencies": {
-				"get-func-name": "^2.0.0"
+				"get-func-name": "^2.0.1"
 			}
 		},
 		"node_modules/lower-case": {
@@ -2695,9 +2704,9 @@
 			}
 		},
 		"node_modules/magic-string": {
-			"version": "0.30.1",
-			"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz",
-			"integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==",
+			"version": "0.30.5",
+			"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
+			"integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
 			"dev": true,
 			"dependencies": {
 				"@jridgewell/sourcemap-codec": "^1.4.15"
@@ -2707,9 +2716,9 @@
 			}
 		},
 		"node_modules/markdown-it": {
-			"version": "13.0.1",
-			"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz",
-			"integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==",
+			"version": "13.0.2",
+			"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz",
+			"integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==",
 			"dependencies": {
 				"argparse": "^2.0.1",
 				"entities": "~3.0.1",
@@ -2841,15 +2850,15 @@
 			}
 		},
 		"node_modules/mlly": {
-			"version": "1.4.0",
-			"resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.0.tgz",
-			"integrity": "sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==",
+			"version": "1.4.2",
+			"resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz",
+			"integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==",
 			"dev": true,
 			"dependencies": {
-				"acorn": "^8.9.0",
+				"acorn": "^8.10.0",
 				"pathe": "^1.1.1",
 				"pkg-types": "^1.0.3",
-				"ufo": "^1.1.2"
+				"ufo": "^1.3.0"
 			}
 		},
 		"node_modules/mri": {
@@ -2900,12 +2909,6 @@
 			"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
 			"dev": true
 		},
-		"node_modules/natural-compare-lite": {
-			"version": "1.4.0",
-			"resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
-			"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
-			"dev": true
-		},
 		"node_modules/no-case": {
 			"version": "3.0.4",
 			"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
@@ -3199,9 +3202,9 @@
 			}
 		},
 		"node_modules/postcss-scss": {
-			"version": "4.0.6",
-			"resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz",
-			"integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==",
+			"version": "4.0.9",
+			"resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz",
+			"integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==",
 			"dev": true,
 			"funding": [
 				{
@@ -3211,13 +3214,17 @@
 				{
 					"type": "tidelift",
 					"url": "https://tidelift.com/funding/github/npm/postcss-scss"
+				},
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/ai"
 				}
 			],
 			"engines": {
 				"node": ">=12.0"
 			},
 			"peerDependencies": {
-				"postcss": "^8.4.19"
+				"postcss": "^8.4.29"
 			}
 		},
 		"node_modules/postcss-selector-parser": {
@@ -3243,9 +3250,9 @@
 			}
 		},
 		"node_modules/prettier": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz",
-			"integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==",
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
+			"integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==",
 			"dev": true,
 			"bin": {
 				"prettier": "bin/prettier.cjs"
@@ -3258,9 +3265,9 @@
 			}
 		},
 		"node_modules/prettier-plugin-svelte": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.0.0.tgz",
-			"integrity": "sha512-l3RQcPty2UBCoRh3yb9c5XCAmxkrc4BptAnbd5acO1gmSJtChOWkiEjnOvh7hvmtT4V80S8gXCOKAq8RNeIzSw==",
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.0.3.tgz",
+			"integrity": "sha512-dLhieh4obJEK1hnZ6koxF+tMUrZbV5YGvRpf2+OADyanjya5j0z1Llo8iGwiHmFWZVG/hLEw/AJD5chXd9r3XA==",
 			"dev": true,
 			"peerDependencies": {
 				"prettier": "^3.0.0",
@@ -3268,12 +3275,12 @@
 			}
 		},
 		"node_modules/pretty-format": {
-			"version": "29.6.1",
-			"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.1.tgz",
-			"integrity": "sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==",
+			"version": "29.7.0",
+			"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+			"integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
 			"dev": true,
 			"dependencies": {
-				"@jest/schemas": "^29.6.0",
+				"@jest/schemas": "^29.6.3",
 				"ansi-styles": "^5.0.0",
 				"react-is": "^18.0.0"
 			},
@@ -3397,9 +3404,9 @@
 			}
 		},
 		"node_modules/rollup": {
-			"version": "3.26.3",
-			"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.3.tgz",
-			"integrity": "sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==",
+			"version": "3.29.4",
+			"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+			"integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
 			"dev": true,
 			"bin": {
 				"rollup": "dist/bin/rollup"
@@ -3472,9 +3479,9 @@
 			}
 		},
 		"node_modules/sass": {
-			"version": "1.64.1",
-			"resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz",
-			"integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==",
+			"version": "1.69.4",
+			"resolved": "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz",
+			"integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==",
 			"dev": true,
 			"dependencies": {
 				"chokidar": ">=3.0.0 <4.0.0",
@@ -3710,9 +3717,9 @@
 			}
 		},
 		"node_modules/svelte": {
-			"version": "4.1.1",
-			"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.1.1.tgz",
-			"integrity": "sha512-Enick5fPFISLoVy0MFK45cG+YlQt6upw8skEK9zzTpJnH1DqEv8xOZwizCGSo3Q6HZ7KrZTM0J18poF7aQg5zw==",
+			"version": "4.2.2",
+			"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.2.tgz",
+			"integrity": "sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==",
 			"dev": true,
 			"dependencies": {
 				"@ampproject/remapping": "^2.2.1",
@@ -3726,7 +3733,7 @@
 				"estree-walker": "^3.0.3",
 				"is-reference": "^3.0.1",
 				"locate-character": "^3.0.0",
-				"magic-string": "^0.30.0",
+				"magic-string": "^0.30.4",
 				"periscopic": "^3.1.0"
 			},
 			"engines": {
@@ -3734,9 +3741,9 @@
 			}
 		},
 		"node_modules/svelte-check": {
-			"version": "3.4.6",
-			"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.4.6.tgz",
-			"integrity": "sha512-OBlY8866Zh1zHQTkBMPS6psPi7o2umTUyj6JWm4SacnIHXpWFm658pG32m3dKvKFL49V4ntAkfFHKo4ztH07og==",
+			"version": "3.5.2",
+			"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.5.2.tgz",
+			"integrity": "sha512-5a/YWbiH4c+AqAUP+0VneiV5bP8YOk9JL3jwvN+k2PEPLgpu85bjQc5eE67+eIZBBwUEJzmO3I92OqKcqbp3fw==",
 			"dev": true,
 			"dependencies": {
 				"@jridgewell/trace-mapping": "^0.3.17",
@@ -3756,16 +3763,16 @@
 			}
 		},
 		"node_modules/svelte-eslint-parser": {
-			"version": "0.32.2",
-			"resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.32.2.tgz",
-			"integrity": "sha512-Ok9D3A4b23iLQsONrjqtXtYDu5ZZ/826Blaw2LeFZVTg1pwofKDG4mz3/GYTax8fQ0plRGHI6j+d9VQYy5Lo/A==",
+			"version": "0.33.1",
+			"resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.33.1.tgz",
+			"integrity": "sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==",
 			"dev": true,
 			"dependencies": {
 				"eslint-scope": "^7.0.0",
 				"eslint-visitor-keys": "^3.0.0",
 				"espree": "^9.0.0",
-				"postcss": "^8.4.25",
-				"postcss-scss": "^4.0.6"
+				"postcss": "^8.4.29",
+				"postcss-scss": "^4.0.8"
 			},
 			"engines": {
 				"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -3905,18 +3912,18 @@
 			"dev": true
 		},
 		"node_modules/tinypool": {
-			"version": "0.6.0",
-			"resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.6.0.tgz",
-			"integrity": "sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==",
+			"version": "0.7.0",
+			"resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz",
+			"integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==",
 			"dev": true,
 			"engines": {
 				"node": ">=14.0.0"
 			}
 		},
 		"node_modules/tinyspy": {
-			"version": "2.1.1",
-			"resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz",
-			"integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==",
+			"version": "2.2.0",
+			"resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz",
+			"integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==",
 			"dev": true,
 			"engines": {
 				"node": ">=14.0.0"
@@ -3961,9 +3968,9 @@
 			}
 		},
 		"node_modules/tslib": {
-			"version": "2.6.1",
-			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
-			"integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==",
+			"version": "2.6.2",
+			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+			"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
 			"dev": true
 		},
 		"node_modules/type-check": {
@@ -4000,9 +4007,9 @@
 			}
 		},
 		"node_modules/typescript": {
-			"version": "5.1.6",
-			"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
-			"integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
+			"version": "5.2.2",
+			"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+			"integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
 			"dev": true,
 			"bin": {
 				"tsc": "bin/tsc",
@@ -4018,9 +4025,9 @@
 			"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
 		},
 		"node_modules/ufo": {
-			"version": "1.1.2",
-			"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz",
-			"integrity": "sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==",
+			"version": "1.3.1",
+			"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz",
+			"integrity": "sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==",
 			"dev": true
 		},
 		"node_modules/undici": {
@@ -4051,14 +4058,14 @@
 			"dev": true
 		},
 		"node_modules/vite": {
-			"version": "4.4.7",
-			"resolved": "https://registry.npmjs.org/vite/-/vite-4.4.7.tgz",
-			"integrity": "sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==",
+			"version": "4.5.0",
+			"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz",
+			"integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==",
 			"dev": true,
 			"dependencies": {
 				"esbuild": "^0.18.10",
-				"postcss": "^8.4.26",
-				"rollup": "^3.25.2"
+				"postcss": "^8.4.27",
+				"rollup": "^3.27.1"
 			},
 			"bin": {
 				"vite": "bin/vite.js"
@@ -4106,9 +4113,9 @@
 			}
 		},
 		"node_modules/vite-node": {
-			"version": "0.33.0",
-			"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.33.0.tgz",
-			"integrity": "sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==",
+			"version": "0.34.6",
+			"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz",
+			"integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==",
 			"dev": true,
 			"dependencies": {
 				"cac": "^6.7.14",
@@ -4116,7 +4123,7 @@
 				"mlly": "^1.4.0",
 				"pathe": "^1.1.1",
 				"picocolors": "^1.0.0",
-				"vite": "^3.0.0 || ^4.0.0"
+				"vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0"
 			},
 			"bin": {
 				"vite-node": "vite-node.mjs"
@@ -4143,23 +4150,23 @@
 			}
 		},
 		"node_modules/vitest": {
-			"version": "0.33.0",
-			"resolved": "https://registry.npmjs.org/vitest/-/vitest-0.33.0.tgz",
-			"integrity": "sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==",
+			"version": "0.34.6",
+			"resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz",
+			"integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==",
 			"dev": true,
 			"dependencies": {
 				"@types/chai": "^4.3.5",
 				"@types/chai-subset": "^1.3.3",
 				"@types/node": "*",
-				"@vitest/expect": "0.33.0",
-				"@vitest/runner": "0.33.0",
-				"@vitest/snapshot": "0.33.0",
-				"@vitest/spy": "0.33.0",
-				"@vitest/utils": "0.33.0",
+				"@vitest/expect": "0.34.6",
+				"@vitest/runner": "0.34.6",
+				"@vitest/snapshot": "0.34.6",
+				"@vitest/spy": "0.34.6",
+				"@vitest/utils": "0.34.6",
 				"acorn": "^8.9.0",
 				"acorn-walk": "^8.2.0",
 				"cac": "^6.7.14",
-				"chai": "^4.3.7",
+				"chai": "^4.3.10",
 				"debug": "^4.3.4",
 				"local-pkg": "^0.4.3",
 				"magic-string": "^0.30.1",
@@ -4168,9 +4175,9 @@
 				"std-env": "^3.3.3",
 				"strip-literal": "^1.0.1",
 				"tinybench": "^2.5.0",
-				"tinypool": "^0.6.0",
-				"vite": "^3.0.0 || ^4.0.0",
-				"vite-node": "0.33.0",
+				"tinypool": "^0.7.0",
+				"vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0",
+				"vite-node": "0.34.6",
 				"why-is-node-running": "^2.2.2"
 			},
 			"bin": {
diff --git a/package.json b/package.json
index c2545c4..38a9af8 100644
--- a/package.json
+++ b/package.json
@@ -1,9 +1,9 @@
 {
 	"name": "Alexandrite",
-	"version": "0.8.11",
+	"version": "0.8.12",
 	"private": true,
 	"scripts": {
-		"dev": "vite dev",
+		"dev": "vite dev --host 0.0.0.0",
 		"build": "vite build",
 		"preview": "vite preview",
 		"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
@@ -17,32 +17,32 @@
 	"devDependencies": {
 		"@sveltejs/adapter-auto": "^2.0.0",
 		"@sveltejs/adapter-node": "^1.3.1",
-		"@sveltejs/kit": "^1.22.3",
-		"@types/markdown-it": "^12.2.3",
-		"@types/markdown-it-container": "^2.0.6",
-		"@types/markdown-it-footnote": "^3.0.0",
-		"@typescript-eslint/eslint-plugin": "^6.2.0",
-		"@typescript-eslint/parser": "^6.2.0",
-		"eslint": "^8.45.0",
-		"eslint-config-prettier": "^8.5.0",
-		"eslint-plugin-svelte": "^2.32.4",
-		"prettier": "^3.0.0",
-		"prettier-plugin-svelte": "^3.0.0",
-		"sass": "^1.64.1",
+		"@sveltejs/kit": "^1.27.1",
+		"@types/markdown-it": "^13.0.5",
+		"@types/markdown-it-container": "^2.0.8",
+		"@types/markdown-it-footnote": "^3.0.2",
+		"@typescript-eslint/eslint-plugin": "^6.9.0",
+		"@typescript-eslint/parser": "^6.9.0",
+		"eslint": "^8.52.0",
+		"eslint-config-prettier": "^9.0.0",
+		"eslint-plugin-svelte": "^2.34.0",
+		"prettier": "^3.0.3",
+		"prettier-plugin-svelte": "^3.0.3",
+		"sass": "^1.69.4",
 		"sheodox-ui": "^0.20.3",
-		"svelte": "^4.1.1",
-		"svelte-check": "^3.4.6",
-		"tslib": "^2.6.1",
-		"typescript": "^5.1.6",
-		"vite": "^4.4.7",
-		"vitest": "^0.33.0"
+		"svelte": "^4.2.2",
+		"svelte-check": "^3.5.2",
+		"tslib": "^2.6.2",
+		"typescript": "^5.2.2",
+		"vite": "^4.5.0",
+		"vitest": "^0.34.6"
 	},
 	"type": "module",
 	"dependencies": {
-		"@fortawesome/fontawesome-free": "^6.4.0",
+		"@fortawesome/fontawesome-free": "^6.4.2",
 		"date-fns": "^2.30.0",
-		"lemmy-js-client": "^0.18.3-rc.3",
-		"markdown-it": "^13.0.1",
+		"lemmy-js-client": "^0.19.0-rc.19",
+		"markdown-it": "^13.0.2",
 		"markdown-it-container": "^3.0.0",
 		"markdown-it-footnote": "^3.0.3",
 		"markdown-it-ruby": "^0.1.1",
diff --git a/src/lib/CommunityJoin.svelte b/src/lib/CommunityJoin.svelte
index a713063..23ee06c 100644
--- a/src/lib/CommunityJoin.svelte
+++ b/src/lib/CommunityJoin.svelte
@@ -31,7 +31,6 @@
 		}
 
 		const res = await client.followCommunity({
-			auth: jwt,
 			follow: communityView.subscribed === 'NotSubscribed',
 			community_id: communityView.community.id
 		});
diff --git a/src/lib/CommunitySelector.svelte b/src/lib/CommunitySelector.svelte
index ff0d683..72d4da3 100644
--- a/src/lib/CommunitySelector.svelte
+++ b/src/lib/CommunitySelector.svelte
@@ -90,7 +90,6 @@
 				}
 
 				const res = await client.getCommunity({
-					auth: jwt,
 					name: communityName
 				});
 
@@ -102,7 +101,6 @@
 			}
 		} else {
 			const comms = await client.search({
-				auth: jwt,
 				type_: 'Communities',
 				q: searchText,
 				limit: 50
diff --git a/src/lib/InboxReadButton.svelte b/src/lib/InboxReadButton.svelte
index 98e7a25..83f8ccc 100644
--- a/src/lib/InboxReadButton.svelte
+++ b/src/lib/InboxReadButton.svelte
@@ -37,7 +37,6 @@
 
 		if (content.type === 'reply') {
 			const res = await client.markCommentReplyAsRead({
-				auth: jwt,
 				comment_reply_id: id,
 				read
 			});
@@ -45,14 +44,12 @@
 			cvStore.updateView(replyViewToContentView(res.comment_reply_view));
 		} else if (content.type === 'mention') {
 			const res = await client.markPersonMentionAsRead({
-				auth: jwt,
 				person_mention_id: id,
 				read
 			});
 			cvStore.updateView(mentionViewToContentView(res.person_mention_view));
 		} else if (content.type === 'message') {
 			const res = await client.markPrivateMessageAsRead({
-				auth: jwt,
 				private_message_id: id,
 				read
 			});
diff --git a/src/lib/MarkdownEditor.svelte b/src/lib/MarkdownEditor.svelte
index 3d42871..b0f2cbc 100644
--- a/src/lib/MarkdownEditor.svelte
+++ b/src/lib/MarkdownEditor.svelte
@@ -194,7 +194,6 @@
 	// 		busy = true;
 	// 		const { selectionStart } = textarea,
 	// 			res = await client.uploadImage({
-	// 				auth: jwt,
 	// 				image: file
 	// 			});
 	// 		console.log(res);
diff --git a/src/lib/PostPage.svelte b/src/lib/PostPage.svelte
index 0729a20..3ac9452 100644
--- a/src/lib/PostPage.svelte
+++ b/src/lib/PostPage.svelte
@@ -452,7 +452,6 @@
 		}
 		const res = await client.createComment({
 			content: body.content as string,
-			auth: jwt,
 			post_id: postView.post.id,
 			language_id: body.languageId ? Number(body.languageId) : undefined
 		});
@@ -514,7 +513,6 @@
 
 		const { comments, busy, error } = await loadComments(async () => {
 			const { comments } = await client.getComments({
-				auth: jwt,
 				post_id: postView.post.id,
 				limit: 100,
 				page: commentsPageNum++,
@@ -541,7 +539,6 @@
 		commentExpandLoadingIds = commentExpandLoadingIds;
 		await loadComments(async () => {
 			const { comments } = await client.getComments({
-				auth: jwt,
 				post_id: postView.post.id,
 				limit: 100,
 				parent_id: e.detail,
@@ -570,7 +567,7 @@
 	onMount(async () => {
 		if (jwt) {
 			// getting the post has a side effect of marking it and its comments as read
-			const res = await client.getPost({ id: postView.post.id, auth: jwt }).then((res) => {
+			const res = await client.getPost({ id: postView.post.id }).then((res) => {
 				res.post_view.read = true;
 				res.post_view.unread_comments = 0;
 				return res;
diff --git a/src/lib/PrivateMessage.svelte b/src/lib/PrivateMessage.svelte
index 2dece71..ceceacd 100644
--- a/src/lib/PrivateMessage.svelte
+++ b/src/lib/PrivateMessage.svelte
@@ -122,7 +122,6 @@
 			return;
 		}
 		await client.createPrivateMessageReport({
-			auth: jwt,
 			reason: e.detail,
 			private_message_id: privateMessageView.private_message.id
 		});
@@ -154,7 +153,6 @@
 		}
 		if (confirm('Are you sure you want to delete this message?')) {
 			await client.deletePrivateMessage({
-				auth: jwt,
 				deleted: true,
 				private_message_id: privateMessageView.private_message.id
 			});
diff --git a/src/lib/PrivateMessageCompose.svelte b/src/lib/PrivateMessageCompose.svelte
index 14eba88..9697cc6 100644
--- a/src/lib/PrivateMessageCompose.svelte
+++ b/src/lib/PrivateMessageCompose.svelte
@@ -61,7 +61,6 @@
 			// if they're editing a message, save the changes, don't send a new one
 			if (privateMessageView) {
 				res = await client.editPrivateMessage({
-					auth: jwt,
 					content: body.content as string,
 					private_message_id: privateMessageView.private_message.id
 				});
@@ -70,7 +69,6 @@
 			} else {
 				//else just create a new message
 				res = await client.createPrivateMessage({
-					auth: jwt,
 					content: body.content as string,
 					recipient_id: to.id
 				});
diff --git a/src/lib/UserCounts.svelte b/src/lib/UserCounts.svelte
index 9729baa..c328fc4 100644
--- a/src/lib/UserCounts.svelte
+++ b/src/lib/UserCounts.svelte
@@ -3,14 +3,12 @@
 		<Stack dir="r" gap={2} align="center">
 			<strong>{count.count.toLocaleString()}</strong>
 			<span class="muted">{count.label}</span>
-			<strong>{count.score.toLocaleString()}</strong>
-			<Icon icon="trophy" />
 		</Stack>
 	{/each}
 </Stack>
 
 <script lang="ts">
-	import { Stack, Icon } from 'sheodox-ui';
+	import { Stack } from 'sheodox-ui';
 	import type { PersonView } from 'lemmy-js-client';
 
 	export let personView: PersonView;
@@ -18,13 +16,11 @@
 	$: counts = [
 		{
 			label: personView.counts.post_count === 1 ? 'Post' : 'Posts',
-			score: personView.counts.post_score,
 			count: personView.counts.post_count,
 			icon: 'file-lines'
 		},
 		{
 			label: personView.counts.comment_count === 1 ? 'Comment' : 'Comments',
-			score: personView.counts.comment_score,
 			count: personView.counts.comment_count,
 			icon: 'comments'
 		}
diff --git a/src/lib/comments/Comment.svelte b/src/lib/comments/Comment.svelte
index 191dd4f..6807cd2 100644
--- a/src/lib/comments/Comment.svelte
+++ b/src/lib/comments/Comment.svelte
@@ -310,6 +310,9 @@
 	let showReportModal = false;
 	let replyForm: HTMLFormElement;
 	let editForm: HTMLFormElement;
+	$: isAdmin = $siteMeta.admins.some(
+		(admin) => admin.person.actor_id === $siteMeta.my_user?.local_user_view.person.actor_id
+	);
 	$: replyState = createStatefulForm(replyForm, replySubmit);
 	$: editState = createStatefulForm(editForm, editSubmit);
 	$: voteState = createStatefulAction<number>(async (score) => {
@@ -318,7 +321,6 @@
 		}
 
 		const res = await client.likeComment({
-			auth: jwt,
 			comment_id: comment.id,
 			score
 		});
@@ -378,7 +380,6 @@
 
 		const res = await client.createComment({
 			content: body.content as string,
-			auth: jwt,
 			post_id: contentView.view.post.id,
 			parent_id,
 			language_id: body.languageId ? Number(body.languageId) : undefined
@@ -400,7 +401,6 @@
 
 		const res = await client.editComment({
 			content: body.content as string,
-			auth: jwt,
 			comment_id: Number(body.commentId),
 			language_id: body.languageId ? Number(body.languageId) : undefined
 		});
@@ -415,7 +415,6 @@
 		}
 
 		const res = await client.deleteComment({
-			auth: jwt,
 			comment_id: comment.id,
 			deleted
 		});
@@ -429,7 +428,6 @@
 			return;
 		}
 		const res = await client.saveComment({
-			auth: jwt,
 			comment_id: contentView.view.comment.id,
 			save: !contentView.view.saved
 		});
@@ -441,7 +439,6 @@
 			return;
 		}
 		await client.createCommentReport({
-			auth: jwt,
 			reason: e.detail,
 			comment_id: contentView.view.comment.id
 		});
@@ -458,7 +455,6 @@
 			return;
 		}
 		await client.blockPerson({
-			auth: jwt,
 			person_id: contentView.view.creator.id,
 			block
 		});
@@ -597,8 +593,6 @@
 			});
 		}
 
-		const isAdmin = $siteMeta.my_user?.local_user_view.person.admin ?? false;
-
 		if (isCommunityModerator || isAdmin) {
 			const warn = isCommunityModerator ? $showModlogWarningModerated : $showModlogWarning,
 				modlogBase = `/${$profile.instance}/modlog${warn ? '' : '/view'}`;
diff --git a/src/lib/community-context/community-context.ts b/src/lib/community-context/community-context.ts
index 0345dc3..7e0fc68 100644
--- a/src/lib/community-context/community-context.ts
+++ b/src/lib/community-context/community-context.ts
@@ -37,7 +37,6 @@ export const createCommunityContext = () => {
 		const { client, jwt } = get(profile);
 
 		const res = await client.getCommunity({
-			auth: jwt,
 			name
 		});
 
diff --git a/src/lib/feed-query.ts b/src/lib/feed-query.ts
index 4576453..5cb3048 100644
--- a/src/lib/feed-query.ts
+++ b/src/lib/feed-query.ts
@@ -55,7 +55,6 @@ export const loadFeedData = async (filters: FeedDataQuery): Promise<ApiFeedLoad>
 	if (filters.username) {
 		const userDetails = await client.getPersonDetails({
 			sort: postQuery.sort,
-			auth: jwt,
 			username: filters.username,
 			limit: 50,
 			page,
@@ -72,7 +71,6 @@ export const loadFeedData = async (filters: FeedDataQuery): Promise<ApiFeedLoad>
 	if (typePosts || typeSaved) {
 		const postViews = await client
 			.getPosts({
-				auth: jwt,
 				limit: 50,
 				page,
 				community_name: filters.communityName ?? undefined,
@@ -98,7 +96,6 @@ export const loadFeedData = async (filters: FeedDataQuery): Promise<ApiFeedLoad>
 			query,
 			commentViews: await client
 				.getComments({
-					auth: jwt,
 					page,
 					sort: query.sort,
 					type_: query.listing,
diff --git a/src/lib/feeds/posts/CommunityHeader.svelte b/src/lib/feeds/posts/CommunityHeader.svelte
index 8d452d5..7ea227f 100644
--- a/src/lib/feeds/posts/CommunityHeader.svelte
+++ b/src/lib/feeds/posts/CommunityHeader.svelte
@@ -38,7 +38,6 @@
 			return;
 		}
 		const res = await client.blockCommunity({
-			auth: jwt,
 			community_id: community.id,
 			block
 		});
diff --git a/src/lib/feeds/posts/PostLayout.svelte b/src/lib/feeds/posts/PostLayout.svelte
index b9be03b..2705d10 100644
--- a/src/lib/feeds/posts/PostLayout.svelte
+++ b/src/lib/feeds/posts/PostLayout.svelte
@@ -186,7 +186,10 @@
 	$: isMyPost = postView.creator.local && postView.creator.name === username;
 	$: isCommunityModerator =
 		$siteMeta.my_user?.moderates?.some((m) => m.community.id === postView.community.id) ?? false;
-	$: isAdminOfCommunity = $siteMeta.my_user?.local_user_view.person.admin && postView.community.local;
+	$: isAdmin = $siteMeta.admins.some(
+		(admin) => admin.person.actor_id === $siteMeta.my_user?.local_user_view.person.actor_id
+	);
+	$: isAdminOfCommunity = isAdmin && postView.community.local;
 	$: communityName = nameAtInstance(postView.community);
 	$: community = weaklyGetCommunity(communityName);
 	$: postMadeByModerator = $community?.moderators.some((m) => m.moderator.id === postView.creator.id);
@@ -228,7 +231,6 @@
 
 		const pv = await client
 			.likePost({
-				auth: jwt,
 				post_id: postView.post.id,
 				score: score
 			})
@@ -248,7 +250,6 @@
 		const pv = await client
 			.savePost({
 				post_id: postView.post.id,
-				auth: jwt,
 				save: !postView.saved
 			})
 			.then(({ post_view }) => post_view);
@@ -262,7 +263,6 @@
 			return;
 		}
 		await client.createPostReport({
-			auth: jwt,
 			reason: e.detail,
 			post_id: postView.post.id
 		});
@@ -450,8 +450,6 @@
 			});
 		}
 
-		const isAdmin = $siteMeta.my_user?.local_user_view.person.admin ?? false;
-
 		if (isCommunityModerator || isAdmin) {
 			const warn = isCommunityModerator ? $showModlogWarningModerated : $showModlogWarning,
 				modlogBase = `/${$profile.instance}/modlog${warn ? '' : '/view'}`;
@@ -482,7 +480,6 @@
 			return;
 		}
 		await client.blockPerson({
-			auth: jwt,
 			person_id: postView.creator.id,
 			block: true
 		});
@@ -500,7 +497,6 @@
 			return;
 		}
 		await client.blockCommunity({
-			auth: jwt,
 			community_id: postView.community.id,
 			block: true
 		});
diff --git a/src/lib/feeds/posts/UserBadges.svelte b/src/lib/feeds/posts/UserBadges.svelte
index 00e302b..9d090a7 100644
--- a/src/lib/feeds/posts/UserBadges.svelte
+++ b/src/lib/feeds/posts/UserBadges.svelte
@@ -17,8 +17,10 @@
 	import { profile } from '$lib/profiles/profiles';
 	import { getCommunityContext } from '$lib/community-context/community-context';
 	import { nameAtInstance } from '$lib/nav-utils';
+	import { getAppContext } from '$lib/app-context';
 
 	$: username = $profile.username;
+	const { siteMeta } = getAppContext();
 
 	export let user: Person;
 	export let postOP: string | boolean | undefined = ''; // actor_id of someone who made a post
@@ -29,6 +31,7 @@
 	const communityContext = getCommunityContext();
 	$: com = community ? communityContext.weaklyGetCommunity(nameAtInstance(community)) : null;
 	$: isMod = $com?.moderators.some((mod) => mod.moderator.actor_id === user.actor_id);
+	$: isAdmin = $siteMeta.admins.some((admin) => admin.person.actor_id === user.actor_id);
 
 	$: badges = (function () {
 		const badges = [];
@@ -49,7 +52,7 @@
 		if (user.bot_account) {
 			badges.push({ color: 'cyan', text: 'Bot' });
 		}
-		if (user.admin) {
+		if (isAdmin) {
 			badges.push({ color: 'orange', text: 'Admin' });
 		}
 		if (isMod) {
diff --git a/src/lib/instance/InstanceSidebar.svelte b/src/lib/instance/InstanceSidebar.svelte
index 6e12e40..da1f812 100644
--- a/src/lib/instance/InstanceSidebar.svelte
+++ b/src/lib/instance/InstanceSidebar.svelte
@@ -13,11 +13,7 @@
 		{/if}
 	</Stack>
 	<div slot="end">
-		<ModlogLink
-			highlight={$siteMeta.my_user?.local_user_view.person.admin ?? false}
-			highlightColor="orange"
-			warn={$showModlogWarning}
-		/>
+		<ModlogLink highlight={isAdmin ?? false} highlightColor="orange" warn={$showModlogWarning} />
 	</div>
 </Sidebar>
 
@@ -35,6 +31,9 @@
 	const { siteMeta } = getAppContext();
 	const { showModlogWarning } = getSettingsContext();
 	$: siteView = $siteMeta.site_view;
+	$: isAdmin = $siteMeta.admins.some(
+		(admin) => admin.person.actor_id === $siteMeta.my_user?.local_user_view.person.actor_id
+	);
 
 	$: siteCounts = [
 		{
diff --git a/src/lib/lemmy-client.ts b/src/lib/lemmy-client.ts
index d21b70d..0b85b7e 100644
--- a/src/lib/lemmy-client.ts
+++ b/src/lib/lemmy-client.ts
@@ -2,8 +2,8 @@ import { error } from '@sveltejs/kit';
 import { LemmyHttp } from 'lemmy-js-client';
 import { createAutoExpireToast } from 'sheodox-ui';
 import { getMessageFromError } from './error-messages';
-
-const APP_USER_AGENT = 'Alexandrite https://alexandrite.app';
+import { profile } from './profiles/profiles';
+import { get } from 'svelte/store';
 
 function tryParse(str: string) {
 	try {
@@ -13,17 +13,49 @@ function tryParse(str: string) {
 	}
 }
 
-export const createLemmyClient = (instanceUrl: string, onExpire?: () => unknown) => {
+export const createLemmyClient = (
+	instanceUrl: string,
+	{ onExpire, useProfile = true, jwt }: { onExpire?: () => unknown; useProfile?: boolean; jwt?: string }
+) => {
 	return new LemmyHttp(instanceUrl, {
 		fetchFunction: async (input: URL | RequestInfo, init?: RequestInit | undefined) => {
 			if (!init) {
 				init = {};
 			}
 
-			init.headers = {
-				'user-agent': APP_USER_AGENT,
-				...(init.headers || {})
-			};
+			if (useProfile) {
+				// use the passed jwt if given (used on login page)
+				jwt ??= get(profile).jwt;
+
+				init.headers = {
+					...(init.headers || {}),
+					...(jwt
+						? {
+								Authorization: `Bearer ${jwt}`
+						  }
+						: {})
+				};
+
+				// 0.18.x compatibility for auth
+				if (input instanceof URL && jwt) {
+					input.searchParams.set('auth', jwt);
+				} else if (typeof input === 'string' && jwt) {
+					const u = new URL(input);
+					u.searchParams.set('auth', jwt);
+					input = u.toString();
+				}
+
+				// taken from Photon, thanks Xylight!
+				if (init?.body && jwt) {
+					try {
+						const json = JSON.parse(init.body.toString());
+						json.auth = jwt;
+						init.body = JSON.stringify(json);
+					} catch (e) {
+						// It seems this isn't a JSON request. Ignore adding an auth parameter.
+					}
+				}
+			}
 
 			let res;
 			try {
diff --git a/src/lib/mod/ModContext.svelte b/src/lib/mod/ModContext.svelte
index e78660b..c4fecee 100644
--- a/src/lib/mod/ModContext.svelte
+++ b/src/lib/mod/ModContext.svelte
@@ -106,7 +106,6 @@
 		try {
 			if (!opt.ban) {
 				const res = await client.banFromCommunity({
-					auth: jwt,
 					person_id: opt.personId,
 					community_id: opt.communityId,
 					ban: false
@@ -143,7 +142,6 @@
 							: // expires is the number of *seconds* since epoch
 							  Math.floor(calculateBanExpiration(banOpts.expireDays).getTime() / 1000),
 						res = await client.banFromCommunity({
-							auth: jwt,
 							person_id: opt.personId,
 							community_id: opt.communityId,
 							ban: true,
@@ -171,7 +169,6 @@
 		try {
 			if (!opt.removed) {
 				const res = await client.removePost({
-					auth: jwt,
 					post_id: opt.postId,
 					removed: false
 				});
@@ -183,7 +180,6 @@
 
 				if (reason !== null) {
 					const res = await client.removePost({
-						auth: jwt,
 						post_id: opt.postId,
 						reason,
 						removed: true
@@ -207,7 +203,6 @@
 		try {
 			if (!opt.removed) {
 				const res = await client.removeComment({
-					auth: jwt,
 					comment_id: opt.commentId,
 					removed: false
 				});
@@ -218,7 +213,6 @@
 
 				if (reason !== null) {
 					const res = await client.removeComment({
-						auth: jwt,
 						comment_id: opt.commentId,
 						reason,
 						removed: true
@@ -242,7 +236,6 @@
 		setPending(pendingType, opt.postId, true);
 		try {
 			const res = await client.featurePost({
-				auth: jwt,
 				post_id: opt.postId,
 				featured: opt.featured,
 				feature_type: opt.featureType
@@ -266,7 +259,6 @@
 		setPending('lock-post', opt.postId, true);
 		try {
 			const res = await client.lockPost({
-				auth: jwt,
 				post_id: opt.postId,
 				locked: opt.locked
 			});
@@ -286,7 +278,6 @@
 		setPending('distinguish-comment', opt.commentId, true);
 		try {
 			const res = await client.distinguishComment({
-				auth: jwt,
 				comment_id: opt.commentId,
 				distinguished: opt.distinguished
 			});
@@ -309,7 +300,6 @@
 
 		try {
 			const res = await client.addModToCommunity({
-				auth: jwt,
 				added: opt.added,
 				community_id: opt.communityId,
 				person_id: opt.personId
@@ -317,7 +307,7 @@
 
 			successToast(opt.added ? `Added ${opt.personName} to mods` : `Removed ${opt.personName} from mods`);
 
-			communityContext.updateCommunity(await client.getCommunity({ auth: jwt, id: opt.communityId }));
+			communityContext.updateCommunity(await client.getCommunity({ id: opt.communityId }));
 
 			if (opt.personId === $siteMeta.my_user?.local_user_view.person.id && !opt.added) {
 				// user resigned, remove this community from siteMeta to hide mod actions
diff --git a/src/lib/profiles/profiles.ts b/src/lib/profiles/profiles.ts
index 883e082..01884b6 100644
--- a/src/lib/profiles/profiles.ts
+++ b/src/lib/profiles/profiles.ts
@@ -144,7 +144,7 @@ export function setDefaultProfile(id: string) {
 function profileToStoreValue(profile: Profile) {
 	return {
 		...profile,
-		client: createLemmyClient(`https://${profile.instance}`, handleExpiredProfile),
+		client: createLemmyClient(`https://${profile.instance}`, { onExpire: handleExpiredProfile }),
 		loggedIn: !!profile.jwt
 	};
 }
diff --git a/src/routes/(app)/[instance]/+layout.svelte b/src/routes/(app)/[instance]/+layout.svelte
index 561b635..90bafdd 100644
--- a/src/routes/(app)/[instance]/+layout.svelte
+++ b/src/routes/(app)/[instance]/+layout.svelte
@@ -199,9 +199,7 @@
 			return;
 		}
 
-		const unread = await client.getUnreadCount({
-			auth: jwt
-		});
+		const unread = await client.getUnreadCount();
 
 		$unreadCount = unread.replies + unread.mentions + unread.private_messages;
 	}
@@ -211,9 +209,7 @@
 			return;
 		}
 
-		const unread = await client.getReportCount({
-			auth: jwt
-		});
+		const unread = await client.getReportCount({});
 
 		$unreadReportCount = unread.post_reports + unread.comment_reports;
 	}
diff --git a/src/routes/(app)/[instance]/+layout.ts b/src/routes/(app)/[instance]/+layout.ts
index a0926f5..be30831 100644
--- a/src/routes/(app)/[instance]/+layout.ts
+++ b/src/routes/(app)/[instance]/+layout.ts
@@ -9,9 +9,7 @@ export const load = (async () => {
 		throw redirect(303, '/instance');
 	}
 
-	const site = await client.getSite({
-		auth: jwt
-	});
+	const site = await client.getSite();
 
 	const localUser = site.my_user?.local_user_view.local_user;
 	if (localUser) {
diff --git a/src/routes/(app)/[instance]/c/[communityName]/+page.ts b/src/routes/(app)/[instance]/c/[communityName]/+page.ts
index 56b61e1..bcbb771 100644
--- a/src/routes/(app)/[instance]/c/[communityName]/+page.ts
+++ b/src/routes/(app)/[instance]/c/[communityName]/+page.ts
@@ -3,10 +3,9 @@ import { profile } from '$lib/profiles/profiles';
 import { get } from 'svelte/store';
 
 export const load = (async ({ url, params }) => {
-	const { client, jwt, settings } = get(profile);
+	const { client, settings } = get(profile);
 	const cv = await client.getCommunity({
-		name: params.communityName,
-		auth: jwt
+		name: params.communityName
 	});
 
 	return {
diff --git a/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/+layout.ts b/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/+layout.ts
index e478d80..5caa836 100644
--- a/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/+layout.ts
+++ b/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/+layout.ts
@@ -3,11 +3,10 @@ import { get } from 'svelte/store';
 import type { LayoutLoad } from './$types';
 
 export const load = (async ({ params }) => {
-	const { client, jwt } = get(profile);
+	const { client } = get(profile);
 
 	const cv = await client.getCommunity({
-		name: params.communityName,
-		auth: jwt
+		name: params.communityName
 	});
 
 	return {
diff --git a/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/delete/+page.svelte b/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/delete/+page.svelte
index 6516034..1d99441 100644
--- a/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/delete/+page.svelte
+++ b/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/delete/+page.svelte
@@ -55,7 +55,6 @@
 
 		try {
 			await client.deletePost({
-				auth: jwt,
 				post_id: data.postView.post.id,
 				// todo support un-deleting? comments can be undeleted, but
 				// it seems you can't view a deleted post so not sure how you'd undelete a post
diff --git a/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/delete/+page.ts b/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/delete/+page.ts
index 3b967ad..cb82eea 100644
--- a/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/delete/+page.ts
+++ b/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/delete/+page.ts
@@ -4,13 +4,13 @@ import { get } from 'svelte/store';
 import { profile } from '$lib/profiles/profiles';
 
 export const load = (async ({ params }) => {
-	const { client, jwt } = get(profile);
+	const { client } = get(profile);
 
 	if (!params.postId) {
 		throw error(400, 'Missing Post ID');
 	}
 
-	const postView = client.getPost({ id: +params.postId, auth: jwt }).then(({ post_view }) => post_view);
+	const postView = client.getPost({ id: +params.postId }).then(({ post_view }) => post_view);
 
 	// TODO redirect if it's not your post
 
diff --git a/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/edit/+page.svelte b/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/edit/+page.svelte
index a879a82..ec9b30d 100644
--- a/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/edit/+page.svelte
+++ b/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/edit/+page.svelte
@@ -11,6 +11,7 @@
 		content={data.postView.post.body}
 		url={data.postView.post.url}
 		postButtonText="Update"
+		nsfw={data.postView.post.nsfw}
 	/>
 </form>
 
@@ -54,7 +55,6 @@
 		try {
 			// treat both Subscribed and Pending as the same
 			await client.editPost({
-				auth: jwt,
 				post_id: Number(data.postView.post.id),
 				...formFields
 			});
diff --git a/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/edit/+page.ts b/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/edit/+page.ts
index 6b26a7d..8666b24 100644
--- a/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/edit/+page.ts
+++ b/src/routes/(app)/[instance]/c/[communityName]/post/[postId]/edit/+page.ts
@@ -14,7 +14,7 @@ export const load = (async ({ params }) => {
 		throw error(400, 'Not Logged In');
 	}
 
-	const postView = client.getPost({ id: +params.postId, auth: jwt }).then(({ post_view }) => post_view);
+	const postView = client.getPost({ id: +params.postId }).then(({ post_view }) => post_view);
 
 	// TODO redirect if it's not your post
 
diff --git a/src/routes/(app)/[instance]/comment/[commentId]/+page.ts b/src/routes/(app)/[instance]/comment/[commentId]/+page.ts
index 76eb152..aeb5ada 100644
--- a/src/routes/(app)/[instance]/comment/[commentId]/+page.ts
+++ b/src/routes/(app)/[instance]/comment/[commentId]/+page.ts
@@ -4,11 +4,10 @@ import { profile } from '$lib/profiles/profiles';
 import { get } from 'svelte/store';
 
 export const load = (async ({ params }) => {
-	const { client, jwt } = get(profile);
+	const { client } = get(profile);
 
 	const { comments } = await client.getComments({
 			parent_id: +params.commentId,
-			auth: jwt,
 			max_depth: 8,
 			type_: 'All',
 			sort: 'Hot'
@@ -22,6 +21,6 @@ export const load = (async ({ params }) => {
 	return {
 		commentViews: comments,
 		commentId: +params.commentId,
-		postView: client.getPost({ id: postId, auth: jwt }).then(({ post_view }) => post_view)
+		postView: client.getPost({ id: postId }).then(({ post_view }) => post_view)
 	};
 }) satisfies PageLoad;
diff --git a/src/routes/(app)/[instance]/communities/+page.svelte b/src/routes/(app)/[instance]/communities/+page.svelte
index 3afa022..c92a978 100644
--- a/src/routes/(app)/[instance]/communities/+page.svelte
+++ b/src/routes/(app)/[instance]/communities/+page.svelte
@@ -80,7 +80,6 @@
 			async (page) => {
 				return await client
 					.listCommunities({
-						auth: jwt,
 						page,
 						limit: 50,
 						type_: data.query.listing,
diff --git a/src/routes/(app)/[instance]/create/post/+layout.ts b/src/routes/(app)/[instance]/create/post/+layout.ts
index 2793fa0..b623b44 100644
--- a/src/routes/(app)/[instance]/create/post/+layout.ts
+++ b/src/routes/(app)/[instance]/create/post/+layout.ts
@@ -9,8 +9,7 @@ export const load = (async ({ url }) => {
 
 	const cv = communityName
 		? await client.getCommunity({
-				name: communityName,
-				auth: jwt
+				name: communityName
 		  })
 		: null;
 
diff --git a/src/routes/(app)/[instance]/create/post/+page.svelte b/src/routes/(app)/[instance]/create/post/+page.svelte
index ca483a2..fc4af6a 100644
--- a/src/routes/(app)/[instance]/create/post/+page.svelte
+++ b/src/routes/(app)/[instance]/create/post/+page.svelte
@@ -50,7 +50,6 @@
 
 		// treat both Subscribed and Pending as the same
 		const postRes = await client.createPost({
-			auth: jwt,
 			// tricks bots by submitting an empty string, just doing what lemmy-ui is doing
 			honeypot,
 			community_id: Number(body.communityId),
diff --git a/src/routes/(app)/[instance]/create/post/+page.ts b/src/routes/(app)/[instance]/create/post/+page.ts
index 32ba1f7..a8d65c1 100644
--- a/src/routes/(app)/[instance]/create/post/+page.ts
+++ b/src/routes/(app)/[instance]/create/post/+page.ts
@@ -9,7 +9,6 @@ export const load = (async ({ url }) => {
 	return {
 		crossPost: crossPostId
 			? client.getPost({
-					auth: jwt,
 					id: +crossPostId
 			  })
 			: null
diff --git a/src/routes/(app)/[instance]/inbox/+page.svelte b/src/routes/(app)/[instance]/inbox/+page.svelte
index aecdacb..c8f768c 100644
--- a/src/routes/(app)/[instance]/inbox/+page.svelte
+++ b/src/routes/(app)/[instance]/inbox/+page.svelte
@@ -110,9 +110,7 @@
 			return;
 		}
 
-		await client.markAllAsRead({
-			auth: jwt
-		});
+		await client.markAllAsRead();
 		invalidateAll();
 		checkUnread();
 	});
@@ -148,7 +146,6 @@
 		}
 
 		const form = {
-			auth: jwt,
 			sort: data.query.sort as CommentSortType,
 			unread_only: data.query.type === 'Unread',
 			page,
diff --git a/src/routes/(app)/[instance]/message/[recipientId]/+page.ts b/src/routes/(app)/[instance]/message/[recipientId]/+page.ts
index 0eb07e0..7927fde 100644
--- a/src/routes/(app)/[instance]/message/[recipientId]/+page.ts
+++ b/src/routes/(app)/[instance]/message/[recipientId]/+page.ts
@@ -8,8 +8,7 @@ export const load = (async ({ params }) => {
 	return {
 		personView: await client
 			.getPersonDetails({
-				person_id: Number(params.recipientId),
-				auth: jwt
+				person_id: Number(params.recipientId)
 			})
 			.then((d) => d.person_view)
 	};
diff --git a/src/routes/(app)/[instance]/modlog/+layout.ts b/src/routes/(app)/[instance]/modlog/+layout.ts
index 1338d5a..376ac94 100644
--- a/src/routes/(app)/[instance]/modlog/+layout.ts
+++ b/src/routes/(app)/[instance]/modlog/+layout.ts
@@ -12,8 +12,7 @@ export const load = (async ({ url }) => {
 
 	if (communityId) {
 		cv = await client.getCommunity({
-			id: +communityId,
-			auth: jwt
+			id: +communityId
 		});
 	}
 
diff --git a/src/routes/(app)/[instance]/modlog/view/+page.svelte b/src/routes/(app)/[instance]/modlog/view/+page.svelte
index c766956..cacfa3a 100644
--- a/src/routes/(app)/[instance]/modlog/view/+page.svelte
+++ b/src/routes/(app)/[instance]/modlog/view/+page.svelte
@@ -104,7 +104,10 @@
 	$: isCommunityModerator =
 		data.communityModerators?.some((mod) => mod.id === $siteMeta.my_user?.local_user_view.local_user.person_id) ??
 		false;
-	$: censorMods = !$siteMeta.my_user?.local_user_view.person.admin && !isCommunityModerator;
+	$: isAdmin = $siteMeta.admins.some(
+		(admin) => admin.person.actor_id === $siteMeta.my_user?.local_user_view.person.actor_id
+	);
+	$: censorMods = !isAdmin && !isCommunityModerator;
 
 	$: showCommunity = data.communityName === null;
 	$: showSecondaryHeader = showCommunity || data.targetUser;
diff --git a/src/routes/(app)/[instance]/modlog/view/+page.ts b/src/routes/(app)/[instance]/modlog/view/+page.ts
index 4b77915..7ed2246 100644
--- a/src/routes/(app)/[instance]/modlog/view/+page.ts
+++ b/src/routes/(app)/[instance]/modlog/view/+page.ts
@@ -34,7 +34,6 @@ export const load = (async ({ url }) => {
 			: null,
 		modlogs: client
 			.getModlog({
-				auth: jwt,
 				community_id: communityId,
 				mod_person_id: moderatorId,
 				other_person_id: targetId,
diff --git a/src/routes/(app)/[instance]/post/[postId]/+page.ts b/src/routes/(app)/[instance]/post/[postId]/+page.ts
index d080e66..54d9667 100644
--- a/src/routes/(app)/[instance]/post/[postId]/+page.ts
+++ b/src/routes/(app)/[instance]/post/[postId]/+page.ts
@@ -5,7 +5,7 @@ import type { PageLoad } from './$types';
 export const load = (async ({ params }) => {
 	const { client, jwt } = get(profile);
 
-	const res = await client.getPost({ id: +params.postId, auth: jwt });
+	const res = await client.getPost({ id: +params.postId });
 
 	return {
 		postView: res.post_view,
diff --git a/src/routes/(app)/[instance]/reports/+page.svelte b/src/routes/(app)/[instance]/reports/+page.svelte
index 89a7b50..8abb25f 100644
--- a/src/routes/(app)/[instance]/reports/+page.svelte
+++ b/src/routes/(app)/[instance]/reports/+page.svelte
@@ -121,7 +121,6 @@
 		}
 
 		const form = {
-			auth: jwt,
 			unresolved_only: data.query.state === 'Unread',
 			page,
 			limit: 20
diff --git a/src/routes/(app)/[instance]/reports/ReportedComment.svelte b/src/routes/(app)/[instance]/reports/ReportedComment.svelte
index f2ee891..b8e6fb5 100644
--- a/src/routes/(app)/[instance]/reports/ReportedComment.svelte
+++ b/src/routes/(app)/[instance]/reports/ReportedComment.svelte
@@ -116,7 +116,6 @@
 		}
 
 		const res = await client.resolveCommentReport({
-			auth: jwt,
 			report_id: view.comment_report.id,
 			resolved: !view.comment_report.resolved
 		});
diff --git a/src/routes/(app)/[instance]/reports/ReportedPost.svelte b/src/routes/(app)/[instance]/reports/ReportedPost.svelte
index f4f9764..66461c2 100644
--- a/src/routes/(app)/[instance]/reports/ReportedPost.svelte
+++ b/src/routes/(app)/[instance]/reports/ReportedPost.svelte
@@ -139,7 +139,6 @@
 		}
 
 		const res = await client.resolvePostReport({
-			auth: jwt,
 			report_id: view.post_report.id,
 			resolved
 		});
diff --git a/src/routes/(app)/[instance]/search/+page.svelte b/src/routes/(app)/[instance]/search/+page.svelte
index 670beea..6814a52 100644
--- a/src/routes/(app)/[instance]/search/+page.svelte
+++ b/src/routes/(app)/[instance]/search/+page.svelte
@@ -176,7 +176,6 @@
 				}
 
 				const searchRes = await client.search({
-					auth: jwt,
 					limit: 50,
 					page: query.page,
 					sort: query.sort as SortType,
diff --git a/src/routes/(app)/[instance]/search/+page.ts b/src/routes/(app)/[instance]/search/+page.ts
index 9e2096a..451bfed 100644
--- a/src/routes/(app)/[instance]/search/+page.ts
+++ b/src/routes/(app)/[instance]/search/+page.ts
@@ -20,7 +20,6 @@ export const load = (async ({ url }) => {
 		communityView: searchArgs.community
 			? client
 					.getCommunity({
-						auth: jwt,
 						name: searchArgs.community
 					})
 					.then(({ community_view }) => community_view)
@@ -28,7 +27,6 @@ export const load = (async ({ url }) => {
 		personView: searchArgs.creator
 			? client
 					.getPersonDetails({
-						auth: jwt,
 						person_id: Number(searchArgs.creator)
 					})
 					.then(({ person_view }) => person_view)
diff --git a/src/routes/(app)/[instance]/settings/blocks/+page.ts b/src/routes/(app)/[instance]/settings/blocks/+page.ts
index 390d0d2..65e942b 100644
--- a/src/routes/(app)/[instance]/settings/blocks/+page.ts
+++ b/src/routes/(app)/[instance]/settings/blocks/+page.ts
@@ -7,8 +7,6 @@ export const load = (async () => {
 
 	// reload siteMeta instead of using context so it updates with new blocks
 	return {
-		siteMeta: client.getSite({
-			auth: jwt
-		})
+		siteMeta: client.getSite()
 	};
 }) satisfies PageLoad;
diff --git a/src/routes/(app)/[instance]/settings/blocks/CommunityBlock.svelte b/src/routes/(app)/[instance]/settings/blocks/CommunityBlock.svelte
index 6fe5fd8..5838a90 100644
--- a/src/routes/(app)/[instance]/settings/blocks/CommunityBlock.svelte
+++ b/src/routes/(app)/[instance]/settings/blocks/CommunityBlock.svelte
@@ -21,7 +21,6 @@
 		}
 
 		await client.blockCommunity({
-			auth: jwt,
 			community_id: community.id,
 			block: false
 		});
diff --git a/src/routes/(app)/[instance]/settings/blocks/PersonBlock.svelte b/src/routes/(app)/[instance]/settings/blocks/PersonBlock.svelte
index 8ba9169..977f91c 100644
--- a/src/routes/(app)/[instance]/settings/blocks/PersonBlock.svelte
+++ b/src/routes/(app)/[instance]/settings/blocks/PersonBlock.svelte
@@ -21,7 +21,6 @@
 		}
 
 		await client.blockPerson({
-			auth: jwt,
 			person_id: person.id,
 			block: false
 		});
diff --git a/src/routes/(app)/[instance]/settings/lemmy/+page.svelte b/src/routes/(app)/[instance]/settings/lemmy/+page.svelte
index 8c32dc8..8f77d08 100644
--- a/src/routes/(app)/[instance]/settings/lemmy/+page.svelte
+++ b/src/routes/(app)/[instance]/settings/lemmy/+page.svelte
@@ -39,9 +39,6 @@
 		<Checkbox name="bot_account" checked={data.person.bot_account}>Bot account</Checkbox>
 		<Checkbox name="show_bot_accounts" checked={data.localUser.show_bot_accounts}>Show bot accounts</Checkbox>
 		<Checkbox name="show_read_posts" checked={data.localUser.show_read_posts}>Show read posts</Checkbox>
-		<Checkbox name="show_new_post_notifs" checked={data.localUser.show_new_post_notifs}
-			>Show notifications for new posts</Checkbox
-		>
 		<Checkbox name="send_notifications_to_email" checked={data.localUser.send_notifications_to_email}
 			>Send notifications to email</Checkbox
 		>
@@ -57,7 +54,7 @@
 	import { createStatefulForm } from '$lib/utils';
 	import { TextInput, Checkbox, Fieldset, Stack, createAutoExpireToast } from 'sheodox-ui';
 	import ToggleGroup from '$lib/ToggleGroup.svelte';
-	import type { ListingType, SortType } from 'lemmy-js-client';
+	import type { ListingType, SaveUserSettings, SortType } from 'lemmy-js-client';
 	import MarkdownEditor from '$lib/MarkdownEditor.svelte';
 	import { profile, updateProfileSettings } from '$lib/profiles/profiles';
 	import LanguageSettings from './LanguageSettings.svelte';
@@ -75,8 +72,7 @@
 			return;
 		}
 
-		const settings = {
-			auth: jwt,
+		const settings: SaveUserSettings = {
 			display_name: body.display_name as string,
 			email: body.email as string,
 			bio: body.bio as string,
@@ -90,7 +86,6 @@
 			bot_account: body.bot_account === 'on',
 			show_bot_accounts: body.show_bot_accounts === 'on',
 			show_read_posts: body.show_read_posts === 'on',
-			show_new_post_notifs: body.show_new_post_notifs === 'on',
 			send_notifications_to_email: body.send_notifications_to_email === 'on'
 		};
 
diff --git a/src/routes/(app)/[instance]/settings/lemmy/+page.ts b/src/routes/(app)/[instance]/settings/lemmy/+page.ts
index 5c76865..3def85d 100644
--- a/src/routes/(app)/[instance]/settings/lemmy/+page.ts
+++ b/src/routes/(app)/[instance]/settings/lemmy/+page.ts
@@ -6,9 +6,7 @@ import { profile, updateProfileSettings } from '$lib/profiles/profiles';
 export const load = (async () => {
 	const { client, jwt, id } = get(profile);
 
-	const site = await client.getSite({
-		auth: jwt
-	});
+	const site = await client.getSite();
 
 	if (!site.my_user) {
 		throw error(403, "Couldn't get user settings");
diff --git a/src/routes/(app)/[instance]/u/[username]/+page.ts b/src/routes/(app)/[instance]/u/[username]/+page.ts
index e6f66ab..fcf98cb 100644
--- a/src/routes/(app)/[instance]/u/[username]/+page.ts
+++ b/src/routes/(app)/[instance]/u/[username]/+page.ts
@@ -7,8 +7,7 @@ export const load = (async ({ params, url }) => {
 	const { client, jwt } = get(profile);
 
 	const details = await client.getPersonDetails({
-		username,
-		auth: jwt
+		username
 	});
 	return {
 		personView: details.person_view,
diff --git a/src/routes/(meta)/about/+page.svelte b/src/routes/(meta)/about/+page.svelte
index 243cf16..bb932ac 100644
--- a/src/routes/(meta)/about/+page.svelte
+++ b/src/routes/(meta)/about/+page.svelte
@@ -35,6 +35,14 @@
 			>. Any support is appreciated, either financially or by sharing the site with your friends!
 		</p>
 
+		<ExternalLink href="https://www.buymeacoffee.com/sheodox">
+			<img
+				src="/buy_me_a_coffee.png"
+				alt="Buy Me A Coffee"
+				style="height: 40px !important;width: 144.6px !important;"
+			/>
+		</ExternalLink>
+
 		<p>Alexandrite is nothing without Lemmy and the various instances. Remember to support them too!</p>
 
 		<h2>Other Project By Me</h2>
diff --git a/src/routes/(meta)/instance/+page.svelte b/src/routes/(meta)/instance/+page.svelte
index 32de6af..4466a3d 100644
--- a/src/routes/(meta)/instance/+page.svelte
+++ b/src/routes/(meta)/instance/+page.svelte
@@ -143,11 +143,13 @@
 
 		const baseUrl = 'https://' + instance;
 
-		const client = createLemmyClient(baseUrl);
+		// temporary client to test connection and server details first, then login.
+		// a new client is used after that once a jwt is obtained
+		const probeClient = createLemmyClient(baseUrl, { useProfile: false });
 		let site: GetSiteResponse;
 
 		try {
-			site = await client.getSite({});
+			site = await probeClient.getSite();
 		} catch (e) {
 			errMsg = `Error connecting to "${instance}", check to make sure your instance is spelled correctly.`;
 			return;
@@ -167,15 +169,15 @@
 
 			let jwt = '';
 			try {
-				jwt = (await client.login(loginForm)).jwt ?? '';
+				jwt = (await probeClient.login(loginForm)).jwt ?? '';
 			} catch (e) {
 				errMsg = 'Login failed: ' + getMessageFromError(e);
 				return;
 			}
 
-			const site = await client.getSite({
-				auth: jwt
-			});
+			const client = createLemmyClient(baseUrl, { jwt });
+
+			const site = await client.getSite();
 
 			const user = site.my_user?.local_user_view;
 
diff --git a/src/routes/(meta)/instance/signup/[instance]/+page.ts b/src/routes/(meta)/instance/signup/[instance]/+page.ts
index 2e5a856..ca1d844 100644
--- a/src/routes/(meta)/instance/signup/[instance]/+page.ts
+++ b/src/routes/(meta)/instance/signup/[instance]/+page.ts
@@ -6,7 +6,7 @@ import type { PageLoad } from './$types';
 export const load = (async ({ params }) => {
 	const instance = config.forcedInstance || params.instance,
 		instanceUrl = 'https://' + instance,
-		client = createLemmyClient(instanceUrl);
+		client = createLemmyClient(instanceUrl, {});
 
 	if (config.forcedInstance && params.instance !== config.forcedInstance) {
 		throw redirect(303, `/instance/signup/${config.forcedInstance}`);
diff --git a/static/buy_me_a_coffee.png b/static/buy_me_a_coffee.png
new file mode 100644
index 0000000000000000000000000000000000000000..94ea90df3f5373afe286ca86b86bf8d8a87e0d09
GIT binary patch
literal 4691
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
VqP2P9PdNYp002ovPDHLkV1i9Mz`_6k

literal 0
HcmV?d00001


From aae40befc19cd61badb7e9c92a96324ee4b4fcba Mon Sep 17 00:00:00 2001
From: sheodox <imagamer27@msn.com>
Date: Sat, 16 Dec 2023 21:49:19 -0600
Subject: [PATCH 2/2] Remove unused jwt variables

---
 src/lib/CommunitySelector.svelte                           | 1 -
 src/lib/community-context/community-context.ts             | 2 +-
 src/lib/feed-query.ts                                      | 2 +-
 src/routes/(app)/[instance]/communities/+page.svelte       | 1 -
 src/routes/(app)/[instance]/create/post/+layout.ts         | 2 +-
 src/routes/(app)/[instance]/create/post/+page.ts           | 2 +-
 src/routes/(app)/[instance]/message/[recipientId]/+page.ts | 2 +-
 src/routes/(app)/[instance]/modlog/+layout.ts              | 2 +-
 src/routes/(app)/[instance]/modlog/view/+page.ts           | 2 +-
 src/routes/(app)/[instance]/post/[postId]/+page.ts         | 2 +-
 src/routes/(app)/[instance]/search/+page.svelte            | 1 -
 src/routes/(app)/[instance]/search/+page.ts                | 2 +-
 src/routes/(app)/[instance]/settings/blocks/+page.ts       | 2 +-
 src/routes/(app)/[instance]/settings/lemmy/+page.ts        | 2 +-
 src/routes/(app)/[instance]/u/[username]/+page.ts          | 2 +-
 15 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/src/lib/CommunitySelector.svelte b/src/lib/CommunitySelector.svelte
index 72d4da3..7959e02 100644
--- a/src/lib/CommunitySelector.svelte
+++ b/src/lib/CommunitySelector.svelte
@@ -39,7 +39,6 @@
 	const { siteMeta } = getAppContext();
 
 	$: client = $profile.client;
-	$: jwt = $profile.jwt;
 
 	let searchText = '';
 
diff --git a/src/lib/community-context/community-context.ts b/src/lib/community-context/community-context.ts
index 7e0fc68..7df0f35 100644
--- a/src/lib/community-context/community-context.ts
+++ b/src/lib/community-context/community-context.ts
@@ -34,7 +34,7 @@ export const createCommunityContext = () => {
 
 	async function loadCommunity(name: string) {
 		loading.add(name);
-		const { client, jwt } = get(profile);
+		const { client } = get(profile);
 
 		const res = await client.getCommunity({
 			name
diff --git a/src/lib/feed-query.ts b/src/lib/feed-query.ts
index 5cb3048..7aaf6b0 100644
--- a/src/lib/feed-query.ts
+++ b/src/lib/feed-query.ts
@@ -33,7 +33,7 @@ interface FeedDataQuery {
 }
 
 export const loadFeedData = async (filters: FeedDataQuery): Promise<ApiFeedLoad> => {
-	const { client, jwt, settings } = get(profile),
+	const { client, settings } = get(profile),
 		page = Number(filters.page ?? '1'),
 		selectedType = filters.type ?? (filters.username ? 'Overview' : 'Posts'),
 		selectedListing = filters.listing,
diff --git a/src/routes/(app)/[instance]/communities/+page.svelte b/src/routes/(app)/[instance]/communities/+page.svelte
index c92a978..50a5251 100644
--- a/src/routes/(app)/[instance]/communities/+page.svelte
+++ b/src/routes/(app)/[instance]/communities/+page.svelte
@@ -56,7 +56,6 @@
 	import { profile } from '$lib/profiles/profiles';
 
 	$: client = $profile.client;
-	$: jwt = $profile.jwt;
 	$: loggedIn = $profile.loggedIn;
 
 	export let data;
diff --git a/src/routes/(app)/[instance]/create/post/+layout.ts b/src/routes/(app)/[instance]/create/post/+layout.ts
index b623b44..8000915 100644
--- a/src/routes/(app)/[instance]/create/post/+layout.ts
+++ b/src/routes/(app)/[instance]/create/post/+layout.ts
@@ -3,7 +3,7 @@ import { get } from 'svelte/store';
 import type { LayoutLoad } from './$types';
 
 export const load = (async ({ url }) => {
-	const { client, jwt } = get(profile);
+	const { client } = get(profile);
 
 	const communityName = url.searchParams.get('community');
 
diff --git a/src/routes/(app)/[instance]/create/post/+page.ts b/src/routes/(app)/[instance]/create/post/+page.ts
index a8d65c1..2dcffdd 100644
--- a/src/routes/(app)/[instance]/create/post/+page.ts
+++ b/src/routes/(app)/[instance]/create/post/+page.ts
@@ -3,7 +3,7 @@ import { get } from 'svelte/store';
 import type { PageLoad } from './$types';
 
 export const load = (async ({ url }) => {
-	const { client, jwt } = get(profile);
+	const { client } = get(profile);
 	const crossPostId = url.searchParams.get('crosspost');
 
 	return {
diff --git a/src/routes/(app)/[instance]/message/[recipientId]/+page.ts b/src/routes/(app)/[instance]/message/[recipientId]/+page.ts
index 7927fde..19012c2 100644
--- a/src/routes/(app)/[instance]/message/[recipientId]/+page.ts
+++ b/src/routes/(app)/[instance]/message/[recipientId]/+page.ts
@@ -3,7 +3,7 @@ import type { PageLoad } from './$types';
 import { profile } from '$lib/profiles/profiles';
 
 export const load = (async ({ params }) => {
-	const { client, jwt } = get(profile);
+	const { client } = get(profile);
 
 	return {
 		personView: await client
diff --git a/src/routes/(app)/[instance]/modlog/+layout.ts b/src/routes/(app)/[instance]/modlog/+layout.ts
index 376ac94..bad3732 100644
--- a/src/routes/(app)/[instance]/modlog/+layout.ts
+++ b/src/routes/(app)/[instance]/modlog/+layout.ts
@@ -5,7 +5,7 @@ import type { GetCommunityResponse } from 'lemmy-js-client';
 import { nameAtInstance } from '$lib/nav-utils';
 
 export const load = (async ({ url }) => {
-	const { client, jwt } = get(profile),
+	const { client } = get(profile),
 		communityId = url.searchParams.get('community');
 
 	let cv: GetCommunityResponse | null = null;
diff --git a/src/routes/(app)/[instance]/modlog/view/+page.ts b/src/routes/(app)/[instance]/modlog/view/+page.ts
index 7ed2246..c9fb88c 100644
--- a/src/routes/(app)/[instance]/modlog/view/+page.ts
+++ b/src/routes/(app)/[instance]/modlog/view/+page.ts
@@ -7,7 +7,7 @@ import type { ModlogActionType } from 'lemmy-js-client';
 const id = (idStr: string | null) => (idStr ? +idStr : undefined);
 
 export const load = (async ({ url }) => {
-	const { client, jwt } = get(profile),
+	const { client } = get(profile),
 		communityId = id(url.searchParams.get('community')),
 		moderatorId = id(url.searchParams.get('moderator')),
 		targetId = id(url.searchParams.get('target')),
diff --git a/src/routes/(app)/[instance]/post/[postId]/+page.ts b/src/routes/(app)/[instance]/post/[postId]/+page.ts
index 54d9667..0fe0c5d 100644
--- a/src/routes/(app)/[instance]/post/[postId]/+page.ts
+++ b/src/routes/(app)/[instance]/post/[postId]/+page.ts
@@ -3,7 +3,7 @@ import { get } from 'svelte/store';
 import type { PageLoad } from './$types';
 
 export const load = (async ({ params }) => {
-	const { client, jwt } = get(profile);
+	const { client } = get(profile);
 
 	const res = await client.getPost({ id: +params.postId });
 
diff --git a/src/routes/(app)/[instance]/search/+page.svelte b/src/routes/(app)/[instance]/search/+page.svelte
index 6814a52..178b32b 100644
--- a/src/routes/(app)/[instance]/search/+page.svelte
+++ b/src/routes/(app)/[instance]/search/+page.svelte
@@ -117,7 +117,6 @@
 	export let data;
 
 	$: client = $profile.client;
-	$: jwt = $profile.jwt;
 	$: loggedIn = $profile.loggedIn;
 
 	const cvStore = createContentViewStore();
diff --git a/src/routes/(app)/[instance]/search/+page.ts b/src/routes/(app)/[instance]/search/+page.ts
index 451bfed..c59086a 100644
--- a/src/routes/(app)/[instance]/search/+page.ts
+++ b/src/routes/(app)/[instance]/search/+page.ts
@@ -3,7 +3,7 @@ import { get } from 'svelte/store';
 import { profile } from '$lib/profiles/profiles';
 
 export const load = (async ({ url }) => {
-	const { client, jwt, settings } = get(profile);
+	const { client, settings } = get(profile);
 
 	const searchArgs = {
 		q: url.searchParams.get('q') ?? '',
diff --git a/src/routes/(app)/[instance]/settings/blocks/+page.ts b/src/routes/(app)/[instance]/settings/blocks/+page.ts
index 65e942b..856fb24 100644
--- a/src/routes/(app)/[instance]/settings/blocks/+page.ts
+++ b/src/routes/(app)/[instance]/settings/blocks/+page.ts
@@ -3,7 +3,7 @@ import type { PageLoad } from './$types';
 import { profile } from '$lib/profiles/profiles';
 
 export const load = (async () => {
-	const { client, jwt } = get(profile);
+	const { client } = get(profile);
 
 	// reload siteMeta instead of using context so it updates with new blocks
 	return {
diff --git a/src/routes/(app)/[instance]/settings/lemmy/+page.ts b/src/routes/(app)/[instance]/settings/lemmy/+page.ts
index 3def85d..958f96b 100644
--- a/src/routes/(app)/[instance]/settings/lemmy/+page.ts
+++ b/src/routes/(app)/[instance]/settings/lemmy/+page.ts
@@ -4,7 +4,7 @@ import { get } from 'svelte/store';
 import { profile, updateProfileSettings } from '$lib/profiles/profiles';
 
 export const load = (async () => {
-	const { client, jwt, id } = get(profile);
+	const { client, id } = get(profile);
 
 	const site = await client.getSite();
 
diff --git a/src/routes/(app)/[instance]/u/[username]/+page.ts b/src/routes/(app)/[instance]/u/[username]/+page.ts
index fcf98cb..6950f09 100644
--- a/src/routes/(app)/[instance]/u/[username]/+page.ts
+++ b/src/routes/(app)/[instance]/u/[username]/+page.ts
@@ -4,7 +4,7 @@ import { profile } from '$lib/profiles/profiles';
 
 export const load = (async ({ params, url }) => {
 	const username = params.username;
-	const { client, jwt } = get(profile);
+	const { client } = get(profile);
 
 	const details = await client.getPersonDetails({
 		username