• Release v1.11.1
    Some checks failed
    checks / checks (3.10) (push) Has been cancelled
    checks / checks (3.11) (push) Has been cancelled
    checks / checks (3.12) (push) Has been cancelled
    checks / checks (3.13) (push) Has been cancelled
    Stable

    artem.kokos released this 2026-07-17 18:39:53 +07:00 | 0 commits to main since this release

    Исправления

    • Исправлена регрессия от #62: verify_ssl: true (значение по умолчанию) снова проверяет TLS по системному хранилищу сертификатов ОС — теперь через truststore, на любой платформе. Корпоративные CA, установленные в ОС, работают без дополнительной настройки (после 1.11.0 проверка шла по бандлу certifi и падала с CERTIFICATE_VERIFY_FAILED).
    • Поведение verify_ssl: false и пути к собственному CA-bundle не изменилось.

    Прочее

    • Новая runtime-зависимость: truststore>=0.10 (устанавливается автоматически при обновлении пакета).
    • Тесты изолированы от глобальной подмены ssl (autouse-фикстура).

    Документация

    • docs/CONFIG.md и README: семантика verify_ssl: true описана как проверка по системному хранилищу CA.
    Downloads
  • Release v1.11.0
    Some checks failed
    checks / checks (3.10) (push) Has been cancelled
    checks / checks (3.11) (push) Has been cancelled
    checks / checks (3.12) (push) Has been cancelled
    checks / checks (3.13) (push) Has been cancelled
    Stable

    artem.kokos released this 2026-07-17 17:57:31 +07:00 | 1 commits to main since this release

    Новое

    • Перевод статусов задач переопределяется через YAML-конфиг (report.status_translation) — больше не нужно править код под свой воркфлоу Redmine (#65).
    • CI на Gitea Actions: тесты и линтеры на Python 3.10–3.13 при каждом push и PR (#53).

    Исправления

    • Безопасность: REDMINE_URL обязан использовать HTTPS (#54); API-ключ маскируется в текстах ошибок (#55); предупреждение при отключённой проверке TLS (#57); единая семантика verify_ssl во всех источниках конфигурации (#62).
    • --user-login — точное совпадение логина вместо первого найденного по подстроке (#60).
    • --date принимает диапазоны с точностью до секунды (YYYY-MM-DDTHH:MM:SS--...) (#59).
    • Период по умолчанию — текущий месяц (с 1-го числа по сегодня), устаревший хардкод убран (#56).
    • Дедупликация time entries: даты нормализуются к aware UTC (#58).
    • Предупреждение при потере данных в отчёте (обрезанные активности) (#61).
    • Восстановлено чтение .env при --init-config (#64).
    • Убраны побочные эффекты при импорте пакета (#64), удалён мёртвый код (#63).
    • Требуется Python >= 3.10 (#51); объявлены прямые зависимости requests и urllib3 (#66); тестовая инфраструктура приведена в порядок (#67); конфигурация black/isort (#52).

    Документация

    • README переписан: краткий обзор, быстрый старт, без воды.
    • Новое руководство пользователя docs/USER_GUIDE.md: сценарии, справочник флагов, устранение неполадок.
    • docs/CONFIG.md синхронизирован с кодом: исправлены неточности (dedup-логика, --init-config, --config-path, TLS), добавлено оглавление.
    Downloads
  • artem.kokos released this 2026-07-10 16:54:29 +07:00 | 26 commits to main since this release

    Исправления

    • Если period.default_to в YAML-конфиге или DEFAULT_TO_DATE в env не заданы, конец периода по умолчанию теперь сегодняшняя дата, а не устаревшее фиксированное значение или конец месяца (#50).
    • Используется единый вызов date.today() для консистентности начала и конца fallback-периода.

    Документация

    • docs/CONFIG.md: описано, что default_to необязательно и по умолчанию — сегодня.
    • README.md: обновлены примеры YAML, .env и таблица переменных окружения.

    Внутреннее

    • Патч-версия поднята до 1.10.1.
    Downloads
  • artem.kokos released this 2026-07-10 15:30:28 +07:00 | 31 commits to main since this release

    Новое

    • Автоотправка отчётов по электронной почте через SMTP с помощью флага --send.
    • HTML-тело письма при автоматической отправке по почте (#48).
    • Параметр report.no_time в YAML-конфиге для отключения временного блока в автоматических режимах (#49).

    Исправления

    • Обработка ошибок при сохранении периода в конфиг; удалён дублирующий _MockIssue.

    Документация

    • Обновлены README.md, docs/CONFIG.md и pyproject.toml для функции --send.

    Внутреннее

    • Применено форматирование ruff ко всем исходным файлам.
    Downloads
  • v1.9.0 b926dd0d49

    artem.kokos released this 2026-07-07 11:12:45 +07:00 | 37 commits to main since this release

    redmine-reporter v1.9.0

    Дата: 07.07.2026


    Новое

    • YAML-конфиг — полная настройка через ~/.config/redmine-reporter/config.yml. Секции: redmine (url, api_key, author, verify_ssl), period (precision, default_from/to, dynamic, last_used), output (dir, шаблон имени, default_format), email (настройки SMTP). Подстановка ${VAR} для секретов. --init-config генерирует файл из .env. Автозагрузка при каждом запуске. Права: 0600 на файл, 0700 на директорию.

    • Умное разрешение --output (#43) — путь к файлу формируется с учётом YAML-конфига:

      • --output xlsx (только формат) → путь по шаблону: output.dir + output.filename
      • --output /путь/report (без расширения) → дописывается output.default_format
      • --output /путь/report.csv (с расширением) → как есть
      • Шаблон поддерживает {author}, {from}, {to}, {date} (DD_MM_YYYY), {ext}
    • Точность периода до секунды (#47)period.precision: datetime. При наличии last_used в конфиге повторный запуск отсекает time entries, у которых оба поля created_on и updated_on раньше cutoff (AND-логика). Исключает дублирование при нескольких запусках в течение дня.

    • --commit (#44) — автосохранение отчёта в файл и фиксация периода в period.last_used.from/to YAML-конфига:

      • С --output → по явному пути
      • Без --output → по шаблону из конфига
      • period.dynamic: true → следующий запуск сам вычисляет новый период: полный месяц → следующий месяц, произвольный диапазон → та же длина со сдвигом
      • period.dynamic: false → перезаписывает default_from/default_to закоммиченными значениями
      • При period.precision: datetime → сохраняет время с точностью до секунды
    • Плейсхолдер {date} — в шаблоне имени файла раскрывается в DD_MM_YYYY от конечной даты


    Изменения

    • verify_ssl: true в YAML теперь даёт путь к CA-бандлу (/etc/ssl/certs/ca-certificates.crt), а не Python-буль
    • YAML-конфиг подгружается автоматически при каждом запуске CLI
    • --output без расширения больше не ошибка — дописывается default_format
    • fetch_issues_with_spent_time() пропускает задачи без часов после дедупликации
    • _resolve_str() в AppConfig поддерживает вложенные ключи YAML (до 3 уровней)
    • В mypy добавлены в игнор: yaml, requests, urllib3.*

    Внутреннее

    • +56 тестов (всего 218). Новые классы: TestResolveOutputPath, TestSavePeriodToConfig, TestCommitFlag, TestComputeNextPeriod, TestDefaultDateRangeWithLastUsed, TestConfigPeriodPrecision
    • Новые функции: resolve_output_path(), save_period_to_config(), compute_next_period(), _parse_datetime(), _compute_dedup_cutoff()
    • Новый датакласс: PeriodLastUsed
    • Новые поля AppConfig: period_last_used_from/to, output_dir/filename/default_format
    • Новые методы Config: get_period_precision(), get_last_used_from/to(), get_output_dir/filename/default_format()

    Обновление с v1.8.1

    # Сгенерировать YAML-конфиг из .env
    redmine-reporter --init-config
    
    # Настроить точность и автосдвиг периода
    vim ~/.config/redmine-reporter/config.yml
    #   period.precision: datetime
    #   period.dynamic: true
    
    # Ежедневный/ежемесячный рабочий процесс:
    redmine-reporter --commit          # сгенерировать + сохранить + запомнить период
    redmine-reporter --commit --output odt  # выбрать формат
    redmine-reporter                    # просто в консоль
    
    Downloads
  • v1.8.0 59af7ce464

    artem.kokos released this 2026-06-29 16:44:57 +07:00 | 48 commits to main since this release

    Группировка по типу активити по ключу by-activity

    Downloads
  • v1.7.0 f6861382e6

    artem.kokos released this 2026-06-29 15:15:30 +07:00 | 49 commits to main since this release

    redmine-reporter 1.7.0

    Новое

    • Отчёты по другим пользователям. Добавлены флаги:
      • --user-id 42 — по числовому ID Redmine;
      • --user-login ivanov — по логину;
      • --user-name "Иванов И.И." — по полному имени.
        По умолчанию, как раньше, используется текущий пользователь.
    • Разрешение имени/логина в ID происходит автоматически. Если найдено несколько пользователей с одинаковым именем — CLI сообщает об ошибке и просит использовать --user-id.

    Исправления

    • Обработка ResourceNotFoundError добавлена в механизм читаемых сообщений об ошибках.

    Документация

    • README дополнен примерами использования --user-id, --user-login, --user-name.

    Задачи

    Downloads
  • v1.6.1 222d31730e

    artem.kokos released this 2026-06-29 14:41:43 +07:00 | 52 commits to main since this release

    redmine-reporter 1.6.1

    Новое

    • Excel-отчёт (.xlsx) стал полноценным:
      • объединение ячеек по проекту и версии;
      • числовая колонка Hours для суммирования;
      • человекочитаемая колонка Spent Time;
      • итоги по версиям, проектам и общий итог;
      • автоширина колонок, закреплённая шапка, автофильтр, границы и заливка.
    • Флаг --no-time теперь корректно работает для всех файловых форматов: колонки времени остаются пустыми, итоговые строки не добавляются.

    Исправления

    • ODTFormatter и другие файловые форматтеры больше не падают при передаче --no-time.
    • .gitignore дополнен масками для локальных отчётов (report.*, rep.*, *.html).

    Задачи

    Downloads
  • v1.6.0 86f083aa79

    artem.kokos released this 2026-06-29 12:38:54 +07:00 | 53 commits to main since this release

    Примечания к релизу redmine-reporter v1.6.0

    Общее

    Релиз с улучшениями CLI, новыми форматами экспорта, надёжностью клиента
    Redmine и исправлениями багов в форматтерах.

    Новые возможности

    • Улучшения CLI:
      • флаги --url, --api-key, --config (#20)
      • флаги --version, --verbose, --debug (#18)
      • флаг --summary — сводка по времени и разбивка по проектам (#22)
    • Динамический период отчёта по умолчанию: текущий месяц, если даты не заданы в .env (#17)
    • Новые форматы экспорта:
      • JSON (#23)
      • Excel (.xlsx) (#23)

    Улучшения

    • Клиент Redmine:
      • retry/backoff-адаптер и таймауты запросов (#24)
      • загрузка issue_id чанками, чтобы не превышать лимит длины URL (#21)
      • исправлено монтирование retry-адаптера на реальную сессию движка
    • Конфигурация:
      • .env больше не переопределяет переменные окружения (#15)
      • все геттеры конфига теперь обрезают whitespace (#35)

    Исправления багов

    • Форматтеры:
      • CSV экспортирует полные project/version в каждой строке и содержит UTF-8 BOM для Excel (#26, #31)
      • HTML-экспорт содержит <meta charset="utf-8"> (#27)
      • ODT: при пустом авторе заголовок не содержит мусорных символов (#30)
      • ODT: корректно используются covered-cell при объединении ячеек (#13)
      • Markdown и HTML корректно экранируют спецсимволы
    • CLI:
      • информационные сообщения («Total issues») пишутся в stderr, stdout остаётся чистым для pipe (#28)
      • пустой результат time entries обрабатывается корректно (#36)
    • Перевод статусов:
      • «Wait Release» теперь корректно отображается как «Закрыто» (#29)

    Внутренние доработки

    • Общая логика группировки по проекту/версии вынесена в report_builder (#19)
    • Добавлен __init__.py в redmine_reporter/formatters/, пакет стал обычным (#16)
    • Исправлен недетерминированный порядок задач внутри одной группы (#33)
    • Убрана избыточная двойная сортировка и мёртвый код (#32, #34, #37)
    • Ленивый импорт ODT больше не ломается при отсутствии odfpy (#25)

    Закрытые задачи

    #37, #36, #35, #34, #33, #32, #31, #30, #29, #28, #27, #26, #25, #24, #23,
    #22, #21, #20, #19, #18, #17, #16, #15

    Downloads
  • v1.5.0 0e4e0f3ee2

    artem.kokos released this 2026-05-22 17:49:29 +07:00 | 64 commits to main since this release

    • Поддержка API-KEY
    Downloads