diff --git a/CHANGELOG.md b/CHANGELOG.md index 42b9642..7ad9af2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version ## [Unreleased] +### Changed + +- **A narrow screen gets a Menu** (phone-desktop-mode): below 1024 px - a + phone, a phone in "desktop site" mode, a tablet, a narrow window - the + navigation was a sheet of every section and page, always open, filling + the first screen. It is now *Menu* at the right of the header, which opens + the sections as folds, the current one open, the account's entries last; + no script. The page no longer meets the screen's edge. From 1024 px + nothing changes. + ## [2.10.1] - 2026-10-16 Postfix's queue ids no longer repeat. No migration; schema 12. diff --git a/docs/roadmap.md b/docs/roadmap.md index 0c7e1f7..f1d7bf7 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -47,7 +47,7 @@ in `git log` and [CHANGELOG.md](../CHANGELOG.md). | port25-bare-newline | The inbound relay's port 25 refuses bare newlines in DATA (`smtpd_forbid_bare_newline=normalize`) | shipped `2.6.1` | — | — | | base-trixie | The image's base from Debian bookworm (LTS since 2026-07-12) to trixie: Postfix 3.10 with the 2026 security batches | shipped `2.7.0` | — | — | | panel-dkim-signing | DKIM signing in the panel's own milter; OpenDKIM, the syslog relay and the parser port removed | shipped `2.8.0` | 14/14 | [plans/panel-dkim-signing.md](plans/panel-dkim-signing.md) | -| phone-desktop-mode | A phone browser in "desktop site" mode gets the phone navigation | agreed (2026-10-13: after stages 1 and 2 of audit-2026-10-12) | — | — | +| phone-desktop-mode | A phone browser in "desktop site" mode gets the phone navigation | done 2026-10-16, unreleased | — | — | | from-header-binding | Hold a message's `From:` header against the application that sends it | shipped `2.4.0` | 9/9 | [plans/from-header-binding.md](plans/from-header-binding.md) | | panel-redesign | Panel redesign (accepted mockups, design contract) | shipped `2.0.0` | 27/27 | [plans/panel-redesign.md](plans/panel-redesign.md) | | schema-squash | Squash SQLite migrations into a 2.x baseline | built in panel-redesign (stage 1) | — | [plans/panel-redesign.md](plans/panel-redesign.md) | @@ -526,6 +526,23 @@ expected there. A design change is mockup-first has one coherent layout, checked on a phone in "desktop site" mode and in a 980 px window. +**Cause (2026-10-16):** not the mode - every width under 1024 px. The bar's +menu was always open (`navbar-menu is-active`, and no burger to close it), +and Bulma lays a navbar menu out below 1024 px as a block with every +dropdown open: on any phone the sections and all their pages filled the +first screen. "Desktop site" makes the page about 980 px wide, where Bulma +already puts columns side by side (from 769 px) but not yet the bar - the +mix in the screenshot. And a Bulma `.container` has side margins only from +1024 px, so below it the page met the screen's edge. + +**Done (2026-10-16):** the owner chose "Вариант 1" - a menu behind a button +- with "сворачивание разделов". Below 1024 px the bar's menu is hidden and +*Menu* at the right of the brand opens a panel over the page: Overview, each +section a fold with the current one open, the user's last (Account, Help, +Sign out); `
` all through, no script. The page and the strip of +sibling pages have a 1rem gutter. From 1024 px nothing changed. Mockup +`e0e30e2`. + **Version:** `2.x` PATCH or MINOR; `agreed` (owner, 2026-10-13), taken up after stages 1 and 2 of [audit-2026-10-12](audit-2026-10-12.md) - mail shown wrong and the tenant boundary come before layout. diff --git a/internal/web/view/components_test.go b/internal/web/view/components_test.go index 3eb9109..d31fe92 100644 --- a/internal/web/view/components_test.go +++ b/internal/web/view/components_test.go @@ -496,9 +496,18 @@ func TestMenuHighlightsTheCurrentGroupEntryAndSibling(t *testing.T) { if n := strings.Count(out, "sp-current"); n != 1 { t.Errorf("%d current groups, want 1", n) } - if n := strings.Count(out, "aria-current"); n != 1 { - t.Errorf("%d current siblings, want 1", n) + // The current page is marked twice: in the strip of siblings and in the + // Menu of a narrow screen, whose current group is the one open. + if n := strings.Count(out, "aria-current"); n != 2 { + t.Errorf("%d current entries, want the sibling strip's and the Menu's", n) } + mustContain(t, out, + `
Menu`, + `
Outbound`, + `Log`, + `
Inbound`, + `