The old web UI put everything in a sidebar, and a reskin of it would
still read as the old web UI. The modern shell splits navigation in two
instead: the layout switcher already in the top bar is tier one, and a
new bar under it carries that layout's own top-level items, each group
opening its children in a menu. Nothing on the left, so a queue table or
a dashboard gets the whole window.
- Management's nine entries and Account's eleven suit a menu bar; the
bar measures its items once per layout and folds whatever doesn't fit
into "More", recomputing on resize from the cached widths.
- Settings keeps the sidebar. Nineteen groups is a configuration browser,
not a set of destinations, and a menu bar stops helping however wide
the window; the threshold is on the count, not on the name, so a
changed schema can't strand anyone.
- Which shell to use is the reader's, beside the theme: user menu,
Layout, Modern or Legacy. Modern is the default, and the choice is
remembered in the browser rather than with the account — settings.json
is shared with the webmail, which has no notion of this.
- A phone is unchanged. The section bar is hidden below md and the
sidebar stays as the slide-over behind the hamburger.
- The tree walking both shells need moves to lib/navTree.ts, so the
sidebar and the section bar agree on what is visible, what is locked
and what is active.