One commit, 8eef9e7. CI green (run 3129). No migrations — frontend only.
Both reported from the live deploy, both mine.
The empty state's button did nothing
"Create the first one" set showCreate = true, but the create form lived inside <div v-else class="ds-body"> — the sibling branch of the empty state. Mutually exclusive, so on a fresh install the flag flipped and nothing rendered.
The first action a new install can take was the one that didn't work. Worth naming: the page carries a careful empty state arguing that zero design systems is the ordinary state (rule #115), and the only path out of it was inert — the state I argued was normal is the one state I never exercised.
The first system now gets its own form outside the list layout, and it drops the parent picker entirely: nothing exists to inherit from yet, so it says so rather than offering an empty select.
Design was two nav entries, diagnostic first
/design and /design-systems are halves of one thing — the record that decides the styling, and what the browser renders from it. They shipped as two separate top-level entries with the read-only view listed first, which buried the editable record under it.
Now one nav entry pointing at the record, with a shared tab bar joining the two. The explorer is renamed Live tokens, which is what it actually shows; calling a read-only page "Design" was half the confusion.
The tab bar is a component rather than the same markup in both views — two copies diverge the moment a third tab appears, and a design surface that shipped duplicated markup would be arguing against itself.
One commit, `8eef9e7`. CI green (run 3129). No migrations — frontend only.
Both reported from the live deploy, both mine.
## The empty state's button did nothing
"Create the first one" set `showCreate = true`, but the create form lived inside `<div v-else class="ds-body">` — the *sibling* branch of the empty state. Mutually exclusive, so on a fresh install the flag flipped and nothing rendered.
The first action a new install can take was the one that didn't work. Worth naming: the page carries a careful empty state arguing that zero design systems is the ordinary state (rule #115), and the only path out of it was inert — the state I argued was normal is the one state I never exercised.
The first system now gets its own form outside the list layout, and it drops the parent picker entirely: nothing exists to inherit from yet, so it says so rather than offering an empty select.
## Design was two nav entries, diagnostic first
`/design` and `/design-systems` are halves of one thing — the record that decides the styling, and what the browser renders from it. They shipped as two separate top-level entries with the read-only view listed first, which buried the editable record under it.
Now one nav entry pointing at the record, with a shared tab bar joining the two. The explorer is renamed **Live tokens**, which is what it actually shows; calling a read-only page "Design" was half the confusion.
The tab bar is a component rather than the same markup in both views — two copies diverge the moment a third tab appears, and a design surface that shipped duplicated markup would be arguing against itself.
Two reports, one root cause each.
**The dead button.** "Create the first one" set `showCreate = true`, but the
create form lived inside `<div v-else class="ds-body">` — the sibling branch of
the empty state. The two are mutually exclusive, so on a fresh install the flag
flipped and nothing rendered. The first action a new install can take was the
one that didn't work, which is a poor way to honour "an install with zero design
systems is the ordinary state".
The first system now gets its own form outside the list layout, and it drops the
parent picker entirely: there is nothing to inherit from yet, so it says so
instead of offering an empty select.
**Two surfaces, the wrong one first.** /design and /design-systems are halves of
one thing — the record that decides the styling, and what the browser renders
from it — and I had added them as two separate nav entries with the read-only
diagnostic listed first. Backwards: the record is what you work with; the live
view is the check on it.
Now one nav entry pointing at the record, with a shared tab bar joining the two.
The explorer is renamed "Live tokens", which is what it actually shows.
The tab bar is a component rather than the same markup in both views. Two copies
diverge the moment a third tab appears — and a design surface that ships
duplicated markup would be arguing against itself.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
One commit,
8eef9e7. CI green (run 3129). No migrations — frontend only.Both reported from the live deploy, both mine.
The empty state's button did nothing
"Create the first one" set
showCreate = true, but the create form lived inside<div v-else class="ds-body">— the sibling branch of the empty state. Mutually exclusive, so on a fresh install the flag flipped and nothing rendered.The first action a new install can take was the one that didn't work. Worth naming: the page carries a careful empty state arguing that zero design systems is the ordinary state (rule #115), and the only path out of it was inert — the state I argued was normal is the one state I never exercised.
The first system now gets its own form outside the list layout, and it drops the parent picker entirely: nothing exists to inherit from yet, so it says so rather than offering an empty select.
Design was two nav entries, diagnostic first
/designand/design-systemsare halves of one thing — the record that decides the styling, and what the browser renders from it. They shipped as two separate top-level entries with the read-only view listed first, which buried the editable record under it.Now one nav entry pointing at the record, with a shared tab bar joining the two. The explorer is renamed Live tokens, which is what it actually shows; calling a read-only page "Design" was half the confusion.
The tab bar is a component rather than the same markup in both views — two copies diverge the moment a third tab appears, and a design surface that shipped duplicated markup would be arguing against itself.