study v1.4.0
Сводка видит файлы из старых курсов и пересдачи, submit проверяет себя перед отправкой, перезалитые методички перекачиваются.
- «Новое в курсах» — по составу, а не по дате: снимок хранит состав курсов, и файл, скопированный преподавателем из прошлогоднего курса (с
timemodifiedтого года), теперь виден и в сводке, и вstudy files.core_course_get_updates_sinceтакие файлы не показывает. Если состав курса не прочитался, прошлый список сохраняется — назавтра всё не станет «новым». - Пересдачи («Пересдача лабораторной работы № N») — не срок, пока лаба не просрочена и не сдана: в «Сроки», «Горит» и «новое задание» они не попадают, в
--jsonестьretakes[]сretake_ofиneeded. Скрытые ограничением доступа пересдачи — по тому же правилу. study files --pullперекачивает перезалитый в ТУИС файл поверх копии (отметки «есть, в ТУИС новее» и «обновлён», «скачано N, из них обновлено M»); копия ложится на место старой, в том числе в подкаталог, mtime =timemodifiedиз ТУИС.study submit: план показывает, что принимает задание (текст, число, типы и размер файлов — изconfigs), и отказывает при несовпадении даже с--confirm.--attach <файл>…проверяет вложения на диске и загружает их только при отправке;study upload→--files <itemid>остаётся.- Курс, появившийся в записи ТУИС (или выведенный из
COURSE_IGNORE), объявляется строкой «Новый курс в ТУИС: …».study assigns --jsonотдаётintro— текст задания. study setupиstudy courses --setupкладут заготовкуNOTES.mdпо курсу (готовый файл не трогают). Вdocs/AGENTS.md: что делать сNOTES.mdпри первом обращении к предмету, курс без репозитория, новые методички, раздел «Работа над самим инструментом», грабли проinvalidtoken, пояс и пересдачи.- Windows:
study state --since allбольше не падает вfmt.moment(OSError 22на первых часах эпохи) — #1 от @Paefremova; регрессионный тест гоняется в CI на windows-latest.