From a5bae77f8a80a03b2308d71c146e2af4a80d6f8e Mon Sep 17 00:00:00 2001 From: Dorian Date: Wed, 6 May 2026 20:23:22 +0100 Subject: [PATCH] Fix mobile tabs and chat sticker modal --- apps/web/src/App.vue | 15 ++- apps/web/src/components/ChatDrawer.vue | 127 ++++++++++++++++++------- apps/web/src/services/signer.ts | 5 + apps/web/src/stores/auth.ts | 19 ++++ 4 files changed, 127 insertions(+), 39 deletions(-) diff --git a/apps/web/src/App.vue b/apps/web/src/App.vue index 60e02dc..7e2f28f 100644 --- a/apps/web/src/App.vue +++ b/apps/web/src/App.vue @@ -182,12 +182,16 @@ main.shellLogin { display: none; } .mobile-tabbar { - position: sticky; - top: 49px; - z-index: 9; + position: fixed; + left: 0; + right: 0; + bottom: 0; + z-index: 12; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; + padding-bottom: env(safe-area-inset-bottom); + border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: rgba(7, 9, 15, 0.94); backdrop-filter: blur(6px); @@ -215,7 +219,10 @@ main.shellLogin { box-shadow: inset 0 -1px 0 var(--neon-cyan), var(--shadow-cyan); } main { - padding: 16px; + padding: 16px 16px calc(76px + env(safe-area-inset-bottom)); + } + .footbar { + padding-bottom: calc(76px + env(safe-area-inset-bottom)); } } diff --git a/apps/web/src/components/ChatDrawer.vue b/apps/web/src/components/ChatDrawer.vue index fb42fcb..92f1564 100644 --- a/apps/web/src/components/ChatDrawer.vue +++ b/apps/web/src/components/ChatDrawer.vue @@ -103,6 +103,9 @@ async function sendContent(content: string): Promise { await loadMissingProfiles(); await scrollBottom(); } catch (e) { + if (e instanceof Error && /connect|signer|auth|missing remote|aborted/i.test(e.message)) { + await auth.restoreSavedSigner(); + } error.value = e instanceof Error ? e.message : "Could not send"; } } @@ -144,8 +147,8 @@ async function scrollBottom(): Promise { Logged in, but the signer is not active in this tab. Reading works; sending needs a restored signer. -
{{ error }}
@@ -171,18 +174,31 @@ async function scrollBottom(): Promise { +
+
+
+
+
stickers
+ {{ CHAT_STICKERS.length }} signed insults +
+ +
+
+ +
+
+
+
-
- -