Outwiker 3.0.0.874 unstable

Всем привет. По задумке эту нестабильную версию OutWiker с номером 3.0.0.874 я собирался выложить недели на две раньше, и в ней не должно было быть особых изменений в коде программы. Я собирался сосредоточиться на дополнении и обновлении справки. Но, как обычно в самый неподходящий момент, обнаружились проблемы, с которыми пришлось повозиться.
Большинство проблем, о которых пойдет речь далее, связаны с упаковкой OutWiker в snap-пакет под Linux и не касаются пользователей Windows. После очередного обновления в инструментах для сборки snap-пакетов почему-то в контейнере перестала собираться из исходников библиотека wxPython. Для OutWiker это критично, потому что по непонятной причине бинарная сборка библиотеки для той версии, которая используется в OutWiker (wxPython 4.0.7), почему-то собрана под старую версию движка WebKit. Ошибка при сборке возникала очень загадочная, на этапе, когда библиотека уже скомпилировалась и полученные файлы раскидывались по папкам. Раньше никогда с такой проблемой не сталкивался, до сих пор библиотека компилировалась достаточно легко, хоть и долго (на моем стареньком i7-3770 сборка занимает чуть меньше часа). А этот процесс приходилось повторять не один раз, перебирая способы сборки и пытаясь угадать, что же пошло не так. Даже на форум snapcraft-еров написал, вдруг кто с таким сталкивался, wxPython — все-таки известная библиотека.
Как потом оказалось, эта проблема была описана в багтрекере wxPython и уже исправлена в следующей версии wxPython 4.1, но переходить на новую версию я пока не готов, потому что там многое может сломаться, а мне сейчас хочется довести OutWiker до релиза. К счастью, проблема решается добавлением нескольких строк в скрипт сборки wxPython. Пришлось сделать свой форк wxPython 4.0.7 и внести туда нужные исправления. После чего для ускорения сборки snap собрал wheel-пакет из wxPython и закачал его себе на сайт, а при сборке snap библиотека теперь устанавливается не из PyPi, а качается с этого сайта. Как временный костыль, пока не перейду на wxPython 4.1, сойдет.
Затем в процессе обновления справки заметил, что в ней не работают некоторые ссылки, и с этим были связаны две другие проблемы, о которых сейчас расскажу. Как вы, наверное, знаете, в OutWiker на страницы можно ссылаться двумя способами: через их идентификатор (что-то вроде page://__550a383e-0e52-40e9-b23d-6fbd769751f0) или по пути: /Страница 1/Страница 2/… Лучше использовать первый способ, потому что тогда даже если вы переименуете страницу, на которую ссылаетесь, или перенесете ее в другую родительскую заметку, ссылки останутся рабочими. Проблемы были связаны со вторым типом ссылок, когда на страницу ссылаются по именам.
Первая проблема заключалась в том, что у страниц могут быть псевдонимы, т.е. имена, которые видит пользователь в дереве заметок, и имена папок, в которых эти заметки хранятся, могут не совпадать. Когда я делал возможность создания ссылок по путям, то никаких псевдонимов еще не было, а когда сделал псевдонимы, то про эти ссылки даже не подумал. В общем, надо было сделать так, чтобы ссылаться на страницы по пути можно было бы и с учетом псевдонимов. С реализацией этой возможности не возникло, всё решалось парой строк кода, я дольше писал тесты для этой возможности.
Вторая проблема объединяла в себе ссылки по путям и сборку под Linux. Оказалось, что такие ссылки принципиально отказывались работать в OutWiker, который был запущен из snap-пакета. В приложение просто не приходило сообщение о том, что пользователь щелкнул на такую ссылку. Причем, если запускать из исходников, то все работает, а в snap — нет. Я сначала винил в этом библиотеку WebKitGTK, думал, что такая проблема возникает из-за того, что у меня в системе стоит более новая версия WebKitGTK, а в snap попадает более старая. Несколько дней потратил на то, чтобы компилировать из исходников WebKitGTK при сборке snap-пакетов. Там тоже были свои особенности, но которые в итоге удалось преодолеть. Правда, оказалось, что это все было зря — даже с последней версией WebKitGTK проблема оставалась.
Тогда решил подойти к этой проблеме с другой стороны и изменить формат ссылок в создаваемом HTML-файле. Если раньше ссылки на страницы выглядели как <a href=»/Страница 1/Страница 2/»>…</a>, то теперь они будут выглядеть так: <a href=»page://Страница 1/Страница 2/«>…</a>. С точки зрения пользователя ничего не поменялось, изменилось только внутреннее представление ссылок. Причем с удивлением узнал, что оказывается, когда-то я уже сделал, чтобы OutWiker понимал ссылки вида page://Страница 1/Страница 2. Наверное, я собирался уже давно сделать что-то подобное, но потом почему-то переключился на другие задачи.
Кроме всего перечисленного были исправлены небольшие шероховатости в интерфейсе и сильно обновлена и дополнена справка, правда, пока только на русском языке. Англоязычную версию надо будет еще немного дополнить.
Вот, пожалуй, это все основные изменения в этой версии. Очень хочется, чтобы следующую версию можно было бы перевести в разряд beta или Release Candidate. Жду от вас обратной связи по поводу того, какие заметите еще проблемы в программе.
OutWiker с социальных сетях:
PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
Err:14 http://ppa.launchpad.net/outwiker-team/ppa/ubuntu focal Release
404 Not Found [IP: 91.189.95.83 80]
Reading package lists… Done
E: The repository ‘http://ppa.launchpad.net/outwiker-team/ppa/ubuntu focal Release’ does not have a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Спасибо за Ваш труд. А у меня тут имеются некоторые проблемы с установкой )
6 августа 2020, 6:23 ппНекоторое время назад пришлось отказаться от поддержки PPA, потому что возникли проблемы с теми версиями библиотек, которые находятся в репозиториях Ubuntu, и сейчас OutWiker под Linux можно установить с помощью snap:
sudo snap install —beta outwiker
6 августа 2020, 11:41 ппsudo snap connect outwiker:cups-control
sudo snap connect outwiker:removable-media