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

Changes in v1.11:

  • Multiple windows. Windows can be opened via the menu, Ctrl/⌘+N, or link context menus.
  • Restoring tabs at launch is now optional. Added a toggle in Preferences > General.
  • Site-specific settings (Shift+Ctrl/⌘+Comma), with options for theme customization and showing ANSI escape warnings. The custom theme is based on a "seed string" chosen by the user.
  • Fontpack search. Fonts in the skyjake.fi font library have been indexed based on all the glyphs they provide, so one can look up which fontpacks provide any missing glyphs.
  • "Manage Fonts" button on the Preferences > Fonts tab. It opens "about:fonts".
  • "Tab width" setting (default: 8). This controls how TAB characters are displayed on pages.
  • Setting for maximum valid URI length on 'text/gemini' link lines.
  • Option to show images decoded from data URLs immediately after loading a page. This is limited to JPEG, PNG, WebP, and GIF (no animations).
  • "Paste and Go" in the input field context menu.
  • TLS session caching: reduces the need for redundant handshaking by keeping old TLS sessions cached for 10 minutes.
  • UI language for Italian.
  • The input prompt dialog saves entered text persistently, just like the Upload dialog. This prevents losing text if the dialog is closed accidentally.
  • Input field backup is done per window, e.g., "uploadbackup.2.txt".
  • Sidebar context menus have more consistent "open" menu items, now including opening the item in a new window.
  • The missing glyphs warning dialog now shows a list of the missing code points.
  • Downloading the Classic Set fontpack is no longer suggested since fontpacks can be searched as needed.
  • Abbreviate font pack descriptions on "about:fonts". The full description is shown when viewing a single fontpack.
  • The active tab button uses the theme background color if the page color theme has a bright colorful background to avoid clashing with the UI accent color.
  • Adjusted colors of the Gray and Black page themes.
  • Added additional (small) variations to theme hues.
  • Data URLs have their own link icon.
  • Adjusted appearance of context menus.
  • Updated UI translations.
  • Incorrect behavior and UI glitches related to data URLs. The UI will now omit the encoded part of data URLs.
  • Occasional mismatch between page and banner backgrounds. It was due to loss of precision when converting colors to 8-bit RGB.
  • Issues with changing UI metrics when a window moves between displays. Not all UI elements were rescaled properly.
  • Glitches with opening and closing context menus.
  • TAB characters are no longer forcibly normalized to spaces.
  • Pasting LF characters in the URL field should not be possible.
  • Avoid reinitializing fonts more than once during startup.

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

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

Changes in v1.10.6:

  • Added bindings for switching Feeds list to Unread/All mode.
  • Fixed normalization of empty Gemini URL paths to `/` as per the November 2021 spec update.
  • Updated UI translations.

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

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

Changes in v1.10.5:

  • Added a keybinding for "Paste Preceding Line" (in input prompt menu).
  • The "Miscellaneous Symbols and Arrows" Unicode block (U+2B00...U+2BFF) is accepted as custom link icons.
  • When mixing Emoji into preformatted text (glyphs are from different fonts), lay out the Emoji as double-wide characters to avoid overlapping.
  • Faster hover-scrolling of long popup menus.
  • Fixed sidebars not getting updated after identity addition/deletion.
  • Fixed "Paste Preceding Line" not being undoable.
  • Fixed lookup of missing glyphs. Fontpack priorities are now applied as documented.
  • Fixed animation issue with sidebars in the right side of split view.
  • Fixed a refresh issue that caused the first line of the page to be redrawn continuously, spiking CPU usage.
  • Fixed link numbers showing up next to image captions.
  • Fixed how the link hover popup handles extremely long URLs.
  • Updated UI translations.

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

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

Changes in v1.10.4:

  • Added missing ANSI background color codes 100-107 (high-intensity VGA).
  • Fixed how the ANSI FG color is adjusted to keep text legible on dark or bright backgrounds when BG color is unset.
  • Fixed possible crash when there are ANSI escapes in the alt text of a preformatted block.
  • Fixed tab/window titles containing ANSI escapes (escapes are removed).
  • Updated UI translations.

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

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

