+)}
+
+// Поле дня недели (только для еженедельной повторяемости)
+{formData.recurrence === 'weekly' && (
+
+
+
+
+)}
+
+// Поле дня месяца (только для ежемесячной повторяемости)
+{formData.recurrence === 'monthly' && (
+
+
+
+
+)}
+```
+
+---
+
+## 🧪 Тестовые сценарии
+
+### Сценарий 1: Ежедневная утренняя задача
+**Ввод:**
+- Повторяемость: Ежедневно
+- Время повторения: 09:00
+
+**Результат:**
+- Задача появляется каждый день в 09:00
+
+---
+
+### Сценарий 2: Еженедельная встреча по понедельникам
+**Ввод:**
+- Повторяемость: Еженедельно
+- Время повторения: 14:30
+- День недели: Понедельник
+
+**Результат:**
+- Задача появляется каждый понедельник в 14:30
+
+---
+
+### Сценарий 3: Ежемесячный отчёт 15-го числа
+**Ввод:**
+- Повторяемость: Ежемесячно
+- Время повторения: 10:00
+- День месяца: 15
+
+**Результат:**
+- Задача появляется 15-го числа каждого месяца в 10:00
+
+---
+
+## 🔄 История изменений
+
+### PR #53
+- Добавлен атрибут `step="60"` для поля времени
+- Время отправляется в формате HH:MM (без секунд)
+
+### PR #55
+- Добавлено поле "День недели" для еженедельной повторяемости
+- Добавлено поле "День месяца" для ежемесячной повторяемости
+- Поля появляются условно в зависимости от выбранного типа повторяемости
diff --git a/experiments/test-recurrence-fields.md b/experiments/test-recurrence-fields.md
new file mode 100644
index 0000000..ceb3bf8
--- /dev/null
+++ b/experiments/test-recurrence-fields.md
@@ -0,0 +1,112 @@
+# Тест полей повторяемости задач
+
+## Проблема
+Пользователь сообщил: "Браузер показывает так как и раньше, так же там всё ещё стоят год мес и день"
+
+## Анализ
+После изучения кода выяснилось, что в `TaskModal.tsx` были установлены значения `recurrence_day_of_week` и `recurrence_day_of_month` в состоянии формы (строки 42-43), но не было соответствующих полей ввода в UI.
+
+## Решение
+Добавлены два условных поля ввода:
+
+### 1. Для еженедельной повторяемости (weekly)
+- **Поле**: "День недели" (recurrence_day_of_week)
+- **Тип**: Выпадающий список (select)
+- **Опции**: Понедельник (1) - Воскресенье (0)
+- **Условие отображения**: `formData.recurrence === 'weekly'`
+
+### 2. Для ежемесячной повторяемости (monthly)
+- **Поле**: "День месяца" (recurrence_day_of_month)
+- **Тип**: Выпадающий список (select)
+- **Опции**: 1-31
+- **Условие отображения**: `formData.recurrence === 'monthly'`
+
+## Структура полей повторяемости
+
+```
+Повторяемость: [select] -> Не повторяется / Ежедневно / Еженедельно / Ежемесячно
+
+↓ (если НЕ "Не повторяется")
+Время повторения: [time input step="60"] -> HH:MM (без секунд)
+
+↓ (если "Еженедельно")
+День недели: [select] -> Понедельник / Вторник / ... / Воскресенье
+
+↓ (если "Ежемесячно")
+День месяца: [select] -> 1 / 2 / ... / 31
+```
+
+## Изменения в коде
+
+**Файл**: `src/components/tasks/TaskModal.tsx`
+**Строки**: 217-251
+
+### Добавленный код для "День недели":
+```typescript
+{formData.recurrence === 'weekly' && (
+
+
+
+
+)}
+```
+
+### Добавленный код для "День месяца":
+```typescript
+{formData.recurrence === 'monthly' && (
+
+
+
+
+)}
+```
+
+## Тестирование
+
+### Сценарий 1: Ежедневная повторяемость
+1. Выбрать "Ежедневно" в поле "Повторяемость"
+2. Появится поле "Время повторения" с форматом ЧЧ:ММ (без секунд)
+3. НЕ появятся поля "День недели" или "День месяца"
+
+### Сценарий 2: Еженедельная повторяемость
+1. Выбрать "Еженедельно" в поле "Повторяемость"
+2. Появится поле "Время повторения" с форматом ЧЧ:ММ
+3. Появится поле "День недели" с выбором дня недели
+
+### Сценарий 3: Ежемесячная повторяемость
+1. Выбрать "Ежемесячно" в поле "Повторяемость"
+2. Появится поле "Время повторения" с форматом ЧЧ:ММ
+3. Появится поле "День месяца" с выбором числа от 1 до 31
+
+### Сценарий 4: Без повторяемости
+1. Выбрать "Не повторяется" в поле "Повторяемость"
+2. НЕ появятся никакие дополнительные поля
+
+## Результаты сборки
+- ✅ Build successful (TypeScript компиляция без ошибок)
+- ✅ Lint: нет новых ошибок (38 существующих ошибок не связаны с этим изменением)
+
+## Ответ на issue #54
+Теперь пользователь может видеть и выбирать "день" (день недели или день месяца) в зависимости от выбранного типа повторяемости. Это решает проблему отсутствия полей для указания конкретного дня повторения задачи.
diff --git a/experiments/test-time-input-browser.html b/experiments/test-time-input-browser.html
new file mode 100644
index 0000000..17a8370
--- /dev/null
+++ b/experiments/test-time-input-browser.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ Time Input Test
+
+
+
+
Тест поля времени (Time Input Test)
+
+
+
1. Обычный time input (БЕЗ step="60")
+
+
+
+ Значение: 14:30:00
+
+
+
+
+
2. Time input С step="60"
+
+
+
+ Значение: 14:30
+
+
+
+
+
3. datetime-local input (для сравнения)
+
+
+
+ Значение: 2025-11-14T14:30
+
+
+
+
+
4. Time input С step="1" (показывает секунды)
+
+
+
+ Значение: 14:30:45
+
+
+
+
+
Информация о браузере
+
+ User Agent:
+
+
+
+
+
+
diff --git a/src/components/tasks/TaskModal.tsx b/src/components/tasks/TaskModal.tsx
index 0e8cb1f..3816092 100644
--- a/src/components/tasks/TaskModal.tsx
+++ b/src/components/tasks/TaskModal.tsx
@@ -84,9 +84,27 @@ export const TaskModal: React.FC = ({ isOpen, onClose, task }) =
// Format recurrence_time to HH:MM (remove seconds if present)
const dataToSubmit = { ...formData };
- if (dataToSubmit.recurrence_time) {
- // Extract only HH:MM from HH:MM:SS format
- dataToSubmit.recurrence_time = dataToSubmit.recurrence_time.substring(0, 5);
+
+ // Clean up recurrence-related fields when recurrence is 'none'
+ if (dataToSubmit.recurrence === 'none') {
+ delete dataToSubmit.recurrence_time;
+ delete dataToSubmit.recurrence_day_of_week;
+ delete dataToSubmit.recurrence_day_of_month;
+ } else {
+ if (dataToSubmit.recurrence_time) {
+ // Extract only HH:MM from HH:MM:SS format
+ dataToSubmit.recurrence_time = dataToSubmit.recurrence_time.substring(0, 5);
+ }
+
+ // Clean up day_of_week if not weekly
+ if (dataToSubmit.recurrence !== 'weekly') {
+ delete dataToSubmit.recurrence_day_of_week;
+ }
+
+ // Clean up day_of_month if not monthly
+ if (dataToSubmit.recurrence !== 'monthly') {
+ delete dataToSubmit.recurrence_day_of_month;
+ }
}
if (task) {
@@ -191,7 +209,27 @@ export const TaskModal: React.FC = ({ isOpen, onClose, task }) =