From b80ad24ae2cb096918d5f85572de5582216bc519 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sat, 2 May 2026 14:17:55 +0200 Subject: [PATCH] =?UTF-8?q?feat(hub):=20ghost=20auth-required=20tiles=20+?= =?UTF-8?q?=20dock=20swaps=20Profile=E2=86=94Log=20in?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two related UX hardening tweaks for the unauthenticated case. 1. Module.authRequired flag Tiles for modules with no public view (wallet, chat, castle) are now ghosted out for unauthenticated visitors — same visual treatment we already apply to "coming soon" tiles (opacity 60, cursor not-allowed, non-anchored). This prevents an unauth user from clicking through to a standalone that will instantly bounce them to /login (per the strict guards in those apps). Implementation: hubLink() returns null when authRequired && !isAuthenticated, which already triggers the existing non-link render branch. No new visual treatment to design. Public modules (forum, market, tasks, activities) and the restaurant placeholder are unaffected. 2. Bottom-dock Profile↔Log-in swap When logged in, the first dock slot opens the Profile sheet (existing behaviour). When logged out it now renders a plain Log-In button that pushes /login on the hub itself. Avoids showing a "Profile" affordance to a user who has no profile yet. Both changes localised to src/pages/Hub.vue. No other files touched. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/pages/Hub.vue | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/pages/Hub.vue b/src/pages/Hub.vue index 4cdbc8b..e3b2800 100644 --- a/src/pages/Hub.vue +++ b/src/pages/Hub.vue @@ -1,5 +1,6 @@