{
  "updated": "2026-09-14",
  "cli": "2.8.2",
  "install": "pnpm exec shadcn-vue add @dvizh/<имя>",
  "entries": 135,
  "showcase": "https://lab.dvizh.website",
  "news": [
    {
      "date": "2026-09-14",
      "title": "Сверка смотрит на ветку, а не на рабочую копию",
      "text": "У скрипта появился флаг `--ref`: содержимое файлов читается из указанной ветки через `git show`, а не с диска. Причина — рабочая копия продукта стоит на произвольной ветке, и обход однажды доложил об отставании на классе заголовка, тогда как копия просто стояла на ветке двенадцатидневной давности. Ветка каждого продукта указана в списке обхода; `--ref` и `--apply` вместе не работают, потому что установка пишет в рабочую копию."
    },
    {
      "date": "2026-09-14",
      "title": "Класс, который установщик терял, убран из записей",
      "text": "Из компонентов меню и выпадающих списков убран `cn-menu-target`. Замер: в записи класс есть, а после `add -y -o` на диске его нет — установщик вырезает его при записи, и так же по прямому URL записи. Из 135 записей это единственный такой класс, соседние сироты доезжают. Пока он оставался, любая сверка показывала вечное расхождение, которое установкой не лечится. Правила для класса нет ни в одном наборе пластики и нет у апстрима, поэтому вид не изменился. Скрипт сверки теперь пересверяется после установки и не верит отчёту установщика: раньше он печатал «ничего не записано» и выходил с нулём, хотя расхождение оставалось."
    },
    {
      "date": "2026-09-14",
      "title": "Продукты перестают расходиться молча",
      "text": "Скрипт сверки теперь пишет в продукте отметку `dvizh-registry.json`: с какой версией реестра сверялись, когда и что расходилось. Отметка идёт в коммит, поэтому отставание видно по истории. У новых проектов `pnpm validate` заканчивается сверкой и печатает расхождение, не падая. Плюс обход всех продуктов одной командой в витрине (`scripts/rounds.py` по списку `docs/products.json`) на расписании 1 и 15 числа. Обновление остаётся ручным: после установки нужен прогон снимков эталонов, вид расхождение ловят только они."
    },
    {
      "date": "2026-09-14",
      "title": "Одна команда на обновление записей",
      "text": "`curl -fsS https://ui.dvizh.website/dvizh-update.py -o .dvizh-update.py && python3 .dvizh-update.py` из корня проекта: покажет, что расходится с реестром, и с флагом `--apply` переустановит отставшее и напечатает дифф. Штатных средств для этого нет — `shadcn-vue diff` именованные реестры не понимает, а `add --diff`, `--dry-run` и `--view` в shadcn-vue не реализованы. Скрипт не работает по грязному дереву и требует локальный установщик 2.8.2."
    },
    {
      "date": "2026-09-11",
      "title": "Графики ДВИЖ и живой заголовочный шрифт",
      "text": "Запись `@dvizh/dvizh-charts`: воронка и «факт против плана» рисуются модулями системы графиков ДВИЖ. Обёртка следит за шириной и темой и подменяет серые роли палитрой фундамента, бренд остаётся системным. Отдельно исправлен мёртвый класс: заголовки десяти компонентов несли `cn-font-heading`, для которого нет ни одного правила ни у нас, ни у апстрима, — теперь `font-heading`, и заголовочный шрифт фундамента наконец применяется (ДВИЖ 2 — Onest, Signal — Unbounded). Объявление шрифта уезжает записью `@dvizh/plastic-extras`. Плюс `ChartContainer` больше не приезжает с дублем импорта, на котором чужой проект падал на проверке типов."
    },
    {
      "date": "2026-09-10",
      "title": "Восемь фундаментов из передачи дизайнера",
      "text": "Записи `@dvizh/foundation-dvizh-a`, `-dvizh-b`, `-dvizh-c` и `@dvizh/foundation-tweakcn-1` … `-5`. Три варианта «Движ» различаются одной парой токенов — цветом кнопки и подписи на ней; замер контраста подписи: A 5.34:1, B 4.70:1, C 3.33:1, последний AA не проходит и оставлен для сравнения. Пять тем tweakcn идут со своим тёмным режимом. Значения состояний в них заданы, читаемость пилюль проверена на всех восемнадцати фундаментах. Тема по умолчанию не менялась."
    },
    {
      "date": "2026-09-03",
      "title": "Новый фундамент Claude +",
      "text": "Запись `@dvizh/foundation-claude-plus`: тёплая бежевая база, терракотовый акцент, радиус 1rem, шрифт Outfit. Скопирована с темы tweakcn как есть, включая тёмный режим — это единственный фундамент кроме дефолтного, у которого он есть, потому что тёмные значения заданы в источнике. Учтите: `--destructive` в светлом режиме там почти чёрный, а не красный, так у автора темы, поэтому пилюля `state-danger` на нём тёмно-серая."
    },
    {
      "date": "2026-09-03",
      "title": "Шаговая полоса следует набору пластики",
      "text": "Запись `@dvizh/plastic-extras` даёт форму компонентам, которых апстрим не включил в пластику. Сейчас это `stepper`: цвета он и раньше брал из фундамента, а радиус шага был запечён `rounded-md`, тогда как кнопка набора бывает от `rounded-none` до `rounded-4xl`. Радиус теперь берётся из кнопки того же набора. Ставить вместе с набором пластики; замер держит тест."
    },
    {
      "date": "2026-09-03",
      "title": "Установщик закреплён на 2.8.2",
      "text": "Ставить записи командой `pnpm exec shadcn-vue add @dvizh/<имя>` с локальным установщиком. `pnpm dlx shadcn-vue@latest` больше не рекомендуется: записи собраны под 2.8.2, а мажор разложит файлы иначе."
    },
    {
      "date": "2026-09-03",
      "title": "Состояния: успех, предупреждение, информация",
      "text": "Запись `@dvizh/state-tokens` даёт токены `--success`, `--warning`, `--info`, утилиты к ним и пять коротких классов для пилюли статуса: `state-success`, `state-warning`, `state-info`, `state-danger`, `state-neutral`. В разметке — `<Badge class=\"state-success\">`. Неудача и нейтраль отдельных токенов не получили: это `--destructive` и `--muted`, они уже были. Фундаменты перебивают значения своими. Надпись на пилюле — смесь токена с цветом текста 40 на 60: той же краской по подложке успех даёт 3.29:1, предупреждение 1.89:1 при норме 4.5:1. Образец — https://lab.dvizh.website/states."
    },
    {
      "date": "2026-09-03",
      "title": "Иконки приходят напрямую, записи собираются в чужом проекте",
      "text": "Двадцать шесть записей тянули витринную заглушку иконок, которой в продукте нет: после установки половина набора не проходила проверку типов. Теперь иконка импортируется напрямую из `@lucide/vue`. Заодно из требований записей ушёл `recharts`, попадавший туда из закомментированной строки, и починены семь файлов, у которых импорт стоял вне блока script — на них установщик отваливался разбором. Кто ставил записи до 3 сентября 2026 — переустановите затронутые."
    }
  ]
}
