LINUX.ORG.RU

Lagrange 1.18 и 1.18.1

 , , ,


0

4

Две недели назад состоялось крупное обновление Lagrange, клиента сети Gemini (статья на Википедии, веб-сайт), представленной как облегчённая альтернатива WWW и созданной с оглядкой на Gopher, но с добавлением таких улучшений, как собственный язык Gemtext для базовой разметки текста и шифрование. 29 сентября вышло обновление 1.18.1, закрывшее несколько багов прошлого релиза.

Lagrange является кроссплатформенным клиентом, использующим возможности библиотек SDL для графического ускорения и OpenSSL для шифрования. Программа поддерживает вкладки и разбивку экрана, историю посещений, закладки, поиск по сети, умные подсказки при наборе в адресной строке, показ встроенных изображений на страницах, проигрывание аудиофайлов и выбор темы оформления, и содержит встроенный новостной агрегатор. Интерфейс Lagrange напоминает типичный для современных веб-браузеров, но имеет широкие возможности для кастомизации. Подробнее с особенностями приложения можно ознакомиться, открыв в Lagrange вкладку about:help, или прочитав файл help.gmi

Исходный код программы написан на C и может быть собран на любой современной POSIX-совместимой платформе. Официальные 64-битные сборки релизов доступны для платформ Windows, macOS и GNU/Linux (AppImage). Бета-релизы доступны для мобильных платформ: iOS, Android (репозиторий F-Droid, APK)

1.18

Нововведения:

  • Поддержка отправки сообщений Misfin. Ссылки misfin:// открываются в диалоге отправки.
  • Поддержка Guppy, легковесного протокола, основанного на UDP. Добавлено Dima Krasner.
  • Titan: Поддержка параметра «редактировать» в открытых ссылках Titan. Содержимое ссылки загружается и открывается в текстовом редакторе диалога отправки. После завершения редактирования содержимое отправляется обратно на сервер.
  • Опция для отключения всех предупреждений о небезопасном подключении TLS.
  • Воспроизведения звука в формате Opus посредством libopusfile (опциональная зависимость). Добавлено Martin Chang.

Изменения и улучшения:

  • Использующий Curses консольный клиент clagrange теперь может быть собран в дополнение к GUI-версии, а не по отдельности с ней. Удален скрипт для сборки TUI.
  • Улучшена фокусировка на элементах интерфейса: клавиши со стрелками перемещают фокус на соседний виджет.
  • Контекстные меню могут управляться клавишами со стрелками, и первые буквы ярлыков пунктов меню используются для быстрого перемещения фокуса нажатием соответствующей клавиши на клавиатуре.
  • Сохраненные в закладках URL автоматически обновляются в случае постоянных перенаправлений. (Оригинальный URL продолжает храниться в bookmarks.ini).
  • Длина строки изменяется динамически (подстраивается под размер окна), включая такие поля как преформатированные блоки и строки простого текста (plain text).
  • Путь к файлу может быть набран вручную в диалоге отправки. Ранее поддерживалось только использование drag-and-drop.
  • Щелчок правой кнопкой мыши по баннеру сайта показывает контекстное меню ссылки (привязанное к корневому URL капсулы).
  • При сохранении в каталог загрузок показывается всплывающее окно для подтверждения.
  • Панель меню: При активации с клавиатуры, повторно открывается последнее открытое подменю, но не обязательно «Файл», как раньше.
  • Клавиша Return теперь фокусирует на поле набора URL.
  • О странице: Разъяснено значение «fingerprint». Отображаются тип хэша (SHA-256) и что было использовано для его вычисления (полный сертификат или только публичный ключ).
  • Обновлены символьные обозначения действия «Перейти в корень», удаленных (remote) закладок и индикатор (кнопка) закладок.
  • Gopher: Корректный парсинг типов строк Telnet 8 и T.
  • Шрифт Noto Emoji обновлен для поддержки Unicode 15.1.
  • TUI: Часто используемые клавишные комбинации показываются на месте панели меню, когда та отключена, чтобы сделать интерфейс более доступным.
  • TUI: Улучшена раскладка интерфейса, учитывая возможность использования при минимальном разрешении в 80x25.
  • TUI: Улучшено отображение различных виджетов в текстовом режиме.

