Skip to content

Releases: thefubon/pxlr-cms

📖 v0.8.0 — Three-Column Layout & TOC System

26 Jul 15:31

Choose a tag to compare

📖 MAJOR: Трёхколоночный layout для полных постов

  • Сайдбар с автором: Добавлен левый сайдбар с информацией об авторе и датой публикации
  • 🗂️ Навигация по категориям: Отображение всех категорий с выделением текущей
  • 🏷️ Теги с активными ссылками: Популярные теги с выделением текущих тегов поста
  • 📚 TOC система: Правый сайдбар с автоматическим оглавлением для заголовков H1 и H2
  • 🎯 Активная навигация: Подсветка текущего раздела при прокрутке страницы
  • 🔄 Smooth scroll: Плавная прокрутка при клике на заголовок в TOC

🎨 UI/UX улучшения

  • 📱 Responsive дизайн: Трёхколоночный layout на десктопе, вертикальные колонки на мобильных
  • 📍 Sticky позиционирование: Сайдбары остаются на экране при прокрутке
  • 🎯 Пропорции layout: Оптимальное соотношение 3-6-3 (sidebar-content-toc)
  • 🖼️ Исправление обложек: Корректное отображение обложек постов в админ-панели

🔧 Технические исправления

  • 🔑 Уникальные ключи: Исправлена проблема с дублированными ключами в PostTOC
  • 🖼️ URL изображений: Добавлены хелпер функции для корректных URL обложек в админке
  • 📦 Fallback логика: Автоматическое переключение между портами 3000/3001 для изображений
  • 🧹 Линтинг: Проведён полный линтинг проекта с исправлением всех предупреждений

🛠️ Backend/Frontend изменения

  • 🆕 PostSidebar компонент: Новый компонент для отображения автора и навигации
  • 🆕 PostTOC компонент: Компонент автоматического оглавления с активной навигацией
  • 🔄 Функции getAllCategories/getAllTags: Новые функции для получения всех категорий и тегов
  • 🎯 Улучшенный парсинг: Парсинг заголовков из markdown для TOC
  • 📱 Mobile-first: Адаптивная вёрстка для всех размеров экранов

📋 Качество кода

  • TypeScript: Полная типизация новых компонентов и функций
  • 🧹 ESLint: Устранение всех предупреждений линтера
  • 📦 Версии: Обновление всех package.json до версии 0.8.0
  • 🔧 Структура lockfiles: Оптимизация структуры package-lock.json для монорепозитория

🗓️ v0.7.0 — Post Date Field & Chronological Sorting

25 Jul 18:09

Choose a tag to compare

📅 MAJOR: Поле даты и хронологическая сортировка

  • Поле даты в форме: Добавлено поле даты публикации в редактор постов
  • 📅 Автоматическая дата: При создании поста автоматически устанавливается сегодняшняя дата
  • 🎯 Редактирование даты: Пользователь может изменить дату на любую
  • 📊 Хронологическая сортировка: Посты отображаются в порядке от новых к старым
  • 🗓️ UI с иконкой календаря: Поле даты с красивой иконкой и описанием

🔧 Технические улучшения

  • 📦 Расширена схема данных: Добавлено поле date во все типы Post и PostFormInput
  • 🔗 Новый API endpoint: Создан /posts/form для создания постов из формы админки
  • 🧩 TypeScript типы: Полная типизация для поля date
  • 🔄 Валидация: Обязательное поле даты с проверкой формата
  • 📄 MDX интеграция: Сохранение даты в frontmatter MDX файлов

🛠️ Backend изменения

  • 🆕 createPostFromForm: Новая функция для создания постов из данных формы
  • 🔍 Парсинг метаданных: Извлечение даты из MDX frontmatter
  • 📊 Сортировка по дате: Автоматическая сортировка постов по дате (новые сначала)
  • 🎯 Валидация: Проверка корректности даты при сохранении

🎨 UI/UX улучшения

  • 📅 Поле с иконкой: Поле даты с иконкой календаря и описанием
  • 🎯 Сетка 3 колонки: Автор | Дата | Теги в форме постов
  • 💡 Интуитивность: Автоматическая установка сегодняшней даты
  • 🔄 Гибкость: Возможность изменить дату на любую

🎯 Frontend изменения

  • 📊 Сортировка по дате: Посты на сайте отображаются от новых к старым
  • 🔄 Автоматическое обновление: Сортировка работает в реальном времени
  • 📱 Responsive дизайн: Поле даты корректно отображается на всех устройствах

