tab-title¶
Provenance¶
- Source:
.spec/spexcode/spec-dashboard/tab-title/spec.md - Source SHA-256:
0f56e77a4c8ae284ae3ec835f08c52cef814d5ca35f2cfb2ff399977a0da22f8
The dashboard is project-agnostic, so the route-selected [[project-identity]] names its tab. /projects
uses the gateway identity; /p/<id>/ uses exactly that catalog row, with the authorized board identity as
the direct-serving/guest compatibility source when no catalog is available. A board from another backend
can never rename a scoped catalog route.
Project titles come from dashboard.title, else the canonical project-root basename. The fixed gateway
title identifies the global Projects face. The tab is exactly the resolved scope title — no product
suffix — so several open scopes read apart by name alone; the product brand lives in the favicon and
wordmark, never the tab text. One projection helper turns the resolved identity into the tab, shared by
every route.
That name is read through one resolved identity helper, so any surface
that needs to say which project shares one source rather than re-deriving it. The session
board's left-hand list header reuses it: the translated // {sessions} header ([[settings]])
gains the project name as // <project> {sessions}, self-identifying the board the way the tab
self-identifies the window — the same payoff when several project boards sit open at once. With no
name resolved it falls back to the plain translated header. The graph HUD brand — the shell-prompt
line pinned top-left over the node graph — reuses it too, reading $ <project> from the same helper so
the on-canvas identity matches the tab and board rather than a hardcoded package name; before the first
board loads it falls back to the plain spec-dashboard label.
index.html ships a plain SpexCode title before identity resolves. The board carries one {title, icon}
projection rather than parallel name/icon settings; catalog rows carry the same shape.