$ grep -r Tag: «open source»

-rw-r--r-- 10K 19 мая 2026 · CE824A9 · ~5 мин

Swift Adwaita: от 1.2.0 до 1.3.1

swift libadwaita open source swift package linux macos

После релиза 1.1.0 у библиотеки swift-adwaita вышло семь релизов подряд. Пока я продолжаю разрабатывать первое реальное приложение на этой обёртке, всплывают вещи, которые в синтетических тестах не видны — и почти каждая правка отсюда. Главная история этого цикла: swift-adwaita теперь собирается и запускается на macOS, а заодно я наступил на красивые грабли со Swift Concurrency внутри GLib main-loop и аккуратно с них слез.

Swift Adwaita

История одного бага: async, который никогда не выполняется

В 1.2.0 я схлопнул все диалоги (FileDialog, ColorDialog, FontDialog) на async throws и убрал колбэк-варианты — казалось, так чище. Через сутки выяснилось, что внутри запущенного GTK-приложения (g_application_run) код вида Task { @MainActor in await dialog.open(...) } просто никогда не выполняется. Дефолтный исполнитель главного актора в Swift — это DispatchQueue.main, а GLib main-loop его не крутит. Процесс выглядит живым, ошибок нет, кнопка нажимается — но файловый диалог не появляется.

1.2.1 экстренно вернул колбэк-варианты для FileDialog, 1.2.2 закрыл эту дыру окончательно: колбэк-перегрузки добавлены для всех async-API (Clipboard, ColorDialog, FontDialog, UriLauncher, Texture.load). Async-варианты остались — они нужны для тестов и не-GTK контекста, — но из обработчиков сигналов GTK теперь по умолчанию рекомендуется колбэк-форма. Долгосрочное решение (свой SerialExecutor поверх GLib) отложено как отдельная задача.

1.2.0: что появилось в API

  • Асинхронная загрузка изображений. Texture.load(from:) декодирует всё, что умеет GdkPixbuf — PNG, JPEG, GIF, WebP, TIFF, BMP — вне главного актора. Это шире, чем умеет нативный gdk_texture_new_from_filename.
  • Воспроизведение анимированных изображений. AnimatedImagePlayer крутит кадры из GdkPixbufAnimation в виджете Picture с методами start / stop / advanceFrame.
  • Application.onOpen и Application.run(arguments:) — обработка активации по файлам для приложений с флагом G_APPLICATION_HANDLES_OPEN.
  • Runtime-проверки типов виджетов. Widget.gtkType, isInstance(of:), и более строгий tryCast, который теперь действительно сужает тип, а не «успешно» приводит любой виджет к чему угодно.
  • Изолированные deinit на GObjectRef, GVariant и других обёртках — освобождение GObject теперь всегда происходит на главном акторе явно, а не на случайном потоке, который дропнул последнюю ссылку.
  • Минимальный тулчейн поднят до Swift 6.2 — isolated deinit в 6.1 экспериментальный, релизный тулчейн отказывался его включать.

1.2.3–1.2.5: удобства и буфер обмена

Три небольших релиза о том, чтобы реже импортировать CAdwaita ради рутинных вещей:

  • RGBA(hex:) — парсинг CSS-цветов: #RGB, #RGBA, #RRGGBB, #RRGGBBAA.
  • IconTheme — обёртка над gtk_icon_theme_get_for_display с addSearchPath(_:) для локальных иконок приложения.
  • ApplicationFlags как OptionSet: Application(id: "...", flags: [.handlesOpen, .nonUnique]) вместо сырых битовых масок.
  • MainContext.drainPending() и pump(for:) — однострочные замены для while g_main_context_pending { g_main_context_iteration }, которые в каждом тестовом наборе писались заново.
  • Перехват вставки. Widget.onPasteClipboard, синхронные пробы Clipboard.containsImage / containsFiles, асинхронные readTexture / readFiles, и Texture.encodedPNGData() — теперь можно перехватить вставку картинки в редактор и пропустить её через свой импорт, а не позволять GTK воткнуть её как текст.
  • Silencing GTK-CRITICAL спама от GtkScrolledWindow и неверно настроенных GtkDropTarget — опциональный фильтр + правильные сигнатуры сигналов ::enter / ::motion.

1.3.0: macOS как платформа для разработки

Главная новость цикла. swift-adwaita теперь собирается и работает на macOS 13+ на Apple Silicon. Linux остаётся главной целевой платформой, но локально разрабатывать и тестировать можно прямо на маке, не поднимая виртуалку.

  • Установка через Homebrew: brew install libadwaita gtksourceview5 pkgconf adwaita-icon-theme. Без adwaita-icon-theme кнопки в HeaderBar и баннеры рендерятся пустыми — Homebrew не подтягивает её транзитивно.
  • Обязательная переменная окружения: XDG_DATA_DIRS=/opt/homebrew/share, иначе libadwaita не находит свои GSettings-схемы и падает при старте.
  • DemoAppLib — все 78 примеров галереи теперь живут в отдельной библиотеке, которую можно слинковать с внешним приложением. Исполняемый DemoApp стал трёхстрочной обёрткой.
  • Xcode-пример в examples/macos/DemoApp/ — минимальный Xcode 16+ проект, который оборачивает галерею в обычный .app-бандл. Cmd+R и работает.
  • Параллельный набор тестов на XCTest для macOS. swift-testing на Apple-платформах вставляет autorelease-pool переходы между тестами, которые конфликтуют с Cocoa CFRunLoop источниками от gtk_init — на втором тесте всё падает. XCTest этого не делает, и тот же набор там проходит. Linux продолжает гонять swift-testing. Результат: 1181 тест / 0 падений на macOS.
  • Три специфичных для Apple бага, которые Linux/glibc маскировал: Variant.stringValue возвращал nil для валидных строк (висячий указатель на g_variant_type_checked_); хелперы локализации (localized, nlocalized) возвращали мусор без перевода (gettext возвращает входной указатель untouched, а Swift→C bridge уже освободил его); MediaStream.timestamp не компилировался, потому что gint64 — это long на Linux x86_64 и long long на Apple arm64.
  • macOS CI job на macos-26 с Xcode 26.4.1 (Swift 6.3). Только сборка, без прогона тестов: GitHub runner-ы headless, GTK4-Quartz падает без WindowServer-сессии.
  • REUSE 3.3 метаданные лицензий — SPDX-заголовки в каждом файле, reuse lint зелёный.

