Пересобрал дистрибутив IntB
Последние несколько дней занимался очередным релизом IntB. С одной стороны, с августа, когда я начал переделку своего сайта, накопилось много изменений (самое главное — поддержка PWA), с другой, большинство из них — не особо значительные, касающиеся либо юзабилити, либо безопасности, а не ключевых возможностей форума. Поэтому даже не знал, делать новый релиз как новую версию или же просто пересобрать старый, так как структура базы данных не менялся. В итоге остановился на том, что номер версии менять не стал, а добавил к нему слово Rebuild.
Без last minute bugs дело не обошлось! Позавчера собрал дистрибутив, поставил на компьютере — работает. Поставил на свой VDS — вроде тоже всё хорошо, но при попытке написать сообщение оно просто не уходит и всё. Никак не мог понять, в чём дело, пока не отключил JavaScript и отправил форму без всех этих недавно сделанных AJAX-наворотов. Оказалось, там возникает ошибка PHP из-за использования функции array_all, которая появилась только в PHP 8.4. А я эту функцию применил в коде очистки HTML. Заменил её на array_map, и всё пришло в норму.
Потом ещё одна ошибка: обнаружил, что когда включён WYSIWYG-редактор именно в визуальном режиме, а не теговом (в котором сижу постоянно), не отправляется форма по Ctrl+Enter. Пришлось снова срочно разбираться, что не так. Оказалось, что редактор создаёт iframe, и event.target указывает на элемент в нём, а не на исходную textarea. А из-за этого не доступна ссылка на форму, поэтому и не работает отправка. Но тут быстро придумал решение через вызов each и замыкание на этапе подключения скрипта.
Когда всё это исправил и снова собрал дистрибутив, до вечернего отключения Интернета оставалось всего несколько минут. А ещё нужно было успеть написать в блог IntB обо всех обновлениях. Поэтому отложил всё до следующего дня.
Но вчера пришло в голову добавить ещё две доделки, которые прежде откладывал на неопределённое потом. Во-первых, доработать генератор teaserов. Раньше у меня из teaserов автоматически удалялись все теги для того, чтобы избежать ситуации, когда отрезался закрывающий тег, и при неудачном стечении обстоятельств могло произойти так, что остаток страницы превращался в одну очень длинную ссылку или заголовок. А теперь мне пришла в голову мысль поставить для DeepSeek задачу написать код, который будет отслеживать незакрытые теги и закрывать их автоматически. Он отлично с этой задачей справился!
Во-вторых, нашёл plugin для jQuery для ввода списка тегов привычным образом, который наконец-то меня устроил. (Почти во всех тех, которые попадались мне раньше, либо ввод нужно было завершать нажатием Enter, а не запятой, как я изначально задумывал, либо не было подгрузки вариантов через запросы к серверу.) Но ещё много времени ушло на то, чтобы разобраться с используемым в нём CSS и прописать CSS-правила так, чтобы поле ввода отображалось не криво и было в едином стиле с формой IntB в целом. В общем, закончил опять очень поздно.
И сейчас чувства очень противоречивые. С одной стороны, сделал ещё один ощутимый шаг к своему сайту мечты. С другой, осознаю, что за эти полгода сделано, в лучшем случае, 40% от задуманного, и ещё многое делать и делать, не считая вёрстки.
А ещё понимаю, что становится всё труднее и труднее сочетать базовую доступность сайта для старых технологий (броузеров типа links, lynx или netsurf) и хорошее юзабилити для новых. И вообще, почему-то в последнее время всё чаще хочется в терминале: писать сообщения для блога в nano и markdown, сделать скрипты для отслеживания наиболее важной для меня информации, ходить только на сайты small web, которые нормально отображаются в консольных броузерах…