The + menu, the home server menu, the DM dock button, the row voice buttons
and the temporary channel prompt now use Haven's existing translations, and
build their buttons with text instead of HTML. Labels Haven has no string
for yet stay in English.
The People dock button called a function Haven does not have and fell back
to collapsing the panel directly, which Haven did not remember and which
switching layouts never undid. It now presses Haven's own panel toggle and
its pressed state follows the panel however it is toggled. The listener for
haven:layout-effect is removed: nothing sends that event any more, the
Layout picker calls _engage and _disengage directly.
The + menu wrote inline styles on the Join and Create sections and on the
create form's container, and none of them were undone when switching
layouts. It now opens a collapsed section through Haven's own section
toggle and leaves the create form's visibility to Haven, which already
shows it to everyone allowed to create channels.
Opening and closing the DM drawer wrote Haven's own DM collapse setting, and
a click on the DM header also ran Haven's collapse, so the DM list could
stay collapsed after switching back to Original. The drawer now shows the
list with a style rule, the header click only closes the drawer, and the
layout saves nothing about the DM list. Also replaces the empty catches
there and around saving the layout choice with a logged warning.
The layout added a second element with the DM badge's id, but Haven keeps
the first one up to date, and that one sits in the DM header the layout
hides, so the dock never showed unread DMs. The layout now moves Haven's
own badge onto the dock button and puts it back when switching layouts.
The layout hid the panel holding the only Settings button on desktop, and
its home server menu called a Settings function Haven does not have, so
Settings could not be opened at all. The Settings button stays visible,
the menu opens Settings through that button, Server Settings then switches
to the Admin tab, and that item only shows for people who can use it.
Haven's voice join takes no channel and joins the one being viewed, so the
mic on another channel's row joined voice where you already were. The
button now opens that channel first and then joins, the same way
double-clicking a channel row does.
Each pass rewrote every voice button inside the channel list, which the
layout's own observer saw as a change and answered with another pass, so
the buttons were redrawn on every animation frame while the layout was on.
A button is now only rewritten when its join or leave state flips.
- Package sidebar condensation into plugins/ChromeLayout.plugin.js
- Promotes channel creation, joining, and temp channels to prominent header action menu
- Docks DMs and People in footer with unread badges and sliding drawer
- Equips channel rows with voice controls (join/leave)
- Adds quick settings menu to home server icon
- Full height channel section with category group dividers
- Conforms to the Layout picker contract in docs/theme-authoring.md
- Adds test suite in test/chromeLayout.test.js and entry in GUIDE.md