diff --git a/artifacts/tx-os/src/pages/home.tsx b/artifacts/tx-os/src/pages/home.tsx index c0df9c3a..247b525f 100644 --- a/artifacts/tx-os/src/pages/home.tsx +++ b/artifacts/tx-os/src/pages/home.tsx @@ -521,7 +521,12 @@ export default function HomePage() { }); }; - const dockApps = (orderedApps ?? apps)?.filter((a) => ["services", "notifications", "admin"].includes(a.slug)) ?? []; + // #571: drop the Notifications tile from the bottom dock — the bell + // icon in the top bar (with the same unread badge) is the canonical + // entry point, so a second affordance for the same destination on + // the home screen was redundant. The bell still routes to + // `/notifications` (see the top-bar button below). + const dockApps = (orderedApps ?? apps)?.filter((a) => ["services", "admin"].includes(a.slug)) ?? []; const initials = (displayName || "?").trim().slice(0, 1).toUpperCase(); diff --git a/scripts/src/seed.ts b/scripts/src/seed.ts index 3301e4fb..7b3e578c 100644 --- a/scripts/src/seed.ts +++ b/scripts/src/seed.ts @@ -231,7 +231,14 @@ async function main() { iconName: "Bell", route: "/notifications", color: "#8b5cf6", - isActive: true, + // #571: ship the Notifications app DISABLED by default so fresh + // installs don't surface a redundant tile alongside the bell icon + // already in the top bar. The bell stays the canonical entry + // point; admins can flip this on from app settings if they want + // the launcher tile too. Insert here uses onConflictDoNothing, + // so existing environments that already have the app enabled + // are NOT affected — only new inserts pick up the default. + isActive: false, isSystem: true, sortOrder: 3, }, @@ -270,7 +277,11 @@ async function main() { iconName: "Calendar", route: "/calendar", color: "#3b82f6", - isActive: true, + // #571: ship the Calendar app DISABLED by default. Admins can + // enable it from app settings when they actually want a + // calendar surface. Insert uses onConflictDoNothing so existing + // environments where calendar is already enabled stay enabled. + isActive: false, isSystem: false, sortOrder: 5, },