calendar and contacts get dock tiles again
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user