Paliadin chat bubble overlays bottom navbar on PWA mobile — lift above the navbar #100
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
m's report (2026-05-25 15:21)
Scope
On mobile (especially PWA install / standalone display) the Paliadin chat bubble (the floating button that opens the widget) sits at a
bottom: Nvalue that collides with the PWA's bottom navigation bar. Bubble should clear the navbar visually.What to do
frontend/src/client/paliadin*.ts/paliadin-widget.tsorfrontend/src/styles/global.css(.paliadin-fab,.paliadin-bubble, similar class).bottom: calc(var(--bottom-nav-height) + 16px)if a CSS variable exists for the navbar height; else hardcoded e.g.bottom: 72pxon mobile breakpoint.env(safe-area-inset-bottom)+ add a literal nav-bar offset.display-mode: standalone).Files most likely touched
frontend/src/styles/global.css(mobile breakpoint rule for the bubble)frontend/src/client/paliadin-widget.tsif positioning is JS-drivenHard rules
go build ./... && go test ./internal/... && cd frontend && bun run buildclean.mai/<worker>/paliadin-bubble-mobile-offset.Out of scope
Reporting
mai report completedwith branch + SHAs + verification: open paliad.de on mobile, scroll near the bottom navbar, confirm the chat bubble sits above the navbar with comfortable spacing.Fix
Root cause was a breakpoint mismatch, not a math bug: the trigger's lift rule was scoped to
@media (max-width: 640px)while.bottom-navitself appears at@media (max-width: 767px). Phones in landscape and small tablets between 641–767 px saw the desktopbottom: 20pxand got covered by the navbar. On smaller PWA viewports (≤640 px) the lift was firing but the gap was tight (16 px) on top of a hardcoded72pxoffset, which would silently drift if--bottom-nav-heightever changed.Two changes in
frontend/src/styles/global.css:.bottom-navbreakpoint exactly — no gap window where the navbar shows but the bubble doesn't lift.72pxwithcalc(var(--bottom-nav-height, 56px) + 16px + env(safe-area-inset-bottom, 0px))so the math tracks the navbar-height variable already used elsewhere (e.g..dashboard-save-toastat line 9691,.dashboard-modal-contentmargin at 4036–4037).The drawer's full-screen rule (
.paliadin-widget-drawer { width: 100vw }) stays at≤640px— only the trigger lift moves.Math check (≤767 px)
.bottom-navvisual height:56 px (--bottom-nav-height) + env(safe-area-inset-bottom).paliadin-widget-triggerbottom:56 + 16 + env(safe-area-inset-bottom)right: 20px) — out of the center FAB-circle's column entirely.Verification
go build ./...— cleango test ./internal/...— all green (auth, branding, calc, changelog, db, handlers, offices, services)cd frontend && bun run build— clean (i18n codegen: 2862 keys (unchanged),i18n scan: data-i18n attributes clean)dist/assets/global.cssshipped the new@media (max-width: 767px)block with the calc-based offset.dashboard-save-toast(line 9691) — please eyeball on your phone after deploy and re-open this issue if anything still touches the navbar.Hard-rule audit
bottom: 20pxoutside the media query).paliadin-widget-drawer--visibleand.paliadin-widget-scrim--visibleuntouched)Out of scope (left alone)
Files touched
frontend/src/styles/global.css— only the Paliadin inline widget block (lines ~15171–15268)Branch + commit
mai/demeter/gitster-paliadin-chat013facb9db