From dda38204fa5bcaf5b12ba42392966cccd5342efc Mon Sep 17 00:00:00 2001 From: isra el Date: Sat, 11 Jul 2026 07:27:04 +0300 Subject: [PATCH] fix: eliminate mobile horizontal overflow and add scroll-width e2e guard Root causes of the sideways-scroll blank strip at 375px: - fixed-width auth cards (w-[400px]/w-[450px]) -> w-full + max-w so they shrink on small screens - min-w-[500px] on the community-links dialog -> removed - webhooks section header: two w-full buttons in a non-wrapping flex row (403px wide) -> stacks on mobile - devices/api-keys cards blown past the grid track by min-content sizing -> min-w-0 max-w-full on the cards - api-guide SyntaxHighlighter blocks get overflowX auto + maxWidth 100% - safety net: overflow-x clip on body Adds e2e/mobile-overflow.spec.ts: at 375px, scrollWidth must not exceed the viewport on home, messaging, webhooks, account, and login. This guard caught the webhooks-header and card offenders during the fix. Build, 25 unit tests, and 11 e2e green. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../request-password-reset-form.tsx | 2 +- .../(components)/reset-password-form.tsx | 2 +- web/app/(app)/(auth)/login/page.tsx | 2 +- web/app/(app)/(auth)/register/page.tsx | 2 +- .../(app)/dashboard/(components)/api-keys.tsx | 2 +- .../(components)/community-links.tsx | 2 +- .../dashboard/(components)/device-list.tsx | 2 +- .../webhooks/webhooks-section.tsx | 2 +- .../messaging/(components)/api-guide.tsx | 4 ++ web/e2e/mobile-overflow.spec.ts | 46 +++++++++++++++++++ web/styles/main.css | 2 + 11 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 web/e2e/mobile-overflow.spec.ts diff --git a/web/app/(app)/(auth)/(components)/request-password-reset-form.tsx b/web/app/(app)/(auth)/(components)/request-password-reset-form.tsx index 24c80af..371da5d 100644 --- a/web/app/(app)/(auth)/(components)/request-password-reset-form.tsx +++ b/web/app/(app)/(auth)/(components)/request-password-reset-form.tsx @@ -100,7 +100,7 @@ export default function RequestPasswordResetForm() { return (
- + Reset your password diff --git a/web/app/(app)/(auth)/(components)/reset-password-form.tsx b/web/app/(app)/(auth)/(components)/reset-password-form.tsx index 54ef108..22ca41e 100644 --- a/web/app/(app)/(auth)/(components)/reset-password-form.tsx +++ b/web/app/(app)/(auth)/(components)/reset-password-form.tsx @@ -82,7 +82,7 @@ export default function ResetPasswordForm({ return (
- + Reset your password diff --git a/web/app/(app)/(auth)/login/page.tsx b/web/app/(app)/(auth)/login/page.tsx index 8daa396..38c034c 100644 --- a/web/app/(app)/(auth)/login/page.tsx +++ b/web/app/(app)/(auth)/login/page.tsx @@ -22,7 +22,7 @@ export default function LoginPage() { return (
- + Welcome back diff --git a/web/app/(app)/(auth)/register/page.tsx b/web/app/(app)/(auth)/register/page.tsx index a63cbaa..255e929 100644 --- a/web/app/(app)/(auth)/register/page.tsx +++ b/web/app/(app)/(auth)/register/page.tsx @@ -21,7 +21,7 @@ export default function RegisterPage() { return (
- + Create an account diff --git a/web/app/(app)/dashboard/(components)/api-keys.tsx b/web/app/(app)/dashboard/(components)/api-keys.tsx index 45c8652..60a0f82 100644 --- a/web/app/(app)/dashboard/(components)/api-keys.tsx +++ b/web/app/(app)/dashboard/(components)/api-keys.tsx @@ -126,7 +126,7 @@ export default function ApiKeys() { return ( <> - + API Keys
diff --git a/web/app/(app)/dashboard/(components)/community-links.tsx b/web/app/(app)/dashboard/(components)/community-links.tsx index 34f0e89..3bfdb47 100644 --- a/web/app/(app)/dashboard/(components)/community-links.tsx +++ b/web/app/(app)/dashboard/(components)/community-links.tsx @@ -203,7 +203,7 @@ export default function CommunityLinks() {
- + Share textbee.dev with Others diff --git a/web/app/(app)/dashboard/(components)/device-list.tsx b/web/app/(app)/dashboard/(components)/device-list.tsx index 7bdf825..a4c7e25 100644 --- a/web/app/(app)/dashboard/(components)/device-list.tsx +++ b/web/app/(app)/dashboard/(components)/device-list.tsx @@ -106,7 +106,7 @@ export default function DeviceList() { return ( <> - + Registered Devices
-
+