diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1e9ee12 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "mtp-type-maps"] + path = mtp-type-maps + url = https://git.methanium.net/tensamin/mtp-type-maps diff --git a/TODO b/TODO index e59c502..db6ebe1 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,6 @@ - Add a bunch of tests - Add packages/hotkeys/ - Full accessability +- Add settings saving & update onboarding to use it -> Most folders in packages/ have specific todos diff --git a/apps/electron/src/main/tray.ts b/apps/electron/src/main/tray.ts index 3937a4d..5daaf1b 100644 --- a/apps/electron/src/main/tray.ts +++ b/apps/electron/src/main/tray.ts @@ -8,14 +8,12 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); function getTrayIconPath(filename: string) { - if (app.isPackaged) return path.join(process.resourcesPath, "icons", filename); + if (app.isPackaged) + return path.join(process.resourcesPath, "icons", filename); return path.resolve(__dirname, "../../build/icons", filename); } -export function setTrayCallStatus( - inCall: boolean, - iconDataUrl?: string, -) { +export function setTrayCallStatus(inCall: boolean, iconDataUrl?: string) { if (!tray) return; if (inCall && iconDataUrl) { diff --git a/apps/web/src/components/navbar.tsx b/apps/web/src/components/navbar.tsx index ccc8854..9396561 100644 --- a/apps/web/src/components/navbar.tsx +++ b/apps/web/src/components/navbar.tsx @@ -10,7 +10,12 @@ import { useLocation, useNavigate, useSearch } from "@tanstack/react-router"; import { joinCall, useCall } from "@tensamin/call/store"; import Wrapper from "@tensamin/user/wrapper"; import { Skeleton } from "@methanium/ui"; -import { Select, SelectContent, SelectItem, SelectTrigger } from "@methanium/ui"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, +} from "@methanium/ui"; import { displayCallId } from "@tensamin/call/utils"; import { useState } from "react"; import { SidebarTrigger, useSidebar } from "@methanium/ui"; @@ -43,7 +48,7 @@ export default function Navbar({ forMobile }: { forMobile: boolean }) {
{forMobile ? ( @@ -52,14 +57,14 @@ export default function Navbar({ forMobile }: { forMobile: boolean }) { <> @@ -175,7 +180,7 @@ export function MobileNavbar() {
@@ -186,7 +191,7 @@ export function MobileNavbar() { navigate({ to: "/" }); setOpenMobile(false); }} - className="text-foreground w-12 h-12 aspect-square rounded-xl flex flex-col gap-1" + className="text-foreground w-12 h-12 aspect-square rounded-xl flex flex-col gap-1 border-0! hover:bg-transparent!" variant="link" > @@ -197,7 +202,7 @@ export function MobileNavbar() { navigate({ to: "/settings" }); setOpenMobile(false); }} - className="text-foreground w-12 h-12 aspect-square rounded-xl flex flex-col gap-1" + className="text-foreground w-12 h-12 aspect-square rounded-xl flex flex-col gap-1 border-0! hover:bg-transparent!" variant="link" > diff --git a/apps/web/src/index.tsx b/apps/web/src/index.tsx index 06b664f..c0b5ecb 100644 --- a/apps/web/src/index.tsx +++ b/apps/web/src/index.tsx @@ -131,6 +131,11 @@ function ThemeStorageBridge() { setThemeBorderRadius, themeCustomCss, setThemeCustomCss, + parentThemeId, + setParentThemeId, + applyThemePreset, + themeDesign, + setThemeDesign, } = useTheme(); const loadedRef = useRef(false); @@ -145,6 +150,8 @@ function ThemeStorageBridge() { load("theme_tint"), load("theme_border_radius"), load("theme_custom_css"), + load("theme_parent"), + load("theme_design"), ]).then( ([ color, @@ -154,18 +161,23 @@ function ThemeStorageBridge() { tint, borderRadius, customCss, + parent, + design, ]) => { if (!active) { return; } + if (customCss === "" && parent) applyThemePreset(parent); + else setParentThemeId(parent || null); setThemeColor(color); setThemePalette(palette); setThemePrimaryColor(primaryColor); setThemePolarity(polarity); setThemeTint(tint); setThemeBorderRadius(borderRadius); - setThemeCustomCss(customCss); + if (customCss !== "") setThemeCustomCss(customCss); + setThemeDesign(design); loadedRef.current = true; }, ); @@ -175,9 +187,12 @@ function ThemeStorageBridge() { }; }, [ load, + applyThemePreset, setThemeBorderRadius, setThemeColor, setThemeCustomCss, + setParentThemeId, + setThemeDesign, setThemePalette, setThemePolarity, setThemePrimaryColor, @@ -212,6 +227,14 @@ function ThemeStorageBridge() { if (loadedRef.current) save("theme_custom_css", themeCustomCss); }, [save, themeCustomCss]); + useEffect(() => { + if (loadedRef.current) save("theme_parent", parentThemeId ?? ""); + }, [parentThemeId, save]); + + useEffect(() => { + if (loadedRef.current) save("theme_design", themeDesign); + }, [save, themeDesign]); + return null; } @@ -228,6 +251,8 @@ function RootShell() { tintStorageKey={null} borderRadiusStorageKey={null} customCssStorageKey={null} + parentThemeStorageKey={null} + designStorageKey={null} >
- Add Conversation} /> + ( + + )} + /> New Conversation diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index b8fc6da..592d338 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -7,6 +7,7 @@ import { defineConfig, type Plugin } from "vite"; import react from "@vitejs/plugin-react"; import tailwindcss from "@tailwindcss/vite"; import { mtp } from "mtp/vite"; +import { methaniumUi } from "@methanium/ui/vite"; const host = process.env.TAURI_DEV_HOST; const appDir = dirname(fileURLToPath(import.meta.url)); @@ -153,8 +154,9 @@ export default defineConfig({ sourcemap: !!process.env.TAURI_ENV_DEBUG, }, plugins: [ + methaniumUi({ defaultThemeId: "tensamin" }), deepFilterAssetHeaders(resolve(appDir, "public")), - mtp({ typeMaps: resolve(appDir, "../../type-maps.yaml") }), + mtp({ typeMaps: resolve(appDir, "../../mtp-type-maps/type-maps.yaml") }), { name: "workspace-realpath-resolution", enforce: "post", diff --git a/mtp-type-maps b/mtp-type-maps new file mode 160000 index 0000000..6d97b5b --- /dev/null +++ b/mtp-type-maps @@ -0,0 +1 @@ +Subproject commit 6d97b5b9935b15d957444d38609378c66a24262a diff --git a/package.json b/package.json index 6c5fb28..f5cf958 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "yaml": "^2.8.2" }, "dependencies": { - "@methanium/ui": "*", + "@methanium/ui": "https://git.methanium.net/methanium/ui/releases/download/0.0.2/methanium-ui.tgz", "mtp": "*", "sonner": "^2.0.7" } diff --git a/packages/cache/src/index.ts b/packages/cache/src/index.ts index cd78102..43c5018 100644 --- a/packages/cache/src/index.ts +++ b/packages/cache/src/index.ts @@ -175,12 +175,7 @@ export function createCache(accountId: string, options: CacheOptions = {}) { const userId = Number(key); return retained.has(userId) ? [] - : [ - deleteDatabaseEntry( - "cache", - storedKey("conversations", key), - ), - ]; + : [deleteDatabaseEntry("cache", storedKey("conversations", key))]; }), ); }, @@ -210,12 +205,7 @@ export function createCache(accountId: string, options: CacheOptions = {}) { const userId = Number(key); return retained.has(userId) ? [] - : [ - deleteDatabaseEntry( - "cache", - storedKey("conversations", key), - ), - ]; + : [deleteDatabaseEntry("cache", storedKey("conversations", key))]; }), ); }, @@ -241,12 +231,7 @@ export function createCache(accountId: string, options: CacheOptions = {}) { storedEntries.flatMap(([key]) => retained.has(Number(key)) ? [] - : [ - deleteDatabaseEntry( - "cache", - storedKey("conversations", key), - ), - ], + : [deleteDatabaseEntry("cache", storedKey("conversations", key))], ), ); }, diff --git a/packages/chat/src/components/message.tsx b/packages/chat/src/components/message.tsx index a4b9b53..2eecef5 100644 --- a/packages/chat/src/components/message.tsx +++ b/packages/chat/src/components/message.tsx @@ -1,6 +1,6 @@ import type { RawMessage } from "../values"; import Text from "@tensamin/markdown/text"; -import { AlertTriangle, Check, Ellipse, RefreshCw } from "lucide-react"; +import { AlertTriangle, Check, CheckLine, RefreshCw } from "lucide-react"; import { memo, useCallback, useEffect, useState } from "react"; import type { User } from "@tensamin/user/context"; @@ -289,11 +289,11 @@ function MessageComponent({ color="var(--primary-foreground-alt)" /> ) : message.MessageState === "received" ? ( - + ) : message.MessageState === "sent" ? ( - + ) : message.MessageState === "sending" ? ( - + ) : null} {actuallyFailed && ( diff --git a/packages/onboarding/src/index.tsx b/packages/onboarding/src/index.tsx index dfc4d6e..a896d4f 100644 --- a/packages/onboarding/src/index.tsx +++ b/packages/onboarding/src/index.tsx @@ -36,6 +36,9 @@ export default function OnboardingGate({ children }: { children: ReactNode }) { const [showLoading, setShowLoading] = useState(false); const [error, setError] = useState(""); const [errorDescription, setErrorDescription] = useState(""); + const [onboardingThemeId, setOnboardingThemeId] = useState( + null, + ); useEffect(() => { let active = true; @@ -63,13 +66,19 @@ export default function OnboardingGate({ children }: { children: ReactNode }) { return; } - const [localDocs, acceptedPP, acceptedTOS, onboardingDone] = - await Promise.all([ - load("legal_docs"), - load("accepted_privacy_policy"), - load("accepted_terms_of_service"), - load("onboarding_done"), - ]); + const [ + localDocs, + acceptedPP, + acceptedTOS, + onboardingDone, + onboardingStarted, + ] = await Promise.all([ + load("legal_docs"), + load("accepted_privacy_policy"), + load("accepted_terms_of_service"), + load("onboarding_done"), + load("onboarding_started"), + ]); if (!active) return; @@ -78,11 +87,15 @@ export default function OnboardingGate({ children }: { children: ReactNode }) { const currentAcceptedTOS = acceptedTOS && localDocs.tos.hash === parsed.data.tos.hash; const existingUser = acceptedPP && acceptedTOS; - const includeOnboarding = !onboardingDone && !existingUser; + const includeOnboarding = + !onboardingDone && (!existingUser || onboardingStarted); - if (!onboardingDone && existingUser) { + if (!onboardingDone && existingUser && !onboardingStarted) { await save("onboarding_done", true); if (!active) return; + } else if (includeOnboarding && !onboardingStarted) { + await save("onboarding_started", true); + if (!active) return; } setState({ @@ -124,7 +137,10 @@ export default function OnboardingGate({ children }: { children: ReactNode }) { const finish = useCallback(async () => { if (state?.includeOnboarding) { - await save("onboarding_done", true); + await Promise.all([ + save("onboarding_done", true), + save("onboarding_started", false), + ]); } setComplete(true); }, [save, state?.includeOnboarding]); @@ -142,6 +158,8 @@ export default function OnboardingGate({ children }: { children: ReactNode }) { if (state.includeLegal) { steps.push({ id: "legal", + title: "Privacy Policy & ToS", + description: `${state.docs.pp.version} / ${state.docs.tos.version}`, defaultCanContinue: false, content: ( {children}; diff --git a/packages/onboarding/src/pages/legal.tsx b/packages/onboarding/src/pages/legal.tsx index 47b75a7..b9dd1d6 100644 --- a/packages/onboarding/src/pages/legal.tsx +++ b/packages/onboarding/src/pages/legal.tsx @@ -32,16 +32,7 @@ export default function LegalPage({ }); return ( -
-
-

- Privacy Policy & ToS -

-

- {docs.pp.version} / {docs.tos.version} -

-
- +
-

- Onboarding -

-
- ); -} diff --git a/packages/onboarding/src/steps.tsx b/packages/onboarding/src/steps.tsx index b41365f..26a49df 100644 --- a/packages/onboarding/src/steps.tsx +++ b/packages/onboarding/src/steps.tsx @@ -1,10 +1,15 @@ -import type { OnboardingStep } from "@methanium/ui"; -import OnboardingPage from "./pages/onboarding"; +import { ThemeOnboardingPage, type OnboardingStep } from "@methanium/ui"; -// Add future onboarding pages here. Completed users skip this entire manifest. -export const onboardingSteps: OnboardingStep[] = [ +export const onboardingSteps = ( + themeId: string | null, + setThemeId: (id: string) => void, +): OnboardingStep[] => [ { - id: "onboarding", - content: , + id: "theme", + title: "Theming", + description: + "Pick a main theme and after that ... let's just hope you don't get into decision paralysis", + defaultCanContinue: false, + content: , }, ]; diff --git a/packages/settings/src/layout.tsx b/packages/settings/src/layout.tsx index 1d350c6..37e0ef2 100644 --- a/packages/settings/src/layout.tsx +++ b/packages/settings/src/layout.tsx @@ -27,12 +27,16 @@ export default function SettingsLayout() { export function SettingsSidebar() { const isMobile = useIsMobile(); const navigate = useNavigate(); - const categories = [...new Set(settingsNavigation.map((page) => page.category))]; + const categories = [ + ...new Set(settingsNavigation.map((page) => page.category)), + ]; return (
diff --git a/packages/settings/src/pages/licenses.tsx b/packages/settings/src/pages/licenses.tsx index bf37672..2e34445 100644 --- a/packages/settings/src/pages/licenses.tsx +++ b/packages/settings/src/pages/licenses.tsx @@ -1,32 +1,144 @@ -import { Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Dialog, DialogContent, DialogTrigger } from "@methanium/ui"; -import { generatedAt, packageCount, packages } from "../../../../licenses/third-party-credits.json"; +import { + Badge, + Button, + Card, + CardContent, + CardDescription, + CardFooter, + CardHeader, + CardTitle, + Dialog, + DialogContent, + DialogTrigger, +} from "@methanium/ui"; +import { + generatedAt, + packageCount, + packages, +} from "../../../../licenses/third-party-credits.json"; -const licenseTexts = import.meta.glob("../../../../licenses/**/*", { eager: true, import: "default", query: "?raw" }) as Record; +const licenseTexts = import.meta.glob("../../../../licenses/**/*", { + eager: true, + import: "default", + query: "?raw", +}) as Record; function getLicenseFiles(licensePackage: (typeof packages)[number]) { return licensePackage.files.map((fileName) => ({ fileName, - text: licenseTexts["../../../../" + licensePackage.licenseFolder + "/" + fileName], + text: licenseTexts[ + "../../../../" + licensePackage.licenseFolder + "/" + fileName + ], })); } export default function Page() { - return
-

Last generated: {generatedAt}

Package Count: {packageCount}

-
- {packages.map((licensePackage) => - {licensePackage.license} {licensePackage.name} {licensePackage.version} - {licensePackage.description && {licensePackage.description}} - - {licensePackage.repository ? : } - {licensePackage.homepage ? : } - - )} -
-
; + return ( +
+
+

Last generated: {generatedAt}

+

Package Count: {packageCount}

+
+
+
+ {packages.map((licensePackage) => ( + + + + {licensePackage.license} {licensePackage.name}{" "} + {licensePackage.version} + + + {licensePackage.description && ( + + + {licensePackage.description} + + + )} + + + {licensePackage.repository ? ( + + + + ) : ( + + )} + {licensePackage.homepage ? ( + + + + ) : ( + + )} + + + ))} +
+
+
+ ); } -function LicenseDialog({ licensePackage }: { licensePackage: (typeof packages)[number] }) { +function LicenseDialog({ + licensePackage, +}: { + licensePackage: (typeof packages)[number]; +}) { const licenseFiles = getLicenseFiles(licensePackage); - return text)} className="cursor-pointer">Open License} />
{licenseFiles.map(({ fileName, text }, index) =>

= 1 && "pt-2"}`}>{fileName}

{text || "License text could not be loaded. Please contact support@tensamin.net"}
)}
; + return ( + + ( + + )} + /> + +
+ {licenseFiles.map(({ fileName, text }, index) => ( +
+

= 1 && "pt-2"}`} + > + {fileName} +

+
+                {text ||
+                  "License text could not be loaded. Please contact support@tensamin.net"}
+              
+
+ ))} +
+
+
+ ); } diff --git a/packages/settings/src/pages/profile.tsx b/packages/settings/src/pages/profile.tsx index dda9edf..06c099e 100644 --- a/packages/settings/src/pages/profile.tsx +++ b/packages/settings/src/pages/profile.tsx @@ -2,21 +2,40 @@ import MDInput from "@tensamin/markdown/input"; import { useMTP } from "@tensamin/mtp"; import { mtp } from "@tensamin/shared/data"; import { useStorage } from "@tensamin/storage/context"; -import { Avatar, AvatarFallback, AvatarImage, Button, cn, Input, useIsMobile } from "@methanium/ui"; +import { + Avatar, + AvatarFallback, + AvatarImage, + Button, + cn, + Input, + useIsMobile, +} from "@methanium/ui"; import { useUser, type User } from "@tensamin/user/context"; import { Check } from "lucide-react"; import { useEffect, useRef, useState } from "react"; -async function prepImage(file: File, size = 300, quality = 0.8): Promise { +async function prepImage( + file: File, + size = 300, + quality = 0.8, +): Promise { const bitmap = await createImageBitmap(file); const canvas = document.createElement("canvas"); - canvas.width = size; canvas.height = size; + canvas.width = size; + canvas.height = size; const context = canvas.getContext("2d"); if (!context) throw new Error("Could not get canvas context"); const scale = Math.max(size / bitmap.width, size / bitmap.height); const width = bitmap.width * scale; const height = bitmap.height * scale; - context.drawImage(bitmap, (size - width) / 2, (size - height) / 2, width, height); + context.drawImage( + bitmap, + (size - width) / 2, + (size - height) / 2, + width, + height, + ); return canvas.toDataURL("image/webp", quality); } @@ -31,14 +50,22 @@ export default function Page() { const [saveSucceeded, setSaveSucceeded] = useState(false); const avatarUploadRef = useRef(null); const draftInitializedRef = useRef(false); - const effectiveAvatar = draftUser.Avatar === "none" ? undefined : draftUser.Avatar; - const updateDraftUser = (updater: (previous: Partial) => Partial) => { - setSaveSucceeded(false); setErrorMessage(""); setDraftUser(updater); + const effectiveAvatar = + draftUser.Avatar === "none" ? undefined : draftUser.Avatar; + const updateDraftUser = ( + updater: (previous: Partial) => Partial, + ) => { + setSaveSucceeded(false); + setErrorMessage(""); + setDraftUser(updater); }; - useEffect(() => { void (async () => setCurrentUser(await get(await load("user_id"))))(); }, [get, load]); + useEffect(() => { + void (async () => setCurrentUser(await get(await load("user_id"))))(); + }, [get, load]); useEffect(() => { if (!currentUser || draftInitializedRef.current) return; - setDraftUser(currentUser); draftInitializedRef.current = true; + setDraftUser(currentUser); + draftInitializedRef.current = true; }, [currentUser]); async function handleAvatarUpload(file: File) { const avatar = await prepImage(file); @@ -46,22 +73,128 @@ export default function Page() { if (avatarUploadRef.current) avatarUploadRef.current.value = ""; } if (!currentUser) return

Loading...

; - return <> - event.target.files?.[0] && handleAvatarUpload(event.target.files[0])} type="file" /> -
-
{draftUser.Display?.slice(0, 2).toUpperCase() || currentUser.Display.slice(0, 2).toUpperCase()}

Avatar

GIFs are supported in decentralised mode or with Tensamin Premium.
Maximum file size is 16mb.

- updateDraftUser((previous) => ({ ...previous, display: event.target.value }))} placeholder="Display Name" value={draftUser.Display || ""} /> - updateDraftUser((previous) => ({ ...previous, username: event.target.value }))} placeholder="Username" value={draftUser.Username || ""} /> - updateDraftUser((previous) => ({ ...previous, about: value }))} value={draftUser.About || ""} /> - - {errorMessage &&

{errorMessage}

} -
- ; + return ( + <> + + event.target.files?.[0] && handleAvatarUpload(event.target.files[0]) + } + type="file" + /> +
+
+ + + + {draftUser.Display?.slice(0, 2).toUpperCase() || + currentUser.Display.slice(0, 2).toUpperCase()} + + +
+

Avatar

+
+ + +
+

+ GIFs are supported in decentralised mode or with Tensamin Premium. +
+ Maximum file size is 16mb. +

+
+
+ + updateDraftUser((previous) => ({ + ...previous, + display: event.target.value, + })) + } + placeholder="Display Name" + value={draftUser.Display || ""} + /> + + updateDraftUser((previous) => ({ + ...previous, + username: event.target.value, + })) + } + placeholder="Username" + value={draftUser.Username || ""} + /> + + updateDraftUser((previous) => ({ ...previous, about: value })) + } + value={draftUser.About || ""} + /> + + {errorMessage && ( +

{errorMessage}

+ )} +
+ + ); } diff --git a/packages/settings/src/pages/security.tsx b/packages/settings/src/pages/security.tsx index 76b71e3..74557d0 100644 --- a/packages/settings/src/pages/security.tsx +++ b/packages/settings/src/pages/security.tsx @@ -8,18 +8,87 @@ export default function Page() { const [currentOmegaUrl, setCurrentOmegaUrl] = useState(""); const [draftForcedOmikronUrl, setDraftForcedOmikronUrl] = useState(""); const [currentForcedOmikronUrl, setCurrentForcedOmikronUrl] = useState(""); - const [draftForcedOmikronPublicKey, setDraftForcedOmikronPublicKey] = useState(""); - const [currentForcedOmikronPublicKey, setCurrentForcedOmikronPublicKey] = useState(""); + const [draftForcedOmikronPublicKey, setDraftForcedOmikronPublicKey] = + useState(""); + const [currentForcedOmikronPublicKey, setCurrentForcedOmikronPublicKey] = + useState(""); useEffect(() => { - load("omega_url").then((value) => { setDraftOmegaUrl(value); setCurrentOmegaUrl(value); }); - load("forced_omikron_url").then((value) => { setDraftForcedOmikronUrl(value || ""); setCurrentForcedOmikronUrl(value || ""); }); - load("forced_omikron_public_key").then((value) => { setDraftForcedOmikronPublicKey(value || ""); setCurrentForcedOmikronPublicKey(value || ""); }); + load("omega_url").then((value) => { + setDraftOmegaUrl(value); + setCurrentOmegaUrl(value); + }); + load("forced_omikron_url").then((value) => { + setDraftForcedOmikronUrl(value || ""); + setCurrentForcedOmikronUrl(value || ""); + }); + load("forced_omikron_public_key").then((value) => { + setDraftForcedOmikronPublicKey(value || ""); + setCurrentForcedOmikronPublicKey(value || ""); + }); }, [load]); - return
-

It's best not to touch these settings! They can be exploited to gain access to your account!

-
setDraftOmegaUrl(event.target.value)} />
-
setDraftForcedOmikronUrl(event.target.value)} /> setDraftForcedOmikronPublicKey(event.target.value)} />
-
; + return ( +
+

+ It's best not to touch these settings! They can be exploited to gain + access to your account! +

+
+ +
+ setDraftOmegaUrl(event.target.value)} + /> + +
+
+
+ +
+ setDraftForcedOmikronUrl(event.target.value)} + /> + + setDraftForcedOmikronPublicKey(event.target.value) + } + /> + +
+
+
+ ); } diff --git a/packages/settings/src/pages/theme.tsx b/packages/settings/src/pages/theme.tsx index 8fd664b..e8352e7 100644 --- a/packages/settings/src/pages/theme.tsx +++ b/packages/settings/src/pages/theme.tsx @@ -1,5 +1,18 @@ -import { StylePicker } from "@methanium/ui"; +import { ThemeCustomizer } from "@methanium/ui"; export default function Page() { - return ; + return ( + + ); } diff --git a/packages/shared/src/data.ts b/packages/shared/src/data.ts index 6ba7141..ee3152f 100644 --- a/packages/shared/src/data.ts +++ b/packages/shared/src/data.ts @@ -1,4 +1,5 @@ import { z } from "zod"; +import type { ThemeDesign } from "@methanium/ui"; import { legalDocsSchema } from "./features/legal/schema"; import { @@ -422,6 +423,7 @@ export interface Storage extends SettingsStorageDefaults { user_id: number; mtp_keyring: string; onboarding_done: boolean; + onboarding_started: boolean; ppandtos_done: boolean; accepted_terms_of_service: boolean; accepted_privacy_policy: boolean; @@ -445,6 +447,8 @@ export interface Storage extends SettingsStorageDefaults { theme_tint: "soft" | "hard" | "extreme"; theme_border_radius: number; theme_custom_css: string; + theme_parent: string; + theme_design: ThemeDesign; chat_trusted_domains: string[]; chat_picker_saved_media: string[]; chat_picker_last_tab: "gif" | "meme" | "saved"; @@ -460,6 +464,7 @@ export const storageDefaults: Storage = { user_id: 0, mtp_keyring: "", onboarding_done: false, + onboarding_started: false, ppandtos_done: false, accepted_terms_of_service: false, accepted_privacy_policy: false, @@ -498,8 +503,18 @@ export const storageDefaults: Storage = { theme_primary_color: "", theme_polarity: "system", theme_tint: "soft", - theme_border_radius: 0.55, + theme_border_radius: 0.5, theme_custom_css: "", + theme_parent: "tensamin", + theme_design: { + density: 1, + borderWidth: 1, + shadowStrength: 0, + fontScale: 1, + headingWeight: 600, + motion: 1, + fontFamily: "public-sans", + }, chat_trusted_domains: [ // Other platforms "cdn.discordapp.com", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d105f9..643e5d4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - '@methanium/ui': https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz + '@methanium/ui': https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz mtp: https://git.methanium.net/methanium/mtp/releases/download/0.2.0-3919eb46fd/mtp-0.2.0.tgz importers: @@ -13,8 +13,8 @@ importers: .: dependencies: '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) mtp: specifier: https://git.methanium.net/methanium/mtp/releases/download/0.2.0-3919eb46fd/mtp-0.2.0.tgz version: https://git.methanium.net/methanium/mtp/releases/download/0.2.0-3919eb46fd/mtp-0.2.0.tgz @@ -89,8 +89,8 @@ importers: apps/tauri: dependencies: '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@tauri-apps/api': specifier: ^2 version: 2.11.1 @@ -153,8 +153,8 @@ importers: specifier: ^5.2.7 version: 5.2.7 '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@radix-ui/primitive': specifier: ^1.1.0 version: 1.1.4 @@ -532,8 +532,8 @@ importers: specifier: ^2.9.20 version: 2.9.21(livekit-client@2.20.0(@types/dom-mediacapture-record@1.0.22))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(tslib@2.8.1) '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@tanstack/react-router': specifier: ^1.169.1 version: 1.170.17(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -583,8 +583,8 @@ importers: packages/chat: dependencies: '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@tanstack/pacer': specifier: ^0.21.1 version: 0.21.1 @@ -664,8 +664,8 @@ importers: specifier: ^6.41.1 version: 6.43.4 '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@twemoji/api': specifier: ^17.0.3 version: 17.0.3 @@ -682,8 +682,8 @@ importers: packages/mtp: dependencies: '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@tauri-apps/api': specifier: ^2 version: 2.11.1 @@ -722,8 +722,8 @@ importers: packages/notifications: dependencies: '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@tanstack/react-router': specifier: ^1.169.1 version: 1.170.17(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -764,8 +764,8 @@ importers: packages/onboarding: dependencies: '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@tensamin/shared': specifier: workspace:* version: link:../shared @@ -788,8 +788,8 @@ importers: packages/settings: dependencies: '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@tanstack/react-router': specifier: ^1.169.1 version: 1.170.17(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -828,8 +828,8 @@ importers: packages/shared: dependencies: '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) lucide-react: specifier: ^1.14.0 version: 1.23.0(react@19.2.7) @@ -846,8 +846,8 @@ importers: packages/storage: dependencies: '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@tauri-apps/api': specifier: ^2 version: 2.11.1 @@ -870,8 +870,8 @@ importers: packages/tauth: dependencies: '@methanium/ui': - specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz - version: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) + specifier: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz + version: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3) '@tanstack/react-router': specifier: ^1.0.0 version: 1.170.17(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -1161,8 +1161,8 @@ packages: engines: {node: '>=12.0.0'} hasBin: true - '@electron/rebuild@4.1.0': - resolution: {integrity: sha512-GFky+1JeO8fpSqtZCh+2wFRN/MVbAhm7tXI2M7BA1Os79OR8LEoxRtAbRPyxvmKWhEMF/p10rNJkkgP1klI13g==} + '@electron/rebuild@4.2.0': + resolution: {integrity: sha512-RKL/O+jGoXJMxrx/5771y1n0xTKmFuOYGO3gMmwypBM6rsH0kou0mswwdXA2JrhIkE4xyC7v9vGk0n6NPzgOxQ==} engines: {node: '>=22.12.0'} hasBin: true @@ -1443,6 +1443,9 @@ packages: '@fontsource-variable/public-sans@5.2.7': resolution: {integrity: sha512-4mvade2J3slKkvwRkS+p8T3szet/0vhWoSnuUJTVU81Uo2pRpSZY/Y8bSLRqpSwzIPxjVmRJ53oq6JKP/l/PSg==} + '@fontsource-variable/public-sans@5.3.0': + resolution: {integrity: sha512-AVfkmAt50BMXWpOO21FAntiJFKGX6xTc2dSL8dxtDteONe9IuRXJWGbs0EbG955vAMCq23ENeuopuW87cGWDSQ==} + '@hono/node-server@1.19.14': resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==} engines: {node: '>=18.14.1'} @@ -1547,9 +1550,9 @@ packages: '@marijn/find-cluster-break@1.0.3': resolution: {integrity: sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA==} - '@methanium/ui@https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz': - resolution: {integrity: sha512-qS2q/CJg05245YN3tbgr7+JcJ3LqQE1S9AZ+zMMsMUFkwBK95cFfNrMVsNNsxt0ScMcBKSG2dZ3uFO8R2LE9JA==, tarball: https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz} - version: 0.0.1 + '@methanium/ui@https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz': + resolution: {integrity: sha512-N1XjzbLIkCL9UeRqIGgU5RoUL+rBfJb4bo+kRcWtXwQJmvUBGkuxoh3j2bLsBG3P6wmRytNa2/ReSwLzjKt/UA==, tarball: https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz} + version: 0.0.6 peerDependencies: react: ^19.2.7 react-dom: ^19.2.7 @@ -1590,8 +1593,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/types@0.138.0': - resolution: {integrity: sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==} + '@oxc-project/types@0.139.0': + resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} '@peculiar/asn1-schema@2.8.0': resolution: {integrity: sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q==} @@ -1798,97 +1801,97 @@ packages: react-redux: optional: true - '@rolldown/binding-android-arm64@1.1.4': - resolution: {integrity: sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==} + '@rolldown/binding-android-arm64@1.1.5': + resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.1.4': - resolution: {integrity: sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==} + '@rolldown/binding-darwin-arm64@1.1.5': + resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.4': - resolution: {integrity: sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==} + '@rolldown/binding-darwin-x64@1.1.5': + resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.1.4': - resolution: {integrity: sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==} + '@rolldown/binding-freebsd-x64@1.1.5': + resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.1.4': - resolution: {integrity: sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==} + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.1.4': - resolution: {integrity: sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==} + '@rolldown/binding-linux-arm64-gnu@1.1.5': + resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.1.4': - resolution: {integrity: sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==} + '@rolldown/binding-linux-arm64-musl@1.1.5': + resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.1.4': - resolution: {integrity: sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==} + '@rolldown/binding-linux-ppc64-gnu@1.1.5': + resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.1.4': - resolution: {integrity: sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==} + '@rolldown/binding-linux-s390x-gnu@1.1.5': + resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.1.4': - resolution: {integrity: sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==} + '@rolldown/binding-linux-x64-gnu@1.1.5': + resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.1.4': - resolution: {integrity: sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==} + '@rolldown/binding-linux-x64-musl@1.1.5': + resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.1.4': - resolution: {integrity: sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==} + '@rolldown/binding-openharmony-arm64@1.1.5': + resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.1.4': - resolution: {integrity: sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==} + '@rolldown/binding-wasm32-wasi@1.1.5': + resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.1.4': - resolution: {integrity: sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==} + '@rolldown/binding-win32-arm64-msvc@1.1.5': + resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.4': - resolution: {integrity: sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==} + '@rolldown/binding-win32-x64-msvc@1.1.5': + resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -2493,6 +2496,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + baseline-browser-mapping@2.11.1: + resolution: {integrity: sha512-HYXq73DDpCtNzOmrFsm9eSwCvWCql0RzqjpDzXN9EadiLJ4DNat0nsZ/Bzmy+Ud12mb4/zKDY0cQ805ZzN+i0A==} + engines: {node: '>=6.0.0'} + hasBin: true + bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} @@ -2504,11 +2512,11 @@ packages: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - brace-expansion@1.1.15: - resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} + brace-expansion@1.1.16: + resolution: {integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==} - brace-expansion@2.1.1: - resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} + brace-expansion@2.1.2: + resolution: {integrity: sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==} brace-expansion@5.0.7: resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} @@ -2523,6 +2531,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.28.7: + resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -2576,6 +2589,9 @@ packages: caniuse-lite@1.0.30001800: resolution: {integrity: sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA==} + caniuse-lite@1.0.30001806: + resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==} + chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} @@ -2931,6 +2947,9 @@ packages: electron-to-chromium@1.5.385: resolution: {integrity: sha512-78sa/M08MNAYHQfjoWMvOlKQqZ0ElhSm/L5HNUc96VZ3b+KvDVnngFm8sYQy0XrhTRgAhggHr5abA7yTvRdo4Q==} + electron-to-chromium@1.5.396: + resolution: {integrity: sha512-yHiw2Y3C3H9U6TMbOfoWK/BPreiOPXRfTWPBwQBoZG6/8TB6eOPnsy5oaRYuatR7Fw2SJ4kKforgufeo7fq0EQ==} + electron-winstaller@5.4.0: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} @@ -3157,8 +3176,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.1.3: - resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==} + fast-uri@3.1.4: + resolution: {integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==} fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -3251,6 +3270,10 @@ packages: resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==} engines: {node: '>=14.14'} + fs-extra@11.4.0: + resolution: {integrity: sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==} + engines: {node: '>=14.14'} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -3663,30 +3686,60 @@ packages: cpu: [arm64] os: [android] + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + lightningcss-darwin-arm64@1.32.0: resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + lightningcss-darwin-x64@1.32.0: resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + lightningcss-freebsd-x64@1.32.0: resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + lightningcss-linux-arm-gnueabihf@1.32.0: resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + lightningcss-linux-arm64-gnu@1.32.0: resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} engines: {node: '>= 12.0.0'} @@ -3694,6 +3747,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + lightningcss-linux-arm64-musl@1.32.0: resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} @@ -3701,6 +3761,13 @@ packages: os: [linux] libc: [musl] + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + lightningcss-linux-x64-gnu@1.32.0: resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} @@ -3708,6 +3775,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + lightningcss-linux-x64-musl@1.32.0: resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} @@ -3715,22 +3789,45 @@ packages: os: [linux] libc: [musl] + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + lightningcss-win32-arm64-msvc@1.32.0: resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + lightningcss-win32-x64-msvc@1.32.0: resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + lightningcss@1.32.0: resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3918,6 +4015,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.16: + resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -3950,6 +4052,10 @@ packages: resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==} engines: {node: '>=18'} + node-releases@2.0.51: + resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} + engines: {node: '>=18'} + nopt@9.0.0: resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -4137,6 +4243,10 @@ packages: resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.23: + resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} + engines: {node: ^10 || ^12 || >=14} + postject@1.0.0-alpha.6: resolution: {integrity: sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==} engines: {node: '>=14.0.0'} @@ -4372,8 +4482,8 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} - rolldown@1.1.4: - resolution: {integrity: sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==} + rolldown@1.1.5: + resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -4614,8 +4724,8 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} - tar@7.5.19: - resolution: {integrity: sha512-4LeEWl96twnS2Q7Bz4MGqgazLqO+hJN63GZxXoIqh1T3VweYD997gbU1ItNsQafqqXTXd5WFyFdReLtwvRBNiw==} + tar@7.5.22: + resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==} engines: {node: '>=18'} tauri-plugin-app-events-api@0.2.0: @@ -4722,8 +4832,8 @@ packages: undici-types@8.3.0: resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} - undici@6.27.0: - resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==} + undici@6.28.0: + resolution: {integrity: sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==} engines: {node: '>=18.17'} undici@7.28.0: @@ -5091,7 +5201,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.4 + browserslist: 4.28.7 lru-cache: 5.1.1 semver: 6.3.1 @@ -5424,7 +5534,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/rebuild@4.1.0': + '@electron/rebuild@4.2.0': dependencies: '@malept/cross-spawn-promise': 2.0.0 debug: 4.4.3 @@ -5441,7 +5551,7 @@ snapshots: '@malept/cross-spawn-promise': 2.0.0 debug: 4.4.3 dir-compare: 4.2.0 - fs-extra: 11.3.6 + fs-extra: 11.4.0 minimatch: 9.0.9 plist: 3.1.0 transitivePeerDependencies: @@ -5451,7 +5561,7 @@ snapshots: dependencies: cross-dirname: 0.1.0 debug: 4.4.3 - fs-extra: 11.3.6 + fs-extra: 11.4.0 minimist: 1.2.8 postject: 1.0.0-alpha.6 transitivePeerDependencies: @@ -5636,6 +5746,8 @@ snapshots: '@fontsource-variable/public-sans@5.2.7': {} + '@fontsource-variable/public-sans@5.3.0': {} + '@hono/node-server@1.19.14(hono@4.12.27)': dependencies: hono: 4.12.27 @@ -5753,21 +5865,19 @@ snapshots: '@marijn/find-cluster-break@1.0.3': {} - '@methanium/ui@https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3)': + '@methanium/ui@https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz(@date-fns/tz@1.5.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1)(typescript@6.0.3)': dependencies: '@base-ui/react': 1.6.0(@date-fns/tz@1.5.0)(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@fontsource-variable/inter': 5.2.8 + '@fontsource-variable/public-sans': 5.3.0 '@tauri-apps/api': 2.11.1 class-variance-authority: 0.7.1 clsx: 2.1.1 cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - date-fns: 4.4.0 embla-carousel-react: 8.6.0(react@19.2.7) input-otp: 1.4.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7) lucide-react: 1.23.0(react@19.2.7) next-themes: 0.4.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react: 19.2.7 - react-day-picker: 10.0.1(@types/react@19.2.17)(react@19.2.7) react-dom: 19.2.7(react@19.2.7) react-resizable-panels: 4.12.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) recharts: 3.8.1(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1) @@ -5782,6 +5892,7 @@ snapshots: - '@types/react' - '@types/react-dom' - babel-plugin-macros + - date-fns - react-is - redux - supports-color @@ -5832,7 +5943,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@oxc-project/types@0.138.0': {} + '@oxc-project/types@0.139.0': {} '@peculiar/asn1-schema@2.8.0': dependencies: @@ -6016,53 +6127,53 @@ snapshots: react: 19.2.7 react-redux: 9.3.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1) - '@rolldown/binding-android-arm64@1.1.4': + '@rolldown/binding-android-arm64@1.1.5': optional: true - '@rolldown/binding-darwin-arm64@1.1.4': + '@rolldown/binding-darwin-arm64@1.1.5': optional: true - '@rolldown/binding-darwin-x64@1.1.4': + '@rolldown/binding-darwin-x64@1.1.5': optional: true - '@rolldown/binding-freebsd-x64@1.1.4': + '@rolldown/binding-freebsd-x64@1.1.5': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.4': + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.4': + '@rolldown/binding-linux-arm64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.4': + '@rolldown/binding-linux-arm64-musl@1.1.5': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.4': + '@rolldown/binding-linux-ppc64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.4': + '@rolldown/binding-linux-s390x-gnu@1.1.5': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.4': + '@rolldown/binding-linux-x64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-x64-musl@1.1.4': + '@rolldown/binding-linux-x64-musl@1.1.5': optional: true - '@rolldown/binding-openharmony-arm64@1.1.4': + '@rolldown/binding-openharmony-arm64@1.1.5': optional: true - '@rolldown/binding-wasm32-wasi@1.1.4': + '@rolldown/binding-wasm32-wasi@1.1.5': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.4': + '@rolldown/binding-win32-arm64-msvc@1.1.5': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.4': + '@rolldown/binding-win32-x64-msvc@1.1.5': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -6558,7 +6669,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.3 + fast-uri: 3.1.4 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -6579,7 +6690,7 @@ snapshots: '@electron/get': 3.1.0 '@electron/notarize': 2.5.0 '@electron/osx-sign': 1.3.3 - '@electron/rebuild': 4.1.0 + '@electron/rebuild': 4.2.0 '@electron/universal': 2.0.3 '@malept/flatpak-bundler': 0.4.0 '@noble/hashes': 2.2.0 @@ -6612,7 +6723,7 @@ snapshots: proper-lockfile: 4.1.2 resedit: 1.7.2 semver: 7.7.4 - tar: 7.5.19 + tar: 7.5.22 temp-file: 3.4.0 tiny-async-pool: 1.3.0 unzipper: 0.12.5 @@ -6658,6 +6769,8 @@ snapshots: baseline-browser-mapping@2.10.41: {} + baseline-browser-mapping@2.11.1: {} + bluebird@3.7.2: {} body-parser@2.3.0: @@ -6677,12 +6790,12 @@ snapshots: boolean@3.2.0: optional: true - brace-expansion@1.1.15: + brace-expansion@1.1.16: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.1.1: + brace-expansion@2.1.2: dependencies: balanced-match: 1.0.2 @@ -6702,6 +6815,14 @@ snapshots: node-releases: 2.0.50 update-browserslist-db: 1.2.3(browserslist@4.28.4) + browserslist@4.28.7: + dependencies: + baseline-browser-mapping: 2.11.1 + caniuse-lite: 1.0.30001806 + electron-to-chromium: 1.5.396 + node-releases: 2.0.51 + update-browserslist-db: 1.2.3(browserslist@4.28.7) + buffer-crc32@0.2.13: {} buffer-from@1.1.2: {} @@ -6768,6 +6889,8 @@ snapshots: caniuse-lite@1.0.30001800: {} + caniuse-lite@1.0.30001806: {} + chai@6.2.2: {} chalk@4.1.2: @@ -7100,6 +7223,8 @@ snapshots: electron-to-chromium@1.5.385: {} + electron-to-chromium@1.5.396: {} + electron-winstaller@5.4.0: dependencies: '@electron/asar': 3.4.1 @@ -7424,7 +7549,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.1.3: {} + fast-uri@3.1.4: {} fastq@1.20.1: dependencies: @@ -7525,6 +7650,12 @@ snapshots: jsonfile: 6.2.1 universalify: 2.0.1 + fs-extra@11.4.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -7881,36 +8012,69 @@ snapshots: lightningcss-android-arm64@1.32.0: optional: true + lightningcss-android-arm64@1.33.0: + optional: true + lightningcss-darwin-arm64@1.32.0: optional: true + lightningcss-darwin-arm64@1.33.0: + optional: true + lightningcss-darwin-x64@1.32.0: optional: true + lightningcss-darwin-x64@1.33.0: + optional: true + lightningcss-freebsd-x64@1.32.0: optional: true + lightningcss-freebsd-x64@1.33.0: + optional: true + lightningcss-linux-arm-gnueabihf@1.32.0: optional: true + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + lightningcss-linux-arm64-gnu@1.32.0: optional: true + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + lightningcss-linux-arm64-musl@1.32.0: optional: true + lightningcss-linux-arm64-musl@1.33.0: + optional: true + lightningcss-linux-x64-gnu@1.32.0: optional: true + lightningcss-linux-x64-gnu@1.33.0: + optional: true + lightningcss-linux-x64-musl@1.32.0: optional: true + lightningcss-linux-x64-musl@1.33.0: + optional: true + lightningcss-win32-arm64-msvc@1.32.0: optional: true + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + lightningcss-win32-x64-msvc@1.32.0: optional: true + lightningcss-win32-x64-msvc@1.33.0: + optional: true + lightningcss@1.32.0: dependencies: detect-libc: 2.1.2 @@ -7927,6 +8091,22 @@ snapshots: lightningcss-win32-arm64-msvc: 1.32.0 lightningcss-win32-x64-msvc: 1.32.0 + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + lines-and-columns@1.2.4: {} livekit-client@2.20.0(@types/dom-mediacapture-record@1.0.22): @@ -8036,15 +8216,15 @@ snapshots: minimatch@3.1.5: dependencies: - brace-expansion: 1.1.15 + brace-expansion: 1.1.16 minimatch@5.1.9: dependencies: - brace-expansion: 2.1.1 + brace-expansion: 2.1.2 minimatch@9.0.9: dependencies: - brace-expansion: 2.1.1 + brace-expansion: 2.1.2 minimist@1.2.8: {} @@ -8080,6 +8260,8 @@ snapshots: nanoid@3.3.15: {} + nanoid@3.3.16: {} + natural-compare@1.4.0: {} negotiator@1.0.0: {} @@ -8105,15 +8287,17 @@ snapshots: nopt: 9.0.0 proc-log: 6.1.0 semver: 7.8.5 - tar: 7.5.19 + tar: 7.5.22 tinyglobby: 0.2.17 - undici: 6.27.0 + undici: 6.28.0 which: 6.0.1 node-int64@0.4.0: {} node-releases@2.0.50: {} + node-releases@2.0.51: {} + nopt@9.0.0: dependencies: abbrev: 4.0.0 @@ -8291,6 +8475,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.23: + dependencies: + nanoid: 3.3.16 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postject@1.0.0-alpha.6: dependencies: commander: 9.5.0 @@ -8523,26 +8713,26 @@ snapshots: sprintf-js: 1.1.3 optional: true - rolldown@1.1.4: + rolldown@1.1.5: dependencies: - '@oxc-project/types': 0.138.0 + '@oxc-project/types': 0.139.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.4 - '@rolldown/binding-darwin-arm64': 1.1.4 - '@rolldown/binding-darwin-x64': 1.1.4 - '@rolldown/binding-freebsd-x64': 1.1.4 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.4 - '@rolldown/binding-linux-arm64-gnu': 1.1.4 - '@rolldown/binding-linux-arm64-musl': 1.1.4 - '@rolldown/binding-linux-ppc64-gnu': 1.1.4 - '@rolldown/binding-linux-s390x-gnu': 1.1.4 - '@rolldown/binding-linux-x64-gnu': 1.1.4 - '@rolldown/binding-linux-x64-musl': 1.1.4 - '@rolldown/binding-openharmony-arm64': 1.1.4 - '@rolldown/binding-wasm32-wasi': 1.1.4 - '@rolldown/binding-win32-arm64-msvc': 1.1.4 - '@rolldown/binding-win32-x64-msvc': 1.1.4 + '@rolldown/binding-android-arm64': 1.1.5 + '@rolldown/binding-darwin-arm64': 1.1.5 + '@rolldown/binding-darwin-x64': 1.1.5 + '@rolldown/binding-freebsd-x64': 1.1.5 + '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 + '@rolldown/binding-linux-arm64-gnu': 1.1.5 + '@rolldown/binding-linux-arm64-musl': 1.1.5 + '@rolldown/binding-linux-ppc64-gnu': 1.1.5 + '@rolldown/binding-linux-s390x-gnu': 1.1.5 + '@rolldown/binding-linux-x64-gnu': 1.1.5 + '@rolldown/binding-linux-x64-musl': 1.1.5 + '@rolldown/binding-openharmony-arm64': 1.1.5 + '@rolldown/binding-wasm32-wasi': 1.1.5 + '@rolldown/binding-win32-arm64-msvc': 1.1.5 + '@rolldown/binding-win32-x64-msvc': 1.1.5 router@2.2.0: dependencies: @@ -8804,7 +8994,7 @@ snapshots: tapable@2.3.3: {} - tar@7.5.19: + tar@7.5.22: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -8914,7 +9104,7 @@ snapshots: undici-types@8.3.0: {} - undici@6.27.0: {} + undici@6.28.0: {} undici@7.28.0: {} @@ -8940,6 +9130,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.2.3(browserslist@4.28.7): + dependencies: + browserslist: 4.28.7 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -9004,10 +9200,10 @@ snapshots: vite@8.1.3(@types/node@26.1.0)(esbuild@0.25.12)(jiti@2.7.0)(yaml@2.9.0): dependencies: - lightningcss: 1.32.0 + lightningcss: 1.33.0 picomatch: 4.0.5 - postcss: 8.5.16 - rolldown: 1.1.4 + postcss: 8.5.23 + rolldown: 1.1.5 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 26.1.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fa060f8..37302dc 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,5 +6,5 @@ allowBuilds: electron-winstaller: true esbuild: true overrides: - "@methanium/ui": "https://git.methanium.net/methanium/ui/releases/download/0.0.1/methanium-ui.tgz" + "@methanium/ui": "https://git.methanium.net/methanium/ui/releases/download/0.0.6/methanium-ui.tgz" mtp: "https://git.methanium.net/methanium/mtp/releases/download/0.2.0-3919eb46fd/mtp-0.2.0.tgz" diff --git a/type-maps.yaml b/type-maps.yaml deleted file mode 100644 index fb5dbe3..0000000 --- a/type-maps.yaml +++ /dev/null @@ -1,270 +0,0 @@ -protocol_version: "1.0" - -# Note that markers 0 to 31 are reserved for default use, manually working with them is not recommended - -# Fixed CommunicationType markers are: -# Error: 0 -# ErrorParsing: 1 -# ErrorBadVersion: 2 -# Disconnect: 3 -# Redirect: 4 -# Shutdown: 5 -# BadRequest: 6 -# Unauthorized: 7 -# Forbidden: 8 -# NotFound: 9 -# TooManyRequests: 10 -# InternalServerError: 11 -# BadGateway: 12 -# ServiceUnavailable: 13 -# GatewayTimeout: 14 -# Identification: 15 -# IdentificationResponse: 16 -# Register: 17 -# RegisterResponse: 18 -# Ping: 19 -# Pong: 20 - -# Fixed Data Type markers are: -# Error: 0 -# ErrorParsing: 1 -# ErrorMessage: 2 -# Version: 3 -# Description: 4 -# Timestamp: 5 -# Id: 6 -# ClientNonce: 7 -# ServerNonce: 8 -# PublicKeys: 9 -# Signature: 10 -# Connected: 11 - -type_maps: - "1.0": - CommunicationTypes: - ErrorProtocol: 33 - ErrorAnonymous: 34 - ErrorInternal: 35 - ErrorInvalidData: 36 - ErrorInvalidUserId: 37 - ErrorInvalidOmikronId: 38 - ErrorNotFound: 39 - ErrorNotAuthenticated: 40 - ErrorNoIota: 41 - ErrorInvalidChallenge: 42 - ErrorInvalidSecret: 43 - ErrorInvalidPrivateKey: 44 - ErrorInvalidPublicKey: 45 - ErrorNoUserId: 46 - ErrorNoCallId: 47 - ErrorInvalidCallId: 48 - Success: 49 - ShortenLink: 50 - SettingsSave: 51 - SettingsLoad: 52 - SettingsList: 53 - GlobalSettingsSave: 54 - GlobalSettingsLoad: 55 - Message: 56 - MessageState: 57 - MessageSend: 58 - MessageLive: 59 - MessageOtherIota: 60 - MessageChunk: 61 - MessageGet: 143 - MessagesGet: 62 - MessageDelete: 149 - PushNotification: 63 - ReadNotification: 64 - GetNotifications: 65 - TauriIdentification: 66 - ChangeConfirm: 67 - ConfirmReceive: 68 - ConfirmRead: 69 - GetChats: 70 - GetStates: 71 - AddCommunity: 72 - RemoveCommunity: 73 - GetCommunities: 74 - RegisterIota: 81 - RegisterIotaSuccess: 82 - AddConversation: 85 - SendChat: 86 - ClientChanged: 87 - ClientConnected: 88 - ClientDisconnected: 89 - ClientClosed: 90 - PublicKey: 91 - PrivateKey: 92 - WebrtcSdp: 93 - WebrtcIce: 94 - StartStream: 95 - EndStream: 96 - WatchStream: 97 - CallToken: 98 - CallInvite: 99 - CallDisconnectUser: 100 - CallTimeoutUser: 101 - CallSetAnonymousJoining: 102 - CallData: 103 - EndCall: 104 - Function: 105 - Update: 106 - CreateUser: 107 - RhoUpdate: 108 - UserConnected: 109 - UserDisconnected: 110 - IotaConnected: 111 - IotaDisconnected: 112 - SyncClientIotaStatus: 113 - GetUserData: 114 - GetIotaData: 115 - IotaUserData: 116 - ChangeUserData: 117 - ChangeIotaData: 118 - GetRegister: 119 - CompleteRegisterUser: 120 - CompleteRegisterIota: 121 - DeleteUser: 122 - DeleteIota: 123 - StartRegister: 124 - CompleteRegister: 125 - GetApp: 126 - CreateApp: 127 - DeleteApp: 128 - SaveAppData: 129 - LoadAppData: 130 - AppIdentification: 131 - AppChallenge: 132 - AppChallengeResponse: 133 - AppIdentificationResponse: 134 - LoadTxtRecord: 135 - ErrorNotSet: 136 - SetChatSecret: 139 - GetChatSecret: 140 - ChatSecretResponse: 141 - ChatSecretForward: 142 - MessageEditLive: 144 - MessageEdit: 145 - MessageReactionAdd: 146 - MessageReactionRemove: 147 - MessageReactionLive: 148 - MessageDeleteLive: 150 - DataTypes: - ErrorType: 32 - ErrorProtocol: 33 - AcceptedIds: 34 - Uuid: 35 - RegisterId: 36 - Link: 37 - Settings: 38 - SettingsName: 39 - ChatPartnerId: 40 - ChatPartnerName: 41 - IotaId: 42 - UserId: 43 - UserIds: 44 - IotaIds: 45 - UserState: 46 - UserStates: 47 - UserPings: 48 - CallState: 49 - ScreenShare: 50 - PrivateKeyHash: 51 - #Accepted: 52 - AcceptedProfiles: 53 - DeniedProfiles: 54 - Content: 55 - Messages: 56 - Notifications: 57 - SendTime: 58 - GetTime: 59 - GetVariant: 60 - SharedSecretOwn: 61 - SharedSecretOther: 62 - SharedSecretSign: 63 - SharedSecret: 64 - CallId: 65 - CallToken: 66 - CallSecret: 67 - Untill: 68 - Enabled: 69 - StartDate: 70 - EndDate: 71 - ReceiverId: 72 - SenderId: 73 - Signed: 75 - Message: 76 - MessageState: 77 - LastPing: 78 - PingIota: 79 - PingClients: 80 - Matches: 81 - Omikron: 82 - Offset: 83 - Amount: 84 - Position: 85 - Name: 86 - Path: 87 - Codec: 88 - Function: 89 - Payload: 90 - Result: 91 - Interactables: 92 - WantToWatch: 93 - Watcher: 94 - CreatedAt: 95 - Username: 96 - Display: 97 - Avatar: 98 - About: 99 - Status: 100 - PublicKey: 101 - SubLevel: 102 - SubEnd: 103 - CommunityAddress: 104 - CommunityTitle: 106 - Communities: 107 - RhoConnections: 108 - User: 109 - OnlineStatus: 110 - OmikronId: 111 - OmikronConnections: 112 - ResetToken: 113 - NewToken: 114 - CallInvited: 115 - CallMembers: 116 - Calls: 117 - Timeout: 118 - HasAdmin: 119 - LastMessageAt: 120 - Height: 121 - SentBySelf: 122 - SessionId: 123 - Contacts: 124 - LastMessage: 125 - AppIdentifier: 127 - AppPrivateKey: 128 - AppPublicKey: 129 - AppSession: 130 - AppData: 131 - TauriToken: 132 - Challenge: 133 - EncryptedPayload: 134 - SecurePayload: 135 - DeviceId: 136 - ClientId: 137 - SecretId: 142 - VersionNumber: 143 - EncryptedSecret: 144 - WrappingScheme: 146 - UpdatedAt: 147 - ChatId: 148 - KemCiphertext: 149 - SenderUserId: 152 - RecipientUserId: 153 - Recipients: 154 - Edited: 155 - Reactions: 156 - Reaction: 157 - ReplyId: 158