1.3.1: уборка

Maintenance-релиз без изменений API. Подтянул документацию по перехвату вставки в README, добавил adwaita-icon-theme во все инструкции по установке для macOS (наступили — записали), поднял в Xcode-примере deployment target до macOS 26, чтобы он совпадал с тем, на чём Homebrew собирает GTK4 — иначе линкер ругается на каждый dylib.

Что дальше

Главная незакрытая проблема — это всё ещё интеграция Swift Concurrency с GLib main-loop. Сейчас в GTK-приложении нельзя писать Task { @MainActor in ... } из обработчика клика, и это огорчает. Долгосрочный план — собственный SerialExecutor, который вместо DispatchQueue.main прокидывает работу через g_idle_add_full. Пока что callback-API закрывают все практические сценарии, но писать настоящий исполнитель когда-то всё-таки придётся.

Проект открытый, под MIT-лицензией. Исходники — на GitHub, документация с гайдами — здесь.

Star Fork

[↵] открыть пост swift-adwaita-from-1-2-0-to-1-3-1.md
-rw-r--r-- 3.4K 10 апр. 2026 · 1F1DDF3 · ~2 мин

Swifty Notes - менеджер markdown заметок для Linux на Swift

swift libadwaita open source linux

Swift Notes для Linux

После выпуска swift-adwaita я сосредоточился на создании своего первого приложения с его использованием. Что-то простое, но полезное для меня самого. И вот, первое приложение готово к использованию.

Swifty Notes — это нативное приложение для заметок в формате Markdown под Linux, использующее GTK/libadwaita и написанное на языке Swift.

Основной интерфейс — десктопное приложение: пишите, организуйте и просматривайте Markdown-заметки с помощью нативных виджетов GTK, функции автосохранения, сохранения состояния рабочего пространства и настраиваемых параметров редактора (размер шрифта, перенос строк, отступы и внешний вид).

В комплекте идет CLI (интерфейс командной строки), который работает с теми же файлами, поэтому shell-скрипты, инструменты автоматизации и AI-агенты могут безопасно просматривать или обновлять заметки без необходимости использования отдельной базы данных или фоновых служб.

  • Создание, переименование, дублирование, экспорт и удаление Markdown-заметок.
  • Автосохранение изменений, сохранение состояния рабочего пространства и хранение локальных изображений прямо вместе с каждой заметкой.
  • Настройка размера шрифта и других параметров редактора под разные экраны и рабочие процессы.
  • Выбор места хранения заметок, включая папки с облачной синхронизацией, что позволяет поддерживать актуальность одних и тех же файлов на разных устройствах.
  • Импорт изображений простым перетаскиванием (drag and drop) и рендеринг Markdown через нативный виджет GTK вместо использования веб-представления (web view).
  • Использование CLI для удобной автоматизации заметок в формате JSON с помощью скриптов, конвейеров оболочки (shell pipelines) и AI-агентов.

Скачать на Flathub

Swifty Notes для Linux — это проект с открытым исходным кодом, исходный код доступен на GitHub.

Star Fork

[↵] открыть пост swifty-notes-a-markdown-notes-manager-for-linux-in-swift.md
-rw-r--r-- 5.8K 10 апр. 2026 · D872E75 · ~3 мин

Swift Adwaita 1.1.0

swift libadwaita open source swift package linux

Swift Adwaita

Вышел релиз Swift Adwaita 1.1.0. Поскольку я работаю над первым приложением, созданным с использованием этой библиотеки, я расширил её возможности и исправил некоторые баги.

Основные изменения

  • Добавлена интеграция с GtkSourceView с использованием типизированных оберток на Swift для редактирования кода, подсветки синтаксиса, поддержки языков и схем стилей.
  • Расширен API виджетов в части работы с поповерами (popovers), окнами, совместимостью с календарем и обработкой жизненного цикла во время выполнения (runtime lifecycle).
  • Повышена стабильность релиза благодаря улучшенной интеграции с основным циклом GLib (main-loop), расширению покрытия CI и добавлению новых регрессионных тестов.

Добавлено

  • SourceView, SourceBuffer, SourceLanguage, SourceLanguageManager, SourceStyleScheme и SourceStyleSchemeManager.
  • Типизированные идентификаторы для языков и схем стилей GtkSource.
  • Новый демонстрационный пример редактора кода.
  • MainContext.task { ... }, task(after:) и task(every:) как отменяемые дескрипторы (handles) задач в основном цикле GLib.
  • Асинхронные помощники Async MainContext.run, yield и sleep(for:) для безопасного соединения конкурентности Swift (Swift concurrency) с циклом GLib.
  • Widget.unparent() и PopoverMenu.unparent().
  • Удобные помощники для работы с Popover и PopoverMenu.
  • Дополнительные регрессионные тесты для поиска родителя в цепочке виджетов/окон, а также расширенное покрытие для функций редактирования кода и поведения медиафайлов.

Изменено

  • GtkWindow.present() теперь удерживает окна открытыми до их закрытия, что делает использование временных или локально ограниченных окон более безопасным.
  • Widget.window теперь находит содержащее окно через цепочку родителей виджета, вместо того чтобы предполагать, что GTK root всегда является окном.
  • Обработка дат в календаре теперь использует прослойку (shim) для совместимости с GTK, что позволяет чисто собирать пакет как на старых, так и на новых версиях GTK.
  • Обновлены конфигурация генерации документации и хостинга документации.
  • В CI теперь выполняется установка и тестирование с системными зависимостями GtkSourceView 5.

Исправлено

  • Исправлена отложенная очистка сигналов/пользовательских данных (user-data): теперь она освобождает захваченные замыкания через основной цикл GLib, а не через задачи Swift main-queue, что позволяет избежать проблем с жизненным циклом в GTK-приложениях.
  • Исправлена распространенная ошибка планирования (scheduling pitfall) в GTK путем предложения API в стиле Task, который работает в основном цикле GLib вместо DispatchQueue.main.
  • Исправлены проблемы с видимостью сериализованного набора функций в Swift 6.1 в тестовом наборе.
  • Исправлены регрессионные тесты для popover/window, чтобы избежать путей падения (crash paths) GTK в CI при сохранении проверки ожидаемого поведения.
  • Обновлена документация по релизу и инструкции по установке: теперь они включают пакеты разработки GtkSourceView 5.

