From f2c6ebaa4d3127ca78bbcc23580a42649ac565ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Wed, 19 Aug 2026 04:39:15 +0000 Subject: [PATCH] calendar and contacts get dock tiles again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Their tiles were contributed by the app-store `caldav` catalogue entry, so deleting that entry in 9c309c5a took them with it. The routes kept working while the dock and the dock settings list went silent — the same silently-half-working shape as the plugin permission collision, arrived at from the other direction: there the surface existed with no route, here the route exists with no surface. Now in CORE_DOCK_ITEMS, which is read by BOTH DashboardLayout and DockSettings — one list, so the dock and its settings screen cannot disagree about what exists. That is also why the user saw both symptoms at once. Calendar joins DEFAULT_DOCK_PATHS since it is now baseline functionality every install has. Contacts deliberately does not: it is available in dock settings, but two tiles for one sidecar in everyone's default dock is a crowded default rather than a useful one. Co-Authored-By: Claude Opus 5 --- .../officer-web/Screens/Dashboard/Layout/Dock.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/apps/officer-web/Screens/Dashboard/Layout/Dock.tsx b/src/apps/officer-web/Screens/Dashboard/Layout/Dock.tsx index 33ae6cc7..57f255a8 100644 --- a/src/apps/officer-web/Screens/Dashboard/Layout/Dock.tsx +++ b/src/apps/officer-web/Screens/Dashboard/Layout/Dock.tsx @@ -155,6 +155,8 @@ import { Store, Puzzle, Radar, + CalendarDays, + Contact, } from 'lucide-react'; /** @@ -181,6 +183,12 @@ export const CORE_DOCK_ITEMS: DockItem[] = [ { label: 'Monitor', to: '/system-monitor', icon: Activity, color: '#0ea5e9' }, { label: 'Activity', to: '/activity', icon: Radio, color: '#f59e0b' }, { label: 'Dashboards', to: '/dashboards', icon: LayoutGrid, color: '#8b5cf6' }, + // Core since 2026-08-19. These were contributed by the app-store `caldav` entry until calendar and + // contacts became core, and deleting that entry took their tiles with it — the routes kept working + // while the dock and the settings list went silent about them, which is exactly the shape of failure + // this file's comment above warns about, arrived at from the other direction. + { label: 'Calendar', to: '/calendar', icon: CalendarDays, color: '#ef4444' }, + { label: 'Contacts', to: '/contacts', icon: Contact, color: '#8b5cf6' }, // Core because the tailnet is the perimeter — origin checking was removed on the grounds that the // tailnet stands in its place, so administering it cannot be an optional extra. It is `kind: 'admin'`, // and DashboardLayout filters every tile through canVisit(), so a member never sees this one. @@ -237,7 +245,11 @@ export function dockItemsFromPlugins(plugins: PluginManifest[]): DockItem[] { * where Music was never installed. Defaults that reference optional features are how an app ends up * looking subtly wrong on a fresh install for no stated reason. */ -export const DEFAULT_DOCK_PATHS = ['/', '/files', '/terminal', '/dashboards', '/chat']; +// Calendar joined on 2026-08-19, when it stopped being an installable app and became core. The rest of +// this list is what every install has and most people want visible; a calendar is now in that category. +// Contacts is deliberately NOT here — it is core and available in dock settings, but a second tile for +// the same sidecar in everyone's default dock is a crowded default rather than a useful one. +export const DEFAULT_DOCK_PATHS = ['/', '/files', '/terminal', '/dashboards', '/chat', '/calendar']; /** * The same defaults, plus a tile for every installed plugin.