Исправления:

  • URL Titan ошибочно открывали диалог отправки при просмотре истории.
  • Запрос Titan в открытой вкладке отправлялся заново с пустым содержимым при запуске приложения.
  • Идентификация для отправки в Titan иногда выбиралась некорректно.
  • Диалогу отправки не хватало нескольких строк для ошибок при drag-and-drop.
  • Gopher: элементы форматирования Gemtext, оказавшиеся в тексте страниц Gopher, игнорируются, чтобы исключить возможность искажения визуального представления страницы.
  • Gopher: Номер порта может быть пустым на i-строках.
  • Ярлыки запроса, уже содержащие знак ?, имели в префиксе лишний ?.
  • Численные (буквенные) отметки ссылок, показываемые при навигации с использованием Alt/Option или клавишами ряда home, теперь начинаются с самого верха области просмотра.
  • Некорректный порядок обработки событий при наличии нескольких окон, когда один из виджетов находится в фокусе.
  • macOS: Навигация трекпадом на несфокусированном окне могла сработать в другом, сфокусированном окне.
  • Отсутствующая индикация фокуса в пустых списках и списках Snippets.
  • Зажатие Alt/Option (модификатор для показа номеров ссылок) при открытии ссылки запроса могло привести к отсутствию фокуса ввода во всплывающем диалоге.
  • Неправильное расстояние между символами в преформатированном блоке.
  • Подсветка первого абзаца неправильно работала с моноширинным шрифтом тела.
  • Текстовые символы иногда показывались частично обрезанными.
  • TUI: Цветовые escape-символы не учитывались при выводе.
  • TUI: Отсутствовали символы подменю.
  • TUI: Возможное зависание при показе обтекающего текста.

1.18.1

  • macOS: Исправлено открытие URI Misfin извне, средствами системы.
  • Windows: Теперь можно запомнить Lagrange как приложение для открытия URL misfin://.
  • TUI: Исправлено возможное искажение вывода.
  • TUI: Curses будет линковаться статически только при использовании опции CMake ENABLE_STATIC.
  • Обновлены переводы интерфейса.

>>> Подробности



Проверено: hobbit ()
Последнее исправление: dataman (всего исправлений: 4)

Ответ на: комментарий от vbcnthfkmnth123

Сейчас я прочитал столько сток кода в разных проектах.

  • systemd 1.3 миллиона.
  • FireFox 21 миллион.
  • Роман «Война и Мир» 0.03 - 0.04 миллиона строк.
lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от lbvf50txt

мой протокол можно было сделать в 10 строк на bash. и решал он даже другие задачи, которые html не решал. а тут просто урезанный гипертекст, где для оригинального гипертекста есть сотни клиентов на любой уровень: я links запускал на 486 с 4 мб памяти, зачем мне делать клиента из 100 строчек?

alt-tab-let ★★
()
Ответ на: комментарий от lbvf50txt

Какая разница. Я не смогу запустить это с дискеты openbsd, потому что tls. Свой кстати смогу. Я не смогу это запустить с win 95. А веб-сайт под 4.01 без https смогу. Даже в debian есть один графический браузер gemini, это kristall, который на qt и явно не самый энергозатратный. И десяток графических браузеров http, некоторые из которых жрут на порядок меньше qt-шного kristall.

alt-tab-let ★★
()
Ответ на: комментарий от alt-tab-let

Какая разница.

Это основной вопрос. Раскажите какого уровня этот протокол, какие задачи он решает.

Как реализован запрос этого протокола. Как реализован ответ. Как выбирается ресурс.

lbvf50txt
()
Ответ на: комментарий от lbvf50txt

хотя я не понимаю, какое это имеет отношение к отношению html и gemini. http/html уже есть, все вопросы решает, браузеров валом, делай экосистему, соблюдай конвенцию, делай так, чтобы все знали где есть лёгкие сайты, на которые можно зайти с win95. вместо того, чтобы делать непонятные браузеры, на которые с win95 зайти нельзя.

alt-tab-let ★★
()
Ответ на: комментарий от lbvf50txt

Какие проблемы они решают. Я вот знаю, что если делать сайты на чистом html, он решит все проблемы тяжёлого веба и я смогу туда зайти с siemens s55.

alt-tab-let ★★
()
Ответ на: комментарий от vbcnthfkmnth123

Ну делай.

Ну он и делает. Просто хочет чтобы все остальные делали то же что и он.

Gentooshnik ★★★★★
()
Ответ на: комментарий от alt-tab-let

Какие проблемы они решают.

Есть в FAQ.

Для абсолютно минимального потребления ресурсов всё же Gopher. Не Gemini с TLS, и не HTTP+HTML с нетривиальным layout’ом, скриптами, и кучей запросов для отрисовки всего одной страницы. Какие проблемы надо было решить что в Gemini TLS обязателен есть в FAQ.

Gentooshnik ★★★★★
()
Последнее исправление: Gentooshnik (всего исправлений: 1)
Ответ на: комментарий от alt-tab-let

Что решено? Потребление ресурсов для отрисовки страницы? С точки зрения разработчика сайтов этой проблемы вообще никогда не существовало. Gopher вон с 1991-го живёт.

UPD: А с точки зрения пользователей проблема с каждым годом становится только хуже.

Gentooshnik ★★★★★
()
Последнее исправление: Gentooshnik (всего исправлений: 1)
Ответ на: комментарий от alt-tab-let

