Releases: thefubon/pxlr-cms
Releases · thefubon/pxlr-cms
📖 v0.8.0 — Three-Column Layout & TOC System
📖 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
📅 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
🖼️ 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
🔧 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
🌙 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
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
🏷️ Теги и Категории
- ✅ ИСПРАВЛЕНО: Поле ввода тегов в админке - теперь можно вводить пробелы и запятые
- ✅ НОВОЕ: Мульти-выбор тегов на фронтенде - можно выбирать несколько тегов одновременно
- ✅ НОВОЕ: Полная система категорий с возможностью создания, редактирования и удаления
- ✅ НОВОЕ: Управление категориями в настройках админки (вкладка "Посты")
- ✅ НОВОЕ: Фильтрация по категориям на фронтенде с отдельным блоком фильтров
- ✅ НОВОЕ: Отображение категорий в карточках постов и на страницах постов
- ✅ НОВОЕ: Динамическая загрузка категорий из настроек (убран статический список)
🎨 UI/UX улучшения
- ✅ Улучшен интерфейс фильтров - теги и категории в отдельных блоках
- ✅ Добавлены иконки для визуального различия: 📁 для категорий, # для тегов
- ✅ Переупорядочены настройки - управление категориями теперь выше настроек отображения
- ✅ Добавлены бейджи с визуальным различием для категорий (primary) и тегов (secondary)
- ✅ Улучшена навигация - клик по категории/тегу ведет к соответствующей фильтрации
🔧 Технические улучшения
- ✅ Обновлены API для поддержки категорий в настройках
- ✅ Расширены схемы валидации для категорий на backend и frontend
- ✅ Оптимизирована логика фильтрации с поддержкой множественных тегов и категорий
- ✅ Улучшена типизация TypeScript для всех новых функций
🛠️ Backend изменения
- ✅ Добавлены настройки категорий в settings.json
- ✅ Обновлены API endpoints для сохранения категорий
- ✅ Добавлена валидация категорий (максимум 50, проверка дубликатов)
- ✅ Расширена поддержка множественной фильтрации в MDX парсере
🎨 v0.3.0 — UI Improvements
🎨 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
🔥 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
content теперь JSON строка)
🚀 v0.1.1 — First public release
Fixed
- 🔧 Исправлены все ошибки ESLint в frontend проекте
- 🧹 Удалены неиспользуемые импорты в admin hooks (Post, Settings, Link)
- 🛠️ Исправлены TypeScript ошибки в backend routes (return statements)
- ⚙️ Оптимизирована настройка ESLint для совместимости с проектом
- 🎯 Код готов к продакшну - все статические анализаторы проходят без ошибок