fi.skyjake.Lagrange CC0-1.0 BSD-2-Clause Lagrange A Beautiful Gemini Client

Lagrange is a desktop GUI client for browsing Geminispace. It offers modern conveniences familiar from web browsers, such as smooth scrolling, inline image viewing, multiple tabs, visual themes, Unicode fonts, bookmarks, history, and page outlines.

Like the Gemini protocol, Lagrange has been designed with minimalism in mind. It depends on a small number of essential libraries. It is written in C and uses SDL for hardware-accelerated graphics. OpenSSL is used for secure communications.

fi.skyjake.Lagrange.desktop https://gmi.skyjake.fi/lagrange/flathub_screenshot.jpg https://gmi.skyjake.fi/lagrange https://github.com/skyjake/lagrange/issues https://skyjake.fi/@jk Jaakko Keränen lagrange jaakko.keranen@iki.fi

Version 1.6 adds support for bidirectional text and complex scripts, right-to-left paragraph layout, uploads using the Titan protocol, and has an improved mechanism for tracking trust in server certificates. Page contents can be fully cached in memory for more efficient backward navigation. There are also UI improvements like a reorganized Preferences and a setting for smooth scrolling speed.

Changes and fixes in v1.6.2:

  • Added --tab-url to print currently active tab's URL.
  • Upload dialog expands to full window height when the entered text is long.
  • Home/End keys in an input field move to start/end of the wrapped line segment.
  • Scroll with mouse wheel in input fields.
  • Slower cursor blink rate in input fields.
  • Adjusted dark mode colors for focused input fields.
  • Fixed incorrect behavior in input fields when typing or deleting text while holding down the Shift key.
  • Fixed crash in Upload dialog if server responds with a redirect.
  • Fixed buffered graphics (UI, fonts) getting lost under rare circumstances.
  • macOS: Fixed UI not updating when system dark mode is toggled while the window is hidden.

The full release notes can be viewed inside the app by opening the "about:version" page.

https://github.com/skyjake/lagrange/releases/tag/v1.6.2

Version 1.6 adds support for bidirectional text and complex scripts, right-to-left paragraph layout, uploads using the Titan protocol, and has an improved mechanism for tracking trust in server certificates. Page contents can be fully cached in memory for more efficient backward navigation. There are also UI improvements like a reorganized Preferences and a setting for smooth scrolling speed.

Version 1.6.1 fixes the following issues:

  • Potential crash when inserting a line break.
  • Cursor positioning in fixed-length input fields.
  • Copying text in input fields (the wrong region was copied).
  • URL input field contents not being selected after opening a new tab.
  • Upload dialog not showing when reloading a Titan URL.

The full release notes can be viewed inside the app by opening the "about:version" page.

https://github.com/skyjake/lagrange/releases/tag/v1.6.1

Version 1.6 adds support for bidirectional text and complex scripts, right-to-left paragraph layout, uploads using the Titan protocol, and has an improved mechanism for tracking trust in server certificates. Page contents can be fully cached in memory for more efficient backward navigation. There are also UI improvements like a reorganized Preferences and a setting for smooth scrolling speed.

The full release notes can be viewed inside the app by opening the "about:version" page.

https://github.com/skyjake/lagrange/releases/tag/v1.6.0

Bug fixes and tweaks:

  • Fixed pasting a PEM-formatted certificate and/or private key via clipboard in Import Identity.
  • Possible workaround for a visual glitch in the URL field.
  • Specify `StartupWMClass` in .desktop file.
  • Normalize page contents to avoid the most common issues with diacritics (Unicode NFC).
  • Expanded the set of recognized custom link icons.
  • Updated "Smol Emoji" font with new glyphs.
  • Allow use of TLS cipher "DHE-RSA-AES256-GCM-SHA384".
https://github.com/skyjake/lagrange/releases/tag/v1.5.2

Resource update:

  • Latest UI translation strings.
  • More glyphs in the Smol Emoji font.
https://github.com/skyjake/lagrange/releases/tag/v1.5.1

This release contains several user interface improvements.

  • Improved identity management: revised certificate creation UI, taking a new identity into use immediately, sidebar context menu shows used URLs as clickable menu items, exporting identities.
  • Improved text input: inserting line breaks, input fields use word wrapping and expand vertically, query URL length indicator.
  • Show buttons in the page footer area for performing relevant actions conveniently.
  • Animated showing of sidebars and dialogs.
  • Font updates, setting for custom fallback TrueType font.
  • Gempub: Linear navigation through the book.
  • New UI language: Polish.

The full release notes can be viewed inside the app by opening the "about:version" page.

