Apps

Home

The protected per-org landing canvas — auto-created with the org, locked from rename, and the default destination of every login.

Home is what you see right after picking an org. It's the launchpad — a centered greeting, a dock of app icons, a recents column, and a team column — rendered on a canvas. Home is one of the canvas-based surfaces; the named apps in the dock (Pages, Data, Calendar, Inbox, Dial, SMS, Templates) now open as native shell surfaces with their own opinionated layouts. See Canvases and widgets → native apps vs canvases.

Every org has exactly one Home canvas, created by the handle_new_org_home_canvas trigger at org creation (and backfilled for older orgs). It's pinned to slug = 'home', is_system = true, and visibility = 'org', and the protect_system_canvas trigger blocks rename, icon, slug, type, visibility, and is_system writes — so the canvas-dropdown's Manage and Delete entries are hidden when hovering Home. The Share entry is hidden too, since visibility is locked to org-wide.

Content fields (nodes_json, edges_json, viewport, description) stay fully editable, so you can fill Home with dashboards, widgets, or notes like any other board.

Layout

Home is a canvas board — the default layout is whatever the org has saved into nodes_json / edges_json on its Home canvas row. The legacy fixed-tile screen (HomePreviews.jsx, a design-comparison harness that was never wired to a route) was removed; the canvas board is the sole home surface today. Registry invariants that used to be smoke-tested off that harness (kind, status, sidebarOrder, icon coverage, native-surface mapping) still hold via registryContract.test.js and IconSidebar.iconMap.test.jsx.

The global top bar still greets you by name (time-of-day-aware) and carries the org / role badge; the app dock is now the sidebar rail itself (IconSidebar), filtered by the canvas-app status registry so hidden / in-progress apps don't appear in production, and ordered via mergeSidebarOrder — the user's manual drag order wins, and any app shipped since their last drag splices in at its intended rank rather than piling up at the bottom.

Get there

  • Click the logo in the breadcrumb.
  • ⌘K → "Home".
  • Navigate directly to /:orgSlug (no app suffix lands on Home).

Customising

Home is a full canvas, so right-click → Add Widget → Calendar / Pages / Data / Tasks / Email / Dial lets you pin dashboard-style widgets onto your homepage if the dock isn't enough. The full apps moved off the canvas, but every dashboard widget — DataStatsWidget, CalendarAgendaWidget, EmailInboxWidget, DialStatsWidget, DialBucketListWidget, and the rest — stays addable.

You can't rename or relocate Home, but you can pan it, zoom it, and set your own anchor + default zoom — those are per-user (see Canvases and widgets → Per-user view state). Admins can also save their view as the team default for new users who haven't customized yet.

The live app dock

In production the dock shows only the apps with status = 'live':

  • Home
  • Pages
  • Data
  • Calendar
  • Inbox (email)
  • Dial
  • SMS
  • Templates

Apps still marked in_progress (chat, agents, campaigns, office, design, automations) are visible in dev but filtered out of the production sidebar, the right-click widget picker, and the toolbar widget picker. Deep-linking to a hidden app in prod redirects back to Home. Automations carries the same gate today — the app UI is dev-only while the last UI pass lands, but published automations are live regardless (the executor cron and the webhook receiver run in prod). See Automations.

Already-placed widgets keep rendering regardless — visibility is enforced only at the picker entry points, so a canvas you built in dev doesn't lose data when the same app gets flipped to in_progress.

When to leave Home

  • Open an app → click any dock icon, or hit ⌘K and pick.
  • Resume work → click an entry in Recents.
  • Switch canvas → use the canvas dropdown in the breadcrumb (Home first, then user-created canvases alphabetically).
  • Switch orgs → use the org switcher on the left of the breadcrumb.

Global top bar: Create + profile

The shell top bar carries two controls that live on every surface (canvases and native apps — they sit outside the showCanvasTools gate, so switching from Home into Data or Dial never loses them):

  • Create (primary button, right side) opens a dropdown built on TopBarCreateMenu. Root options are:
    • Record → drills into an alphabetized table picker → opens AddRecordSheet for the chosen table. An empty-state row covers "no tables yet". Rows carry each table's own icon (getTableIcon with AsyncIcon resolution and Database fallback) and follow sidebar order — not alphabetical — so a user-reordered sidebar and the picker stay in lockstep.
    • Calendar event → opens CreateEventSheet via useEventActions, seeded with today's date. Reopening the menu resets its drill state so a stale table pick can't leak into the next open.
  • Profile menu is click to open — hover no longer toggles the dropdown. Clicking the avatar toggles the menu, and the Profile modal moved from the avatar click onto the menu's Profile item.

On this page