Mepo - November update: 1.1 Released

Message ID
DKIM signature
Download raw message
Hi all,

Welcome to the November update for Mepo covering the 1.1 release. You
can follow Mepo's development at http://sr.ht/~mil/mepo and do note
that release notes are also mirrored in the git annotated tags for
each release.


1.1 Release Notes:
- Addition of new pin_transfer & pin_delete commands
- Top UI buttons & bind_button improvements
- Menuing switched to use zenity for all environments; dmenu/bemenu dep removed
- Misc bugfixes & feature improvements

Packaging Status:
- Mepo updated to 1.1 in Alpine edge & Flatpak
- Note on dependency changes
- Note on update to Zig 0.10 & planned minor version

Miscellaneous & Conclusion:
- Thanks to NLnet & contributors
- Mepo added to OSM & pmOS wikis

# 1.1 Release Notes
This release was focused on several feature and quality improvements
including: the addition of new pin_transfer & pin delete commands,
improvements to the bind_button command, switching to use for zenity
for menuing in all environments, and several other minor bugfixes and
feature updates.  Major changes in this release cycle are described below:

1. Addition of new pin_transfer & pin_delete commands
A new command, pin_transfer, has been added which allows the user to
transfer pins from one group to another. This command makes saving &
combining target search resultsets (such as from Nominatim, Overpass
etc.) in the default configuration much simpler as you can simply move
pins from the search results (e.g. pin group 0) to other pin groups 0-9.
The pin_transfer command supports both moving a single pin from one group
to another, in addition to moving all pins in the group to another target
group. See either the manpage documentation or the mepolang documentation
website for information on using this command.

Additionally, another new command, pin_delete, has been added which
allows the user to delete a target pin by handle and also supports
deleting the currently active pin.

The pin_transfer & pin_delete commands are used in conjunction in the
default configuration with updates to the bind_button command (described
below) to expose this functionality to end-users in the UI. These two
commands are also exposed as keybindings; the new keybindings are covered
in the last section of these release notes.

2. Top UI buttons & bind_button improvements
The bind_button command's functionality has been greatly improved in this
release in three ways: 1) bind_button's visible_only_when_pin_active
argument now automatically positions buttons along the top of the UI
(above the pin detail overlay) when a pin is active, 2) bind_button now
allows associating a group number with the button (and thus indicating
the pin group color on the button and also highlighting the button when
the associated pin group is active), and 3) supporting click vs hold
functionality to dispatch different mepolang code if the button is held
versus clicked.

These 3 changes open up numerous usecases for end-users; and in the
default configuration, end-users will note this functionality has been
utilized so that 0-9 buttons are now visible in the top bar alongside
the pin details overlay. Clicking 0-9 will transfer the currently active
pin to the target group and holding 0-9 will transfer all pins in the
current group to the target group. The colors for each group are shown
in the top bar and it is now easier to determine which group you're
currently activated on and move pins between groups. In addition, `Del`
and `~` buttons have been added to the new top button bar to allow for
deleting the currently active pin and toggling the verbosity of the pin
detail overlay respectively. The buttons for switching between pins &
purging the current pin group have been moved from the bottom button bar
to the top button bar as well. The userguide has been updated to detail
these end-users changes.

3. Menuing switched to use zenity for all environments; dmenu/bemenu dep removed
Zenity has been switched to be the sole menuing option for mepo's scripts
after determining this method is well supported in all environments in
testing based on the last release cycle. Zenity provides a separate
window for user input and list selection, rather then a dock window,
which provides good cross-environment compatibility for Phosh, Sxmo,
Plasma Mobile, desktop X, and desktop Wayland environments.

Using zenity, dependencies on dmenu & bemenu have been removed and
packaging & end-user installation is now simplified as users do not have
to determine the menuing system to use. To this end, the logic for dmenu
& bemenu menuing has been removed entirely, however it should be noted
for end-users who would prefer legacy style dmenu or bemenu menuing
the `MEPO_MENUING` env variable may be used with a custom script in
if desired.

The polishing and completeness around zenity's integration has also
been improved. In the 1.0 release, zenity had icon glyphs not shown
properly. The icon glyphs used for zenity used are now more common &
available with the default monospace font on Alpine Linux. Additionally,
in 1.0, the overpass script presented so many options that the zenity
menuing had to show multiple pages for item selection; to address this,
the number of results has been reduced and only a single page is shown
for the overpass POI search script. And finally on zenity integration
polishing, on X-based environments where zenity is set to be a floating
window, xwininfo is used to automatically determine and place the sizing
of the window.

In this release, packagers should note to remove dependencies on: bemenu,
xdotool, dmenu, and font-inconsolata-nerd. And packagers should add
dependencies for zenity, findutils, and xwininfo.

