From d42640d0e91c95018a19ca7a33745824bb53b075 Mon Sep 17 00:00:00 2001 From: gsr Date: Wed, 14 Oct 2026 16:39:39 +0300 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=20update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 54 ++++++++++++++++++++++++++++++++++++++++++++- markclean-api-en.md | 4 ++-- markclean-api-ru.md | 4 ++-- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/changelog.md b/changelog.md index a924684..9c87f6a 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,58 @@ # Changelog -## [0.6.9-beta] - 2026-10-04 +## [0.6.11-beta] - 2026-10-12 + +### Добавлено +- **Cleanup job** — автоматическая очистка записей `conversion_logs` старше 90 дней через `CleanupOldLogs()`. +- **Permanent Delete** — полное удаление пользователей через 14 дней после soft delete через `PermanentDeleteAccount()` с индексом `idx_users_deleted_at (is_active, deleted_at)`. +- **Лимит истории конвертаций** — максимум 500 записей на пользователя (`MaxHistoryPerUser`), автоматический trim при каждой вставке через транзакцию UPSERT + DELETE старых. +- **Изоляция rate limit** — глобальный IP rate limit исключён для auth endpoints (`/api/auth/*`), так как они имеют собственные специфичные лимиты (`LoginRateLimits`, `RegisterRateLimits`). + +### Изменено +- **Graceful shutdown порядок** — `scheduler.Stop()` теперь вызывается **перед** `httpServer.Shutdown()` и `db.Close()`, гарантируя завершение активных cron jobs до закрытия соединений с БД. +- **Транзакция `ConversionLogRepository.Save`** — UPSERT + trim старых записей выполняются в одной транзакции для атомарности. +- **Константы базовых тарифов** — `baseMicroPriceRubles`, `baseMicroCredits`, `baseMonthlyPriceRub` вынесены как единственные источники истины для формул. + +### Исправлено +- **Баг с двойным `case` на один канал `ticker.C`** в старом scheduler — заменял случайный выбор одного из двух case на последовательный запуск задач. +- **Защита от отрицательной экономии** — явный `if savings < 0 { savings = 0 }` вместо разорванного `max()` с комментарием. +- **Fail-open стратегия в scheduler** — ошибка в одной cleanup-задаче не блокирует выполнение других. + +### Безопасность +- **Fail-open в rate limit middleware** — при недоступности Redis auth endpoints fallback-ят в БД, не блокируя легитимных пользователей. + +--- + +## [0.6.10-beta] - 2026-10-10 + +### Добавлено +- **🎨 Редизайн главной страницы** — шесть новых информационных блоков на landing page для улучшения onboarding и конверсии. +- **``** — блок последних конвертаций с CLS-free (Cumulative Layout Shift) плавным смещением при появлении/скрытии Preview. Позволяет быстро повторить предыдущий запрос. +- **``** — пошаговое объяснение процесса конвертации для новых пользователей. +- **``** — визуальное сравнение лимитов и возможностей между Free-планом, пакетами кредитов и подписками. +- **``** — блок сценариев использования (LLM-датасеты, документация, контент-агрегация). +- **``** — блок «Engineered for Speed & Reliability» с описанием технических преимуществ (кэширование, Readability, параллельная обработка). +- **``** — CTA-баннер для привлечения внимания к API-документации и использованию API-ключей. +- **Поддержка подписок в UI** — отображение статуса подписки (`is_subscriber`, `days_remaining`) в `QuotaBadge` и `UserDropdown`. +- **Три типа монетизации в Pricing** — вкладки «Free / Credit Packs / Subscriptions» с переключением между типами планов. + +### Изменено +- **Структура главной страницы** — блоки расположены в логической последовательности: форма → опции → preview → recent → обучающие блоки → CTA. +- **Анимации появления блоков** — плавное смещение контента без layout shifts при изменении состояния Preview. +- **Адаптивный дизайн** — все новые блоки оптимизированы под мобильные устройства (grid → single column). + +### Производительность +- **CLS-free анимации** — использование `transform` и `opacity` вместо изменения layout-свойств для плавных переходов без смещений. +- **Lazy rendering** — компоненты монтируются только когда они видимы во viewport. + +### UX +- **Быстрый доступ к истории** — `RecentConversions` позволяет одним кликом повторить предыдущую конвертацию. +- **Образовательный контент** — `HowItWorks` + `UseCases` снижают барьер входа для новых пользователей. +- **Прозрачность тарифов** — `FreeQuotaInfo` помогает пользователю выбрать подходящий план без необходимости читать документацию. + +--- + +## [0.6.9-beta] - 2026-10-05 ### Добавлено - **Три типа монетизации** — единый ответ `GET /api/billing/packages` теперь возвращает `{ free, credits, subscriptions }` вместо плоского списка пакетов. diff --git a/markclean-api-en.md b/markclean-api-en.md index 9a2213f..1b465d0 100644 --- a/markclean-api-en.md +++ b/markclean-api-en.md @@ -1,4 +1,4 @@ -# 📖 MarkClean API — API Key Usage Documentation +# 📖 MarkClean API documentation > **API Version:** `v1` > **Base URL:** `https://markclean.online/api` @@ -1006,7 +1006,7 @@ No official SDK yet, but the API is simple enough to use via standard HTTP clien ## 📞 Support -- 📧 **Email:** support@markclean.online +- 📧 **Email:** [support@markclean.online]() - 📧 **Email:** gnutenko.s.r@gmail.com - 💬 **Telegram:** [@Slayder12](https://t.me/Slayder12) - 📝 **Changelog:** [markclean-doc/changelog.md](https://gitea.gsrhost.ru/gsr/markclean-doc/src/branch/main/changelog.md) diff --git a/markclean-api-ru.md b/markclean-api-ru.md index 7d2ceac..8e30335 100644 --- a/markclean-api-ru.md +++ b/markclean-api-ru.md @@ -1,4 +1,4 @@ -# 📖 MarkClean API — Документация по использованию API-ключа +# 📖 Документация MarkClean API > **Версия API:** `v1` > **Базовый URL:** `https://markclean.online/api` @@ -1006,7 +1006,7 @@ X-API-Key: {{apiKey}} ## 📞 Поддержка -- 📧 **Email:** support@markclean.online +- 📧 **Email:** [support@markclean.online]() - 📧 **Email:** gnutenko.s.r@gmail.com - 💬 **Telegram:** [@Slayder12](https://t.me/Slayder12) - 📝 **Changelog:** [markclean-doc/changelog.md](https://gitea.gsrhost.ru/gsr/markclean-doc/src/branch/main/changelog.md)