Новая страница 404.php с noindex, флаг $pageNoindex в includes/header.php.
Обнаружено: сервер на nginx, а не Apache — .htaccess для /blog/{slug}/ и /sitemap.xml на нём не работает, нужны правки в конфиге nginx.
v1.12.22026-07-09
Починена дата публикации статьи — расхождение часовых поясов между браузером админа и сервером (PHP UTC) уводило published_at вперёд от NOW() в БД, статьи не появлялись на /blog/ несмотря на статус «Опубликовано». admin.js теперь явно конвертирует локальное время браузера ↔ UTC.
v1.12.12026-07-09
В навигацию (десктоп и мобильное меню) добавлен пункт «Статьи» → /blog/.
На /about/ добавлен настоящий (визуально скрытый) <h1> — раньше на странице не было ни одного.
Новый класс .sr-only в assets/css/site.css.
v1.12.02026-07-09
Сквозной SEO: canonical, полный Open Graph и Twitter Card на каждой странице сайта через includes/header.php.
favicon.svg на основе живого лого шапки, robots.txt и машинный /sitemap.xml — раньше был только человеческий /sitemap/.
Общий includes/site-pages.php — единый список страниц для карты сайта и XML-sitemap.
v1.11.02026-07-09
Блог со своей админкой на MySQL/MariaDB: /blog/ (список, пагинация), /blog/{slug}/ (статья, чистый URL, JSON-LD BlogPosting).
/admin/ — вход по общему паролю, CRUD статей (текст как обычный HTML, картинки по внешней ссылке, без своей загрузки файлов), CSRF, троттлинг входа.
Новый слой БД: includes/db.php/db.config.php + schema.sql (миграция вручную, без автосоздания таблиц).
v1.10.12026-07-09
Секция DWA на /about/: текст был зажат в узкую колонку при пустой правой части — теперь заголовок/лид и список фич стоят в сетке, как в блоке «Как дошли».
Формулировка про SaaS убрала обещание сроков («в ближайшее время») — теперь «в планах на будущее».
v1.10.02026-07-09
Новая секция «Даже аналитику копаем сами» на /about/ — про DWA (DirtyWork Analytics), нашу приватную аналитику интернет-ресурсов, и планы выхода в SaaS.
Демо-дашборд DWA (about/demo-dashboard.php) встроен на /about/ живым iframe внутри окна браузера (components/browser-frame), по образцу project-case.
v1.9.32026-07-09
Иконки браузера в виджете «Привет» на главной заменены на настоящие логотипы вместо нарисованных вручную SVG.
v1.9.22026-07-09
FAQ на страницах услуг растянут на всю ширину контейнера (сетка 2 колонки) — раньше был намеренно ограничен до 760px и висел в левой половине экрана.
v1.9.12026-07-09
На всех 7 страницах с FAQ первый вопрос раскрыт по умолчанию — секция со свёрнутым аккордеоном визуально выглядела «пустой» рядом с плотными соседними блоками.
v1.9.02026-07-09
/sites/: убрана позиция «без конструкторов», добавлены Tilda и 1С-Битрикс в текст.
Новая секция «Форматы и цены» на /sites/ — 7 позиций, включая новую услугу «Администрирование сайтов».
v1.8.12026-07-08
Починен залипающий номер манифеста — переключался раньше времени из-за гонки в IntersectionObserver, теперь честный расчёт по скроллу.
v1.8.02026-07-08
Настоящая причина «пол-экрана пустоты» на /about/ — сетки были вложены в узкую колонку с заголовками, теперь разъединены.
WOW-эффекты на /about/: полоса прогресса чтения, залипающий номер манифеста при скролле, декоративная кавычка, стрелка-подсказка в hero.
v1.7.12026-07-08
Реальный фикс пустого хвоста перед футером — прошлый через :last-of-type не срабатывал из-за <section class="dw-cta"> в footer.php.
Reveal-анимация на /about/ и /team/ больше не может навсегда спрятать контент, если JS не отработал.
v1.7.02026-07-08
Починены раздутые отступы у FAQ и последних секций на страницах услуг.
Новая страница /team/ («Команда») — досье из 6 ролей с аватарами DiceBear и культурным кодом.
Переписана /about/ («Кто взял лопату») — манифест, история, сравнение подряд vs партнёрство.
У /about/ и /team/ свои css/js прямо в папке страницы, тёмный hero с анимированным шумом и reveal-анимацией секций.
v1.6.02026-07-08
Наполнены все 6 страниц услуг + хаб /services/: hero, «Что входит», процесс, «Почему мы», FAQ.
Новый шаблон assets/css/services.css и FAQ-аккордеон для страниц услуг.
v1.5.02026-07-08
Новый виджет «быстрые действия» справа: Email, Телефон, Telegram, «Наверх» — появляется после скролла, скрыт на мобильных.
Копирование email/телефона по клику на подсказку.
v1.4.02026-07-08
Счётчик визитов в футере — маленький бейдж слева (аватар + «N-й визит · X мин») вместо длинной центрированной строки.
Мобильная адаптация виджета «Привет»: меньше на узких экранах, гео скрыто, карточка не вылезает за край.
v1.3.02026-07-08
Убрана старая CTA-полоса в футере (.dw-fstrip), вместо неё — более крупный и выразительный .dw-cta, теперь один раз на весь сайт (живёт в футере на каждой странице).
Дублирующая CTA-секция на главной удалена — раньше она показывалась дважды на одной странице.
v1.2.02026-07-08
Гео в виджете «Привет» теперь на русском («Россия, Алтайский край, Барнаул»), с фолбэком на английский.
Виджет «Привет» перенесён строкой выше заголовка на главной (не накладывается на подзаголовок), показывается только на главной странице.
Возвращена SVG-стрелка над словом в виджете.
Новый блок в футере: сколько раз посетитель заходил на сайт и сколько времени провёл — на куках, без БД.
v1.1.02026-07-08
Хлебные крошки на всех внутренних страницах + JSON-LD BreadcrumbList для SEO.
Страница «Карта сайта» (/sitemap/), ссылка добавлена в футер.
Виджет онбординг-видео перенесён в PHP, подключён на все страницы, с cooldown на повторный показ.
Виджет приветствия «Привет» — клиентская копия удалена (накладывалась на dwa.js), вместо неё интегрирован серверный hello-widget.php: гео и аватар (DiceBear, Open Peeps) считаются на сервере, без внешних запросов.
includes/geoip.php — общая функция резолва IP, используется hello-widget.php и /api/geo.php.