Lagrange Changelog

What's new in Lagrange 1.17.6

Jan 16, 2024
  • Fixed memory leak: fetched pages were not always released from memory (reference miscount).
  • Fixed minor memory leak in list widgets.
  • Gopher: Autodetect Gemtext files based on file extension.
  • Updated UI translations.

New in Lagrange 1.17.5 (Dec 4, 2023)

  • Fixed a few small memory leaks.
  • Fixed unnecessary copying of data while waiting for an audio buffer to become playable.
  • Gopher: Detect audio media type from file extension with the s item type (it's not always WAV).
  • Content that uses charset=utf-8 is checked for validity. If the encoding is invalid, the content is instead decoded as CP437 (if it has ANSI escapes; possibly it's ASCII art) or just Latin-1.
  • Remove ANSI escapes from window titles.
  • Modified rule for when 'text/plain' is assumed to actually be 'text/gemini' based on the file extension.

New in Lagrange 1.17.4 (Nov 20, 2023)

  • Removed automatic horizontal scrolling of wide preformatted blocks. Instead, hold down the Shift key to scroll horizontally with the mouse wheel.
  • Fixed an event processing issue where some events were not handled as expected, for instance when opening a link into split view the opened link was not highlighted.
  • Fixed links not reacting to mouse hover after jumping to a heading from the Outline.
  • Fixed input prompt behaving strangely after changing font size. (Lines are now forced to rewrap after changing the font.)
  • Fixed mouse cursor not changing its shape in all open windows.
  • Updated UI translations.

New in Lagrange 1.17.3 (Nov 5, 2023)

  • Fixed activating a pinned identity when opening a bookmark via the Bookmarks menu.
  • Fixed initial scope of a created identity when using the default selection.
  • Fixed issues with dropdown menus when the menu appears as a popup window.
  • Fixed clearing the pinned identity of a bookmark.

New in Lagrange 1.17.2 (Oct 25, 2023)

  • Tabs opened in background are immediately added to the URL history.
  • Mouse wheel direction switches back to vertical when a wide block has been scrolled all the way.
  • Fixed current text selection extending during scrolling even after mouse button has been released.
  • Fixed drag-to-select with the mouse being too sensitive to mouse movement.
  • Fixed the numbered links key (default: Alt/Option) while navigating to new pages. It is no longer necessary to release and press the key again on the new page.
  • Fixed long bookmark titles making the Bookmarks menu too wide.
  • ANSI Cursor Forward control sequence ("CSI n C") is converted to a series of spaces, but only in preformatted text.
  • Fixed parsing of ANSI SGR sequences with many attributes concatenated (e.g., 0;1;40;30).
  • Fixed inline image loading indicator overdrawing itself, becoming unreadable.
  • Windows: Installer restarts the app after updating, and there is a checkbox for launching the app if it wasn't running. The uninstaller is now signed, too.
  • Updated UI translations.

New in Lagrange 1.17.1 (Oct 22, 2023)

  • Added "Vibrant Light" color theme.
  • Improved readability of "Colorful Light" headings.
  • Tuned autoscrolling when selecting text to avoid accidental scrolling.
  • Preformatted blocks no longer switch to a smaller font to fit to the page.
  • Mouse wheel scrolls a wide preformatted block when hovering over the block, instead of scrolling vertically. You can hold the Shift key to swap the scroll direction.
  • Fixed horizontal scrolling issues with preformatted blocks: only scroll if needed, allow scrolling anywhere on the block and not just on non-empty text lines, and when scrolling disallow swipe navigation over the area.
  • Fixed visual artifacts around and next to preformatted blocks (e.g., streaking).
  • Fixed potential crash after (un)folding a preformatted block.
  • Fixed links being non-clickable after searching text on a page has scrolled the view.
  • Fixed scroll position being reset when reloading the page.
  • Fixed initial size of the upload dialog when font size has been changed.
  • Fixed "View as Plain Text" context menu item after reloading a page.
  • Strip any null characters from the page source during whitespace normalization.

New in Lagrange 1.17.0 (Oct 7, 2023)

  • New features:
  • The Bookmarks menu lists all of your bookmarks and folders.
  • Snippets: A collection of short text segments that can be pasted into any input field via the context menu. For example, useful for your gemlog header/footer and other often-repeated parts.
  • Snippets can be managed in Preferences > Snippets and created by right-clicking on links or selected text on a page.
  • Custom search queries: Snippets whose name starts with a bang (e.g., "!w") can be invoked in the URL field to make customized queries. The snippet content should be a Gemini search URL, for example: "gemini://gemi.dev/cgi-bin/wp.cgi/search".
  • Quick lookup shows matching snippets as a new type of search result.
  • Keyboard shortcut Shift+1/⇧1 for conveniently making a snippet query.
  • Input prompts, upload dialogs, and bookmark editors can be resized by dragging the left or right edge.
  • Text zooming in the upload text editor.
  • Gemtext syntax highlighting in the upload dialog.
  • Recently submitted input prompt contents are saved persistently and can be restored via the Ellipsis utility menu in the prompt dialog.
  • You can force the input prompt to appear before a certain URL is requested so you can enter a query string. This is useful for avoiding an extra request when it is known that a URL will require input (e.g., search engine, game input).
  • When importing links as bookmarks, you can optionally create subfolders from headings. You can also choose a destination folder for the imported bookmarks.
  • Quickly add/move a bookmark into a folder with the navbar bookmark button context menu.
  • User-selectable feed refresh interval. Previously the interval been hardcoded to four hours. (Based on a patch by Michael Nordmeyer.)
  • Setting to never/always collapse preformatted blocks, disabling the ability to toggle the folding.
  • "Fold All" and "Unfold All" in Bookmarks sidebar context menu.
  • "Search" context menu item on selected text to make a search query with it.
  • "Use as Search URL" in link context menu.
  • "Mark All Links as Visited" in the Tools submenu.
  • Option --capslock: enable Caps Lock as a modifier in keybindings.
  • Option --theme (-t): change UI color theme of open Lagrange windows. Can be used in scripts to switch the theme automatically (for example, see the darkman utility; thanks to Jason McBrayer for suggesting this).
  • Support for the Nex protocol (nex://nightfall.city/nex/info/specification.txt).
  • Keyboard shortcut for deleting bookmarks (Backspace). Useful when the Bookmarks list has input focus.
  • macOS: System UI accent color can be chosen as the accent color.
  • Changes and enhancements:
  • Menus can have submenus. Several of the old menus were reorganized accordingly. For example, the page context menu has a Tools submenu for translation, Titan uploads, etc.
  • Show unsupported media types as plain text if the content is valid UTF-8 encoded text.
  • The page scrolls while selecting text near top/bottom.
  • Display a logo graphic in empty windows/tabs as a placeholder.
  • Visualize input focus in lists by drawing a focus rectangle around the current item.
  • Menu separators are taller and more distinct for a clearer item separation.
  • Adjusted colors of the Import Identity dialog.
  • Auto-hide sidebars when resizing a window/split if the document area would become narrower than the sidebar.
  • Tuned theme color palette and improved background colors of "Colorful Light".
  • Newly created client certificates have a default expiration date in the year 9999, which means they won't expire. One can still also set a specific date as before.
  • Periodically save UI state (including each tab's navigation history) to prevent data loss in case the app crashes. These runtime saves do not include any cached page content. The full cache is still saved as before when quitting the app.
  • Fixes:
  • Potential crash at shutdown when a feed update is ongoing.
  • Problems with window refresh when multiple windows are open. For example, the cursor not blinking in input fields.
  • Incorrect name displayed in page banner when URL query string contains a tilde name.
  • Fixed navbar spinner animation going too fast when both sides of a split view are being loaded.
  • Glitches during swipe navigation (touch screens, macOS trackpad). Behavior is more robust at ends of history and when content is not immediately available in cache.
  • Fixed opening of context menus via keyboard (incorrect click position).
  • Fixed a text rendering issue where glyphs were incorrect when preceded by a Narrow No-Break Space.

New in Lagrange 1.16.7 (Aug 11, 2023)

  • Workaround for window refresh potentially getting stuck while receiving a streaming response. (Limit update frequency.)
  • Don't navigate back when stopping a streaming request.

New in Lagrange 1.16.6 (Jul 30, 2023)

  • Input prompt font size can be changed with the Zoom In/Out/Reset keys.
  • Preferences: Option for silently following scheme-changing redirects (Network tab; default: no).
  • Tab creation and closing follows common browser conventions: new tabs are opened next to the most recently opened tab, so they retain the correct left-to-right order.
  • Preferences: Moved cache/memory size settings to Content tab.
  • Page title in margin omits prefix Emoji if it matches the bookmark icon.
  • Adjusted word-wrapping to break at a period inside a word (e.g., domain names).
  • If the page is missing a level 1 heading, use the first content line as the title.

New in Lagrange 1.16.5 (Jun 23, 2023)

  • Input prompt font size can be changed with the Zoom In/Out/Reset keys.
  • Preferences: Option for silently following scheme-changing redirects (Network tab; default: no).
  • Tab creation and closing follows common browser conventions: new tabs are opened next to the most recently opened tab, so they retain the correct left-to-right order.
  • Preferences: Moved cache/memory size settings to Content tab.
  • Page title in margin omits prefix Emoji if it matches the bookmark icon.
  • Adjusted word-wrapping to break at a period inside a word (e.g., domain names).
  • If the page is missing a level 1 heading, use the first content line as the title.

New in Lagrange 1.16.4 (Jun 12, 2023)

  • Context/button menus use a popup window if they would otherwise have to scroll (e.g., "Dark theme:" in Preferences and "Folder:" in the bookmark editor).
  • Improved tab closing order: close all sibling tabs opened from an origin tab before switching back to the origin tab.
  • Center a short title under the icon in the page margin.
  • Fixed navbar URL text selection when opening new tabs (keep all selected).
  • Fixed too much empty space in the input prompt layout.
  • Fixed input field not being updated after cutting text.
  • Fixed stuck mouse button when opening a context menu while performing a drag.
  • Fixed incorrect mouse button state and other potential incorrect behavior after resizing the window.
  • Windows: Updated SDL to 2.26.5.
  • TUI: Fixed build error.

New in Lagrange 1.16.3 (Jun 5, 2023)

  • Remove whitespace from ends of a URL pasted into an input field.
  • Fixed links whose label is a single Emoji sometimes not appearing.
  • Fixed zooming not affecting unfocused windows right away.
  • Fixed current zoom level not being applied to newly created windows.
  • Fixed updating of selected text range in navbar URL when changing tabs.
  • Fixed mouse wheel scrolling not working in unfocused windows.
  • macOS: Fixed an issue where the input focus is given to the wrong window when the application comes to the foreground.
  • New/changed in v1.16:
  • Input prompt font size can be changed with the Zoom In/Out/Reset keys.
  • Preferences: Option for silently following scheme-changing redirects (Network tab; default: no).
  • Tab creation and closing follows common browser conventions: new tabs are opened next to the most recently opened tab, so they retain the correct left-to-right order.
  • Preferences: Moved cache/memory size settings to Content tab.
  • Page title in margin omits prefix Emoji if it matches the bookmark icon.
  • Adjusted word-wrapping to break at a period inside a word (e.g., domain names).
  • If the page is missing a level 1 heading, use the first content line as the title.

New in Lagrange 1.16.2 (May 29, 2023)

  • Set input focus to navbar URL field when opening an empty window.
  • The navbar URL field only omits the "gemini:" scheme when the text actually doesn't fit horizontally, and only when the field is inactive.
  • Fixed problems with handling URLs in input fields. For example, copying the URL to the clipboard sometimes had unexpected or incorrect results.
  • Updated UI translations.

New in Lagrange 1.16.1 (May 22, 2023)

  • Fixed handling of the AltGr key during text input (again).
  • Updated UI translations.

New in Lagrange 1.16.0 (May 21, 2023)

  • New features:
  • Input prompt font size can be changed with the Zoom In/Out/Reset keys.
  • Preferences: Option for silently following scheme-changing redirects (Network tab; default: no).
  • Changes and enhancements:
  • Tab creation and closing follows common browser conventions: new tabs are opened next to the most recently opened tab, so they retain the correct left-to-right order.
  • Preferences: Moved cache/memory size settings to Content tab.
  • Page title in margin omits prefix Emoji if it matches the bookmark icon.
  • Adjusted word-wrapping to break at a period inside a word (e.g., domain names).
  • If the page is missing a level 1 heading, use the first content line as the title.
  • Fixes:
  • Fixed tab order getting reversed when restoring tabs at launch.
  • Fixed order of opened tabs when using "Open in New Tabs" on a bookmark folder.
  • Fixed input focus going to the wrong split when pressing Ctrl+L/⌘L with an Upload dialog open.
  • Fixed text fields becoming nonresponsive when multiple fields are active.
  • Fixed input query dialogs not being hidden when the tab changes.
  • Fixed incorrect parsing of "hostname:port" in URL field (without // or gemini://).
  • Fixed potential crash when switching between cached pages while navigating in history.
  • Fixed potential crash when closing split view during a scrolling animation.

New in Lagrange 1.15.9 (Apr 28, 2023)

  • Added new UI translation: Basque (euskara).
  • Improved opening and closing of tabs. New tabs now open to the right of the current tab.
  • Allow scaling up small images up to 2x size.
  • Fixed possible crash when closing tabs.
  • Fixed crashes on Wayland due to use of X11-specific code.
  • Updated UI translations.
  • New/changed:
  • Preferences dialog opens as a separate window.
  • Option --prefs-sheet: open Preferences as a sheet like in previous releases.
  • Reordering tabs: tab buttons can be dragged with the mouse, and tabs can be moved left/right using tab context menu items or keyboard shortcuts.
  • Move a tab to the other side of a split view (tab context menu).
  • Move a tab to a new window (tab context menu).
  • Added a "Window" menu to the menu bar that has actions for manipulating and switching the active window, and duplicating and switching tabs. (On macOS, this menu has already been available.)
  • MacOS: Globe+E opens the native Character Viewer.
  • Gopher: Option to disable Gemini styling on Gopher menu pages. When disabled, whitespace is not normalized and all non-link lines are presented as regular paragraph text.
  • Japanese UI translation (13% complete).
  • Redesigned Preferences dialog with vertical tabs and a new organization of the settings. "Fonts" and "Colors" are removed, and there is a new "Content" tab.
  • Mouse cursor turns into the I-beam only over selectable text.
  • Indicate that tab autoreloading is enabled by changing the appearance of the navbar reload button.
  • MacOS: "Window" menu has new actions for duplicating and switching tabs.
  • GTK: Request dark window theme if the app UI color theme is dark.
  • Prevent high-resolution mice from flooding event processing with too many motion events and delaying UI refresh.
  • Updated UI translations.

New in Lagrange 1.15.8 (Apr 7, 2023)

  • Fixed activation of a pinned identity in inline media requests.
  • Fixed potential crash when changing split view mode during a UI animation.
  • Updated UI translations.

New in Lagrange 1.15.7 (Mar 28, 2023)

  • Fixed window contents getting frozen after Reset Zoom when zoom level is already at 100%.
  • Fixed key modifiers not being recognized before a text field has been activated. (Affects some versions of SDL.)
  • Updated UI translations.

New in Lagrange 1.15.6 (Mar 22, 2023)

  • The Outline tab in the sidebar now uses regular UI colors, like other sidebar tabs.
  • Fixed handling of the AltGr key during text input.
  • Fixed incorrect background colors for Preferences tab buttons with certain themes (e.g., Colorful Light).
  • Updated UI translations.

New in Lagrange 1.15.5 (Mar 16, 2023)

  • Added several new translated languages: Azerbaijani, Catalan, Czech, Danish, Dutch, Esperanto, Finnish, Greek, Hebrew, Hungarian, Indonesian, Irish, Korean, Persian, Polish, Slovak, Swedish, Turkish, and Ukrainian. (LibreTranslate server was upgraded to v1.3.10.)
  • Added "Auto-detect" as the default source language for translation.
  • Added option to skip preformatted blocks when translating a page.
  • Fixed translation of link lines. Only the link label is now translated.
  • Fixed lines on translated pages sometimes shifting position and getting the wrong line types.
  • Fixed handling of redirects when fetching subscribed feed pages.
  • Fixed saving the "Split view pinning" setting so it doesn't reset when relaunching the app.
  • Updated UI translations.

New in Lagrange 1.15.4 (Mar 9, 2023)

  • Fixed crash when trying to open a tab, New Identity dialog, or the Identity menu when the Preferences window is focused.
  • Fixed potential crash if switching focus to a widget being dismissed (e.g., popup going away).
  • Fixed text input becoming unresponsive when focus switches from a popup being dismissed to a new popup.
  • Fixed closing the Preferences window with Ctrl+W or ⌘W.
  • Fixed unnecessary page layout update when closing Preferences.
  • Updated UI translations.

New in Lagrange 1.15.3 (Feb 26, 2023)

  • Fixed handling of redirects in the inline media player and file downloader.
  • Updated UI translations.

New in Lagrange 1.15.2 (Feb 6, 2023)

  • Fixed moving input focus to the next window when closing a window.
  • Centered footer info text for better balance.
  • Fixed TUI build.
  • Updated UI translations.

New in Lagrange 1.15.1 (Jan 25, 2023)

  • Fixed opening multiple Preferences windows at the same time.
  • Fixed the Preferences window missing a window icon.
  • Footer information moved out of the margin area and under the page content.
  • Updated UI translations.

New in Lagrange 1.15.0 (Jan 21, 2023)

  • New features:
  • Preferences dialog opens as a separate window.
  • Option --prefs-sheet: open Preferences as a sheet like in previous releases.
  • Reordering tabs: tab buttons can be dragged with the mouse, and tabs can be moved left/right using tab context menu items or keyboard shortcuts.
  • Move a tab to the other side of a split view (tab context menu).
  • Move a tab to a new window (tab context menu).
  • Added a "Window" menu to the menu bar that has actions for manipulating and switching the active window, and duplicating and switching tabs. (On macOS, this menu has already been available.)
  • MacOS: Globe+E opens the native Character Viewer.
  • Gopher: Option to disable Gemini styling on Gopher menu pages. When disabled, whitespace is not normalized and all non-link lines are presented as regular paragraph text.
  • Japanese UI translation (13% complete).
  • Changes and enhancements:
  • Redesigned Preferences dialog with vertical tabs and a new organization of the settings. "Fonts" and "Colors" are removed, and there is a new "Content" tab.
  • Mouse cursor turns into the I-beam only over selectable text.
  • Indicate that tab autoreloading is enabled by changing the appearance of the navbar reload button.
  • MacOS: "Window" menu has new actions for duplicating and switching tabs.
  • GTK: Request dark window theme if the app UI color theme is dark.
  • Prevent high-resolution mice from flooding event processing with too many motion events and delaying UI refresh.
  • Updated UI translations.
  • Fixes:
  • Changing the UI scaling factor will now affect all existing and newly created windows.
  • Possible crash when duplicating a tab.
  • Issues with event processing when multiple windows are open.
  • Workaround for a hang when running many parallel requests with MIME filter hooks.

New in Lagrange 1.14.2 (Jan 11, 2023)

  • Fixed a potential crash when using musl libc.
  • Fixed a potential crash when closing tabs in split view mode.
  • Fixed inconsistent spacing after level 1 headings.
  • Fixed endless reload animation events if a split view is closed while loading a page.
  • Fixed page load progress indicator that was being obscured by active split marker in split view.
  • Fixed potential crash when trying to reuse a TLS session.
  • FreeBSD: By default use the system-provided SSL library (that can be LibreSSL).
  • macOS: Prebuilt binaries use LibreSSL instead of OpenSSL.
  • Updated UI translations.

New in Lagrange 1.14.1 (Nov 26, 2022)

  • Fixed possible crash when closing a tab with the outline sidebar visible.
  • Fixed hang when setting a folder's parent to itself in the Edit Folder dialog.
  • Updated UI translations.

New in Lagrange 1.13.8 (Nov 3, 2022)

  • Fixed issues with text selection and range visualization.
  • macOS: Fixed crash when opening URLs via system handler when no windows open.
  • TUI: Improved POSIX compliance in build-tui script.

New in Lagrange 1.13.7 (Jun 30, 2022)

  • Fixed reporting of errors related to a proxy server certificate.
  • An untrusted proxy server certificate can be trusted via Page Information.
  • Updated UI translations.

New in Lagrange 1.13.6 (May 26, 2022)

  • Added option to split tabs evenly, excluding sidebar widths (default: no).
  • Fixed crash when switching view to plain text.
  • Fixed manually entered image URLs inadvertently opening inline.
  • Fixed mouse event handling in split view mode when a dialog is open on one side. The other side would not receive wheel events unless input focus was first switched over.
  • Fixed issues with popup menu positioning.
  • Fixed drawing of the widget scroll indicator when a widget doesn't fit vertically in the window.
  • Possible workaround for an issue with mouse hover autoscrolling on an external displays.
  • Don't open an endless number of bookmark creation/edit dialogs when holding down the keyboard shortcut (Ctrl+D/⌘D).
  • Percent-encode backslashes in externally opened URLs, for improved compatibility.
  • Custom link icons are allowed with unsupported/unrecognized protocols (i.e., Emoji at the start of link label).
  • Use file name as the tab/window title if the content has no headings.
  • Avoid redundancy in tab/window titles ("Cosmos — Cosmos" → "Cosmos").
  • Updated UI translations.

New in Lagrange 1.13.4 (May 10, 2022)

  • TUI: Improved detection of supported color modes. The preferred mode is a modifiable palette with 256+ colors. As a fallback, use a fixed VGA palette, or basic monochrome if the terminal doesn't support colors.
  • TUI: Tuned build flags in build-tui.sh as a Linux workaround (set -O1 on SEALCurses).
  • TUI: Ignore the LAGRANGE_OVERRIDE_DPI environment variable.
  • Spartan: Fixed opening URLs in other apps via operating system handlers.
  • Updated language strings.

New in Lagrange 1.13.3 (May 6, 2022)

  • Changed URL field bookmark indicator for better consistency.
  • Show a proper error page if server closes the connection before a header is fully received.
  • Spartan: Prefilled prompt input from URL query string is selected by default.
  • Spartan: Fixed composing request content out of the query string.
  • Spartan: Fixed handling of empty path in a request.
  • Spartan: Allow opening URLs from command line.
  • Spartan: .desktop file includes Spartan scheme handling.
  • macOS: Register app as Spartan URL scheme handler.
  • macOS: Fixed relaunching the app after installing an update via Sparkle.
  • Windows: Register Gopher and Spartan URL handlers.
  • TUI: Fixed build-tui.sh so it doesn't expect the_Foundation to be preinstalled.

New in Lagrange 1.13.2 (May 3, 2022)

  • Fixed failure to restore the selected fonts at launch.
  • Fixed window state being reset when quitting the app by closing the last window. (No such problem was occurring when quitting via menu or Ctrl+Q.)

New in Lagrange 1.12.2 (Apr 22, 2022)

  • Fixed positioning of the language translation dialog's progress animation.
  • Fixed hovering on links via the keyboard (default binding: H).
  • Tab buttons use theme background color with light Oceanic to avoid a color clash.
  • Feed refresh indicator uses the accent color.
  • Updated UI translations.

New in Lagrange 1.12.1 (Apr 6, 2022)

  • Windows: Fixed importing identities (path separator confusion).
  • Updated Help: export/import, user data archives, paragraph justification.
  • Updated UI translations.

New in Lagrange 1.12.0 (Apr 5, 2022)

  • New features:
  • Export and import user data as a ZIP archive, including identities, bookmarks, site-specific settings, trusted certificate fingerprints, and browsing history.
  • UI layout options: the navigation/tab bars can be moved to the bottom of the window, and one can have a traditional menu bar instead of the hamburger menu. On macOS, the normal menu bar is used as before.
  • Added style option to justify paragraphs that are at least three lines long.
  • Added new content theme "Oceanic" with support for both dark and light modes.
  • Added new UI accent colors: Red, Green, Blue, Gray.
  • Feeds: Added "Mark Below as Read" context menu item.
  • macOS: A set of system fonts is available for use in content/UI. In practice, these are .ttc files loaded from /System/Library/Fonts/, rendered using Lagrange's own text renderer.
  • Site-specific setting for TLS session resumption (enabled by default).
  • Changes and enhancements:
  • Roboto is the new default content/UI font, except on Windows where Segoe UI is the default font.
  • Toggles use symbols instead of YES/NO.
  • UI uses only one accent color at a time.
  • Theme palette tuning: adjusted generated palettes of Colorful Dark/Light, improved the Sepia theme, and added a dark mode Sepia variant.
  • Certain pages like Help open in a new tab. If the page is already open in a tab, that tab is activated instead of opening a new one.
  • Improved word wrapping with more breaking punctuation.
  • Text renderer uses additional subpixel offsets with lower-density displays.
  • Text rendering optimizations: avoid repeated shaping of the same text.
  • UI rendering optimizations.
  • Fixes:
  • Fixed a possible crash when clicking on the first link of a page with the monospace body text option enabled.
  • Fixed occasional small gaps between glyph backgrounds.
  • Fixed problems with marking feed entries as read/unread.
  • The bookmark dialog doesn't show irrelevant fields when editing a bookmark folder.
  • Spurious spaces are removed from ends of bookmark titles.
  • Pasting text into an input field should not decode reserved URL characters.
  • Percent-encoded spaces (%20) in a file name were not decoded when saving a file.
  • Windows: Fixed issues with restoring window placement in maximized mode.

New in Lagrange 1.11.2 (Mar 19, 2022)

  • Added a keybinding for focusing the URL field.
  • Sidebar items (bookmarks, feed entries, history) can be middle-clicked to open in a new tab. Holding Shift will open the tab in the foreground.
  • Flags can be used as link icons. Note that additional fonts and HarfBuzz are required for all the flag symbols to be visible.
  • Updated UI translations.

New in Lagrange 1.11.1 (Mar 2, 2022)

  • Fixed opening bookmarks in a new window.
  • Fixed use of a cached TLS session after deactivating a client certificate.

New in Lagrange 1.10.6 (Feb 19, 2022)

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

New in Lagrange 1.10.5 (Feb 11, 2022)

  • 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.
  • macOS: Handling regular mouse wheel events. Each step of the wheel should cause a single scroll event.
  • macOS: Fixed a sidebar clipping issue with Metal.
  • macOS: Possible workaround for a window refresh glitch when using SDL's Metal renderer. (Sometimes animated elements like the URL hover info would stop at being partially transparent and not complete the fade.)
  • Updated UI translations.

New in Lagrange 1.10.4 (Feb 5, 2022)

  • 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).
  • macOS: Use Metal for drawing graphics if display refresh rate is higher than 60 Hz.
  • macOS: Handling scroll events meant for other windows.
  • Updated UI translations.

New in Lagrange 1.10.3 (Jan 30, 2022)

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

New in Lagrange 1.10.2 (Jan 24, 2022)

  • 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.
  • macOS: Workaround for a crash when launching. Prevent event processing from being triggered while the app window is becoming visible for the first time.
  • Fixed a build issue on Haiku OS.
  • Updated Smol Emoji: added the rest of Unicode 8 Emoji glyphs.

New in Lagrange 1.10.1 (Jan 20, 2022)

  • 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).
  • Linux: SDL event handling workaround adjusted to only apply to 2.0.18+.
  • Updated UI translations.

New in Lagrange 1.10.0 (Jan 17, 2022)

  • New features:
  • 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).
  • Changes and enhancements:
  • 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.
  • Fixes:
  • 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.
  • Windows: Fixed installing individual TrueType fonts via drag and drop.

New in Lagrange 1.9.5 (Jan 5, 2022)

  • Fixed misshapen button borders (SDL 2.0.16 line drawing workaround).
  • Fixed actions being triggered when navigating via home row keys.
  • macOS: Fixed native menu items being triggered when navigating via home row keys.
  • macOS: Fixed native menu items triggering when changing key bindings.

New in Lagrange 1.9.4 (Jan 4, 2022)

  • 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.
  • Upgraded SDL to 2.0.18.

New in Lagrange 1.9.3 (Dec 24, 2021)

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

New in Lagrange 1.9.2 (Dec 7, 2021)

  • Windows: Use the correct version number for update checks.
  • 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.

New in Lagrange 1.9.1 (Nov 29, 2021)

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

New in Lagrange 1.9.0 (Nov 28, 2021)

  • New features:
  • 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).
  • macOS: Automatic updates using the Sparkle framework.
  • Windows: Automatic updates using the WinSparkle library.
  • UI language for Turkish.
  • Changes and enhancements:
  • 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.
  • Fixes:
  • 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.

New in Lagrange 1.8.3 (Nov 21, 2021)

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

New in Lagrange 1.8.2 (Nov 13, 2021)

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

New in Lagrange 1.8.1 (Nov 6, 2021)

  • Added UI translations: Hungarian, Czech.
  • Added the zip utility as a build requirement. It is used for making fontpacks.
  • Fixed build failure with the simple text renderer, i.e., when HarfBuzz is disabled.
  • 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.
  • macOS: Tab close buttons are on the left side (platform UI convention).
  • Gopher: Recognize both LF and CRLF line endings in page content.

New in Lagrange 1.8.0 (Oct 30, 2021)

  • New features:
  • Added a customizable font library. Open "about:fonts" to view and manage the installed fonts.
  • Added TrueType fonts as a recognized content type. When one is viewed in the app (e.g., via a drag-and-drop), there is an option to install it as a user font.
  • Added fontpacks: ZIP archives containing one or more TrueType fonts and parameters about how they should be used.
  • Added support for TrueType collections (.ttc).
  • Added new font options: separate preformatted and monospace body fonts, UI font, smoothing.
  • Added style option to show all links as bold regardless of visited status.
  • Added warning message about missing font glyphs.
  • Added warning message about terminal emulation. Lagrange supports a small subset of ANSI escape sequences, so page appearance may be incorrect when these are used in content.
  • Added tab close buttons.
  • Added style option to show links as bold regardless of visited status.
  • Added a feed subscription option to exclude web links (HTTP/HTTPS), since those are not viewable in the app by default.
  • Added an automatic conversion of Markdown to Gemtext when viewing local files. (Not all Markdown features are supported.)
  • Added UI language for Ukrainian (uk).
  • Changes and enhancements:
  • Removed all alternative built-in content fonts.
  • The default content font is Source Sans, same as the UI font.
  • Redesigned error/warning messages. These now show up as part of the page top banner, and their appearance can no longer be replicated via Gemtext.
  • Warning messages are interactive. Click on them to perform relevant actions.
  • Per-pixel scrolling in input fields (e.g., when using a trackpad on macOS).
  • "file://" pages are always unthemed.
  • Show a byte counter during large downloads instead of instantly jumping to a content view. Content may not viewable correctly until the download has finished.
  • Site-specific settings (sitespec.txt) converted to .ini format. These are currently used for the Titan upload port and remembering which warnings have been dismissed.
  • Fixes:
  • Fixed an issue where the page is unscrollable until the mouse cursor is moved (wrong hover state).
  • Fixed wrapping of long input prompts and dialog messages.
  • Titan upload token is remembered when the dialog is closed.
  • Fixed various layout issues with page footer buttons.
  • Fixed theme change glitches when an input prompt appears.

New in Lagrange 1.7.3 (Oct 19, 2021)

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

New in Lagrange 1.7.2 (Oct 11, 2021)

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

New in Lagrange 1.7.1 (Oct 3, 2021)

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

New in Lagrange 1.7.0 (Sep 29, 2021)

  • New features:
  • Added bookmark folders. Folders can be nested inside each other, and the fold state of each folder is remembered persistently (per sidebar).
  • The Bookmarks export/list page uses subheadings (level 2 and 3) to represent folders.
  • Added menu item to sort (a folder of) bookmarks alphabetically.
  • Added identity selection in the Upload dialog.
  • Added image colorization setting. Images can be viewed in grayscale or using the page's theme colors.
  • Added UI focus cycling to all buttons with Tab and Shift+Tab. This includes dialog buttons and the navigation bar.
  • Added a footer action to view application/octet-stream content depending on recognized file extensions.
  • Added support for viewing WebP images. The libwebp library is an optional dependency and will be included in the build if found via pkg-config.
  • Added command line options -w, -h for setting window size at launch.
  • Added new UI languages: Esperanto, Spanish (Mexico), Galician, Interslavic, and Slovak. Note that some of these are still works in progress.
  • Changes and enhancements:
  • Bookmarks are now ordered manually. You can drag and drop bookmarks in the list to change the order.
  • The internal bookmarks file format is now a TOML subset instead of just being three text lines per bookmark, making it more robust and human-readable.
  • Context menus and other popup menus that do not fit inside the window are split off into independent windows.
  • macOS: Use native UI controls for context/popup menus. Note that this required making a couple of small changes to SDL (see the updated patch in the repository).
  • Dropdown button menus position themselves on the currently selected item.
  • Dialogs that don't fit inside the window have a scroll bar. Note that such dialogs can only be scrolled via mouse wheel/trackpad, not by dragging the bar.
  • Adjusted mouse wheel smooth scrolling speed for better consistency. The default scrolling speeds were increased to level 2.
  • Visited URLs are remembered for six months. This affects the unread status of feed entries and the visited status of links.
  • Adjusted the UI color palette so that the alternative accent color is used more rarely. For example, input fields now use the primary accent color.
  • Adjusted button hover/press colors for better consistency, particularly when the button label uses a non-standard color.
  • Image links (as determined by file extension) automatically use a "photo" link icon if the URL is on the current site. This makes it clearer which links will likely show up as an inline image.
  • Alt+Shift+Tab inserts a tab character in input fields.
  • UI rendering optimizations. Some UI controls (e.g., navbar, menus) will buffer their contents so they can be drawn efficiently during animations.
  • Fixes:
  • Fixed issues with subscribed feed entry tracking. Heading entries are not discarded until they are removed from the source.
  • Fixed the sidebar unread entry count showing the wrong number after subscribing to a Headings feed.
  • Fixed handling of tab characters in the Upload text editor (when using HarfBuzz).
  • Fixed hang when wrapping a very long word (with HarfBuzz disabled).
  • Fixed regressions in retaining window state, position, and size.
  • Fixed URL encoding of the % character.
  • Fixed ambiguous handling of colons in URI paths.
  • Fixed issues with cursor positioning in multi-line input fields.
  • Fixed issues with touch swipe events.
  • X11: Ask SDL not to bypass the window compositor. This should avoid issues on KDE, for example.
  • macOS: Fixed a flash of blank background color when launching the app.
  • Windows: The main window title bar (when not using a custom frame) uses dark mode colors according to the UI color theme setting. Previously it was always stuck on light mode.

New in Lagrange 1.6.5 (Aug 29, 2021)

  • 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

New in Lagrange 1.6.4 (Aug 22, 2021)

  • 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.
  • OpenBSD: Fixed a freeze after a network request is cancelled.
  • Fixed page contents not reflowing during a window resize.
  • Added build option ENABLE_RESIZE_DRAW. SDL doesn't redraw window contents on all platforms during resizing, so this can be used to force it.

New in Lagrange 1.6.3 (Aug 15, 2021)

  • Select all text in an input field using Shift+Ctrl+A (macOS: ?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.

New in Lagrange 1.6.2 (Aug 3, 2021)

  • 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.
  • Fixed drawing of wrapped text when the app is compiled without HarfBuzz.

New in Lagrange 1.6.1 (Jul 30, 2021)

  • Fixed potential crash when inserting a line break in an input field.
  • Fixed cursor positioning in fixed-length input fields.
  • Fixed copying text in input fields (the wrong region was copied).
  • Fixed URL input field contents not being selected after opening a new tab.
  • Fixed Upload dialog not showing when reloading a Titan URL.
  • Updated translations.

New in Lagrange 1.6.0 (Jul 26, 2021)

  • A new TOFU trust store will be created. The old one is kept around but ignored.
  • App state serialization format has been updated. Downgrading to a previous release will cause app state to be reset (e.g., tabs closed, navigation history cleared).
  • New build dependencies: HarfBuzz and GNU FriBidi (see README).
  • New features:
  • Added support for bidirectional text and complex scripts. العالم متنوع
  • Right-to-left paragraphs are aligned to the right. Link icons and list/quote symbols are moved to the right margin.
  • Added support for Titan uploads. The data to upload can be entered via a text field or by dropping a file on the window.
  • Added a keybinding for opening the current page URL in the upload dialog (Ctrl+U/⌘U). This simply switches the page's URL scheme from gemini to titan.
  • Added a configuration file for defining the UI color palette (see Help, section 3.5).
  • Added settings for keyboard and mouse scrolling speeds.
  • Added setting for changing Return key behavior in input fields (line break vs. accept).
  • Added setting for adjusting line spacing.
  • Added link context menu item for deleting local files (e.g., downloads).
  • Changes and enhancements:
  • Improved TOFU: if the server certificate is not trusted, the connection is aborted at the TLS handshake stage. Previously, only a warning was shown and the page contents were fetched regardless.
  • Server certificate fingerprints are generated based on public keys, which allows servers to renew their certificates without losing trusted status.
  • Improved handling of expired server certificates. An error page is shown and the connection is aborted at the TLS handshake stage. The user can give a temporary exception to load the page.
  • Page contents are cached in presentation form for quicker restoring during back/forward navigation.
  • Inline images/audio will not get discarded during back/forward navigation. The Network > Memory Size setting determines the maximum memory usage for media. Setting the Memory Size to zero is equivalent to the previous behavior of discarding everything when the page changes.
  • Debug information includes RAM use in addition to cache size. This includes document layout and media stored in memory (e.g., raw pixel data of images).
  • Text input fields support larger amounts of content and expand vertically only up to a limit, after which they start scrolling.
  • Preferences have been reorganized. There is a new Fonts tab, and some General settings have been moved to the Style tab. All color-related settings are on the Colors tab, including UI theme colors.
  • Links opened on a page are updated to reflect visited status even when opening into a background tab or to the side.
  • Unicode Byte Order Mark is ignored in the beginning of a page.
  • Updated Smol Emoji with new characters.
  • Query/Feeds indicators have a smaller appearance in a narrow window to leave room for the URL.
  • Fixes:
  • Large lede paragraph font is not applied if the paragraph has too many lines.
  • Fixed minor kerning issues when using Nunito.
  • Fixed sizing of characters in the Noto Symbols fonts.
  • Improved internal handling of URLs. For example, some URLs were not being recognized as visited because of percent-encoding differences.
  • Fixed URL in the generated page for viewing a single image (spaces weren't encoded).
  • Input dialog is not dismissed unless the Cancel button is clicked or Escape is pressed.
  • Workaround for a potential hang during the closing of a socket.
  • TLS client certificates generated by the app have identical issuer and subject fields, including all the provided information and not just the Common Name.
  • Gopher: Improved detection of ASCII art.
  • Gopher: Show contents of unrecognized line types.
  • Gopher: Don't collapse preformatted blocks since everything is preformatted in the source.
  • Gopher: All preformatted blocks are unindented to avoid misaligned ASCII art.

New in Lagrange 1.5.2 (Jun 15, 2021)

  • 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".

New in Lagrange 1.5.1 (Jun 6, 2021)

  • Updated UI translations.
  • Updated "Smol Emoji" font with new and improved glyphs.

New in Lagrange 1.5.0 (May 30, 2021)

  • Added "Smol Emoji" and "Noto Sans Symbols" fonts, removed Symbola.
  • Many Emoji and pictographs defined in the last five years are currently missing.
  • Added document footer buttons: on certain pages (e.g., error messages) show relevant actions in the bottom of the page. For example, if a certificate is required for viewing a page, show buttons for creating a new identity and showing the Identities sidebar.
  • Error pages include the human-readable text sent by the server.
  • Disregard old feed entries whose unread status would have been forgotten.
  • Added UI language: Polish.
  • Identity management:
  • Revised New Identity dialog. An option is provided to automatically use the new identity on the current domain/page. The additional fields are hidden by default.
  • Improved usability of Identities sidebar. No more accidental activations: left-clicking an identity opens the context menu without making any changes. The context menu shows each active URL as a menu item for easy access. Identity icons reflect the usage status: all identities used on the current domain get highlighted in addition to the currently used one.
  • Identities can be exported: certificate and private key are opened in a new tab in plain text PEM format.
  • Fixed issues with identity usage: a higher-up URL overrides and deactivates all contained URLs to avoid redundant activation.
  • Text input:
  • Revised text input widgets: added support for multiple lines, and when entering user response to a query, show how many bytes are remaining for the response URL about to be submitted. In dialogs, input fields expand vertically instead of scrolling their content horizontally.
  • Input widgets allow inserting newlines using Shift+Return.
  • Disallow sending query responses that are too long (1024 bytes maximum).
  • Shift-click to select a range of text in input widgets (i.e, without dragging).
  • Rendering:
  • Animate showing and hiding of sidebars and dialogs. Animations are enabled by default, by can be disabled with Preferences > Interface > Animations.
  • Added setting for a custom TrueType symbol font for any missing characters. Note: Must be a .TTF file — OpenType and bitmap fonts are not supported.
  • Link navigation shortcut icons (home row and numbered) are drawn with a consistent appearance.
  • Improved icon alignment in lists.
  • Reduced line gap between word-wrapped top-level headings.
  • Modal dialog background dimming fades in/out smoothly.
  • macOS: Workaround for an issue that causes UI refresh to pause occasionally for ~100 ms.
  • Split view:
  • Added keybindings for split view menu items.
  • Changed default split view keys to conform to Emacs (3 for horizontal, 2 for vertical split).
  • Fixes and improvements for touch screen event handling in split view mode.
  • Command line:
  • Added --url-or-search (-u) command line option. Depending on the parameter, either open an URL or make a search query.
  • Open all URLs/files specified on the command line in new tabs, and raise the window if the app is already running. (Kudos to Alyssa Rosenzweig.)
  • Gempub:
  • Linear navigation through the book with Left/Right arrow keys and via footer buttons. The navigation order is determined by links on the Gempub index page.

New in Lagrange 1.4.2 (May 23, 2021)

  • Fixed UI colors being all black on the first run.
  • Fixed right mouse click on an inactive split not having any effect.
  • Fixed action buttons showing under the Help link in an empty Identities sidebar.
  • Fixed potential crash at shutdown.
  • Fixed minor UI layout issues.

New in Lagrange 1.4.1 (May 13, 2021)

  • Fixed 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.
  • Fixed tab merging when unsplitting the window: keep the currently active tab open.
  • Fixed issue with sidebars sometimes becoming unresponsive.
  • Fixed font used for visited monospace Gopher links.
  • Fixed incorrectly shown/hidden ◧ indicator.
  • Fixed scrollbar in Preferences > Keys being hidden until the list is scrolled.

New in Lagrange 1.4.0 (May 7, 2021)

  • Added split view modes: two tabs at once, horizontal/vertical split, 1:1/2:1/1:2 weights, merge tabs, swap sides. See section 1.8 in Help for details.
  • Split view pinning: keep a page pinned on one side while all opened links go to the other side.
  • "file://" URLs can be used for viewing contents of local directories and ZIP archives.
  • Basic Gempub support: a cover page is generated based on metadata, and there's an automatic split view for index and contents. On macOS, Lagrange is registered as a viewer of .gpub files.
  • Bold link styling is used for indicating which links are unvisited.
  • Page rendering was optimized: now each line of text is rendered into the view buffer only once, and whenever the view is stationary, content is prefilled in the available space outside the viewport. Previously, at least one line of text was rendered every frame when the viewport was moving, which was mostly redundant.
  • Added UI languages: Interlingua, Toki Pona.
  • Added "New"/"Import" buttons in the bottom of the Identities tab.
  • Added an "All"/"Unread" mode switch in the bottom of the Feeds tab.
  • Added toggles for special tags in the bookmark creation/editor dialog.
  • Added "Show Downloads" to the File/main menu.
  • Added "Open Downloaded File" to the file save dialog to make it easy to find the local copy of the file.
  • Updated the UI font to Source Sans 3. It now has all the styles and weights needed for page rendering, too.
  • Added a semibold Fira Sans weight (used for unvisited links).
  • Preferences: Reorganized the fonts dropdown menu.
  • Changed popup dismiss behavior so that a click outside just dismisses the popup and does not trigger further actions.
  • All lists support smooth scrolling.
  • Multitouch scrolling: each finger can scroll a different widget.
  • Adjustments to how display DPI affects UI scaling.
  • Fixed allocation of page rendering buffers. Previously, some buffers may have gone unused or were allocated erroneously to the same position, causing unnecessary work for the page renderer.
  • Fixed various issues in the UI layout.
  • Fixed parsing URI scheme (limited set of characters allowed).
  • Don't percent encode equal signs in URL paths.

New in Lagrange 1.3.4 (Apr 26, 2021)

  • Allow server certificates with a *.tld subject wildcard.
  • Updated the French UI translation.
  • Fixed media type check in the audio player. Media types with parameters failed to be recognized.
  • Fixed crash after a redirect.
  • Fixed a rare issue with handling multiple rapid network requests.
  • Fixed a rare situation where a network connection would fail to open.
  • Minor stability improvements.

New in Lagrange 1.3.3 (Apr 19, 2021)

  • Added UI languages: French, German. (Note that neither is 100% finished yet.)
  • Added build option to disable IPC for compatibility reasons.
  • 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.
  • Fixed possible crash when closing a tab.
  • Fixed possible crash when restoring application state at launch.
  • Fixed problems parsing and making requests with literal IPv6 addresses.

New in Lagrange 1.3.1 (Apr 12, 2021)

  • Added UI languages: Serbian, Interlingue.
  • Added option to disable bold links for light/dark backgrounds.
  • Updated the Nunito font to the latest version.
  • Fixed crash during word wrapping.
  • Fixed keybindings overriding the home row key navigation mode.
  • 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.

New in Lagrange 1.3.0 (Apr 12, 2021)

  • Localization:
  • Added the first set of UI translations: Chinese (Simplified, Traditional), Finnish, Russian, and Spanish. Many thanks to the translators!
  • Added page content translation using a LibreTranslate instance running on xlt.skyjake.fi. This is somewhat experimental and may occasionally mess up Gemtext markup. Expect long pages to be quite slow to translate (more than a minute).
  • Resources:
  • Added Noto Sans CJK (Simplified Chinese) font.
  • Added Noto Sans Arabic font. Note that right-to-left/bidirectional text rendering is not implemented yet.
  • Added "about:about" that lists all the available "about:" pages.
  • Browsing:
  • Alt text is shown when hovering over a preformatted block.
  • Clicking on a preformatted block collapses it, leaving only the alt text.
  • Added option to collapse all preformatted blocks on page load.
  • A server certificate can also be verified by Certificate Authorities. When "CA file" and/or "CA path" are set in Preferences, CA verification will mark a certificate as trusted.
  • Relaxed TOFU certificate checking when it comes to domain names: domain.tld in a certificate is implicitly considered to also mean *.domain.tld.
  • Fixed handling of IDNs when the user sets a server certificate as trusted via the UI.
  • Fixed handling of unknown URI schemes. Previously they were forcefully converted to absolute URIs, breaking them.
  • Page content and rendering:
  • Color adjustments to the "Colorful Dark", "Colorful Light", and "Gray" themes. "Gray" looks different in dark and light UI modes.
  • Spacing of bullet lists vs. link lists is more consistent.
  • Links are shown in bold, and tinted with the page theme color for more coherent appearance.
  • Custom link icons: Gemini links whose destination is on the same domain use as icon the Emoji or other pictograph at the start of the link label. (For example, see Astrobotany menus.)
  • Added option to wrap lines in plain text files. This is on by default because there is no horizontal scrolling for plain text.
  • Large images are downscaled to an appropriate size for presentation.
  • Improved font glyph caching to reduce stuttering during scrolling. All required glyphs are cached after a page load finishes. This allows more efficient copying of glyphs as the operations can be batched.
  • Larger content buffers for scrolling, reducing need to redraw content.
  • Gopher: Handling the 'h' line type.
  • Fixed minor issues with word wrapping.
  • Fixed minor blending artifacts with the current heading shown on the right side of the page.
  • User interface:
  • Improved event handling to support touch screens on any platform (if supported by SDL).
  • UI scaling factor is applied immediately when closing Preferences. Restarting is no longer necessary.
  • Window rescaled automatically when moving it to a display with a different DPI.
  • Added unread feed entry count to the sidebar.
  • Added a context menu for toggling sidebars. The menu appears when right-clicking on the navbar or on the sidebar tab buttons.
  • Double/triple click selection modes. Double click and drag will select by word, triple click by paragraph.
  • Popup menus have icons for items to make it faster to find the item you're looking for.
  • Soft shadows for popup menus.
  • Scrollbars fade away on macOS/iOS and dim on other platforms.
  • Reload button moved into the URL field.
  • Narrow URL input fields will not display the default "gemini" scheme.
  • Domain name is highlighted in URL fields.
  • Added a cut/copy/paste context menu to input fields.
  • Added an "Import..." button to the empty Identities sidebar.
  • Preferences dialog was partially reorganized for clarity.
  • Tabs in Preferences look the same as tabs in the sidebar.
  • Cleaner appearance for unread feed items in the sidebar.
  • Dialog buttons show the corresponding shortcut key.
  • Fixed background activity indicators overlapping each other.
  • Fixed glitches when widgets extend beyond the left edge of the window.
  • Fixed use of plurals in UI strings, enabling support for three or more plural forms.
  • Keybindings:
  • Default page scroll keybindings changed: PageUp/Down scroll a whole page, and Space/Shift+Space scrolls half a page. If you're changed these bindings, note that they will be reset to defaults.
  • Added keybinding for subscribing to a page.
  • Keyboard modifiers can be remapped using the modmap.txt configuration file.
  • Caps Lock can be used as a modifier key.
  • Internet hot keys (if present on a keyboard) can be used to navigate back/forward and reload the page.
  • Command line use:
  • Added conventional --help, --version options.
  • A previously started instance can be controlled with command line options.
  • --list-tab-urls prints a list of the currently open URLs in the running instance.
  • Bug fixes:
  • Only one instance of Lagrange is allowed to run per user directory. This prevents instances from overwriting each other's data.
  • Fixed use of multiple search terms for quick lookup.
  • Fixed handling of multiple feeds having an entry with the same URL.
  • Fixed percent-decoding of URLs on the command line and coming in via system URL handlers.

New in Lagrange 1.2.3 (Mar 19, 2021)

  • 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.
  • CMake: Automatically check if lib/the_Foundation is up-to-date.
  • CMake: Build configuration fails if an SSL library is not found.
  • Reverted default bookmarks having "Getting Started" as a remote bookmark source. Now it's just a regular bookmark.