Lagrange v1.17

Version 1.17 adds a host of small features, some of which I've been planning on doing for a long time. There are also recent suggestions from users that enhance day-to-day usage of the app. Highlights: support for submenus (bookmarks, page tools, split view, and user data), text snippets, additional search URLs, visual UI tweaks, resizable input/upload/bookmark dialogs, improved upload editor, new input prompt functionality, and support for Nex.

On the road to 1.17

Two months ago, when I took a hard look at the project to-do list, it become clear that things had gotten a bit out of hand. I had been working at the tip of the iceberg while a huge backlog of items was accumulating below, unseen. Of course, the year prior had been a chaos and a blur β€” a forever-repeating sequence of baby duties and family routines, with work, hobbies and parenting mixing seamlessly into one bewildering experience.

I had hoped to start work on version 2.0 but after browsing through the entire to-do list, it seemed that instead of going for the really big items, there were several smaller things that actually had higher priority. Investing time into enhancing the core user experience is never a bad idea. I grouped all the small nice-to-haves together, and while it was too much for a single release, it seemed pretty good when split into two. Here you now have the first of these: v1.17.

If I had more free time on my hands this release would not have taken three months to finish. I prefer to look at this glass half full, though. I'm pleased to have had any time to work on fun software projects while most of my life has been focused around being a dad.

What's new?

Without further ado, let's take a look at what v1.17 has to offer. I will just go through the highlights here in the release announcement. If time permits, I will elaborate with specific details in follow-up posts.


The GUI toolkit has been enhanced with the ability for popup menus to have submenus. This opened up several opportunities for improvement in the app's menus:


Every time I write a gemlog post in Lagrange, I've been missing a way to conveniently paste in my post template. Inspired by this specific use case, v1.17 has a built-in snippet manager where you can store often-needed pieces of text. Snippets are fully integrated into the app: they are exported/imported as part of user data and are available in every input field, so you can use them for other purposes, too.

Search URLs

It is now much easier to configure your search URL: when you find a good search engine, right-click on its Search link and select "Use as Search URL".

While having search integrated in the navbar URL field is great, there are many different search engines and searchable services in Geminispace. I considered different solutions for defining multiple search URLs, but after adding snippets I realized they were perfectly suited for this as well. Snippets whose name starts with a bang (e.g., "!w") can be invoked in the URL field to make customized queries.

Visual refresh

Working with bookmarks

Resizable UI elements

Input prompts, upload dialogs, and bookmark editors can be resized manually with the mouse by dragging their right or left edges.

Improved text editor

In addition to the dialog being resizable, the "Upload with Titan" text editor now supports text zooming and Gemtext syntax highlighting.

Input prompt enhancements

The Ellipsis menu in the input prompt dialog has gained new functionality:

Nex protocol


Outlook for v1.17

As usual, the .0 version is not going to be particularly bug-free. This time, given how full of interruptions and fragmentation my time has been, you should probably treat .0 as a public beta. I've been sorting out various glitches all week and I doubt I managed to squash them all. If something seems off or blows up, please file a bug report:

The mobile ports still need a bit more work: a few dialogs are missing and I need to figure out how to get snippets pasted into the native input fields. New builds are on the way after these are sorted out!

πŸ“… 2023-10-07

🏷 Lagrange

CC-BY-SA 4.0

The original Gemtext version of this page can be accessed with a Gemini client: gemini://