https://github.com/skyjake/lagrange/releases/tag/v1.5.0

Bug fixes:

  • UI colors were all black on the first run.
  • Right mouse click on an inactive split does not have any effect.
  • Action buttons showing under the Help link in an empty Identities sidebar.
  • Potential crash at shutdown.
  • Minor UI layout issues.
https://github.com/skyjake/lagrange/releases/tag/v1.4.2

Bug fixes:

  • Removing the left side split by closing all its tabs. The URL input field got confused about which tab was currently open, and the wrong theme was active.
  • Tab merging when unsplitting the window: keep the currently active tab open.
  • Sidebars sometimes become unresponsive.
  • Incorrect font was used for visited monospace Gopher links.
  • Incorrectly shown/hidden tab pinning indicator.
  • Scrollbar in Preferences > Keys was hidden until the list was scrolled.
https://github.com/skyjake/lagrange/releases/tag/v1.4.1

This release introduces a split view mode, support for Gempub files, and optimizes page rendering. Notable changes include:

  • Split view for browsing two tabs at once.
  • Split view pinning for keeping an index page or menu on one side while opening all links on the other side.
  • Viewing contents of local directories and ZIP archives.
  • Basic Gempub support: viewing the book cover page, and opening the contents in a split view.
  • Page renderer buffers content more efficiently.
  • New UI languages: Interlingua, Toki Pona.
  • All lists support smooth scrolling.

The full release notes can be viewed inside the app by opening the "about:version" page.

https://github.com/skyjake/lagrange/releases/tag/v1.4.0

Changes:

  • Allow server certificates with a `*.tld` subject wildcard.
  • Updated the French UI translation.

Bug fixes:

  • Broken media type check in the audio player. Media types with parameters failed to be recognized.
  • Crash after a redirect.
  • Rare issue with handling multiple rapid network requests.
  • Rare situation where a network connection would fail to open.
  • Minor stability improvements.
https://github.com/skyjake/lagrange/releases/tag/v1.3.4

New features/changes:

  • Added UI languages: French, German. (Note that neither is 100% finished yet.)
  • Added environment variable LAGRANGE_OVERRIDE_DPI.
  • Back/forward navigation buttons are disabled if they have no more pages to switch to.
  • Minor UI color tuning.

Bug fixes:

  • Disabled IPC in Flatpak builds for compatibility reasons. Beware of multiple instances overwriting each other's data.
  • Possible crash when closing a tab.
  • Possible crash when restoring application state at launch.
  • Parsing and making requests with literal IPv6 addresses.
https://github.com/skyjake/lagrange/releases/tag/v1.3.3

Bug fixes:

  • Crash after updating from v1.2 due to undefined CA file/path configuration.
  • Conflation of pixel ratio and display DPI. Pixel ratio is now always separately detected so mouse events can be correctly positioned. You may find that adjusting the UI scale factor (Preferences > Interface) is necessary after upgrading.
  • Sidebar width changing when moving the window to a different display.
  • Inability to use Tab in keybindings.
  • Opening Gopher URLs via drag-and-drop.
  • "Add bookmark..." does nothing on a feed entry.
  • Keybindings list not being updated immediately when UI language changes.
  • Trimming of link label text when a custom Emoji is used.
https://github.com/skyjake/lagrange/releases/tag/v1.3.2

Version 1.3 is a major feature update with improvements for localization, browsing behavior, page content and rendering, UI design, and command line use. Here are some of the highlights:

  • New UI language setting: English, Chinese, Finnish, Interlingue, Russian, Serbian, and Spanish available in this release.
  • LibreTranslate integration for translating page content.
  • Viewing alt text of preformatted blocks.
  • Improvements to color themes and page appearance.
  • Rescaling the UI manually or when moving the window to a different display.
  • Word/paragraph selection modes (double/triple click).
  • Controlling a running instance via command line.

1.3.1 contains minor updates and bug fixes:

  • Added option to disable bold links for light/dark backgrounds.
  • Updated the Nunito font to the latest version.
  • Fixed keybindings overriding the home row key navigation mode.
  • Fixed crash during word wrapping.
  • Fixed kerning in the text renderer.
  • Fixed issue with overlapped drawing of list bullets vs. list items.
  • Fixed cropped list bullets when using Literata.
  • Fixed whitespace normalization in plain text files (tab characters).
  • Fixed issues buffering window contents, possibly causing missing font glyphs.

The full release notes can be viewed inside the app by opening the "about:version" page.

https://github.com/skyjake/lagrange/releases/tag/v1.3.1

