nav: one breadcrumb path in both apps' headers #37

Merged
pecheny merged 2 commits from nav-crumbs into main 2026-07-26 17:11:50 +00:00
Owner

Why

The header said where you were but not how you got there. dope had two unrelated bars — publictopbar with a lone , gametopbar with a fest/game trail that started nowhere — and xy a third with 🏠 plus a title.

All three become one crumbs primitive in the kit. The trail mirrors the URL: every crumb is a real navigable prefix, labelled with the title of the page it links to, and the last one is the page you are on.

/host/fest/12/teams  →  🏠 / Мои фесты / Кубок Города / Команды
/fest/12/game/3      →  🏠 / Кубок Города / ОД / Результаты
/board/7             →  🏠 / Разминка

dope's ~15 server-rendered pages build theirs from per-tree helpers in crumbs.go, so no page restates its ancestry, and the links are deleted. In xy an open card stays crumbless: it is a modal, not a place. On a phone the ancestors truncate first and the current page keeps its name.

Closes #31

# Why The header said where you were but not how you got there. dope had two unrelated bars — `publictopbar` with a lone `←`, `gametopbar` with a fest/game trail that started nowhere — and xy a third with 🏠 plus a title. All three become one `crumbs` primitive in the kit. The trail mirrors the URL: every crumb is a real navigable prefix, labelled with the title of the page it links to, and the last one is the page you are on. ``` /host/fest/12/teams → 🏠 / Мои фесты / Кубок Города / Команды /fest/12/game/3 → 🏠 / Кубок Города / ОД / Результаты /board/7 → 🏠 / Разминка ``` dope's ~15 server-rendered pages build theirs from per-tree helpers in [crumbs.go](dope/dope/web/pages/crumbs.go), so no page restates its ancestry, and the `←` links are deleted. In xy an open card stays crumbless: it is a modal, not a place. On a phone the ancestors truncate first and the current page keeps its name. Closes #31
The header said where you were but not how you got there. dope had two
unrelated bars — publictopbar with a lone "←" and gametopbar with a
fest/game trail that started nowhere — and xy a third with 🏠 + a title.

All three become one `crumbs` primitive in the kit. The trail mirrors the
URL: every crumb is a real navigable prefix, labelled with the title of
the page it links to, and the last one is the page you are on.

    /host/fest/12/teams  →  🏠 / Мои фесты / Кубок Города / Команды
    /fest/12/game/3      →  🏠 / Кубок Города / ОД / Результаты
    /board/7             →  🏠 / Разминка

dope's ~15 server-rendered pages build theirs from per-tree helpers
(web/pages/crumbs.go), so no page restates its ancestry; the "←" links
are deleted, since the previous crumb goes to the same place and also
says what it is. The game pages paint the same classes client-side.

In xy an open card stays crumbless: it is a modal, not a place.

On a phone the ancestors truncate first and the current page keeps its
name — the bar is a fixed height, so the trail cannot wrap.

Closes #31

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The profile page's crumb trail and its identity block landed in separate
branches on the same function; the trail also absorbs the '← Назад к
списку турниров' row, which is what its Мои фесты crumb now does.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
pecheny/dopesuite!37
No description provided.