Хорош предмет обсуждения менять в каждом комменте.

lagrange жрёт больше, чем netsurf

Совершенно верно. Lagrange проблему абсолютно минимального потребления ресурсов не решает. И не собирался решать.

Gentooshnik ★★★★★
()
Ответ на: комментарий от alt-tab-let

https://imgur.com/a/CUFVbUy

В links открыт https://linux.org.ru
В gmi100 - gemini://bbs.geminispace.org

Конечно, links в разы фичастее, но это уже другой вопрос.

Gentooshnik ★★★★★
()
Последнее исправление: Gentooshnik (всего исправлений: 1)
Ответ на: комментарий от Gentooshnik

Go - жирнота. :/
Пустое окно с загруженной библиотекой TLS на Tcl/Tk весит почти как gmi100.
astronaut на Go весит как два links’а при фичастости как у gmi100.

Надо попробовать сделать клиент на Tcl/Tk. Что-то мне подсказывает что он (графический, на скриптовом интерпретируемом языке…) будет компактнее чем (консольный) клиент на (компилируемом) Go.

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

https://tildegit.org/solderpunk/gemini-demo-3

скомпилированный исходик весит 4.8mb. Из gemini://bbs.geminispace.org посетил 2 cтранички 7608кб в top.

https://bombadillo.colorfield.space/docs/

Потребляет 9864kb RSS в top.

Порядок посещения в обоих браузерах:

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 2)
Ответ на: комментарий от lbvf50txt

А, ок. Значит я ткнув в случайный клиент на Go попал в плохо оптимизированный.

Gentooshnik ★★★★★
()
Последнее исправление: Gentooshnik (всего исправлений: 1)
Ответ на: комментарий от alt-tab-let

в подавляющем большинстве случаев это оверхед. который нихрена не экономит, а только всё усложняет

Мне не нравится, что хорошую технологию засирают, потому что какой-то там фейсбук плохо ей воспользовался. Потому что большие потоки говна начинают влиять на принятие решений как технических, так и бизнесовых.

Есть много кейсов, где SPA — самый удобный вариант. Для любителей древности его можно совмещать с SSR, как обычно и делают ради SEO. Нормальная вёрстка прекрасно открывается в links. Моя, по крайней мере.

Шок, но SPA не принуждает к говнокоду, который нигде кроме последней версии chromium нормально не отображается — это всегда личный выбор программиста.

когда сайт начинает дико тормозить на телефоне после прокрутки на 5 экранов вниз, потому что хаотично подгружает вместо старой доброй постраничной

Плохая реализация не означает, что сам подход плохой. Да, в соц сетях действительно так. У них много плохих решений, продавленных менеджментом, который тупо надрачивает KPI ради премий.

Нужен как минимум observer, чтобы подчищать верхние записи, например с лимитом в 100. И тогда не залагает даже самый древний смартфон.

постраничной (когда ты тупо можешь в любой момент вернуться к нужной странице, вместо модной прокрутки, когда тебе надо будет СНОВА крутить все 20 страниц)

И это тоже пример плохой реализации, где фронты поленились. Не соц сетями едиными.

Такие вещи в любом случае делаются через параметры offset и limit, которые передаются бэку. Ничего не мешает держать их открыто в query и сверстать кнопки для той самой постраничной навигации. Хочешь листать — листай, хочешь страницы — ходи по страницам, хочешь делится ссылками на страницы — делись, они будут работать. Кстати, именно так я и делал на некоторых проектах.

InterVi ★★★★★
()
Ответ на: комментарий от alt-tab-let

Что у тебя там за контент???

Картинки есть на большинстве сайтов. В примере был сайт музыканта, там наверняка ещё и музыка. Скорее всего, это сайт-плеер. Такие сайты оборачивать в SPA и PWA крайне желательно. Иначе у юзеров будет гореть пятая точка от расхода трафика, который можно было бы не расходовать, если бы всё лежало в кэше. Большинство из них слушает со смартфона в автобусе по пути на работу, где ещё и сеть тормозит.

Для сайтов статейников это конечно было бы излишеством. Но я и не утверждал, что PWA нужно пихать везде, для кого оговорки написаны?

css, js и так обычно закешированы

А вот и нет.

пульнуть текст до 10 кб проще прямо, чем посылать его в некий обработчик, который будет ещё его по формам растаскивать

Зависит от задачи. Простые сайты статейники так и должны делать. Но если много динамического поведения, запросов и ещё разных наворотов — SPA выигрывает как по удобству, так и по скорости разработки. Насчёт последнего неохота вдаваться в подробности, кто знает тот знает, а кто не знает — тому не надо.

Ну и, повторюсь, оба подхода сочетаются. Если есть SSR, можно js вообще отрубать. Хоть рубильником на самом сайте — есть варианты, как это реализовать: например, юзер жмёт кнопку, устанавливается нужный cookie, прокси-сервер по нему вырезает теги script из html выдачи.