This is a major feature update with improvements for localization, browsing behavior, page content and rendering, UI design, and command line use. Here are some of the highlights:

  • New UI language setting: English, Chinese, Finnish, Russian, and Spanish available in this release.
  • LibreTranslate integration for translating page content.
  • Viewing alt text of preformatted blocks.
  • Improvements to color themes and page appearance.
  • Rescaling the UI manually or when moving the window to a different display.
  • Word/paragraph selection modes (double/triple click).
  • Controlling a running instance via command line.

The full release notes can be viewed inside the app by opening the "about:version" page.

https://github.com/skyjake/lagrange/releases/tag/v1.3.0

Bug fixes:

  • Fixed XML parser hanging on numeric character entities.
  • Fixed "Monospace Body" option causing Gemtext line markup to be visible.
  • Fixed bookmarking a wrapped link. Now the entire label text gets used instead of just the clicked segment.
  • Fixed handling of non-advancing monospace glyphs.
https://github.com/skyjake/lagrange/releases/tag/v1.2.3
  • Stability improvements.
  • Whitespace is no longer normalized when using the monospace body setting.
  • Fixed issues with percent-encoded Gopher paths.
https://github.com/skyjake/lagrange/releases/tag/v1.2.2

This is a major feature update that also has a number of user interface design changes.

New features include viewing and subscribing to Atom feeds, downloading any link as a file, editable bookmark icons, search engine integration, tab auto-reloading, fullscreen mode, and new font options for page content.

UI enhancements include improved navbar and sidebar appearance, setting for UI accent color, and placement of dialog buttons.

The full release notes can be viewed inside the app by opening the "about:version" page.

v1.2.1 fixes a crash when creating a bookmark.

https://github.com/skyjake/lagrange/releases/tag/v1.2.1

This is a major feature update that also has a number of user interface design changes.

New features include viewing and subscribing to Atom feeds, downloading any link as a file, editable bookmark icons, search engine integration, tab auto-reloading, fullscreen mode, and new font options for page content.

UI enhancements include improved navbar and sidebar appearance, setting for UI accent color, and placement of dialog buttons.

The full release notes can be viewed inside the app by opening the "about:version" page.

https://github.com/skyjake/lagrange/releases/tag/v1.2.0

Bug fixes:

  • Broken Gopher menu links.
  • Incorrect feed entry highlight/read status in the sidebar.
  • Vertical alignment of short pages: top banner is excluded because it is not part of the content.
https://github.com/skyjake/lagrange/releases/tag/v1.1.4

Bug fixes:

  • Crash when deleting a bookmark that was being used as a remote bookmark source.
  • Potential crash at shutdown.
  • URL path decoding not respecting reserved characters.
https://github.com/skyjake/lagrange/releases/tag/v1.1.3

Bug fixes:

  • Potential crash at launch.
  • Input query from a background tab was being applied to the foreground tab. An input query now forces a tab to the foreground.
  • Window scroll position moving when resizing vertically.
  • Feed refresh waiting forever if a server doesn't respond.
  • Hover state not being cleared when right-clicking links.
  • Remote bookmarks not appearing if they lack a user-friendly name on the source page.
https://github.com/skyjake/lagrange/releases/tag/v1.1.2

Miscellaneous fixes for bugs and other incorrect behavior:

  • Monitor DPI will now affect UI scaling.
  • Input focus can no longer be cycled outside an open dialog.
  • Missing cursor and invalid data in the New Identity "Valid until" field.
  • Missing frames in the Import Identity dialog.
  • Word wrapping slightly off in unread feed entry titles.
  • URI fragments should not be stripped from all links.
  • Allow reloading the same URL when clicking on a link or bookmark, or pressing Enter in the navbar.
  • Existing bookmark URLs are normalized like all other URLs.
  • "Import Links as Bookmarks" can be used on an active bookmark source page.
  • Fixed default values for preferences: line width, Downloads directory.
  • Store files in XDG user directories.
https://github.com/skyjake/lagrange/releases/tag/v1.1.1

This version adds new features to enhance user experience and fixes incorrect behavior.

  • Import existing X.509 client certificates via the UI.
  • Setting for maximum cache size.
  • Option to show full URL when hovering mouse over a link.
  • Support for Finger links.
  • More keybindings: e.g., opening and closing tabs.
  • Visual UI improvements.
  • Fix for history timestamps that were shifting on every launch.
https://github.com/skyjake/lagrange/releases/tag/v1.1.0

This release contains bug fixes and performance improvements.

Version 1.0 is the first stable release of Lagrange.

https://github.com/skyjake/lagrange/releases/tag/v1.0.3