📋 Migration

  • Обратная совместимость: Существующие посты продолжают работать
  • 🔄 Автоматическая дата: Старые посты получают текущую дату при редактировании
  • 🛡️ Безопасность: Никаких breaking changes для пользователей

🖼️ v0.6.0 — Cover Image System & Post Cards Enhancement

25 Jul 13:29

Choose a tag to compare

🖼️ MAJOR: Система обложек для постов

  • Загрузка обложек: Добавлено поле для загрузки обложки постов в админ-панели
  • 🖼️ Превью в карточках: Обложки отображаются в карточках постов с размерами 320×180px
  • 📱 Адаптивное отображение: Обложки корректно отображаются на всех устройствах
  • 🎯 Оптимизация изображений: Использование Next.js Image компонента с lazy loading
  • 🔄 Синхронизация: Обложки сохраняются в MDX frontmatter и синхронизируются между админкой и фронтендом

🎨 UI/UX улучшения

  • 📝 Поле загрузки: Интуитивное поле с кнопкой загрузки и превью
  • 🗑️ Удаление обложки: Возможность удалить обложку одним кликом
  • 📏 Правильные размеры: Обложки обрезаются по центру до размеров 320×180px
  • 🎯 Отсутствие в полном посте: Обложки отображаются только в карточках, не в полном посте

🔧 Технические улучшения

  • 📦 Расширена схема данных: Добавлено поле coverImage во все типы Post
  • 🔗 API обновления: Поддержка загрузки и сохранения обложек
  • 🧩 TypeScript типы: Полная типизация для поля coverImage
  • 🔄 Валидация: Проверка размера файлов (до 1MB) и типа изображений
  • 📄 MDX интеграция: Сохранение coverImage в frontmatter

🛠️ Backend изменения

  • 📁 Загрузка файлов: Использование существующего API /api/uploads/image
  • 🔍 Парсинг метаданных: Извлечение coverImage из MDX frontmatter
  • 🎯 Валидация: Проверка типов файлов и размеров на сервере
  • 📂 Хранение: Сохранение изображений в папку /uploads/

🎯 Frontend изменения

  • 🖼️ Next.js Image: Оптимизированные изображения с правильными размерами
  • 📱 Responsive дизайн: Адаптивное отображение обложек в карточках
  • 🔗 URL обработка: Правильная обработка путей к изображениям
  • Lazy loading: Автоматическая оптимизация загрузки изображений

📋 Migration

  • Обратная совместимость: Существующие посты продолжают работать
  • 🔄 Постепенное обновление: Обложки добавляются по мере необходимости
  • 🛡️ Безопасность: Никаких breaking changes для пользователей

🔧 v0.5.1 — Editor Memory & Post Editing Fix

24 Jul 10:56

Choose a tag to compare

🔧 PATCH: Исправление проблемы редактирования постов

  • Сохранение типа редактора: Добавлено поле editorType в схему постов
  • 🔄 Автоматический выбор редактора: При редактировании пост открывается в том же редакторе, в котором был создан
  • 💾 Запоминание выбора: Система помнит, в каком редакторе (Markdown/TipTap/Blocks) был создан каждый пост
  • 🛡️ Предотвращение потери данных: Исправлена проблема сброса данных при переключении между редакторами
  • 🎯 Правильный workflow: Теперь нет потери контента при редактировании существующих постов

🔧 Технические улучшения

  • 📦 Расширена схема данных: editorType: 'markdown' | 'tiptap' | 'blocks' добавлено в Post и PostFormValues
  • 🔗 Обновлен API: Поддержка сохранения типа редактора в frontmatter MDX файлов
  • 🧩 Улучшена типизация: TypeScript типы обновлены для новых полей
  • 🔄 Обратная совместимость: Старые посты автоматически получают тип 'markdown'

🛠️ Backend изменения

  • 📄 Frontmatter поддержка: Сохранение editorType в метаданных MDX файлов
  • 🔍 Парсинг улучшен: Извлечение типа редактора при загрузке постов
  • 🎯 Валидация: Проверка корректности типа редактора при сохранении

🎨 UX улучшения

  • 📝 Консистентность: Редактирование постов теперь предсказуемо
  • 🚫 Устранены сбросы: Больше нет неожиданной очистки контента
  • 💡 Интуитивность: Система ведет себя так, как ожидает пользователь

📋 Migration

  • Автоматическая миграция: Существующие посты продолжают работать
  • 🔄 Постепенное обновление: При редактировании старых постов добавляется editorType
  • 🛡️ Безопасность: Никаких breaking changes для пользователей

