♻ update
This commit is contained in:
+53
-1
@@ -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 и конверсии.
|
||||
- **`<RecentConversions />`** — блок последних конвертаций с CLS-free (Cumulative Layout Shift) плавным смещением при появлении/скрытии Preview. Позволяет быстро повторить предыдущий запрос.
|
||||
- **`<HowItWorks />`** — пошаговое объяснение процесса конвертации для новых пользователей.
|
||||
- **`<FreeQuotaInfo />`** — визуальное сравнение лимитов и возможностей между Free-планом, пакетами кредитов и подписками.
|
||||
- **`<UseCases />`** — блок сценариев использования (LLM-датасеты, документация, контент-агрегация).
|
||||
- **`<FeaturesOverview />`** — блок «Engineered for Speed & Reliability» с описанием технических преимуществ (кэширование, Readability, параллельная обработка).
|
||||
- **`<ApiDocBanner />`** — 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 }` вместо плоского списка пакетов.
|
||||
|
||||
+2
-2
@@ -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)
|
||||
|
||||
+2
-2
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user