Changes in v1.10.3:

  • Unix: Added a lagrange(1) manual page.
  • Hide the [+] button on the tab button row if the navbar has a New Tab button.
  • "/index.gmi" is considered equal to "/" when navigating to parent directory.
  • Site icon ❑ replaced with ⌘ ("place of interest") for a more distinct appearance and to avoid similarity with the ❐ "Open in New Tab" icon.
  • Navigating to parent or root from "about:" pages goes to "about:about" to see overview of all the About pages.
  • Gopher: Fixed navigating to root, e.g., when clicking on the page top banner. Set item type to 1 to show a gophermap and not the plain source.
  • Titan: When navigating to parent/root, switch URL scheme to "gemini". This action occurs on a Titan response page, so initiating a new upload with the parent/root URL is probably not appropriate.
  • Fixed crash when a media player is active and a new download is started.
  • Fixed crash when a line contains nothing but an ANSI escape sequence.
  • Fixed a possible crash when saving state of subscribed feeds.
  • Fixed the right-hand sidebar handling the U and Shift+U key events if it was showing the Feeds tab, even though the sidebar was hidden.
  • Fixed line wrapping at backslashes. They are now considered word-breaking characters.

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

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

Changes in v1.10.2:

  • Fixed cancelling an input query. Now pressing Cancel will navigate back to the previous page as intended.
  • Gopher: Fixed navigating to parent. Set item type to 1 to show a gophermap and not the plain source.
  • Updated Smol Emoji: added the rest of Unicode 8 Emoji 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.10.2

Changes in v1.10.1:

  • Fixed bottom actions of the Feeds sidebar getting hidden when all entries are read. This prevented switching between Unread/All filter modes.
  • Fixed potential crash when downloading a large file (e.g., a fontpack).
  • SDL event handling workaround adjusted to only apply to 2.0.18+.
  • Updated UI translations.

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

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