Документация и CI

  • В README добавлена ссылка на API-документацию.
  • Обновлены инструкции по установке для Ubuntu/Debian и Fedora.
  • Улучшена согласованность встроенной документации во всем API обертки.
  • Расширено покрытие CI для документации, форматирования и тестовых прогонов на Swift 6.1 / 6.2 / 6.3.

Это проект с открытым исходным кодом под лицензией MIT. Исходный код доступен на GitHub. Документация с руководствами доступна здесь.

Star Fork

[↵] открыть пост swift-adwaita-1-1-0.md
-rw-r--r-- 6.5K 6 апр. 2026 · B473A60 · ~2 мин

HTMLEditor для SwiftUI 1.1.0

swiftui html macos open source

HTMLEditor для SwiftUI 1.1.0

Этот релиз посвящен обеспечению совместимости с Swift 6.3, существенному переписыванию обработки подсветки синтаксиса и значительному улучшению отзывчивости при редактировании очень больших HTML-документов.

Добавлено

  • Добавлен исполняемый таргет HTMLEditorBenchmarks для проведения повторяемых замеров производительности.
  • Добавлена поддержка бенчмарков для: полного планирования подсветки, повторного использования перекрытий (overlap reuse), инвалидации правок, переназначения видимой подсветки и путей локальной перерисовки больших документов.
  • Добавлены специализированные регрессионные тесты для:
    • повторного использования кэша планировщика и инвалидации в рамках документа;
    • крайних случаев с некорректными NSRange и кодировкой UTF-16;
    • подсветки значений атрибутов в кавычках и без них;
    • переназначения состояния видимой подсветки;
    • покрытия подсветки на уровне блоков;
    • политик редактирования и прокрутки больших документов.

Изменено

  • Runtime редактора была отрефакторена на более мелкие специализированные компоненты, включая отдельные файлы для жизненного цикла координатора, вьюпорта, редактирования, политик, покрытия, структурных диапазонов и состояния видимой подсветки.
  • Синтаксический анализатор был разбит на компоненты на базе планировщика и исполнителя для более четкого разделения этапов сканирования, планирования и применения подсветки.
  • Редактор переведен на адаптивную модель выполнения, которая меняет свое поведение в зависимости от размера документа, вместо того чтобы обрабатывать все HTML-документы одинаково.

Улучшено

  • Значительно улучшена производительность при редактировании больших документов благодаря:
    • приоритетной подсветке видимой области;
    • кэшированию планировщика в пределах документа и целевой инвалидации;
    • кэшированию планов видимых диапазонов;
    • отслеживанию покрытия подсветки на уровне блоков;
    • выравниванию структурных «грязных» диапазонов вокруг правок;
    • двухфазному редактированию больших файлов с немедленным микро-проходом и отложенной расширенной перерисовкой;
    • объединению частых правок для снижения частоты перерисовок;
    • семантической подсветке во время простоя прокрутки;
    • отложенной синхронизации привязок для больших документов;
    • автоматическому включению режима allowsNonContiguousLayout в режиме работы с большими файлами.
  • Повышена стабильность подсветки при наборе текста в середине очень большого HTML-документа за счет сохранения состояния видимого оверлея и уменьшения частоты перерисовок вокруг курсора.
  • Улучшена настройка производительности для больших файлов с помощью выделенных бенчмарков и runtime-зондов.

Исправлено

  • Исправлены проблемы компиляции и конкурентности, необходимые для совместимости с Swift 6.3.
  • Исправлено несколько проблем в путях обновления редактора, связанных с состоянием координатора, задачами подсветки и поведением main-actor.
  • Исправлены регрессии подсветки и крайние случаи, связанные с:
    • частичными тегами;
    • пустым вводом;
    • большими объемами данных;
    • раскраской значений атрибутов;
    • потерей видимой подсветки при редактировании больших файлов;
    • некорректными или обрезанными видимыми диапазонами.

Примечания

  • Для небольших HTML-документов по-прежнему используется семантическая подсветка всего документа.
  • Очень большие HTML-файлы теперь автоматически переключаются в более консервативный, ориентированный на производительность режим редактирования, чтобы обеспечить плавность прокрутки и набора текста.

Попробуйте на GitHub: https://github.com/makoni/HTMLEditor-SwiftUI

Star Fork

[↵] открыть пост html-editor-for-swiftui-1-1-0.md
-rw-r--r-- 2.4K 31 марта 2026 · 6420B81 · ~1 мин

Библиотека Swift Adwaita

swift libadwaita open source swift package linux

Swift Adwaita

Это проект, который я всегда хотел создать: библиотека, позволяющая разрабатывать приложения для GNOME, используя Swift. Хотя существуют и другие подобные библиотеки, они кажутся либо неполными, либо заброшенными. Благодаря подходу Vibe Coding мне удалось завершить проект примерно за неделю.

swift-adwaita — это императивная обертка на Swift 6 для GTK4 и libadwaita, созданная для разработки нативных десктопных приложений GNOME под Linux.

Библиотека предоставляет современный Swift API поверх GTK и Adwaita с типобезопасными виджетами, сигналами, привязками свойств (property bindings), поддержкой асинхронных операций и удобными вспомогательными инструментами, сохраняя при этом нативный стиль, поведение и эстетику платформы GNOME.

  • Разработка нативных приложений для GTK4 и libadwaita на языке Swift.
  • Императивный API без использования кастомного DSL.
  • Типобезопасные перечисления (enums), сигналы и API свойств.
  • Поддержка Async/await для интеграции с основными возможностями платформы.
  • Широкая поддержка виджетов, подкрепленная полноценным демонстрационным приложением.

Вот демо-приложение, созданное с использованием swift-adwaita:

Это проект с открытым исходным кодом под лицензией MIT. Исходный код доступен на GitHub. Документация с руководствами доступна здесь.

Star Fork

[↵] открыть пост swift-adwaita-library.md
-rw-r--r-- 4.1K 28 марта 2026 · 506D0D0 · ~2 мин

Swift клиент для CouchDB 2.4.0

swift couchdb swift package vapor open source

