Actioneer 1.1.0: переделанная панель, живые таймеры и переводы, которых не было в snap
Вышла версия 1.1.0 Actioneer — моего нативного клиента GitHub Actions для GNOME на Rust и GTK4. Главное в релизе: переделанная панель воркфлоу, живые таймеры и 14 языков. Заодно расскажу про два бага, которые нашлись по дороге, — один жил в snap-сборке с самого первого релиза, второй ловится, только если переключить систему на арабский.
Одна карточка вместо вложенного списка
Аккордеон воркфлоу → запуски → джобы → шаги был и раньше — новое здесь именно то, как он выглядит. Вместо вложенного списка теперь одна скруглённая карточка с разделителями в пиксель, у каждого уровня свой круглый индикатор статуса (26 пикселей у воркфлоу, 13 у шага), под номером запуска — строка с веткой, автором, длительностью и временем, а кнопки запуска (перезапуск, перезапуск упавших джоб, отмена, открыть на GitHub) переехали в его заголовок. У раскрытого воркфлоу появилась полоска прогресса с живым счётчиком «сделано из всего».
Длительность того, что идёт прямо сейчас, стала живой: счётчик тикает раз в секунду, а не обновляется раз в опрос API. Мелочь, но без неё интерфейс выглядит замершим ровно тогда, когда на него и смотрят.
Отдельно поменялось окно логов — оно как было одно, так и осталось, но раньше кнопка Logs открывала лог одной джобы, которую приложение выбирало за вас. Теперь она открывает весь запуск: то же окно, но с сайдбаром, где джобы переключаются одним кликом, у идущих тикает счётчик, а Refresh перечитывает и список джоб, и сам лог. Прочитанные логи лежат в памяти, пока окно открыто, так что вернуться к предыдущей джобе ничего не стоит.
14 языков, из которых snap не показывал ни одного
В этот релиз добавились итальянский и японский — языков стало 14. Заодно я прошёл по всем существующим каталогам и закрыл оставшиеся непереведённые строки, а по дороге вернул на место потерянную диакритику: немецкие умляуты, французские и испанские надстрочные знаки.
А потом поставил snap-сборку, чтобы посмотреть на японский. Она была английской. На любом языке.
Приложение ищет каталоги в $SNAP/usr/share/actioneer/po, а snapcraft.yaml их туда никогда не копировал: во Flatpak-манифесте эта строчка есть, в снапе её просто не было. Переводы в snap-сборке не работали ни дня, с самого первого релиза.
Правка — две строки, а вот заметить это можно было, только поставив снап и переключив язык. Ни один тест такого не поймает: собранный пакет проверяет только человек, который его установил.
Логи не должны переворачиваться
Арабский и урду разворачивают интерфейс справа налево — и правильно делают. Проблема в том, что вместе с интерфейсом развернулись два места, где показывается машинный вывод: лог джобы и краш-репорт.
Лог — не проза. Каждая строка смешивает латиницу, цифры и знаки препинания, и алгоритм bidi честно переставляет сегменты по правилам, написанным для текста. Таймстемп уезжает в конец, путь разваливается на куски. Читать это невозможно. Оба вью теперь жёстко закреплены как LTR, независимо от языка интерфейса.
Заголовок окна логов пришлось чинить ровно наоборот. Строка «{название} — Логи» начиналась с названия запуска, а название — латиница, поэтому bidi решал всю строку как LTR, и арабский читатель встречал её не с того конца. Кода тут не потребовалось вовсе: достаточно переставить слова в самом переводе, чтобы первым сильным символом стал арабский.
Где взять
Actioneer открыт под MIT-лицензией. Исходники — на GitHub, поставить можно из Flathub или Snap Store.