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
⌘Kand 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
AddRecordSheetfor the chosen table. An empty-state row covers "no tables yet". Rows carry each table's own icon (getTableIconwithAsyncIconresolution andDatabasefallback) and follow sidebar order — not alphabetical — so a user-reordered sidebar and the picker stay in lockstep. - Calendar event → opens
CreateEventSheetviauseEventActions, seeded with today's date. Reopening the menu resets its drill state so a stale table pick can't leak into the next open.
- Record → drills into an alphabetized table picker →
opens
- 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.