Dashboard surface
Show, hide, and relabel the dashboard's building blocks and project tabs
The dashboard your customers land on is composed of blocks you can switch off and a project panel whose tabs you can reorder, hide, and relabel. This is the Guided-mode "Dashboard" builder; the config is stored as validated JSON (surfaceConfig).
For deeper restructuring — moving regions around, not just toggling them — see Templates.
Hideable blocks
| Block id | Default label | What it is |
|---|---|---|
greeting | Greeting | The headline above the prompt box |
folderRow | Folder row | The folder chips above the project grid |
newProjectTile | New-project tile | The "create a project" tile in the grid |
creditsWidget | Credits widget | The credit-balance widget |
upgradeCard | Upgrade card | The plan-upgrade card in the sidebar footer |
Any of the five can be hidden. The prompt box and the projects panel are not in the catalog at all — they're the dashboard's reason to exist, so they can't be targeted.
Project-panel tabs
Four tabs, reorderable in any order, each hideable and relabelable (24-character cap):
| Tab id | Default label |
|---|---|
tab.myProjects | My Projects |
tab.recents | Recents |
tab.starred | Starred |
tab.templates | Templates |
Two guarantees hold whatever you configure:
- At least one tab stays visible. If a config hides all four, "My Projects" is forced back on.
- Gating wins over customization. A tab a customer's context already excludes (for example, a tab their plan doesn't have) is never re-added by your ordering.
Validation behavior
Like the navigation schema, the surface config repairs instead of rejecting: unknown block or tab ids are dropped, duplicate tabs are deduped (first occurrence wins), missing tabs are appended in default order, and labels are HTML-stripped and truncated. You can't put the dashboard into an unrenderable state from here.