+
+
+
+
+ {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((prev) => ({
+ ...prev,
+ display: event.target.value,
+ }))
+ }
+ placeholder="Display Name"
+ value={draftUser.display || ""}
+ />
+
+ updateDraftUser((prev) => ({
+ ...prev,
+ username: event.target.value,
+ }))
+ }
+ placeholder="Username"
+ value={draftUser.username || ""}
+ />
+
+ updateDraftUser((prev) => ({ ...prev, about: value }))
+ }
+ value={draftUser.about || ""}
+ />
+
+ {errorMessage && (
+ {errorMessage}
+ )}
+
+ >
+ ) : (
+ Loading...
+ );
}
diff --git a/bun.lock b/bun.lock
index 325be20..ff51499 100644
--- a/bun.lock
+++ b/bun.lock
@@ -55,6 +55,7 @@
"@tensamin/call": "workspace:*",
"@tensamin/chat": "workspace:*",
"@tensamin/crypto": "workspace:*",
+ "@tensamin/markdown": "workspace:*",
"@tensamin/notifications": "workspace:*",
"@tensamin/shared": "workspace:*",
"@tensamin/storage": "workspace:*",
@@ -258,7 +259,7 @@
},
},
"overrides": {
- "@tensamin/ttp-core": "https://git.methanium.net/tensamin/ttp/archive/0.0.17.tar.gz",
+ "@tensamin/ttp-core": "https://git.methanium.net/tensamin/ttp/archive/0.0.19.tar.gz",
"@tensamin/ui": "https://git.methanium.net/tensamin/ui/archive/0.0.34.tar.gz",
},
"packages": {
@@ -698,7 +699,7 @@
"@tensamin/ttp": ["@tensamin/ttp@workspace:packages/ttp"],
- "@tensamin/ttp-core": ["@tensamin/ttp-core@https://git.methanium.net/tensamin/ttp/archive/0.0.17.tar.gz", { "dependencies": { "@eslint/js": "^10.0.1", "@typescript-eslint/parser": "^8.59.1", "@webtransport-bun/webtransport": "^0.3.0", "globals": "^17.5.0", "typescript": "^6.0.3", "typescript-eslint": "^8.59.1", "zod": "^4.4.1" } }, "sha512-smyx+04hSnWM1oyWJfJrRWmxu7OInwyHeIlaD1h3tUrkrSxiKWHl1qCmxVO1bC+cDwyUXhJ5HUnNCbx1aWx7Dg=="],
+ "@tensamin/ttp-core": ["@tensamin/ttp-core@https://git.methanium.net/tensamin/ttp/archive/0.0.19.tar.gz", { "dependencies": { "@eslint/js": "^10.0.1", "@typescript-eslint/parser": "^8.59.1", "@webtransport-bun/webtransport": "^0.3.0", "globals": "^17.5.0", "typescript": "^6.0.3", "typescript-eslint": "^8.59.1", "zod": "^4.4.1" } }, "sha512-La9VqXqJFtzzsRQotXVp+3Vr6u8kj4mQ4wTlSIMRDxKFBnbCvtZyB3V/f8HiIlf7FlZ0Xg0suUUpnamvtcvs9w=="],
"@tensamin/ui": ["@tensamin/ui@https://git.methanium.net/tensamin/ui/archive/0.0.34.tar.gz", { "dependencies": { "@base-ui/react": "^1.3.0", "@fontsource-variable/inter": "^5.2.6", "@tauri-apps/api": "^2", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "date-fns": "^4.1.0", "embla-carousel-react": "^8.6.0", "input-otp": "^1.4.2", "lucide-react": "^1.8.0", "next-themes": "^0.4.6", "react-day-picker": "^9.14.0", "react-resizable-panels": "^4.10.0", "recharts": "3.8.0", "shadcn": "^3.5.0", "sonner": "^2.0.7", "tailwind-merge": "^3.5.0", "tw-animate-css": "^1.3.0", "vaul": "^1.1.2" }, "peerDependencies": { "react": "^19.2.0", "react-dom": "^19.2.0" } }, "sha512-hp7rV0a0gfD/rNw9et+PqM1PPkgFC6/Z7eYfza6NIp/m+a8/r5Um+S/8tzBDCgZmQC9Y1sJsjesH7mXZz6Jmuw=="],
diff --git a/licenses/@tensamin_ttp-core@0.0.15/LICENSE b/licenses/@tensamin_ttp-core@0.0.19/LICENSE
similarity index 100%
rename from licenses/@tensamin_ttp-core@0.0.15/LICENSE
rename to licenses/@tensamin_ttp-core@0.0.19/LICENSE
diff --git a/licenses/THIRD_PARTY_NOTICES.md b/licenses/THIRD_PARTY_NOTICES.md
index 51009a7..2dcc4e3 100644
--- a/licenses/THIRD_PARTY_NOTICES.md
+++ b/licenses/THIRD_PARTY_NOTICES.md
@@ -163,18 +163,18 @@ Generated from bun.lock and installed packages in workspace node_modules folders
- Folder: `licenses/@tauri-apps_plugin-opener@2.5.4`
- Source package dir: `apps/tauri/node_modules/@tauri-apps/plugin-opener`
-## @tensamin/ttp-core@0.0.15
+## @tensamin/ttp-core@0.0.19
- License: UNKNOWN
- Included files: LICENSE
-- Folder: `licenses/@tensamin_ttp-core@0.0.15`
+- Folder: `licenses/@tensamin_ttp-core@0.0.19`
- Source package dir: `packages/ttp/node_modules/@tensamin/ttp-core`
-## @tensamin/ui@0.0.30
+## @tensamin/ui@0.0.34
- License: UNKNOWN
- Included files: none found
-- Folder: `licenses/@tensamin_ui@0.0.30`
+- Folder: `licenses/@tensamin_ui@0.0.34`
- Source package dir: `apps/tauri/node_modules/@tensamin/ui`
## @types/node@25.6.0
@@ -449,6 +449,16 @@ Generated from bun.lock and installed packages in workspace node_modules folders
- Folder: `licenses/tailwindcss@4.2.4`
- Source package dir: `apps/web/node_modules/tailwindcss`
+## tauri-plugin-app-events-api@0.2.0
+
+- License: MIT
+- Homepage: https://github.com/wtto00/tauri-plugin-app-events#readme
+- Repository: git+https://github.com/wtto00/tauri-plugin-app-events.git
+- Description: A plugin for tauri@v2 to listen some events on iOS and Android.
+- Included files: LICENSE
+- Folder: `licenses/tauri-plugin-app-events-api@0.2.0`
+- Source package dir: `apps/web/node_modules/tauri-plugin-app-events-api`
+
## tw-animate-css@1.4.0
- License: MIT
diff --git a/licenses/sbom.cyclonedx.json b/licenses/sbom.cyclonedx.json
index 6e10a91..4d1284c 100644
--- a/licenses/sbom.cyclonedx.json
+++ b/licenses/sbom.cyclonedx.json
@@ -3,7 +3,7 @@
"specVersion": "1.5",
"version": 1,
"metadata": {
- "timestamp": "2026-05-04T13:05:17.472Z",
+ "timestamp": "2026-05-21T10:15:15.541Z",
"tools": [
{
"vendor": "OpenAI",
@@ -580,15 +580,15 @@
},
{
"type": "library",
- "bomRef": "pkg:npm/%40tensamin/ttp-core@0.0.15",
+ "bomRef": "pkg:npm/%40tensamin/ttp-core@0.0.19",
"name": "@tensamin/ttp-core",
- "version": "0.0.15",
- "purl": "pkg:npm/%40tensamin/ttp-core@0.0.15",
+ "version": "0.0.19",
+ "purl": "pkg:npm/%40tensamin/ttp-core@0.0.19",
"externalReferences": [],
"properties": [
{
"name": "local:licenseFolder",
- "value": "licenses/@tensamin_ttp-core@0.0.15"
+ "value": "licenses/@tensamin_ttp-core@0.0.19"
},
{
"name": "local:sourcePackageDir",
@@ -598,15 +598,15 @@
},
{
"type": "library",
- "bomRef": "pkg:npm/%40tensamin/ui@0.0.30",
+ "bomRef": "pkg:npm/%40tensamin/ui@0.0.34",
"name": "@tensamin/ui",
- "version": "0.0.30",
- "purl": "pkg:npm/%40tensamin/ui@0.0.30",
+ "version": "0.0.34",
+ "purl": "pkg:npm/%40tensamin/ui@0.0.34",
"externalReferences": [],
"properties": [
{
"name": "local:licenseFolder",
- "value": "licenses/@tensamin_ui@0.0.30"
+ "value": "licenses/@tensamin_ui@0.0.34"
},
{
"name": "local:sourcePackageDir",
@@ -1562,6 +1562,41 @@
}
]
},
+ {
+ "type": "library",
+ "bomRef": "pkg:npm/tauri-plugin-app-events-api@0.2.0",
+ "name": "tauri-plugin-app-events-api",
+ "version": "0.2.0",
+ "purl": "pkg:npm/tauri-plugin-app-events-api@0.2.0",
+ "description": "A plugin for tauri@v2 to listen some events on iOS and Android.",
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ],
+ "externalReferences": [
+ {
+ "type": "website",
+ "url": "https://github.com/wtto00/tauri-plugin-app-events#readme"
+ },
+ {
+ "type": "vcs",
+ "url": "git+https://github.com/wtto00/tauri-plugin-app-events.git"
+ }
+ ],
+ "properties": [
+ {
+ "name": "local:licenseFolder",
+ "value": "licenses/tauri-plugin-app-events-api@0.2.0"
+ },
+ {
+ "name": "local:sourcePackageDir",
+ "value": "apps/web/node_modules/tauri-plugin-app-events-api"
+ }
+ ]
+ },
{
"type": "library",
"bomRef": "pkg:npm/tw-animate-css@1.4.0",
diff --git a/licenses/tauri-plugin-app-events-api@0.2.0/LICENSE b/licenses/tauri-plugin-app-events-api@0.2.0/LICENSE
new file mode 100644
index 0000000..637004f
--- /dev/null
+++ b/licenses/tauri-plugin-app-events-api@0.2.0/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 简静凡
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/licenses/third-party-credits.json b/licenses/third-party-credits.json
index a1d7968..bf9eab8 100644
--- a/licenses/third-party-credits.json
+++ b/licenses/third-party-credits.json
@@ -1,6 +1,6 @@
{
- "generatedAt": "2026-05-04T13:05:17.471Z",
- "packageCount": 53,
+ "generatedAt": "2026-05-21T10:15:15.540Z",
+ "packageCount": 54,
"packages": [
{
"name": "@codemirror/commands",
@@ -227,7 +227,7 @@
},
{
"name": "@tensamin/ttp-core",
- "version": "0.0.15",
+ "version": "0.0.19",
"license": "UNKNOWN",
"homepage": null,
"repository": null,
@@ -235,18 +235,18 @@
"files": [
"LICENSE"
],
- "licenseFolder": "licenses/@tensamin_ttp-core@0.0.15",
+ "licenseFolder": "licenses/@tensamin_ttp-core@0.0.19",
"sourcePackageDir": "packages/ttp/node_modules/@tensamin/ttp-core"
},
{
"name": "@tensamin/ui",
- "version": "0.0.30",
+ "version": "0.0.34",
"license": "UNKNOWN",
"homepage": null,
"repository": null,
"description": null,
"files": [],
- "licenseFolder": "licenses/@tensamin_ui@0.0.30",
+ "licenseFolder": "licenses/@tensamin_ui@0.0.34",
"sourcePackageDir": "apps/tauri/node_modules/@tensamin/ui"
},
{
@@ -614,6 +614,19 @@
"licenseFolder": "licenses/tailwindcss@4.2.4",
"sourcePackageDir": "apps/web/node_modules/tailwindcss"
},
+ {
+ "name": "tauri-plugin-app-events-api",
+ "version": "0.2.0",
+ "license": "MIT",
+ "homepage": "https://github.com/wtto00/tauri-plugin-app-events#readme",
+ "repository": "git+https://github.com/wtto00/tauri-plugin-app-events.git",
+ "description": "A plugin for tauri@v2 to listen some events on iOS and Android.",
+ "files": [
+ "LICENSE"
+ ],
+ "licenseFolder": "licenses/tauri-plugin-app-events-api@0.2.0",
+ "sourcePackageDir": "apps/web/node_modules/tauri-plugin-app-events-api"
+ },
{
"name": "tw-animate-css",
"version": "1.4.0",
diff --git a/package.json b/package.json
index 7f969e8..b0dfc08 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "tensamin",
- "version": "0.0.1",
+ "version": "0.0.2",
"private": true,
"workspaces": [
"packages/*",
@@ -41,7 +41,7 @@
},
"overrides": {
"@tensamin/ui": "https://git.methanium.net/tensamin/ui/archive/0.0.34.tar.gz",
- "@tensamin/ttp-core": "https://git.methanium.net/tensamin/ttp/archive/0.0.17.tar.gz"
+ "@tensamin/ttp-core": "https://git.methanium.net/tensamin/ttp/archive/0.0.19.tar.gz"
},
"dependencies": {
"@tensamin/ttp-core": "*",
diff --git a/packages/call/src/components/buttons/screenshare.tsx b/packages/call/src/components/buttons/screenshare.tsx
index 4471539..21ba118 100644
--- a/packages/call/src/components/buttons/screenshare.tsx
+++ b/packages/call/src/components/buttons/screenshare.tsx
@@ -18,10 +18,12 @@ export default function ScreenshareButton({
className,
iconSize,
tooltip,
+ defaultPortal,
}: {
className?: string;
iconSize?: number;
tooltip?: string;
+ defaultPortal?: boolean;
}) {
const isScreensharing = useCall((state) => state.screenShareEnabled);
const screenRef = useCall((state) => state.screenRef);
@@ -30,8 +32,9 @@ export default function ScreenshareButton({
const [menuOpen, setMenuOpen] = useState(false);
useEffect(() => {
+ if (defaultPortal) return;
setPortalContainer(screenRef?.current ?? undefined);
- }, [screenRef]);
+ }, [screenRef, defaultPortal]);
async function startWebShare() {
try {
@@ -110,7 +113,9 @@ export default function ScreenshareButton({
/>