Было бы желание программиста. Технологии не виноваты, что ими мало кто хочет правильно пользоваться. Проблема бизнесовая, а не техническая.

InterVi ★★★★★
()
Ответ на: комментарий от alt-tab-let

выбрать за стандарт html 3.2 или html 4.01, и всё. сразу же есть сотни браузеров, от java me браузера на siemens s55 и pocket ie для ipaq pocket pc 2003. какая разница, какую конвенцию соблюдать для желающих «чистого веба», писать на gemtext или на html 4.01

Вот да. Мне нравится small web, с большой радостью хожу по простым сайтам через dillo и links. Самому написать такой сайт тоже фигня вопрос, не нужны никакие дополнительные протоколы с искусственными ограничениями.

InterVi ★★★★★
()
Ответ на: комментарий от Gentooshnik

Это был ответ товарищу, который гарантировал что gemini гарантирует минимальное потребление ресурсов.

alt-tab-let ★★
()
Ответ на: комментарий от alt-tab-let

Со свопом - легко. Знаешь же как EMACS расшифровывается? xD

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

Админка + roundcube + rspamd (ни разу туда не заглядывал, но может зачем-то надо) + webdav и carddav. Без всего этого можно и обойтись, конечно.

ugoday ★★★★★
()

в манах ко встречным серверам было написано, что сертификаты надо самим подписывать. так и сделал, после чего kristall ругается, что сертификат у меня самоподписанный.

alt-tab-let ★★
()
Ответ на: комментарий от ugoday

Вообще, не очень нравится мысль ухода от веба к приложениям. Веб хоть и не очень, но позволяет делать альтернативные интерфейсы к сервисам. А если мы уходим в приложения, то можем получить проприетарное пространство, где на каждый сервис отдельное (скорее всего) закрытое приложение с не факт что открытым API.

rhubear
()
Ответ на: комментарий от Gentooshnik

У меня единственный браузер в дебиане графический это кристалл.

А у тебя какой? gemini://gem.blcat.ru у тебя ругается на сертификат? Чё он вообще хочет?

alt-tab-let ★★
()
Ответ на: комментарий от alt-tab-let

Lagrange тоже ругается из-за несовпадения доменного имени. gEM.blcat.ru и gMI.blcat.ru.

Gentooshnik ★★★★★
()
Ответ на: комментарий от ugoday

Загляни на фрилансерские биржи, удивишься. Неофициальный API есть у всех. У SPA – API через который получает данные SPA, у остального – собственно сайт и есть его API для скраперов альтернативных клиентов.

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

Так и здесь то же самое. У нас по построению есть какие-то конечные точки, с которыми происходит обмен данными по открытым каналам. Значит мы можем заморочиться и методами обратного инжиниринга понять какие запросы за что отвечают.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

А для приложений есть много разных языков и фреймворков, от C++ и Qt до Tcl/TK. И все они быстрее и лучше браузера с джавоскриптом.

Что проще - открыть сайт или добавить приложение в appstore?

У веба гораздо большая мультиплатформенность (причём дешёвая, не надо создавать пакеты для всех платформ, городить для этого инфрастуктуру, и в любом случае платформ для браузера больше), удалённый доступ (не надо таскать приложения с собой), возможность одновременного использования несколькими пользователями.

Надо только 1.5 гб javascript не пихать.

alt-tab-let ★★
()
Ответ на: комментарий от ugoday

Страдать уж так страдать со вкусом

Настолько большие страдания, что тот же yt-dlp поддерживает больше тысячи сайтов?

Возможен ли тот же эффект с приложениями вместо сайтов, учитывая, возможно, больший входной порог для парсинга запросов, если у нас нет открытого API?

rhubear
()
Ответ на: комментарий от alt-tab-let

Надо только 1.5 гб javascript не пихать.

Это как просить алкаша завязать.

devl547 ★★★★★
()
Ответ на: комментарий от alt-tab-let

А для приложений есть много разных языков и фреймворков, от C++ и Qt до Tcl/TK. И все они быстрее и лучше браузера с джавоскриптом.

Что проще - открыть сайт или добавить приложение в appstore?

Компромиссы. И Electron - это худшее из обоих миров. 🤦

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

Компромиссы. И Electron - это худшее из обоих миров. 🤦

Electron это плохой компромисс, и тормознее приложения, и не сайт.

Но вообще это от задачи зависит. Когда задача требует 1.5 гб js не надо её сайтом делать, лучше действительно натив. А какое-нибудь «стой там иди сюда» нормально ложится в концепцию сайта. Лор, например. Да, для лора был клиент на tk и я им даже пользовался, но ставить этот клиент на все устройства от десктопа до кофеварки - проще на сайт зайти.

alt-tab-let ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.