Основные изменения

  • Проведен рефакторинг внутреннего устройства выполнения запросов в CouchDBClient для использования более чистых потоков в стиле async/await и уменьшения дублирования логики обработки ответов.
  • Улучшены пути буферизации и декодирования для сырых и типизированных запросов с упором на более безопасное выполнение в EventLoopGroup и повышение производительности при обработке ответов.
  • Расширено тестовое покрытие для выполнения запросов на базе EventLoopGroup, включая сырые и типизированные get, сырые и типизированные find, загрузку вложений, вывод списков индексов Mango и объяснение запросов Mango.
  • Обновлена документация для пользователей: README, статьи DocC и руководства (tutorials).
  • Обновлены инструменты документирования для новых рабочих процессов DocC, включая поддержку экспорта в Markdown.

Улучшения API и поведения

  • Добавлена и доработана поддержка EventLoopGroup для большего количества путей запросов в CouchDBClient.
  • Улучшены внутренние пути обработки ошибок и поведение декодирования ответов для операций CouchDB.
  • Упрощена многоуровневая структура помощников запросов и уменьшено дублирование кода обработки запросов/ответов.
  • Улучшено поведение, связанное с вложениями, и соответствующие тесты.
  • В манифест пакета добавлена поддержка visionOS.

Документация

  • Исправлены и обновлены примеры в README для использования CRUD и запросов Mango.
  • Обновлены целевые страницы DocC для лучшего отражения текущего API.
  • Исправлены фрагменты кода в руководстве по продвинутым запросам Mango, чтобы они соответствовали текущему типизированному API запросов.
  • Исправлены примеры в руководстве по Vapor.
  • Исправлена настройка пакета и зависимостей в руководстве по Hummingbird.
  • Обновлен buildDocs.sh для поддержки:
    • настраиваемого пути вывода и базового пути хостинга;
    • встраивания контента для статического хостинга;
    • экспериментального вывода в Markdown;
    • генерации манифеста Markdown.
  • Добавлен этап постобработки в buildDocs.sh, который внедряет относительную ссылку на Markdown в сгенерированные HTML-страницы DocC.

Инструменты и зависимости

  • Обновлены зависимости пакета в Package.resolved.
  • Обновлена матрица версий Swift для процесса сборки под Ubuntu.

CouchDB Client на GitHub | Документация с примерами и руководствами.

Star Fork

[↵] открыть пост couchdb-client-for-swift-2-4-0.md
-rw-r--r-- 2.6K 12 марта 2026 · EEC4B31 · ~1 мин

Actioneer для Linux 1.0.8

actioneer macos apps приложения open source

Actioneer для Linux 1.0.8

Новый релиз Actioneer 1.0.8 направлен на повышение надежности мониторинга GitHub Actions в реальном времени и более эффективное использование GitHub API.

Основные изменения

  • Запускаемые процессы (workflow runs) теперь продолжают обновляться, пока они активны, благодаря чему расширенные данные о задачах и шагах остаются актуальными до завершения запуска.
  • Расширенная информация о запусках стала более стабильной и читаемой: появились четкие значки, сохранение контекста задач и непрерывная нумерация шагов.
  • Значки статуса workflow теперь переводятся более единообразно на все поддерживаемые в приложении языки.
  • Фоновое обновление стало менее нагруженным для GitHub API, что уменьшает количество дублирующих запросов и помогает сохранить запас лимита запросов.

Технические улучшения

  • Исправлено несколько проблем с жизненным циклом «живого» обновления в панели деталей: теперь переключение репозиториев или пересоздание строк больше не прерывает активный цикл обновления.
  • Удалены дублирующие запросы начальных задач, вызванные состоянием гонки при повторном рендеринге только что развернутых запусков.
  • Снижена нагрузка от ненужных запросов за счет оптимизации управления обновлением выбранного репозитория и повторного использования данных об обновлениях задач.

Скачать из Snap Store
Скачать на Flathub

[↵] открыть пост actioneer-for-linux-1-0-8.md
-rw-r--r-- 1.0K 5 марта 2026 · EBF079C · ~1 мин

Actineer для Linux получил локализации

actioneer macos apps приложения open source

Actioneer для Linux 1.0.7

Actioneer для Linux доступен на множестве языков, включая русский, испанский, французский, португальский (Бразилия), хинди, упрощенный китайский, арабский, бенгальский, урду, немецкий и нидерландский.

Приложение также включает встроенную систему отчетов о сбоях: вы можете скопировать отчет и вставить его куда угодно или просто создать issue на GitHub. Кроме того, были внесены некоторые внутренние исправления и улучшения.

Скачать из Snap Store
Скачать на Flathub

[↵] открыть пост actioneer-for-linux-got-translations.md
-rw-r--r-- 3.3K 13 февр. 2026 · 2084C19 · ~2 мин

Недавние обновления Actioneer для Linux

actioneer macos apps приложения open source

Actioneer для Linux

За последнее время вышло несколько обновлений Actioneer для Linux, о которых я забыл рассказать здесь. Вот что нового в этих версиях:

1.02

  • Более быстрый и плавный интерфейс с обновленными списками репозиториев/workflow и улучшенным поведением прокрутки.
  • Новые инструменты фильтрации запусков с улучшенным кэшированием: переключение фильтров происходит мгновенно и не требует перезагрузки данных.
  • Улучшено автообновление workflow и статусов запусков, включая уменьшение количества дублирующих запросов.
  • Уведомления стали надежнее в Snap/Flatpak благодаря улучшенной обработке иконок и наличию резервных вариантов.
  • Улучшено хранение учетных данных в песочнице с использованием secret portal для Snap/Flatpak.
  • Добавлена устойчивость к работе в офлайн-режиме: сохранение кэша для workflow, запусков и задач.
  • Обновления упаковки и CI для Snap, Flatpak и AppImage для лучшей совместимости.
  • Обновление зависимостей и исправления стабильности.

1.03

  • Логи задач теперь поддерживают ANSI-цвета, группировку разделов workflow и более четкое форматирование команд и вывода.
  • Выравнивание временных меток и префиксов команд улучшило читаемость логов, а также было усилено выделение ошибок.
  • Обновлен процесс сборки с поддержкой мультиархитектуры для AppImage/Snap/Flatpak.
  • Обновление зависимостей и обновление демо-логов для повышения точности.

