[Projects] December Updates

[Projects] December Updates

Dec 30, 2022

This month I released updates for 5 of my applications and libraries, and I started working on a new project. Let's see what's new!

## YOGA Image Optimizer

YOGA Image Optimizer is a graphical tool to optimize images for the Web. It supports PNGs, JPEGs and WebPs formats.

YOGA Image Optimizer v1.2.2 was released today. This version is a maintenance release that fixes a bug that prevented the image list from being properly updated.

This bug affects mostly Linux users that use a distribution released more than one year ago (Ubuntu 20.04, Debian 11,...) and that installed the application from PyPI or from sources. The issue was caused by the use of a Pango markup attribute that was only supported by Pango >= v1.49.0 (released about a year ago).

The Flatpak package and the Windows distribution were not affected by this bug as they are shipped with the right version of the Pango library.

This version also brings updates for the Italian and Spanish translation thanks to @albanobattistella and @haggen88.

Complete changelog:

➡️ https://github.com/flozz/yoga-image-optimizer/releases/tag/v1.2.2

## Rivalcfg

Rivalcfg is a command-line tool and a Python library to configure SteelSeries gaming mice on Linux.

A new version of Rivalcfg was released this week. This v4.8.0 improves the startup time of the application (thanks to @gryzus24), and it added a new option for newer SteelSeries devices.

Latest SteelSeries mice (all Aerox, Prime and the Rival 5) do not save color setting in the onboard memory anymore. So at startup, the devices get back to their default values. But the default startup lighting can be configured a bit. It is possible to define whether the LEDs are off or if they display a rainbow animation at wake up.

So the --default-lighting option was added to configure the startup lighting on those devices. For more information please read the device-specific documentation:

You will find the complete changelog on GitHub:

➡️ https://github.com/flozz/rivalcfg/releases/tag/v4.8.0

## StoneJS

The StoneJS project is a set of libraries and tools to internationalize JavaScript application that is similar to GNU Gettext. It is composed of:

  • Stone.js, a light-weight, zero-dependency JavaScript internationalization library. It can be used to translate both server-side (Node.js) and browser-side JavaScript applications.

  • StoneJS Tools, a command-line tool that is able to extract translatable strings from JavaScript and HTML sources and write them to a catalog template (.pot file). It can also update/merge the strings from the template (.pot) to the language catalogs (.po files). Finally, it can compile the catalogs (.po) to JSON files that are used by the Stone.js library.

  • Grunt StoneJS Tools, a plugin that integrates StoneJS Tools with the Grunt task runner.

New versions of Stone.js, StoneJS Tools and Grunt StoneJS Tools were released to support strings with context (pgettext, npgettext, etc. functions). You can read more about contexts in the Gettext documentation:

➡️ https://www.gnu.org/software/gettext/manual/html_node/Contexts.html

The support of contexts required some changes in the JSON catalog format used by Stone.js. The newer versions of the Stone.js library are still able to read old JSON catalogs, but the newer versions of the tools only generate catalogs in the new format so they are not compatible with old versions of the library. TL;DR: if you update the tools, you must update the library too.

The work on this new feature was done by ma colleague Thomas Fromont; a big thanks to him for this great contribution! 😁️

The changes made on the project was also the occasion to update all the dependencies, the development tools and workflows. For instance, Travis CI (that was not working anymore) was replaced by Github Actions to run the test pipelines and the Jasmine test suite used by Stone.js was replaced by Jest, a more modern test framework.

## A new project...

I want to play a bit with the Gemini protocol (it is something between Gopher and the Web) and I may publish my blog as a Gemini Capsule (in addition to the Web version). The first step is to be able to convert the articles of my blog that are written using the reStructuredText markup language to Gemtext, the markup language used by Gemini. Then I will have to write a Pelican plugin to generate both the HTML and Gemtext version of the blog.

So this month I started to work on a new library to convert reStructuredText to Gemtext. It is still work in progress but you can have a look at the repository on Github if you are curious:

➡️ https://github.com/flozz/rst2gemtext


That's it for this month, see you soon for more updates! 😁️


Cover photo: Winter morning in the Schwarzwald by Tesla Delacroix

Enjoy this post?

Buy FLOZz a coffee

More from FLOZz