- Изменена функция calculateOverallProgress: теперь всегда учитываются 3 группы приоритетов (1, 2, 0)
- Если группа отсутствует, она считается как 100%
- Общий процент всегда вычисляется как среднее из 3 групп: (группа1 + группа2 + группа0) / 3
- Изменения применяются для API и ежедневных Telegram отчетов
- Версия обновлена до 3.8.5
- Установлен vite-plugin-pwa для поддержки Progressive Web App
- Созданы иконки приложения для всех платформ (iOS, Android, Desktop)
- Настроен Service Worker с кэшированием статики и API данных
- Добавлен компонент PWAUpdatePrompt для уведомлений об обновлениях
- Обновлены конфигурации nginx для корректной работы Service Worker
- Добавлены PWA meta-теги в index.html
- Создан скрипт generate-icons.cjs для генерации иконок
- Переписан алгоритм redistributeWordsEvenly с жадным подходом
- Добавлена пост-обработка для исправления последовательных дубликатов
- Исключаемое слово (текущее) теперь корректно не появляется первым
- Исправлен race condition с cardsShown через использование ref
- Добавлена проверка на null/undefined слова в пуле
v3.5.5
- Add repetition_date field to tasks table (migration 018)
- Support pattern-based repetition: day of week, day of month, specific date
- Add 'Через'/'Каждое' mode selector in task form
- Auto-calculate next_show_at from repetition_date on create/complete
- Show calculated next date in postpone dialog for repetition_date tasks
- Update version to 3.3.0
- Добавлен учёт текущей карточки при перераспределении (не показывается следующей)
- Исправлен алгоритм равномерного распределения для предотвращения подряд идущих одинаковых карточек
- Исправлен правый счётчик: показывает текущий размер пула + показанные карточки (не больше maxCards)
- Webhooks now return 200 OK even on errors (to prevent retries)
- Improved error handling with proper JSON responses
- Enhanced logging for webhook debugging
- Supervisor logs now visible in docker logs (stdout/stderr)
- Fixed TodoistIntegration error display in UI
- Added webhook_token to telegram_integrations
- Webhooks now identify users by token in URL (/webhook/telegram/{token}, /webhook/todoist/{token})
- Webhook automatically configured for all users on backend startup
- Migration 011: Add webhook_token column
Features:
- User registration and login with JWT tokens
- All data is now user-specific (multi-tenancy)
- Profile page with integrations and logout
- Automatic migration of existing data to first user
Backend changes:
- Added users and refresh_tokens tables
- Added user_id to all data tables (projects, entries, nodes, dictionaries, words, progress, configs, telegram_integrations, weekly_goals)
- JWT authentication middleware
- claimOrphanedData() for data migration
Frontend changes:
- AuthContext for state management
- Login/Register forms
- Profile page (replaced Integrations)
- All API calls use authFetch with Bearer token
Migration notes:
- On first deploy, backend automatically adds user_id columns
- First user to login claims all existing data
- Fix TelegramUpdate struct to handle message and edited_message properly
- Fix chat_id saving for messages without text
- Add comprehensive logging for webhook registration
- Improve error handling and diagnostics
- Add telegram_integrations table to store bot token and chat_id
- Add Integrations tab with Todoist and Telegram integration screens
- Remove TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID from env variables
- All Telegram configuration now done through UI
- Telegram webhook registration happens when user saves bot token
- Rename TELEGRAM_WEBHOOK_BASE_URL to WEBHOOK_BASE_URL