1.04

  • Обработка истекших логов задач (HTTP 410): теперь вместо сломанного отображения выводится понятное сообщение.
  • Удаление маркеров BOM в логах задач, чтобы временные метки на первой строке отображались корректно.

1.05

  • Ручной запуск workflow теперь поддерживает входные данные workflow_dispatch с динамическими полями параметров.
  • Обновление зависимостей для ryu, unicode-ident и zmij.

Скачать из Snap Store
Скачать на Flathub

[↵] открыть пост actioneer-1-02-1-05.md
-rw-r--r-- 2.8K 3 февр. 2026 · D25BFAD · ~2 мин

Claw Screenshot - консольная утилита для создания скриншотов в Linux

claw screenshot linux apps приложения open source

Claw Screenshot - консольная утилита для создания скриншотов в Linux

В последнее время я экспериментировал с Clawd / Moltbot / Openclaw ботом. Конечно, всё закончилось тем, что я попросил его написать какой-то код. Поскольку я запускаю его в виртуальной машине с Ubuntu Linux, я пробовал разрабатывать для него некоторые приложения. И в какой-то момент я осознал, что отправляю скриншоты приложения, но каждый раз мне приходится делать это вручную.

Поэтому я решил автоматизировать эту часть. Я пробовал некоторые консольные приложения для Linux, которые обещали, что умеют делать скриншоты, но по какой-то причине ни одно из них у меня не заработало.

В итоге я решил написать своё. Я выбрал Rust, а Openclaw провел для меня небольшое исследование того, как это должно быть реализовано. Результатом стало консольное приложение, использующее FreeDesktop Screenshot portal. Понадобилось создать .desktop файл, чтобы я мог увидеть запрос разрешений от Gnome и нажать «Разрешить». Это требуется всего один раз, так что теперь я всё автоматизировал.

Честно говоря, это довольно крутая штука, которую я уже пробовал с iOS-приложением, используя UI-тесты: ИИ-агент просто запускает UI-тесты, берет скриншоты из отчета, анализирует их и понимает, что не так с интерфейсом приложения.

Я выложил приложение на GitHub и опубликовал релиз с бинарными файлами, а также пакетами .deb и .rpm для архитектур arm64 и amd64. К нему прилагается отличный скрипт для автоматической установки. Поскольку я создал его с помощью Openclaw, я назвал его Claw Screenshot.

Попробуйте сами: https://github.com/makint/claw-screenshot

[↵] открыть пост claw-screenshot-0-1-0.md
-rw-r--r-- 1.2K 20 янв. 2026 · 4C1F7F4 · ~1 мин

Actioneer 1.01

actioneer macos apps приложения open source

Скриншот Actioneer

Вышло первое обновление Actioneer. Вот что нового:

  • Обновление workflow происходит в фоновом режиме, поэтому новые запуски, запущенные вручную, появляются автоматически.
  • Снижено использование API и количество превышений лимита запросов благодаря кэшированию на основе ETag — списки загружаются быстрее, а ваша кэш-квота расходуется медленнее.
  • Приложение запоминает репозиторий, который вы просматривали, между запусками.
  • Улучшенная диагностика и надежность для более комфортной повседневной работы.

Загрузить

Следите за обновлениями в X: https://x.com/ActioneerCI

[↵] открыть пост actioneer-1-01.md
-rw-r--r-- 2.6K 8 нояб. 2025 · DF4E8C5 · ~1 мин

Actioneer для Linux

actioneer linux apps приложения open source

Скриншот Actioneer

Actioneer — это нативный десктопный клиент для GitHub Actions под GNOME. Он сочетает в себе интерфейс GTK4/libadwaita с API-клиентом на базе Tokio, что позволяет просматривать репозитории, изучать запуски рабочих процессов (workflows), следить за логами задач и получать уведомления, не покидая рабочий стол.

Основные возможности

  • Быстрый просмотр ваших репозиториев GitHub, рабочих процессов и последних запусков.
  • Проверка статуса запуска (успех, ошибка, в очереди, в процессе) с помощью четких значков и счетчиков.
  • Просмотр логов задач: загрузка и предпросмотр логов для быстрого поиска неисправностей.
  • Запуск рабочих процессов, отмена текущих и перезапуск неудачных прямо из приложения.
  • Избранное и быстрый поиск позволяют сосредоточиться на наиболее важных репозиториях и рабочих процессах.
  • Десктопные уведомления о завершении или сбое запусков, чтобы вы не пропустили важные результаты.
  • Кэширование в оперативной памяти и эффективное обновление обеспечивают отзывчивость приложения при соблюдении лимитов GitHub API.
  • Безопасная аутентификация через OAuth; токены надежно хранятся в системной связке ключей (keyring).

Скачать из Snap Store Скачать на Flathub

Actioneer для Linux — это проект с открытым исходным кодом, исходный код доступен на GitHub.

Star Fork

[↵] открыть пост actioneer-for-linux.md
-rw-r--r-- 645B 11 авг. 2025 · CA8478D · ~1 мин

HTMLEditor для SwiftUI 1.0.3

swiftui html macos open source

Текстовый редатор SwiftUI для macOS с подсветкой синтаксиса HTML

Потратил еще немного времени на HTMLEditor для SwiftUI. В новой версии 1.0.3 внесены значительные улучшения производительности (спасибо Claude Code).

Попробуйте его на GitHub: https://github.com/makoni/HTMLEditor-SwiftUI

[↵] открыть пост htmleditor-for-swiftui-1-0-3.md
-rw-r--r-- 2.1K 1 авг. 2025 · 508C136 · ~1 мин

Swift клиент для CouchDB 2.3.0

swift couchdb swift package vapor open source

Клиент CouchDB для Swift 2.3.0

Недавно я реализовал функцию, которую давно хотел добавить в CouchDB Swift client. Это поддержка Mango Queries. Наконец-то всё готово в версии 2.3.0. Кажется, это последняя крупная функция.

