1. 29 Aug, 2026 6 commits
  2. 28 Aug, 2026 21 commits
    • Яков's avatar
      update · 408df449
      Яков authored
      408df449
    • Яков's avatar
      update · 3e9b122e
      Яков authored
      3e9b122e
    • Яков's avatar
      update · 9895625e
      Яков authored
      9895625e
    • Яков's avatar
      Терминология: модуль и контент вместо «урока» · 4934c3af
      Яков authored
      
      
      Слова «урок» в платформе нет — от него отказались в самом начале в пользу
      «модуля». Оно пришло из входящего ТЗ и из имени сущности Lesson, а в подписи
      для методиста попало по моей невнимательности: в переводах интерфейса «урок»
      встречается ровно три раза, и все три — про удаление.
      
      Заодно по существу:
      
        «Видео по ссылке» → «Встроить по ссылке». Через этот iframe вставляют
        не только ролики: документы Google и курсы SCORM ходят тем же путём,
        и подпись их скрывала.
      
        «Скачать урок в PDF — действие над готовым уроком, а не вставка» →
        «Скачать в PDF — сохранить готовый материал файлом». Объяснять, что
        скачивание это не вставка, взрослому человеку незачем.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      4934c3af
    • Яков's avatar
      Воспроизводимость сборки: точные версии toolchain и README · c8c8b3cf
      Яков authored
      
      
      dist в репозиторий не коммитится и собирается на установке, значит результат
      зависит от того, какие версии сборщика разрешились в этот момент. Версии всего,
      что влияет на содержимое сборки, закреплены точно, без диапазонов; линтеры
      и прочее, на результат не влияющее, оставлены как были.
      
      engines.node приведён к реальности: было >=10, собирается на 22.
      
      В README — порядок сборки, способ проверить воспроизводимость хешами
      и предупреждение про yarn add из каталога самого пакета.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      c8c8b3cf
    • Яков's avatar
      Убрана зависимость пакета на самого себя · b3f43541
      Яков authored
      Попала в 073acecc
      
       по моей вине: `yarn add git+…#tiptap` был выполнен, когда
      рабочий каталог оболочки оказался внутри репозитория пакета, а не проекта,
      и следующий `git add -A` унёс правку в коммит.
      
      Из-за неё установка пакета в AtmaGuru зацикливалась: yarn при разрешении
      дерева тянул react-ag-qeditor, находил его же в зависимостях и уходил
      в бесконечное разрешение. Отсюда и «зависания» yarn add по двадцать минут.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      b3f43541
    • Яков's avatar
      update · a137a510
      Яков authored
      a137a510
    • Яков's avatar
      Панель на телефоне: два ряда вместо пяти · a9acc3bd
      Яков authored
      
      
      Полный набор на 390 px — это 25 кнопок по 44 px, пять рядов и 234 px:
      больше половины экрана до первой строки текста. Замер, не оценка.
      
      Частое остаётся на виду, редкое уходит в два списка с подписями словами —
      «Вставить» и «Ещё». Стало 98 px. Горизонтальной прокрутки нет намеренно:
      кнопка за правым краем на телефоне не находится вообще, методист не знает,
      что там что-то есть.
      
      Набор выбирается по ширине САМОЙ панели через ResizeObserver, а не по ширине
      окна: в админке панель 1080 при окне 1600, и по окну решение было бы неверным.
      
      Отдельно: умолчания больше не подсвечиваются активными. «Обычный текст»
      и «по левому краю» редактор честно считает применёнными, но применил их
      не автор. Пока подсветка была бледно-серой, это не мешало; теперь она ярко-синяя,
      и пустой урок встречал автора двумя горящими кнопками, которых он не нажимал.
      
      Два глифа («Вставить», «Ещё») дорисованы в языке набора: в поставке их нет,
      макет описывает эти списки словами.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      a9acc3bd
    • Яков's avatar
    • Яков's avatar
    • Яков's avatar
    • Яков's avatar
      Панель: шесть границ групп вместо двадцати двух · 1cc9ea41
      Яков authored
      
      
      Каждая граница стоит 17 px — разделитель и поля по 8. Почти каждая кнопка была
      своей группой: 289 px уходило на волосяные линии, и панель на реальной ширине
      1080 не укладывалась в один ряд. Двадцать две линии к тому же не показывают
      структуру, а превращаются в частокол.
      
      Подпись группы теперь решает по ширине самой панели (@container), а не окна:
      в админке панель 1080 при окне 1600, и правило по @media показало бы подпись
      там, где она не влезает.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      1cc9ea41
    • Яков's avatar
      Панель инструментов: новый набор иконок и состояния · d131f8a5
      Яков authored
      
      
      Ответ на макет: 56 иконок в одном визуальном языке (сетка 24×24, штрих 1.5),
      шесть состояний кнопки, ритм групп, поведение на телефоне.
      
      Главная правка не косметическая. Иконка перестала быть background-image
      с зашитым цветом и стала дочерним <svg> со stroke="currentColor". Без этого
      не собирались сами состояния: наведение приходилось изображать прозрачностью
      (иконка тускнела — читается как «кнопка выключилась»), а активное состояние
      с белой иконкой на синей подложке было невозможно в принципе.
      
      Заодно ушли ручные подпорки, которые были следствием разнокалиберных картинок:
      width 46px у блока кода, margin-top 4px у PPTX, второй вид разделителя.
      Все кнопки теперь 32×32 на десктопе и 44×44 на телефоне.
      
      Четыре кнопки, использованные на боевой базе ноль раз (аудио, картинка
      с подсказками, скрытый блок, кнопка-ссылка), собраны в подписанную группу
      «Оживить урок»: растворённые между «изображением» и «ссылкой», они
      не читались как отдельная возможность.
      
      Горизонтальной прокрутки на телефоне нет намеренно: скрытая справа кнопка
      не находится вообще — методист не знает, что там что-то есть.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      d131f8a5
    • Яков's avatar
      Интерактивное изображение: точки в сущности платформы · 1d0665b4
      Яков authored
      
      
      Точки жили в атрибуте data-points внутри разметки урока. Библиотечный модуль
      при установке в карту клонируется — точки уезжали копией, и правка схемы
      в библиотеке до карт больше не доходила. Молча, как это уже было бы
      с содержимым задания.
      
      Теперь у узла есть imageId: он ссылается на сущность платформы, а точки
      читаются и пишутся тремя колбэками (пакет о маршрутах не знает). Колбэков
      нет — узел работает по-старому, точки лежат в документе: накопленные уроки
      открываются без изменений и конвертировать их не будем.
      
      Ошибка записи точки не глотается: состояние возвращается назад и автор видит
      сообщение. Иначе точка осталась бы на экране, но не в базе.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      1d0665b4
    • Яков's avatar
      Подписи типов заданий приходят от платформы · 613c5e49
      Яков authored
      
      
      Своя таблица в пакете разошлась со словами платформы в первый же день:
      в окне выбора «Тестирование», в карточке того же задания — «Тест». Автор
      видит два разных названия одной вещи и решает, что это две разные вещи.
      
      Прежняя таблица остаётся запасной — на случай, если хост подписи не передал.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      613c5e49
    • Яков's avatar
      Задание внутри урока: узел activityRef · 301e73a3
      Яков authored
      
      
      Ссылка на существующее задание как блок документа. Узел хранит только
      положение задания в уроке и то, как его показать: вопросы, ответы и правила
      проверки остаются в конструкторе задания. Дублировать их в документ нельзя —
      правка вопроса не доехала бы до урока, а попытки сотрудников ссылались бы
      на две разные версии одного и того же.
      
      Два поля под идентификатор (activityScope + activityId) — потому что у
      упражнений в платформе два пространства идентификаторов: целое в библиотеке
      и строка «e-<uuid>» в карте. Урок карты — клон библиотечного, при установке
      упражнениям выдаются новые идентификаторы, и ссылка без указания пространства
      после установки указала бы в никуда.
      
      Тип задания хранится доменный (question, essay, videoTask), а не клиентский:
      иначе сверять его с самой сущностью не с чем.
      
      Пакет про маршруты и сущности платформы не знает: выбор задания и открытие
      его конструктора приходят колбэками onPickActivity / onOpenActivity.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      301e73a3
    • Яков's avatar
      update · d13af7f4
      Яков authored
      d13af7f4
    • Яков's avatar
      Редактор отдаёт документ tiptap наружу · 09f46ddf
      Яков authored
      
      
      Новый необязательный проп onChangeDoc. Отдельным пропом, а не вторым аргументом
      onChange: редактор используется в 21 месте, и все ждут строку с HTML.
      
      Документ отдаётся и при onCreate, а не только по первой правке — иначе автор
      открыл урок, ничего не тронул, сохранил, и body_doc остался пуст.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      09f46ddf
    • Яков's avatar
      Панель инструментов: пресеты по контекстам и понятные подписи · a7f39ca2
      Яков authored
      
      
      Пресеты (было два, и хост не передавал их ни разу):
        lesson  — урок, полный набор без произвольного размера шрифта
        text    — описания, инфо, глоссарий, база знаний
        comment — комментарий проверяющего
        answer  — ответ учащегося, с audio
      
      Заголовки вынесены из выпадающего списка на верхний уровень: на боевой базе
      жирный абзац вместо заголовка встречается в 289 уроках, настоящий h2 — в 31.
      
      Нативный browser title заменён на подсказку с названием и пояснением
      «что я получу». Кнопки получили role/tabIndex/aria-label и видимый фокус.
      
      Палитра цветов сведена с 12 произвольных оттенков к 6 семантическим
      из темы платформы.
      
      Удалена кнопка pdfToText: её onClick дублировал кнопку pdf, в пресетах
      она не значилась и автору не показывалась.
      
      Новый проп labels — словарь подписей от хоста: своей локализации у пакета нет.
      Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
      a7f39ca2
    • Яков's avatar
      update · bb440fff
      Яков authored
      bb440fff
    • Яков's avatar
      update · b5e1ee2c
      Яков authored
      b5e1ee2c
  3. 17 Jun, 2026 5 commits
  4. 25 May, 2026 4 commits
  5. 22 May, 2026 4 commits