4. Misc bugfixes & feature improvements
A few other miscellaneous bugfixes and feature improvements have been
made in this release cycle I'd like to mention here:

Firstly, an outstanding bug relating to the geolocation / user pin updater
script has been made such that Geoclue and MLS are now preferred over
GPSd as the default geolocation positioning provider. In prior releases
if you used the user pin updater script (e.g. by pressing `Center`
in the UI) and had not properly configured GPSd, the entire UI would
freeze up.  The reason for this is that in most scenarios GPSd needs to
be configured by end-users manually and without quick fix acquisition (as
is an ongoing issue with the Pinephone and eg25manager), it's better for
us to use Geoclue by default and allow Geoclue to dispatch the provider
used automatically.  MLS is the second fallback now, and GPSd is last.
It should be noted, Geoclue will use GPSd in anycase if configured and
available on the user's system. For end-users who want to customize
the provider function used for geolocation lookups, they may use the
new `MEPO_GEOLOCATE_COORDSVIAMETHOD` env variable which is documented in
the userguide.

Secondly, some preferences have been changed in the default configuration
such as for pin group colors, pin group ordering, and a new preference,
overlay_pindetails_expanded, has been introduced to allow the user to
toggle the verbose of the pin detail overlay. If you notice strangeness
when upgrading to this release (with pin groups), it's recommended
to purge your savestate cache at ~/.cache/mepo/savestate which may
incorporate 1.0 defaults and override the 1.1 defaults. The 1.1 defaults
will be automatically installed if ~/.cache/mepo/savestate is missing.

Thirdly, the display for pins has changed slightly such that the active
pin now shows its label with a gray background and with the pin having
a red outline then being fully red. This change was made to make the
the active pin & pin group more clear to end-users. When transferring
the active pin between groups, as is now a simple operation in the UI
with changes mentioned above in (2), there is a clear visual indication
of this.

And finally, the default configuration has been updated to incorporate
a few new hotkeys based on new application functionality added in
this release cycle: shift + 0-9 will move a pin to the target group,
control + shift + 0-9 will move all pins in your current group to the
target group using pin_transfer, the d hotkey now deletes the current
pin, shift d deletes all pins in the current group, and shift -/+ now
adjusts the UI fontsize. These hotkeys may be referenced further by
examining the bind_key commands set in the default configuration which
may be referenced either in the manpage or the documentation website.


# Packaging Status
As for packaging, I've submitted a MR to update mepo to 1.1 in Alpine
testing which has been merged so you may upgrade on Alpine / postmarketOS
now. It should be noted that for 1.1, since zenity has been switched to
be the single menuing option for all environments, as commented on in
the release notes, the separate `mepo-scripts-{zenity,bemenu,dmenu}`
subpackages have been replaced by a single `mepo-scripts` package. So
on Alpine there are three packages now: `mepo` which is the base SDL
application, `mepo-scripts` which pulls in the base SDL application and
associated scripts, and `mepo-docs` for mepo's manpage documentation. Most
users will want to use `mepo-scripts` and not `mepo` (which is only for
advanced users providing a custom configuration).

As for the Flatpak, 1.1 is now available on Flathub as well.

For other distributions, it should be noted, as was mentioned in
the release notes, that in 1.1 dependencies on bemenu, dmenu, and
font-inconsolata-nerd have been dropped and there is only a single
menuing option for zenity now. Zenity, findutils, and xwininfo should
be added as dependencies.

Finally, I'd like to mention in this section that zig is set to be bumped
to 0.10 on November 1st. Mepo 1.1 has been built against zig 0.9.1 as this
was the latest tagged zig release at the time of development. There will
be some work to update mepo to zig 0.10 pending in the next week or two
and I plan to publish a minor version to address zig 0.10 compatibility.


# Miscellaneous & Conclusion
That's all for this update covering the 1.1 release. I did also want to
thank NLnet for sponsoring the work on the 1.1 release as an extension
of the original NGI0 Discovery grant. As well I would like to thank
contributors Nguyễn Gia Phong and Laalsaas who have sent patches in
this release cycle.

Also before concluding, I did want to point out that in this release,
since the last update, I've added pages to postmarketOS
and OSM's wikis at https://wiki.postmarketos.org/wiki/Mepo and
https://wiki.openstreetmap.org/wiki/Mepo . Anyone may edit these pages
and I encourage mepo users to spread information about mepo on other
public wikis and in other adjacent communities.

I look forward to future updates for mepo in 1.2 and beyond. I welcome
the community to send patches, discuss on the mailing list, bug tracker,
and IRC. Looking forward to hearing from everyone & I hope this release
proves useful.

Reply to thread Export thread (mbox)