Список изменений:

  • Представлен надежный и типобезопасный MangoQuery API для построения сложных селекторов, проекций, сортировки и пагинации в CouchDB.
  • Добавлена поддержка указания индексов через useIndex в запросах для оптимизации производительности.
  • Добавлена полноценная поддержка загрузки, скачивания и удаления вложений документов (файлов/изображений).
  • Комплексный набор тестов для Attachments API обеспечивает надежность операций с файлами.
  • Добавлены модели и API для создания, перечисления и управления индексами Mango (MangoIndex, IndexDefinition).
  • В документацию теперь включены обучающие примеры и фрагменты кода для создания индексов.
  • Добавлена поддержка эндпоинта CouchDB Mango _explain через MangoExplainResponse, чтобы можно было проверить, как выполняются запросы и какие индексы используются.

CouchDB Client на GitHub | Документация с примерами и руководствами.

Star Fork

[↵] открыть пост couchdb-client-for-swift-2-3-0.md
-rw-r--r-- 2.6K 31 июля 2025 · 043C479 · ~2 мин

История одного бага в Leaf

swift vapor leaf open source

История одного бага в Leaf

Этот сайт работает на Vapor — серверном фреймворке для Swift. Он довольно старый, популярный и известный.

Я использую его уже несколько лет, и мне всегда нравилось, что он быстрый и не требует много памяти на сервере.

Я поддерживаю все зависимости в актуальном состоянии. Но недавно я заметил, что сайт начал потреблять слишком много памяти. Использование начинается примерно с 20 МБ, но спустя несколько недель я обнаружил, что на сервере оно разрослось до 750 МБ.

Для такого простого сайта это очень много, поэтому я начал копать. Изучив код сайта (который я долгое время не менял), я не смог найти никаких проблем (как и AI-агенты).

Для рендеринга HTML я использую Leaf — шаблонизатор от команды Vapor. И в их репозитории на GitHub как раз был открытый тикет, описывающий точно такую же проблему.

Поэтому я попросил Copilot помочь мне разобраться, в чем дело. Он довольно быстро добавил в мой форк новые тесты, которые выполняли множество рендерингов в цикле. И утилита leak обнаружила циклы сильных ссылок (retain cycles). Я исправил это с помощью аннотации weak, но во время проверки моего PR мейнтейнер предложил просто использовать unowned.

И вот и всё. 2 строки кода исправили рост потребления памяти. Трудно поверить, но спустя несколько часов после деплоя сайт всё еще потребляет всего 2 МБ памяти. Так что сегодня я очень собой горжусь.

Мораль: вносите вклад в Open Source проекты, которыми вы пользуетесь.

[↵] открыть пост a-story-of-one-bug-in-leaf.md
-rw-r--r-- 848B 10 июля 2025 · A43AF6A · ~1 мин

Swift package для проверки орфографии с использованием Яндекс Спеллер

swift open source yandex speller

Swift-пакет для проверки орфографии с использованием Yandex.Speller

Для своих личных целей я хотел добавить проверку орфографии в одно из своих приложений. Она должна проверять текст и автоматически исправлять его. Встроенные инструменты macOS для работы с текстом отлично работают с английским, но не работают с русским.

Так что, когда всё было готово, почему бы не поделиться этим?

https://github.com/makoni/YaSpellChecker

[↵] открыть пост a-swift-package-for-spell-checking-using-yandex-speller.md
-rw-r--r-- 1.4K 9 июля 2025 · EDE172F · ~1 мин

HTML редактор на SwiftUI для macOS с подсветкой HTML синтаксиса

swiftui html macos open source

Текстовый редактор SwiftUI для macOS с подсветкой синтаксиса HTML

Несколько месяцев назад я захотел добавить в одно из своих приложений текстовый редактор с подсветкой синтаксиса HTML. Я попробовал пару библиотек, найденных на GitHub, но ни одна из них мне не подошла. В основном они слишком тяжеловесные и пытаются уместить в себе всё сразу. И в конечном итоге они работают нестабильно и с багами.

Вдохновившись концепцией «vibe coding», я сделал свой собственный вариант. Он отлично работает и не пытается быть полноценной IDE или серьезным редактором кода. Это просто простой SwiftUI компонент с текстовым редактором и подсветкой синтаксиса. Цвета можно настроить с помощью простой структуры.

Проект на GitHub: https://github.com/makoni/HTMLEditor-SwiftUI

[↵] открыть пост swiftui-text-editor-for-macos-with-html-syntax-highlighting.md
-rw-r--r-- 3.2K 8 июля 2025 · 931C7C2 · ~2 мин

Недавние обновления моих проектов

swift couchdb app store release informer open source ai

В последнее время я много экспериментирую с AI-агентами, и это серьёзно вдохновило меня обновить мои проекты. Работа с реальными задачами делает процесс гораздо интереснее.

Swift клиент для CouchDB

Вышло 2 новых релиза библиотеки couchdb-swift. Copilot любезно добавил в библиотеку больше юнит-тестов для покрытия различных сценариев использования. В основном они завершались ошибками. Мне всё ещё пришлось многое дорабатывать вручную, но это подкинуло мне пару идей. Поэтому в этих двух последних релизах я добавил более детальную обработку ошибок. Также он нашел и исправил несколько мелких багов, проверил мой PR и предложил некоторые улучшения. Он еще далеко не идеален, но всё равно впечатляет.

Бот Release Informer для Telegram

В какой-то момент я обнаружил, что Copilot Agent стал доступен для моей учетной записи, и теперь я могу просто создать issue на GitHub, назначить его на агента и посмотреть, что он сделает. Я начал с запроса обновить README для Release Informer Bot, добавив подробности о том, как он работает и как его настроить.

После того как агент закончил работу над обновленным README, у меня появилась еще одна идея: процесс настройки можно автоматизировать. Поэтому я открыл Visual Studio Code и попросил Copilot добавить автоматическое создание необходимой базы данных и её настройку с нужными индексами CouchDB.

Он и тут справился неплохо, но всё равно потребовались некоторые ручные правки и изменения. И в процессе этого появился еще один релиз библиотеки CouchDB client, так как я захотел полагаться на корректную ошибку «not found».

Трудно сказать, сколько времени мне сэкономил Copilot. Но определенно много. Включая мой любимый автоматический перевод строк. Надеюсь, это вдохновит меня выпускать еще больше обновлений.

[↵] открыть пост recent-updates-of-my-projects-july-2025.md
-rw-r--r-- 1.9K 16 апр. 2025 · B2756B3 · ~1 мин

Swift клиент для CouchDB версия 2

swift couchdb swift package vapor open source

