Q16: compact segmented language and theme togglesQ16: компактные сегментированные переключатели языка и темы

StatusСтатус
completeзавершён
ServiceСервис
portfolio
IssueIssue
#103
Pull requestPull request
#104
ReleaseРелиз
0.1.30
Lead time (h)Время цикла (ч)
0.9

What this cycle decidedЧто решил этот цикл

The site header spent a whole row below the page title on four chunky 44px buttons -- .site-header was an ordinary block box, so .toggle-bar fell onto its own line under the navigation rule, and each language/theme button was its own filled box with its own border and background. This cycle turns .site-header into a flex row: the navigation links and the toggle bar now share one line, flush to the content column's edges, with a single 1px rule running under the whole row instead of stopping short at the nav. The two buttons of each toggle group join into one bordered segmented control with a single internal divider, rounded corners via per-segment border-radius rather than overflow: hidden -- overflow would clip the :focus-visible ring on the first and last segment, which is exactly the indicator the accessibility checklist claims the site has. The auxiliary controls' target size drops from 44px to 32px, still above the 24px floor test/a11y.test.ts enforces and the WCAG 2.2 AA 2.5.8 minimum, and docs/accessibility-checklist.md is corrected to say so instead of still claiming 44px. No markup changed: Nav.astro, LangToggle.astro and ThemeToggle.astro keep their existing structure, role=group, aria-labelledby and aria-pressed exactly as they are; this is a stylesheet-only rewrite of .site-header, .site-nav, the whole toggle-groups region and the tap-target rule, verified by a new test/header.test.ts built on a shared test/support/css-rules.ts parser (the existing flat-regex parser resolves .site-header and .toggle-group to two rule blocks each, because it does not understand @media print nesting, so every new assertion quantifies over all matching blocks rather than assuming one). Separately, the home page's opening 'Who I am' sentence, which measured a count from an unnamed 'now', is corrected in both languages to name 2017 directly, closing a Q15 finding that was downgraded to P3 mid-cycle and so never reached the code.Шапка сайта отводила под четыре переключателя целую строку под заголовком страницы: .site-header была обычным блочным боксом, поэтому .toggle-bar падала на собственную строку под линией навигации, а каждая кнопка языка и темы была отдельным залитым боксом со своей рамкой и фоном. Этот цикл превращает .site-header во flex-строку: ссылки навигации и панель переключателей теперь делят одну строку, прижатую к краям колонки контента, с единственной линией в 1px под всей строкой, а не только под навигацией. Две кнопки каждой группы переключателей объединяются в один сегментированный контрол с рамкой и одним внутренним разделителем, со скруглением через border-radius на каждом сегменте, а не через overflow: hidden -- overflow обрезал бы кольцо :focus-visible на первом и последнем сегменте, а это именно тот индикатор, который чек-лист доступности заявляет как имеющийся. Размер вспомогательных контролов уменьшается с 44px до 32px -- всё ещё выше порога в 24px, который проверяет test/a11y.test.ts, и выше минимума WCAG 2.2 AA 2.5.8, -- и docs/accessibility-checklist.md исправлен, чтобы не утверждать больше 44px. Разметка не менялась: Nav.astro, LangToggle.astro и ThemeToggle.astro сохраняют свою структуру, role=group, aria-labelledby и aria-pressed в точности как раньше; это переписывание только стилей -- .site-header, .site-nav, весь блок toggle groups и правило минимального размера тап-таргета, -- проверенное новым test/header.test.ts на общем парсере test/support/css-rules.ts (существующий парсер на плоском регулярном выражении резолвит .site-header и .toggle-group в два блока правил каждый, потому что не понимает вложенность @media print, поэтому каждое новое утверждение квантифицирует по всем совпавшим блокам, а не полагается на один). Отдельно, открывающее предложение секции «Кто я» на главной странице, которое отсчитывало годы от безымянного «сейчас», исправлено на обоих языках, чтобы прямо называть 2017 год, закрывая находку Q15, которая была понижена до P3 в середине цикла и поэтому не попала в код.

TimelineХронология

  1. Issue openedIssue открыт:
  2. MergedСмержено: +50 min+50 мин
  3. ReleasedРелиз выпущен: +3 min+3 мин

Manual interventionsРучные вмешательства

No manual intervention was recorded for this cycle.Ручных вмешательств в этом цикле не зафиксировано.

Back to the colophonНазад к колофону