🌙 v0.5.0 — Dark Mode & Responsive Design

23 Jul 14:57

Choose a tag to compare

🌙 MAJOR: Полная поддержка темной темы

  • Тёмная тема везде: Frontend и админка полностью поддерживают dark mode
  • 🎨 next-themes интеграция: Автоматическое определение системной темы
  • 🔘 ThemeToggle компонент: Переключатель с иконками (солнце/луна/монитор)
  • 🎯 Правильные цвета: Все UI компоненты адаптированы под тёмную тему
  • 💾 Сохранение настроек: Тема сохраняется в localStorage
  • 🔄 Системная синхронизация: Автоматическое переключение при изменении системной темы

📱 MAJOR: Улучшенная адаптивность

  • 🖥️ Полная ширина экрана: Убраны ограничения max-width в админке
  • 📐 Responsive грид: Правильные breakpoints для всех устройств
  • 📱 Мобильная оптимизация: Улучшенный UX на телефонах и планшетах
  • 🔧 Автозакрытие сайдбара: Сайдбар закрывается при переходах в мобильной версии
  • 🎯 Адаптивные размеры: Иконки, текст и отступы масштабируются правильно
  • 📊 Гибкая сетка: Dashboard карточки адаптируются от 1 до 4 колонок

🎨 UI/UX улучшения

  • 🌈 CSS переменные: Переход на CSS кастомные свойства для тем
  • 🔘 Улучшенные кнопки: Все варианты кнопок поддерживают тёмную тему
  • 📝 Формы в тёмной теме: Все поля ввода, селекты и чекбоксы адаптированы
  • 🎯 Консистентный дизайн: Единообразие между фронтендом и админкой
  • Плавные переходы: Анимации переключения темы
  • 💫 Современный вид: Обновлённая цветовая палитра

🔧 Технические улучшения

  • 🧹 ESLint исправления: 0 ошибок во всех частях проекта
  • 📦 TypeScript строгость: Убраны все any типы в пользу строгой типизации
  • 🎯 ThemeProvider: Кастомная реализация для админки без next-themes
  • 🔄 Context API: Правильное управление состоянием темы
  • 📱 useIsMobile хук: Определение мобильных устройств
  • 🎨 CSS оптимизация: Убраны дублирующиеся стили

🛠️ Исправления

  • 🔧 Layout constraints: Убраны жёсткие ограничения ширины (max-w-7xl)
  • 📱 Mobile sidebar: Автоматическое закрытие при навигации
  • 🎨 Button colors: Исправлены цвета кнопок в тёмной теме
  • 📊 Dashboard overflow: Устранён горизонтальный скролл
  • 🔘 Form elements: Все элементы форм корректно работают в тёмной теме
  • ⚠️ Theme toggle conflict: Устранён конфликт между theme провайдерами

📦 Dependencies

  • next-themes: Добавлена только во фронтенд
  • 🧹 package.json cleanup: Удалены неиспользуемые зависимости из админки
  • 📚 TypeScript types: Правильные типы для next-themes

🎯 Breaking Changes

  • ⚠️ Theme structure: Изменена структура CSS переменных для тем
  • 🔄 Provider changes: Новая архитектура ThemeProvider в админке

🚀 Performance

  • Lazy loading: Компоненты темы загружаются по требованию
  • 💾 localStorage: Оптимизированное сохранение настроек темы
  • 🎨 CSS variables: Более быстрое переключение тем

📝 v0.4.1 — Enhanced Markdown Editor

23 Jul 10:43

Choose a tag to compare