Клиент CouchDB для Swift, версия 2

Недавно я выпустил несколько новых версий CouchDB клиента для Swift. Последняя версия — 2, и она включает в себя несколько ключевых изменений:

  • Обновлена минимально необходимая версия Swift до 6.0.
  • Внедрена поддержка Swift Concurrency. CouchDBClient был обновлен и теперь является actor.
  • Библиотека была переименована из couchdb-vapor в couchdb-swift, чтобы лучше отражать её назначение как универсального клиента CouchDB для Swift, а не только для использования с Vapor.
  • Внесены изменения в инициализатор. Вместо передачи множества параметров теперь используется структура Config.
  • Теперь вы можете передать собственный экземпляр HTTPClient для использования в клиенте.
  • Добавлены переводы сообщений об ошибках.
  • Представлен специальный туториал по интеграции CouchDBClient с серверным фреймворком Hummingbird.
  • Добавлен метод shutdown() для корректного освобождения ресурсов, связанных с HTTPClient.

CouchDB Client на GitHub | Документация с примерами и руководствами.

Star Fork

[↵] открыть пост couchdb-client-for-swift-version-2.md
-rw-r--r-- 2.0K 8 апр. 2024 · BA68FE9 · ~1 мин

Swift клиент для CouchDB 1.5.0

swift couchdb swift package vapor open source

Клиент Swift для CouchDB 1.5.0

И вот, ещё одна новая версия библиотеки CouchDB client. После недавнего поста про версию 1.4.0, в Swift on Server вышла новая версия async-http-client, которая включает новую реализацию синглтона клиента. Теперь это HTTPClient.shared, поэтому я обновил библиотеку CouchDB, чтобы адаптировать её к этому изменению. Это также означает, что вам больше не нужно вызывать httpClient.syncShutdown(), если используется синглтон. Кроме того, они подняли минимальную версию Swift до 5.8 (что я также сделал в версии 1.4.0 клиента для CouchDB). Так что я продолжаю поддерживать библиотеку в актуальном состоянии.

Список изменений:

  • Обновил минимальную версию async-http-client до новой 1.21.0. Если вы не можете использовать её в своем проекте, вы всё еще можете оставаться на версии 1.4.0.
  • Теперь библиотека будет внутри использовать HTTPClient.shared (новое в async-http-client 1.21.0) для запросов, если не предоставлен EventLoopGroup.
  • Больше нет внутренних вызовов httpClient.syncShutdown() при использовании HTTPClient.shared.

CouchDB Client на GitHub | Документация с примерами и руководствами.

[↵] открыть пост swift-couchdb-client-1-5-0.md
-rw-r--r-- 1.7K 8 апр. 2024 · 08DA6BF · ~1 мин

Swift клиент для CouchDB 1.4.0

swift couchdb swift package vapor open source

Swift CouchDB client

Вышла новая версия CouchDB Client:

  • Библиотека перешла с HTTPClient.Response на HTTPClientResponse, что похоже на HTTPClient.Response, но предназначено для Swift Concurrency API. Также был выполнен переход с HTTPClient.Body на HTTPClientRequest.Body. Эти изменения влияют на методы get и find. Старые методы помечены как устаревшие (deprecated), для миграции смотрите документацию для получения информации об обновленных методах.
  • Минимальная версия Swift теперь 5.8.
  • Протокол CouchDBRepresentable теперь помечен как Codable.
  • Кроме того, была добавлена новая модель данных под названием RowsResponse. Она принимает обобщённый тип CouchDBRepresentable, что упрощает получение строк из базы данных. Например:
    let decodeResponse = try JSONDecoder().decode(RowsResponse<MyApp>.self, from: data)
  • Наконец, внесены небольшие улучшения в документацию и обучающие примеры.

CouchDB Client на GitHub | Документация с примерами и руководствами.

[↵] открыть пост swift-couchdb-client-1-4-0.md
-rw-r--r-- 703B 3 апр. 2024 · BC252B6 · ~1 мин

Модульбанк информер 1.3

macos приложения модульбанк open source

Модульбанк информер 1.3

Выпустил небольшое обновление для Модульбанк инфомера. Обновил иконку в статусбаре (тепер узнаваемая), и добавил чекбокс для скрытия счетов с нулевым балансом. Ну и немного рефакторинга.

Исходный код на GitHub: https://github.com/makoni/ModulbankInformer
Скачать можно тут: https://github.com/makoni/ModulbankInformer/releases

[↵] открыть пост modulbank-informer-1-3.md
-rw-r--r-- 1.3K 29 марта 2024 · EA452FF · ~1 мин

Swift клиент для CouchDB 1.3.2

swift couchdb swift package vapor open source

Клиент Swift для CouchDB

Недавно вышло несколько новых версий моей библиотеки Swift CouchDB. Вот последние изменения:

  • dateDecodingStrategy и dateEncodingStrategy теперь можно передавать в качестве параметров для методов get, update и insert.
  • Добавлена проверка для обработки истекших cookie аутентификации.
  • Сравнение заголовка set-cookie в ответе теперь выполняется в нижнем регистре.
  • Представлены новые методы для использования API _find, позволяющие искать документы с помощью декларативного синтаксиса JSON-запросов.
  • Исправлена ошибка, из-за которой метод update не использовал параметр dateEncodingStrategy.

CouchDB Client на GitHub | Документация с примерами и руководствами.

[↵] открыть пост swift-couchdb-client-1-3-2.md
-rw-r--r-- 623B 10 окт. 2023 · d68e288 · ~1 мин

Модульбанк информер 1.2

macos приложения модульбанк open source

Модульбанк информер 1.2

Обнаружил досадный баг в Модульбанк Информере - если был счёт в турецких лирах, то JSON не парсился и данных не было совсем. Исправил в обновлении.

Исходный код на GitHub: https://github.com/makoni/ModulbankInformer
Скачать можно тут: https://github.com/makoni/ModulbankInformer/releases

[↵] открыть пост modulbank-informer-1-2.md
-rw-r--r-- 1.0K 29 марта 2023 · 88035de · ~1 мин

Модульбанк информер

macos приложения модульбанк open source

Модульбанк информер

Недавно увидел, что у Модульбанка, которым я пользуюсь, есть публичный API. Поскольку у них для macOS нет приложения, а приложение для iOS не работает на Apple Silicon (их ограничение в целях безопасности), я сделал небольшой информер, который показывает в статус баре список счетов и баланс.

