«Виола»: растягивание окна
В последнее время мало что дорабатываю в «Виоле», чаще борюсь с багами, а их там предостаточно. Сегодня ночью пал один из самых сложных в исправлении.
Дело в том, что у меня окно «Виолы» нормально не тянулось — если попробовать изменить размеры, то в окне появлялись чёрные полосы, положение элементов плыло, в общем пользоваться этим было невозможно. Я, понадеявшись на то, что оригинальная «Виола» просто не умела растягиваться, заблокировал во всех окнах такую возможность.
Но позже в видеоролике, где видно оригинальную «Виолу», запущенную в виртуальной машине, я увидел, что она прекрасно растягивается безо всяких проблем.
Видимо проблема в каких-то особенностях работы X11 на «МакОСи», возможно он работает не в точности так же, как в 90-е, когда этот браузер писали.
К проблеме растягивания я уже пытался подступиться, но, потратив несколько часов, отступил. На этот раз я попробовал новый подход. В прошлый раз нейросети пробовали какие-то гипотезы, добавляя всё новые и новые правки и запутывая код, но ничего не помогало. Часть проблем мы смогли победить, но последняя — появляющаяся при изменении размеров рамка вокруг заголовка и урла страницы всё никак не давалась.
Я сообразил, что проект, видимо, просто слишком огромный. У нейросети «глаза разбегаются» в попытке сгенерировать фиксы, так как дело может оказаться в чём угодно.
Поэтому я попросил нейросеть сгенерировать небольшое приложение, которое компактно повторило бы проблему, чтобы там её править. Удивительно, но мой любимый «Опус 4.5» с задачей не справился — он слепил какого-то уродца из случайных компонентов, а потом всё пытался переключиться на основное приложение.
Выручил «ГПТ-5.2». Он собрал хороший прототип, где мы воспроизвели проблему и в конечном счёте её победили. Дальше я опять переключился на «Опус» и мы благополучно перенесли решение в основной код.
К тому времени, когда всё заработало, в коде было полно каких-то правок, только часть из которых решала проблему. Помятуя как нейросеть однажды легко уничтожила наш совместный многочасовой труд, я закоммитил всё как есть, а потом стал по одному откатывать все изменения, чтобы понять что имеет значения для исправления проблемы, а что нет.
Судя по логам, работу я закончил в третьем часу ночи.