Fixed

  • 🛠️ Markdown редактор: Заменен самодельный парсер на библиотеку marked в админке
  • 🎨 Preview стили: Исправлены большие отступы между блоками, добавлены оптимальные spacing
  • 🔧 Code блоки: Улучшена контрастность - темный текст на светлом фоне для лучшей читаемости
  • 🔄 Синхронизация: Унифицирован рендеринг markdown между админкой и фронтендом
  • Поддержка markdown: Полная поддержка всех элементов - code blocks (```bash), жирный шрифт (MAJOR), inline code (/package.json)

Technical

  • 📦 Установлена библиотека marked и @types/marked в админку
  • 🎯 Добавлена директива "use client" в BlockRenderer для Next.js совместимости
  • 📐 Обновлены prose стили с увеличенными отступами (mb-6) для лучшей читаемости
  • 🖤 Улучшены цвета code элементов: bg-slate-100 text-slate-800 (светлая тема) и bg-slate-800 text-slate-100 (темная тема)

🏷️ v0.4.0 — Tags & Categories System

23 Jul 08:48

Choose a tag to compare

🏷️ Теги и Категории

  • ИСПРАВЛЕНО: Поле ввода тегов в админке - теперь можно вводить пробелы и запятые
  • НОВОЕ: Мульти-выбор тегов на фронтенде - можно выбирать несколько тегов одновременно
  • НОВОЕ: Полная система категорий с возможностью создания, редактирования и удаления
  • НОВОЕ: Управление категориями в настройках админки (вкладка "Посты")
  • НОВОЕ: Фильтрация по категориям на фронтенде с отдельным блоком фильтров
  • НОВОЕ: Отображение категорий в карточках постов и на страницах постов
  • НОВОЕ: Динамическая загрузка категорий из настроек (убран статический список)

🎨 UI/UX улучшения

  • Улучшен интерфейс фильтров - теги и категории в отдельных блоках
  • Добавлены иконки для визуального различия: 📁 для категорий, # для тегов
  • Переупорядочены настройки - управление категориями теперь выше настроек отображения
  • Добавлены бейджи с визуальным различием для категорий (primary) и тегов (secondary)
  • Улучшена навигация - клик по категории/тегу ведет к соответствующей фильтрации

🔧 Технические улучшения

  • Обновлены API для поддержки категорий в настройках
  • Расширены схемы валидации для категорий на backend и frontend
  • Оптимизирована логика фильтрации с поддержкой множественных тегов и категорий
  • Улучшена типизация TypeScript для всех новых функций

🛠️ Backend изменения

  • Добавлены настройки категорий в settings.json
  • Обновлены API endpoints для сохранения категорий
  • Добавлена валидация категорий (максимум 50, проверка дубликатов)
  • Расширена поддержка множественной фильтрации в MDX парсере

🎨 v0.3.0 — UI Improvements

22 Jul 14:00

Choose a tag to compare

🎨 UI/UX улучшения

  • Исправлены размеры кнопок в HERO блоке на главной странице
  • Оптимизированы кнопки "Исследовать контент" и "Админ-панель"
  • Улучшен footer с корректными стилями для белой кнопки
  • Добавлена ссылка на GitHub в footer с иконкой
  • Добавлена ссылка на Fubon в footer с переходом в новом окне
  • Обновлен список технологий с добавлением Vite.js

🔧 Технические исправления

  • Исправлена белая кнопка с белым текстом в footer
  • Добавлен Vite.js в секцию "Построено на лучших технологиях"
  • Улучшена типографика футера с правильными hover эффектами
  • Оптимизированы размеры кнопок HERO блока до стандартных shadcn/ui

📱 Дизайн улучшения

  • Footer дизайн обновлен с горизонтальным расположением элементов
  • GitHub интеграция с прямой ссылкой на репозиторий
  • Брендинг Fubon с официальной ссылкой на сайт
  • Vite.js карточка с соответствующей иконкой и описанием

🧩 v0.2.0 — Block Editor & Major Redesign

22 Jul 11:20

Choose a tag to compare

🔥 MAJOR: Блочный редактор контента

  • Революционное изменение: Полностью переписан контент-редактор с текстового на блочный
  • 🧩 5 типов блоков: Markdown, Button, Heading (H1-H6), Image, Spacer
  • 🏗️ Архитектура блоков: JSON структура с id, type, width, order для каждого блока
  • 📐 Настройки ширины: fullsize (во всю ширину) и container (ограниченная max-w-4xl)
  • 🎛️ Индивидуальные настройки: Каждый блок имеет собственную панель настроек
  • 📦 Сериализация: Автоматическое сохранение в JSON формате
  • ↩️ Обратная совместимость: Поддержка старого markdown контента

📷 Система загрузки изображений

  • 🖼️ Image блоки: Встроенная поддержка изображений в редакторе
  • 📁 Загрузка файлов: Ограничение 1MB, сохранение в frontend/public/uploads
  • 🔗 API endpoints: POST /api/uploads/image с валидацией типов и размера
  • 👀 Предпросмотр: Отображение изображений в админке и на фронтенде
  • 🔄 Синхронизация: Автоматическая синхронизация между админкой и фронтендом
  • 🏷️ Метаданные: Поддержка alt-текста и подписей к изображениям

🎨 Продвинутая система стилей

  • 🔧 clsx + tailwind-merge: Умное объединение CSS классов без конфликтов
  • 🔘 Расширенные кнопки: Добавлены варианты ghost и link
  • 🎯 Hover исправления: Устранены проблемы с hover вне области кнопок
  • 🚫 Изоляция стилей: prose классы не влияют на UI компоненты
  • 📝 Tailwind Typography: Корректная типографика только для markdown блоков

🌐 Динамические SEO метаданные

  • 📄 generateMetadata: Уникальные title и description для каждого поста
  • 🏗️ generateStaticParams: Предгенерация всех постов для SSG
  • 🎯 Динамические заголовки: Автоматическое извлечение из контента поста
  • Статическая генерация: Оптимальная производительность после сборки

🔤 Улучшенная генерация Slug

  • 🌍 Транслитерация: Полная поддержка русских символов
  • 📝 "Привет мир" → "privet-mir": Корректное преобразование кириллицы
  • 🔘 Кнопка генерации: "Сгенерировать URL" рядом с полем slug
  • Автоматизация: Авто-генерация при вводе заголовка для новых постов
  • 🔧 Улучшенный алгоритм: Удаление спецсимволов, множественных дефисов

🖥️ UX/UI улучшения

  • 🖼️ Fullscreen исправления: Корректное управление scroll при открытии/закрытии
  • 📍 Dropdown позиционирование: Все меню выравниваются по левому краю
  • 🎨 Визуальные улучшения: Лучшие hover эффекты и переходы
  • 📱 Адаптивность: Улучшенная работа на мобильных устройствах

🔧 Техническое совершенство

  • 📏 TypeScript: Строгая типизация для всех блоков и компонентов
  • 🧹 ESLint: Настройка TypeScript правил, исправление всех ошибок
  • 🔍 Линтер: 0 ошибок, 0 предупреждений в продакшн коде
  • Оптимизация: Улучшенная производительность рендеринга блоков

🔄 Система рендеринга блоков

  • 🧱 BlockRenderer: Универсальный компонент для отображения всех типов блоков
  • 🎨 Стилизация: Правильное применение container/fullsize ширины
  • 📝 Markdown: Встроенный парсер для отображения markdown блоков
  • 🔘 Button компоненты: Shadcn UI кнопки с поддержкой всех вариантов
  • 🖼️ Next.js Image: Оптимизированные изображения с lazy loading

📦 Backend расширения

  • 📁 Multipart uploads: @fastify/multipart для загрузки файлов
  • 🔒 Валидация: Проверка типов файлов и размеров
  • 📂 Static файлы: Автоматическая раздача из /uploads/
  • 🌐 CORS обновления: Поддержка дополнительных портов для разработки

🗑️ Removed

  • Simple Preview: Удален режим предпросмотра из редактора
  • Split режим: Убран раздельный вид редактор/превью
  • MDX компоненты: Удалены неиспользуемые CustomComponents и MDXContent
  • 🧹 Код очистка: Упрощена архитектура рендеринга

🔄 Migration Guide

// Старый формат (строка)
content: "# Заголовок\n\nТекст поста..."

// Новый формат (JSON блоки)
content: JSON.stringify({
  blocks: [
    { id: "1", type: "heading", level: 1, content: "Заголовок", width: "container", order: 0 },
    { id: "2", type: "markdown", content: "Текст поста...", width: "container", order: 1 }
  ],
  version: "1.0"
})

📊 Impact

  • 🚀 Производительность: Оптимизированный рендеринг и меньше кода
  • 🎨 Гибкость: Создание сложных layout с разными типами контента
  • 👨‍💻 DX: Улучшенный опыт разработчика с типизацией и линтером
  • 👤 UX: Интуитивный блочный редактор вместо plain-text
  • 🌍 Локализация: Полная поддержка русского языка в URL

🎯 Breaking Changes

⚠️ Формат контента: Старый markdown-контент поддерживается, но новый сохраняется в JSON
⚠️ API: Изменена структура данных постов (поле content теперь JSON строка)

🚀 v0.1.1 — First public release

20 Jul 21:54
410cf77

Choose a tag to compare

Fixed

  • 🔧 Исправлены все ошибки ESLint в frontend проекте
  • 🧹 Удалены неиспользуемые импорты в admin hooks (Post, Settings, Link)
  • 🛠️ Исправлены TypeScript ошибки в backend routes (return statements)
  • ⚙️ Оптимизирована настройка ESLint для совместимости с проектом
  • 🎯 Код готов к продакшну - все статические анализаторы проходят без ошибок