Приложение macOS 13+, т.к. хотелось выжать из SwiftUI всё самое актуальное, заодно попрактиковаться.

Исходный код на GitHub: https://github.com/makoni/ModulbankInformer
Скачать можно тут: https://github.com/makoni/ModulbankInformer/releases

[↵] открыть пост modulbank-informer.md
-rw-r--r-- 1.2K 26 дек. 2022 · BE2067B · ~1 мин

Swift CouchDB client 1.2.1

swift couchdb swift package vapor open source

Swift CouchDB client 1.2.1

Небольшое обновление библиотеки Swift CouchDB client с парой новых методов, которые понадобились мне самому:

  • Новый метод для создания базы данных [docs].
  • Новый метод для удаления базы данных [docs].
  • Новый метод для проверки существования базы данных [docs].
  • Каждый запрос теперь обрабатывает ошибки unauthorised.
  • У модели CouchDBClientError теперь есть текстовое описание.

CouchDB Client на GitHub | документация с примерами и туториалами.

[↵] открыть пост swift-couchdb-client-1-2-1.md
-rw-r--r-- 2.0K 4 окт. 2022 · A996DD3 · ~1 мин

Swift CouchDB client 1.2.0

swift couchdb swift package vapor open source

Swift CouchDB client 1.2.0

Пару месяцев назад я начал разбираться с Apple’овским DocC — инструментом, который генерирует документацию из исходного кода. Я решил задействовать максимум возможностей, поэтому взял свою небольшую библиотеку CouchDB Client и добавил документацию к каждому методу, включая примеры использования, которые Xcode будет показывать в попапе автодополнения. Как часто бывает, в процессе написания доков и примеров я обнаружил, что многие вещи в библиотеке можно сделать гораздо лучше. Поэтому я обновил существующие методы и добавил несколько новых — таких, что принимают документ параметром и используют дженерики.

Следующим шагом были руководства. Apple даёт разработчикам возможность создавать ровно такие же руководства, как у них самих для SwiftUI. Так что я добавил парочку, и они тоже лежат в репозитории на GitHub.

Уверен, что на документацию я потратил больше времени, чем на саму библиотеку, но надеюсь, что оно того стоило.

CouchDB Client на GitHub | документация с примерами и туториалами.

[↵] открыть пост swift-couchdb-client-1-2-0.md
-rw-r--r-- 518B 30 нояб. 2020 · 411B1E1 · ~1 мин

Swift CouchDB client 1.0.0

swift couchdb swift package vapor open source

Swift CouchDB client library

Закончил новую версию Swift CouchDB client. Теперь она использует только async-http-client в качестве зависимости для http/https-запросов. Совместима с Vapor 4.

Проект на GitHub: https://github.com/makoni/couchdb-swift

[↵] открыть пост swift-couchdb-client-1-0-0.md
-rw-r--r-- 1.2K 23 сент. 2019 · B28AFA6 · ~1 мин

Синтаксический сахар для парсинга JSON в Swift

swift swift package json open source

Декодирование и кодирование JSON стало простым после появления протокола Codable в Swift 4.0. Но в процессе разработки мне хотелось чего-то более короткого и изящного, чем конструкция Do-Catch вида:

var myModel: MyModel?
let decoder = JSONDecoder()

do {
    myModel = try decoder.decode(MyModel.self, from: data)
} catch {
    print(error.localizedDescription)
}

Или вот такого:

let myModel: MyModel? = try? decoder.decode(MyModel.self, from: data)

Поэтому я написал протокол с реализацией по умолчанию, который позволяет декодировать вот так:

let myModel = MyModel.decodeFromData(data: data)

И так же — кодировать:

let data = MyModel.encode(fromEncodable: myModel)

Всё, что нужно, — добавить соответствие протоколу:

extension MyModel: Parseable {
    typealias ParseableType = Self
}

Доступно на GitHub как Swift Package: https://github.com/makoni/parsable

[↵] открыть пост syntax-sugar-for-json-parsing-in-swift.md
-rw-r--r-- 526B 27 сент. 2018 · 859FE4A · ~1 мин

Select like a Boss для Safari в Mac App Store

select like a boss safari macos расширения приложения open source

Select like a boss for Safari

24 сентября вышла новая версия macOS - Mojave. А вместе с ней и Safari 12, который теперь поддерживает установку расширений только из Mac App Store. Пришлось запилить приложение с расширением.

Загрузить

[↵] открыть пост select-like-a-boss-dlya-safari-v-mac-app-store.md
-rw-r--r-- 2.1K 21 мая 2018 · 831A704 · ~1 мин

Конвертер из JPG в HEIF

jpg to heif converter приложения apps macos open source

Конвертер JPG в HEIF

Сегодня я решил поэкспериментировать с HEIF — форматом, который Apple завезли вместе с macOS 10.13 и iOS 11. Они говорили, что у него такое же качество при гораздо меньшем размере файлов.

Формат поддерживается в свежих версиях macOS и iOS, а последние модели iPhone умеют снимать в нём.

Я подумываю сжать свой домашний архив фото и видео. С HEVC (H.265) я уже экспериментировал, и результаты были отличные — я уменьшил размер видео, перекодировав их в HEVC прекрасной утилитой HandBrake.

Единственный способ сконвертировать JPG в HEIF (расширение HEIC), который я нашёл, — приложение «Просмотр» в macOS. Но мне было интересно, смогу ли я сделать это сам на Swift. Смог :)

Папка с 64 фотографиями с моего экшен-камеры весила 203 МБ в JPG. И всего 31,3 МБ в HEIC.

macOS и iOS поддерживают формат из коробки. И что интересно — фото в этом формате легко добавляются в библиотеку «Фото» и появляются на всех устройствах, использующих iCloud. Но если попытаться экспортировать такое фото из «Фото» — оно на лету сконвертируется в JPG, так что оригинальный HEIC, похоже, экспортировать нельзя.

Конвертер бесплатный и с открытым исходным кодом (но только под macOS): https://github.com/makoni/jpg-to-heif-converter

[↵] открыть пост jpg-to-heif-converter.md
makoni@arm1:~/blog$ cd .. // ↵ ко всем постам