Changes in v1.10:

  • Customizable navbar actions. Right-click on a button to change its action. (Identity and hamburger buttons cannot be changed.)
  • Identity toolbar menu can be used to switch between alternate identities. If you have used multiple identities on one site, this makes it more convenient to switch between them.
  • Added "Edit Page with Titan": opens the upload dialog with current page's content prefilled.
  • Added "Paste Preceding Line" in the input prompt dialog. Potential use cases include user-editable sections on a page and suggested/example input values.
  • Added footer action to open file in another app when the media type is unsupported.
  • Added option to disable cursor blinking in input fields.
  • Added ANSI SGR codes for light and regular font weights (2, 10).
  • Improved image inlining: all responses with an image media type can get inlined, regardless of the file extension in the URL.
  • Inline image metadata goes under the image instead of possibly overlapping the label text.
  • Inline downloads have a context menu for relevant actions, and clicking on the download opens the file.
  • Improved highlighting of open pages. The highlight no longer goes under the side elements on the page.
  • Entry dates in feed links are de-emphasized for improved readability.
  • Revised link hover popup. None of the information appears on the same line any more (which was problematic if there wasn't enough space). Instead, everything is shown in a popup at the bottom/top of the view, including the identity that will be used when opening the link and the date of last visit.
  • Revised layout of the Upload dialog. There is a new edit field that lets you modify the file path of the URL. Identity names are in bold.
  • Optimized UI layout procedure and memory use during UI event processing.
  • Audio subsystem is only initialized when actually needed.
  • Prevent state file corruption if the app happens to get killed while state is being saved.
  • Gempub: Open books in 1:2 split mode instead of 1:1.
  • Minor improvements in page caching.
  • Detect when text is Bengali, Devanagari, Oriya, or Tamil.
  • Fixed a history caching issue: if there were multiple instances of the same URL in history, only the latest one's content would be used when navigating back/forward.
  • Fixed handling of reserved characters in URLs (cf. RFC 3986, section 2.2).
  • Fixed the copy/paste context menu not showing in input fields.
  • Fixed duplicated warnings showing in the page banner.
  • Fixed very narrow input fields causing the app to hang.
  • Fixed initial scroll position in multiline input fields.
  • Fixed layout issues in the sidebar on empty Feeds and Identities tabs.
  • Fixed lookup results list becoming too narrow.
  • Fixed glitches when a widget has multiple simultanous animations.
  • Fixed mixed-language CJK word wrapping.
  • Fixed parsing Atom feed dates with leading whitespace.

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

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

Changes in v1.9.5:

  • Fixed misshapen button borders (SDL 2.0.16 line drawing workaround).
  • Fixed actions being triggered when navigating via home row keys.

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

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

Changes in v1.9.4:

  • Fixed crash when a link is missing both URL and label (just a `=>`).
  • Fixed handling of foreground color escapes in the simple text renderer.
  • Updated UI translations.

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

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

Changes in v1.9.3:

  • Added UI language for Dutch.
  • Updated UI translations.
  • Fixed the simple text renderer (build error, hanging).
  • Fixed time zone of the "valid from" time in created client certificates.

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

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

Changes in v1.9.2:

  • Fixed possible crash when switching Feeds sidebar filter mode via the popup menu.
  • Shorter label for "Mark All as Read" in Feeds sidebar actions.
  • In popup menus, differentiate between selected item and hover item.
  • Updated UI translations.

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

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

Changes in v1.9.1:

  • Added "24-Hour Time" preference. Currently it only affects the page timestamp in the bottom left corner.
  • Heading level 3 is indented like regular text lines, making the difference to level 2 evident.
  • Fixed crash when creating a top-level bookmark.
  • Fixed drawing the page timestamp.
  • Fixed layout of tab buttons and other resizing widgets so all available space is used.
  • Fixed tab close buttons preventing activation of very short tab buttons. The close buttons only appear if there is room for them.
  • Fixed very short tab labels not getting truncated.
  • Fixed the New Tab button not staying at the right edge of the window, depending on how many tabs are open.

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

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

Changes in v1.9:

  • Added a toolbar button for toggling the left sidebar.
  • Added an unsplit button in the toolbar when in split view mode.
  • Choose parent folder when creating or editing a bookmark.
  • Support for 24-bit RGB ANSI color sequences.
  • Support for ANSI background color escapes (disabled by default).
  • UI language for Turkish.
  • Adjusted font styles of heading levels 2 and 3.
  • Sidebar context menus also appear when clicking over the sidebar background. In this case the menu contains general functions not related to any item.
  • Feeds tab in the sidebar has a redesigned action toolbar with "Mark All as Read", and dropdown menu and keyboard shortcuts for changing the filter mode.
  • Feeds tab remembers the unread/all filter mode persistently.
  • ANSI foreground colors are modified to match colored theme backgrounds (e.g., Sepia).
  • Navigating back and forward in history will skip input query prompts (status 1x), showing only the query results.
  • Ctrl+A now selects all text in input fields (except on macOS, where it remains the Emacs-style jump to start/end of line).
  • The resource bundle (resources.lgr) is now a regular ZIP archive. This allows it to do double duty as a fontpack containing the built-in fonts. The archive contains a version number to avoid use of obsolete resources.
  • Fixed layout issues related to footer action buttons. Sometimes the buttons would overlap page content.
  • Fixed handling duplicate feed entries: if multiple entries in a feed have the same URL, only use the first one.

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

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

Version 1.8 adds a customizable font library and improves warning and errors messages. The bundled hardcoded fonts have been removed, and font configuration is now more flexible. Tabs have close buttons that appear on mouse hover.

Changes in v1.8.3:

  • Fixed clicking on UI elements that are over the page top banner. The banner would always get clicked instead.
  • Titan upload identity is remembered as a site-specific setting. It is no longer affected by selections in the Identities sidebar.

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

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

Version 1.8 adds a customizable font library and improves warning and errors messages. The bundled hardcoded fonts have been removed, and font configuration is now more flexible. Tabs have close buttons that appear on mouse hover.

Changes in v1.8.2:

  • Fixed encoding of `+` characters in URLs as per RFC 3986.
  • Fixed crash when fontpack.ini specifies a file that cannot be found.
  • Fixed incorrect title of some error messages (was showing response meta info).
  • Fixed ambiguous font dropdown menu items if some fonts have the same name. Now the unique font ID will be included in these cases.
  • Made it possible to manually trust a certificate whose subject doesn't match domain name.
  • Updated UI translations.

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

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

Version 1.8 adds a customizable font library and improves warning and errors messages. The bundled hardcoded fonts have been removed, and font configuration is now more flexible. Tabs have close buttons that appear on mouse hover.

Changes in v1.8.1:

  • Added UI translations: Hungarian, Czech.
  • Fixed issues scrolling tall popup menus (e.g., UI language selection).
  • Fixed a line spacing artifact in long headings. With some fonts, the lines were clipping each other so the spacing was restored to normal.
  • Fixed a socket I/O issue that caused received data to be ignored when the peer closed the connection prematurely.
  • Gopher: Recognize both LF and CRLF line endings in page content.

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

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

Version 1.8 adds a customizable font library and improves warning and errors messages. The bundled hardcoded fonts have been removed, and font configuration is now more flexible. Tabs have close buttons that appear on mouse hover. Added a Ukrainian UI translation.

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

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

Version 1.7 improves bookmark management with folders and manual sorting, and has multiple UI enhancements including unconstrained popup menus, upload identity selection, button focus switching with Tab key, and new UI languages (e.g., Esperanto). A new image colorization option has been added for enforcing a stricter visual style.

Changes in v1.7.3:

  • Fixed a memory leak in the text renderer.
  • Added option to place new bookmarks to the top of the bookmarks list.
  • Updated UI translations.

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

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

Version 1.7 improves bookmark management with folders and manual sorting, and has multiple UI enhancements including unconstrained popup menus, upload identity selection, button focus switching with Tab key, and new UI languages (e.g., Esperanto). A new image colorization option has been added for enforcing a stricter visual style.

Fixes in v1.7.2:

  • Regressions in text selection, for example when marking text leftwards from the start position or when starting from outside any text run.
  • Crash when clicking on Outline sidebar items before a page has finished loading.
  • Gopher: Handle the "p" line type (PNG image).

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

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

Version 1.7 improves bookmark management with folders and manual sorting, and has multiple UI enhancements including unconstrained popup menus, upload identity selection, button focus switching with Tab key, and new UI languages (e.g., Esperanto). A new image colorization option has been added for enforcing a stricter visual style.

Changes and fixes in v1.7.1:

  • Fixed feed entries forgetting their (un)read status after several months.
  • Fixed feed entries being discarded before they are removed from their source feed, causing them to reappear on the next refresh.
  • Fixed failure to parse Atom feed entry timestamps that use space as the date/time separator.
  • Fixed dropdown labels staying visible in the translation dialog.
  • Fixed showing/hiding of the feed update indicator in split view.
  • Fixed a crash when selecting text.
  • Added a small progress bar to the feed update indicator.
  • When adding a bookmark/folder, the bookmarks list scrolls to show the new item.
  • Improved reordering bookmarks in a folder: an item inside a folder can be moved to be the last item in the folder, or out of the folder depending on which side of the boundary marker the mouse cursor is.

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

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

Version 1.7 improves bookmark management with folders and manual sorting, and has multiple UI enhancements including unconstrained popup menus, upload identity selection, button focus switching with Tab key, and new UI languages (e.g., Esperanto). A new image colorization option has been added for enforcing a stricter visual style.

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

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

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.5:

  • Audio init errors are no longer fatal. SDL's error message will still be printed.
  • Fixed appearance of tab buttons (should have no top frame).
  • Fixed a cursor position regression in input fields related to handling of variation selectors (codepoint clusters). Moving the cursor to the start of a wrapped line segment put the cursor in the wrong place.
  • Fixed right-clicking on sidebar tab buttons. It was showing the wrong context menu when the list had been scrolled down.
  • Fixed crash when using the SDL2 KMSDRM video driver.
  • Fixed minor visual artifacts in preformatted blocks and near the bottom of the page.

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.5

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.4:

  • Local files containing UTF-8 text can be viewed regardless of their file extension.
  • Fixed input field cursor positioning and insertion problems around Emoji variation selectors.
  • Fixed "Unknown Status Code" shown in Page Information for valid status codes.
  • Fixed an issue with network requests that would make it appear the server was not responding, but the request would not time out.
  • Fixed a potential invalid memory access when clicking on sidebar items.
  • Fixed a potential freeze after a network request is cancelled.

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.4

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.3:

  • Select all text in an input field using Shift+Ctrl+A.
  • Input fields do not lose focus when the window becomes inactive, making it easier to resume input afterwards.
  • Fixed delay after switching to split view mode.
  • Fixed what gets drawn in an empty tab, before a document is available for rendering (e.g., after switching to split view mode).
  • Fixed highlighting the domain name in URL input fields.
  • Fixed hiding the Gemini URL scheme in input fields when the window is narrow.
  • Fixed the line break key modifier inadvertently affecting URL input fields, where line breaks are not allowed.
  • Fixed the line break key modifier affecting the upload dialog's text field.
  • Fixed a potential hang when closing a socket before the connection is fully opened.
  • Updated translations.

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.3

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