Доки: вставка на курсор, прокрутка у кромки, тишина перед сборкой

Описание пополнено тремя абзацами о новом поведении и разделом о том,
как гонять проверки с окном: где взять файл доступа невидимого экрана и
почему якорю увеличения нужен экран шире 1280.

Лог сессии и утверждённый план положены в проект: файлы планов в
~/.claude/plans ротируются, а решения должны переживать сессию.
This commit is contained in:
4aiman 2026-10-15 23:34:05 +03:00
commit d55fb1b808

View file

@ -125,6 +125,16 @@ xdg-mime query default application/x-nlve-project
он растягивается и укорачивается. Картинку можно растянуть на любую
длину, видео — только в пределах исходника.
Если тащить к краю окна, монтаж едет следом сам: иначе при большом
увеличении кусок упирается в край, и его приходится переносить в
несколько приёмов — отпустить, прокрутить, взять снова.
Файл из списка проекта встаёт **на курсор**, а не в конец дорожки. Если
место занято, монтаж раздвигается: всё от курсора и правее едет вправо
на длину нового клипа, на всех дорожках сразу — звук и надписи обязаны
уехать вместе с картинкой. Строка состояния говорит, сколько клипов
отодвинуто и на сколько.
Щелчок по клипу переставляет курсор воспроизведения. Именно щелчок:
если кнопку нажали и потянули, курсор остаётся на месте, в том числе во
время воспроизведения.
@ -523,6 +533,18 @@ Linux потом искала по нему `.dll`.
перекрытие, то в проекте, где клипы на разных дорожках перекрываются
постоянно, каждое такое место пришлось бы пересобирать.
Наезд не остаётся незамеченным: после правки строка состояния называет
дорожку, величину перекрытия и сами клипы. Переход заказывают мышью, а
промахнуться легко — на общем плане одна точка экрана это секунды, — и
раньше он появлялся сюрпризом: человек искал, почему сборка опять не
кончается.
Сама сборка при этом не начинается с первым же движением. Список кусков
пересобирается сразу, а ffmpeg запускается, когда монтаж постоял тихо
полторы секунды (`GenerateQuietMs`) и клип никто не держит мышью. Иначе
переход считался бы заново на каждое движение руки, а посчитанное
отправлялось бы в корзину.
У клипа есть плавное появление и уход. Для картинки это затемнение, для
звука — нарастание громкости.
@ -988,7 +1010,7 @@ Wine с новой библиотекой не грузилось ничего.
уход выглядит как накапливающийся рассинхрон, которого нет. На это уже
попались один раз.
Ещё четыре проверки гоняют саму программу на невидимом экране
Ещё семь проверок гоняют саму программу на невидимом экране
(`Xvfb :99`). Рабочий экран они не занимают:
```
@ -996,18 +1018,32 @@ Wine с новой библиотекой не грузилось ничего.
./tests/zoomanchor.py <окно> масштаб берётся от точки под мышкой
./tests/genrestart.sh [<путь к nlve>] сборка вставки не сбрасывается зря
./tests/fadegrab.sh [<путь к nlve>] ручку затухания видно и во второй раз
./tests/insertat.sh [<путь к nlve>] файл из списка встаёт на курсор
./tests/dragscroll.sh [<путь к nlve>] монтаж едет следом за клипом у кромки
./tests/genquiet.sh [<путь к nlve>] тяжёлая сборка ждёт конца правки
```
Двум последним нужен монтаж в `test/поток/`: `длинный-фейд.nlve` — один
Последним пяти нужен монтаж в `test/поток/`: `длинный-фейд.nlve` — один
клип с затуханием секунд на семьдесят (такой кусок сводится около
полутора минут, и всё это время человек продолжает работать),
`пара.nlve` — два клипа без затуханий. Путь к первому задаётся
переменной `NLVE_FADE_PROJECT`. В репозиторий они не входят, потому что
ссылаются на съёмку, которой здесь нет.
ссылаются на съёмку, которой здесь нет. `genrestart.sh` съёмку
действительно открывает и, не найдя её, честно говорит об этом и
отказывается считать себя пройденной; остальным хватает самого монтажа.
Экран поднимается через `xvfb-run`, и у него свой файл доступа. Проверки
находят его сами по строке запуска `Xvfb`, так что отдельно задавать
`XAUTHORITY` не нужно; чужой файл из окружения они не берут — с ним
xdotool не видит ни одного окна и проверка «проходит», ничего не
проверив. `zoomanchor.py` целится мышью в точку 1300, поэтому ему нужен
экран шире: `Xvfb :98 -screen 0 1600x1000x24` и `ЭКРАН=:98`.
Каждую из них стоит прогонять и на прежней сборке: проверка, которая
проходит везде, не проверяет ничего. Все четыре на сборке до своей
правки падают.
проходит везде, не проверяет ничего. Все семь на сборке до своей правки
падают. Для трёх последних замерено: клип у кромки уезжает на 0.7 с
против 4.2 с, файл из списка падает в конец дорожки вместо курсора,
сборка начинается через 0.2 с вместо 1.6 с.
## Структура