diff --git a/packages/system/src/commands.ts b/packages/system/src/commands.ts
index 3bb09a6c..942c7406 100644
--- a/packages/system/src/commands.ts
+++ b/packages/system/src/commands.ts
@@ -1,590 +1,413 @@
-// This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually.
 
-/** user-defined commands **/
+         // This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually.
 
-export const commands = {
-	async getRelays(): Promise<Result<Relays, null>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("get_relays") };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async connectRelay(relay: string): Promise<Result<boolean, null>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("connect_relay", { relay }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async removeRelay(relay: string): Promise<Result<boolean, null>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("remove_relay", { relay }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getAccounts(): Promise<Result<string[], string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("get_accounts") };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async createAccount(): Promise<Result<Account, null>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("create_account") };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async saveAccount(
-		nsec: string,
-		password: string,
-	): Promise<Result<string, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("save_account", { nsec, password }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getEncryptedKey(
-		npub: string,
-		password: string,
-	): Promise<Result<string, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("get_encrypted_key", { npub, password }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async connectRemoteAccount(uri: string): Promise<Result<string, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("connect_remote_account", { uri }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async loadAccount(
-		npub: string,
-		bunker: string | null,
-	): Promise<Result<boolean, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("load_account", { npub, bunker }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async eventToBech32(
-		id: string,
-		relays: string[],
-	): Promise<Result<string, null>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("event_to_bech32", { id, relays }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async userToBech32(
-		key: string,
-		relays: string[],
-	): Promise<Result<string, null>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("user_to_bech32", { key, relays }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async verifyNip05(
-		key: string,
-		nip05: string,
-	): Promise<Result<boolean, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("verify_nip05", { key, nip05 }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getCurrentUserProfile(): Promise<Result<string, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("get_current_user_profile"),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getProfile(id: string): Promise<Result<string, string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("get_profile", { id }) };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getContactList(): Promise<Result<string[], string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("get_contact_list") };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async setContactList(pubkeys: string[]): Promise<Result<boolean, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("set_contact_list", { pubkeys }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async createProfile(
-		name: string,
-		displayName: string,
-		about: string,
-		picture: string,
-		banner: string,
-		nip05: string,
-		lud16: string,
-		website: string,
-	): Promise<Result<string, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("create_profile", {
-					name,
-					displayName,
-					about,
-					picture,
-					banner,
-					nip05,
-					lud16,
-					website,
-				}),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async follow(
-		id: string,
-		alias: string | null,
-	): Promise<Result<string, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("follow", { id, alias }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async unfollow(id: string): Promise<Result<string, string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("unfollow", { id }) };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getNstore(key: string): Promise<Result<string, string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("get_nstore", { key }) };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async setNstore(
-		key: string,
-		content: string,
-	): Promise<Result<string, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("set_nstore", { key, content }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async setNwc(uri: string): Promise<Result<boolean, string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("set_nwc", { uri }) };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async loadNwc(): Promise<Result<boolean, string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("load_nwc") };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getBalance(): Promise<Result<string, string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("get_balance") };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async zapProfile(
-		id: string,
-		amount: string,
-		message: string,
-	): Promise<Result<boolean, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("zap_profile", { id, amount, message }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async zapEvent(
-		id: string,
-		amount: string,
-		message: string,
-	): Promise<Result<boolean, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("zap_event", { id, amount, message }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async friendToFriend(npub: string): Promise<Result<boolean, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("friend_to_friend", { npub }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getNotifications(): Promise<Result<string[], string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("get_notifications") };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getEvent(id: string): Promise<Result<string, string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("get_event", { id }) };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getReplies(id: string): Promise<Result<string[], string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("get_replies", { id }) };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getEventsBy(
-		publicKey: string,
-		asOf: string | null,
-	): Promise<Result<string[], string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("get_events_by", { publicKey, asOf }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getLocalEvents(
-		pubkeys: string[],
-		until: string | null,
-	): Promise<Result<string[], string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("get_local_events", { pubkeys, until }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getGlobalEvents(
-		until: string | null,
-	): Promise<Result<string[], string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("get_global_events", { until }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async getHashtagEvents(
-		hashtags: string[],
-		until: string | null,
-	): Promise<Result<string[], string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("get_hashtag_events", { hashtags, until }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async publish(
-		content: string,
-		tags: string[][],
-	): Promise<Result<string, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("publish", { content, tags }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async repost(raw: string): Promise<Result<string, string>> {
-		try {
-			return { status: "ok", data: await TAURI_INVOKE("repost", { raw }) };
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async showInFolder(path: string): Promise<void> {
-		await TAURI_INVOKE("show_in_folder", { path });
-	},
-	async createColumn(
-		label: string,
-		x: number,
-		y: number,
-		width: number,
-		height: number,
-		url: string,
-	): Promise<Result<string, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("create_column", {
-					label,
-					x,
-					y,
-					width,
-					height,
-					url,
-				}),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async closeColumn(label: string): Promise<Result<boolean, null>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("close_column", { label }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async repositionColumn(
-		label: string,
-		x: number,
-		y: number,
-	): Promise<Result<null, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("reposition_column", { label, x, y }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async resizeColumn(
-		label: string,
-		width: number,
-		height: number,
-	): Promise<Result<null, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("resize_column", { label, width, height }),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async openWindow(
-		label: string,
-		title: string,
-		url: string,
-		width: number,
-		height: number,
-	): Promise<Result<null, string>> {
-		try {
-			return {
-				status: "ok",
-				data: await TAURI_INVOKE("open_window", {
-					label,
-					title,
-					url,
-					width,
-					height,
-				}),
-			};
-		} catch (e) {
-			if (e instanceof Error) throw e;
-			else return { status: "error", error: e as any };
-		}
-	},
-	async setBadge(count: number): Promise<void> {
-		await TAURI_INVOKE("set_badge", { count });
-	},
-};
+         /** user-defined commands **/
 
-/** user-defined events **/
+         export const commands = {
+async getRelays() : Promise<Result<Relays, null>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_relays") };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async connectRelay(relay: string) : Promise<Result<boolean, null>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("connect_relay", { relay }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async removeRelay(relay: string) : Promise<Result<boolean, null>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("remove_relay", { relay }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getAccounts() : Promise<Result<string[], string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_accounts") };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async createAccount() : Promise<Result<Account, null>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("create_account") };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async saveAccount(nsec: string, password: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("save_account", { nsec, password }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getEncryptedKey(npub: string, password: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_encrypted_key", { npub, password }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async connectRemoteAccount(uri: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("connect_remote_account", { uri }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async loadAccount(npub: string, bunker: string | null) : Promise<Result<boolean, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("load_account", { npub, bunker }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async eventToBech32(id: string, relays: string[]) : Promise<Result<string, null>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("event_to_bech32", { id, relays }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async userToBech32(key: string, relays: string[]) : Promise<Result<string, null>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("user_to_bech32", { key, relays }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async verifyNip05(key: string, nip05: string) : Promise<Result<boolean, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("verify_nip05", { key, nip05 }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getCurrentUserProfile() : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_current_user_profile") };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getProfile(id: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_profile", { id }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getContactList() : Promise<Result<string[], string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_contact_list") };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async setContactList(pubkeys: string[]) : Promise<Result<boolean, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("set_contact_list", { pubkeys }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async createProfile(name: string, displayName: string, about: string, picture: string, banner: string, nip05: string, lud16: string, website: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("create_profile", { name, displayName, about, picture, banner, nip05, lud16, website }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async follow(id: string, alias: string | null) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("follow", { id, alias }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async unfollow(id: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("unfollow", { id }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getNstore(key: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_nstore", { key }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async setNstore(key: string, content: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("set_nstore", { key, content }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async setNwc(uri: string) : Promise<Result<boolean, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("set_nwc", { uri }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async loadNwc() : Promise<Result<boolean, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("load_nwc") };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getBalance() : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_balance") };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async zapProfile(id: string, amount: string, message: string) : Promise<Result<boolean, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("zap_profile", { id, amount, message }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async zapEvent(id: string, amount: string, message: string) : Promise<Result<boolean, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("zap_event", { id, amount, message }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async friendToFriend(npub: string) : Promise<Result<boolean, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("friend_to_friend", { npub }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getNotifications() : Promise<Result<string[], string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_notifications") };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getEvent(id: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_event", { id }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getReplies(id: string) : Promise<Result<string[], string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_replies", { id }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getEventsBy(publicKey: string, asOf: string | null) : Promise<Result<string[], string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_events_by", { publicKey, asOf }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getLocalEvents(pubkeys: string[], until: string | null) : Promise<Result<string[], string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_local_events", { pubkeys, until }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getGlobalEvents(until: string | null) : Promise<Result<string[], string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_global_events", { until }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async getHashtagEvents(hashtags: string[], until: string | null) : Promise<Result<string[], string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("get_hashtag_events", { hashtags, until }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async publish(content: string, tags: string[][]) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("publish", { content, tags }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async repost(raw: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("repost", { raw }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async showInFolder(path: string) : Promise<void> {
+await TAURI_INVOKE("show_in_folder", { path });
+},
+async createColumn(label: string, x: number, y: number, width: number, height: number, url: string) : Promise<Result<string, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("create_column", { label, x, y, width, height, url }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async closeColumn(label: string) : Promise<Result<boolean, null>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("close_column", { label }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async repositionColumn(label: string, x: number, y: number) : Promise<Result<null, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("reposition_column", { label, x, y }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async resizeColumn(label: string, width: number, height: number) : Promise<Result<null, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("resize_column", { label, width, height }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async openWindow(label: string, title: string, url: string, width: number, height: number) : Promise<Result<null, string>> {
+try {
+    return { status: "ok", data: await TAURI_INVOKE("open_window", { label, title, url, width, height }) };
+} catch (e) {
+    if(e instanceof Error) throw e;
+    else return { status: "error", error: e  as any };
+}
+},
+async setBadge(count: number) : Promise<void> {
+await TAURI_INVOKE("set_badge", { count });
+}
+}
 
-/** user-defined statics **/
+         /** user-defined events **/
+
+
+
+         /** user-defined statics **/
+
+         
 
 /** user-defined types **/
 
-export type Account = { npub: string; nsec: string };
-export type Relays = {
-	connected: string[];
-	read: string[] | null;
-	write: string[] | null;
-	both: string[] | null;
-};
+export type Account = { npub: string; nsec: string }
+export type Relays = { connected: string[]; read: string[] | null; write: string[] | null; both: string[] | null }
 
 /** tauri-specta globals **/
 
-import { invoke as TAURI_INVOKE } from "@tauri-apps/api/core";
+         import { invoke as TAURI_INVOKE } from "@tauri-apps/api/core";
 import * as TAURI_API_EVENT from "@tauri-apps/api/event";
 import { type WebviewWindow as __WebviewWindow__ } from "@tauri-apps/api/webviewWindow";
 
 type __EventObj__<T> = {
-	listen: (
-		cb: TAURI_API_EVENT.EventCallback<T>,
-	) => ReturnType<typeof TAURI_API_EVENT.listen<T>>;
-	once: (
-		cb: TAURI_API_EVENT.EventCallback<T>,
-	) => ReturnType<typeof TAURI_API_EVENT.once<T>>;
-	emit: T extends null
-		? (payload?: T) => ReturnType<typeof TAURI_API_EVENT.emit>
-		: (payload: T) => ReturnType<typeof TAURI_API_EVENT.emit>;
+  listen: (
+    cb: TAURI_API_EVENT.EventCallback<T>
+  ) => ReturnType<typeof TAURI_API_EVENT.listen<T>>;
+  once: (
+    cb: TAURI_API_EVENT.EventCallback<T>
+  ) => ReturnType<typeof TAURI_API_EVENT.once<T>>;
+  emit: T extends null
+    ? (payload?: T) => ReturnType<typeof TAURI_API_EVENT.emit>
+    : (payload: T) => ReturnType<typeof TAURI_API_EVENT.emit>;
 };
 
 export type Result<T, E> =
-	| { status: "ok"; data: T }
-	| { status: "error"; error: E };
+  | { status: "ok"; data: T }
+  | { status: "error"; error: E };
 
 function __makeEvents__<T extends Record<string, any>>(
-	mappings: Record<keyof T, string>,
+  mappings: Record<keyof T, string>
 ) {
-	return new Proxy(
-		{} as unknown as {
-			[K in keyof T]: __EventObj__<T[K]> & {
-				(handle: __WebviewWindow__): __EventObj__<T[K]>;
-			};
-		},
-		{
-			get: (_, event) => {
-				const name = mappings[event as keyof T];
+  return new Proxy(
+    {} as unknown as {
+      [K in keyof T]: __EventObj__<T[K]> & {
+        (handle: __WebviewWindow__): __EventObj__<T[K]>;
+      };
+    },
+    {
+      get: (_, event) => {
+        const name = mappings[event as keyof T];
 
-				return new Proxy((() => {}) as any, {
-					apply: (_, __, [window]: [__WebviewWindow__]) => ({
-						listen: (arg: any) => window.listen(name, arg),
-						once: (arg: any) => window.once(name, arg),
-						emit: (arg: any) => window.emit(name, arg),
-					}),
-					get: (_, command: keyof __EventObj__<any>) => {
-						switch (command) {
-							case "listen":
-								return (arg: any) => TAURI_API_EVENT.listen(name, arg);
-							case "once":
-								return (arg: any) => TAURI_API_EVENT.once(name, arg);
-							case "emit":
-								return (arg: any) => TAURI_API_EVENT.emit(name, arg);
-						}
-					},
-				});
-			},
-		},
-	);
+        return new Proxy((() => {}) as any, {
+          apply: (_, __, [window]: [__WebviewWindow__]) => ({
+            listen: (arg: any) => window.listen(name, arg),
+            once: (arg: any) => window.once(name, arg),
+            emit: (arg: any) => window.emit(name, arg),
+          }),
+          get: (_, command: keyof __EventObj__<any>) => {
+            switch (command) {
+              case "listen":
+                return (arg: any) => TAURI_API_EVENT.listen(name, arg);
+              case "once":
+                return (arg: any) => TAURI_API_EVENT.once(name, arg);
+              case "emit":
+                return (arg: any) => TAURI_API_EVENT.emit(name, arg);
+            }
+          },
+        });
+      },
+    }
+  );
 }
+
+     
\ No newline at end of file
diff --git a/packages/system/src/event.ts b/packages/system/src/event.ts
index 6e2d32ca..1e27ba80 100644
--- a/packages/system/src/event.ts
+++ b/packages/system/src/event.ts
@@ -22,7 +22,7 @@ export class LumeEvent {
 		return this.tags.filter((tag) => tag[0] === "p").map((tag) => tag[1]);
 	}
 
-	static getEventThread(tags: string[][], gossip?: boolean) {
+	static getEventThread(tags: string[][], gossip = true) {
 		let root: string = null;
 		let reply: string = null;
 
@@ -30,14 +30,22 @@ export class LumeEvent {
 		const events = tags.filter((el) => el[0] === "e" && el[3] !== "mention");
 
 		if (gossip) {
-			const relays = tags.filter((el) => el[0] === "e" && el[2]?.length);
+			const relays = tags
+				.filter((el) => el[0] === "e" && el[2]?.length)
+				.map((tag) => tag[2]);
 
 			if (relays.length >= 1) {
 				for (const relay of relays) {
-					if (relay[2]?.length)
-						commands
-							.connectRelay(relay[2])
-							.then(() => console.log("[gossip]: ", relay[2]));
+					try {
+						if (relay.length) {
+							const url = new URL(relay);
+							commands
+								.connectRelay(url.toString())
+								.then(() => console.log("[relay hint]: ", url));
+						}
+					} catch (e) {
+						console.log("[relay hint] error: ", relay);
+					}
 				}
 			}
 		}
@@ -82,6 +90,14 @@ export class LumeEvent {
 						for (const tag of tags) {
 							const rootIndex = events.findIndex((el) => el.id === tag[1]);
 
+							// Relay Hint
+							if (tag[2]?.length) {
+								const url = new URL(tag[2]);
+								commands
+									.connectRelay(url.toString())
+									.then(() => console.log("[relay hint]: ", url));
+							}
+
 							if (rootIndex !== -1) {
 								const rootEvent = events[rootIndex];
 
diff --git a/src-tauri/src/nostr/event.rs b/src-tauri/src/nostr/event.rs
index a0a56575..969d3fb3 100644
--- a/src-tauri/src/nostr/event.rs
+++ b/src-tauri/src/nostr/event.rs
@@ -13,9 +13,8 @@ pub async fn get_event(id: &str, state: State<'_, Nostr>) -> Result<String, Stri
       Nip19::Event(event) => {
         let relays = event.relays;
         for relay in relays.into_iter() {
-          let url = Url::from_str(&relay).unwrap();
-          let _ = client.add_relay(&url).await.unwrap_or_default();
-          client.connect_relay(&url).await.unwrap_or_default();
+          let _ = client.add_relay(&relay).await.unwrap_or_default();
+          client.connect_relay(&relay).await.unwrap_or_default();
         }
         Some(event.event_id)
       }
diff --git a/src-tauri/src/nostr/metadata.rs b/src-tauri/src/nostr/metadata.rs
index 8450dcea..fe121eef 100644
--- a/src-tauri/src/nostr/metadata.rs
+++ b/src-tauri/src/nostr/metadata.rs
@@ -4,7 +4,6 @@ use keyring::Entry;
 use nostr_sdk::prelude::*;
 use std::{str::FromStr, time::Duration};
 use tauri::State;
-use url::Url;
 
 #[tauri::command]
 #[specta::specta]
@@ -43,7 +42,14 @@ pub async fn get_profile(id: &str, state: State<'_, Nostr>) -> Result<String, St
   let public_key: Option<PublicKey> = match Nip19::from_bech32(id) {
     Ok(val) => match val {
       Nip19::Pubkey(pubkey) => Some(pubkey),
-      Nip19::Profile(profile) => Some(profile.public_key),
+      Nip19::Profile(profile) => {
+        let relays = profile.relays;
+        for relay in relays.into_iter() {
+          let _ = client.add_relay(&relay).await.unwrap_or_default();
+          client.connect_relay(&relay).await.unwrap_or_default();
+        }
+        Some(profile.public_key)
+      }
       _ => None,
     },
     Err(_) => match PublicKey::from_str(id) {