-- Leo's gemini proxy

-- Connecting to skyjake.fi:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;charset=utf-8;lang=en

Lagrange v1.10


I had more free time than anticipated over the holidays so there was some nice progress with Lagrange. While v1.10 is heavily mobile-focused, there are a couple of useful improvements for the desktop, too.


Download Lagrange v1.10


iOS


Recent changes in the iOS builds:


Use native iOS text input UI controls for entering text (with autocorrect, copy/paste, and other system-provided features).

Redesigned phone sidebar that mimics Safari on iPhone. Opens half-height for better reachability of tab buttons, can be swiped up and down.

Pull-to-refresh on pages.

Configure the first two bottom toolbar buttons.

Open a share sheet on downloaded files or selected text.

Revised UI design of the "Upload with Titan" view.

New visual indication for tapping links.

Link context menu shows the identity and date of last visit.

Bookmark edit mode for reordering and organizing bookmarks into folders.

Sidebar has new action buttons for Feeds and History.

Identities are managed under Settings.

Identity toolbar button has been revised for quickly switching between alternate identities for current site, and opening Settings > Identities.

Settings: Improved widgets used in button/radio groups to closer match iOS design.

Mobile-friendly layout for value input dialogs.


Lagrange on TestFlight


Android


I finally managed to sort out my Android build environment (i.e., compile all the dependencies with the NDK) and kicked off the Android port with a couple of alpha builds. So far these have minimal adaptation to the Android OS and its general UI conventions.


There is a new F-Droid repository where you can install the app and have it be updated automatically:


F-Droid Repo

F-Droid QR code


NOTE: This is not the same repo that I initially announced on Mastodon. That one ("lagrange-fdroid") will be replaced by this new one.

You can read about all the sordid details if interested.


New features


macOS swipe navigation


Part of the recent iOS work included fixing several glitches with swipe navigation. It's now working reliably enough to be used on the desktop, too. I've enabled it on macOS so one can do the usual macOS swipe gestures for navigating backward and forward in history.


Under the hood, I improved scroll event handling to bypass SDL entirely, processing the native events directly. In previous releases I've had to apply a custom patch to SDL to enable the per-pixel inertia scrolling events, but now that's no longer needed — the fewer custom hacks, the better.


(It should also be noted that SDL 2.0.18 did make some improvements here, too, by including the precise scroll amounts in the events in addition to the less precise step-based values.)


Customizable navbar buttons


Actions of the three buttons on the left and the Home button on the right can be customized by right-clicking on the button and selecting a new action from the menu.


Screenshot with navbar buttons for Toggle Sidebar, Translate, Go to Parent, and Add Bookmark


(Note that in the mobile version, toolbar actions are configured in Settings.)


Alternative identities


The 👤 toolbar button is intended to provide additional functionality related to identities, and version 1.10 makes some improvements here. If you happen to use more than one identity on one capsule, the alternative ones are remembered (in "sitespec.ini") and the 👤 menu lets you quickly switch between them. This is much more convenient that switching between certs in the Identities sidebar.


For example, I'm using this for switching between my two AstroBotany accounts.


Better content inlining


Viewing images is part of the app's core functionality. While I still haven't gotten around to adding a proper maximized image mode, v1.10 cleans up how inlined images are presented. Previously, the metadata (media type and size) could overlap the link's label text, so the metadata has been moved out of the way under the image.


Images now get inlined depending on the media type sent by the server even if the link does not have a common image file extension like ".jpg".


Inline downloads (when you use "Download Linked File") are now more interactive. Clicking on a finished download will attempt to open it in the operating system's default viewer app, and right-clicking on the download shows a menu of relevant actions like "Show Downloads", or (only on macOS currently) revealing where the file is using the Finder.


UI and theme tweaks


The information displayed when hovering on links was initially intended to be on the same line as the link itself, but that doesn't really work in many cases due to space constraints. Therefore, when I added the feature to show the full URL, it went to the traditional spot in the bottom of the window. It's been a bit weird having link hover information in two places, so I've now combined them. This also gave room to show more information. Perhaps most importantly, you can now see which identity will be used when opening a link.


The highlight on currently open links was getting a bit messy when it extended all the way to the widget edges, overlapping any elements there, so I've refined it a bit:


Screenshot of links open in split view and the revised link hover info


Another significant UI change is in the Upload dialog. One can now edit the path of the URL for the upload, to set an appropriate file name. I feel this is more intuitive than first entering a missing URL in the navbar and then opening the upload dialog.


When it comes to the page theme, there is one tweak. Links that use the Gemini subscriptions format (YYYY-MM-DD Title) are recognized and the date part will be slightly de-emphasized to improve readability of a list of entries.


Screenshot of dimmer dates on a feed page


Optimization and fixes


HarfBuzz (the Unicode text shaping library) needs to be told about the languages and scripts used in the text. Previously I've only done this with Arabic, but in v1.10 a few more scripts have been added (e.g., Devanagari and a couple of Japanese ones). This should improve or fix issues with text on non-English pages.

A long-standing caching bug has been fixed: if there were multiple copies of the same URL in the navigation history, only the latest one's content would be used when navigating back/forward. (You can check "about:debug" to see the history.)

Further tweaks were made to the handling of handling of reserved characters in URLs (cf. RFC 3986, section 2.2). This will impact representation of Heading subscriptions, so if you have any, there will likely be lots of unread entries in Feeds after upgrading. There seems to also be an (occasional?) bug where Mark All as Read does not mark Heading subscriptions as read, so you'll need to visit the corresponding page once to get rid of these...

UI layout and event processing are now a bit more efficient, avoiding repeated operations and unnecessary memory allocations.

On macOS, there was an unfortunate glitch in SDL that was causing 100% CPU usage during audio playback and certain animations. I applied a workaround that avoids calling that specific SDL function (SDL_WaitEventTimeout).

The v1.9 macOS binary packages included an extra copy of all the resources, which meant there was 2+ MB of unnecessary data included. Oops.


skyjake

📅 2022-01-17

🏷 Lagrange

CC-BY-SA 4.0


skyjake's Gemlog

-- Response ended

-- Page fetched on Fri Apr 26 08:11:53 2024