$ show 0xd34df00d/leechcraft
LeechCraft is a modular, cross-platform desktop internet client built with C++ and Qt. It provides a plugin-based architecture where each plugin implements standard interfaces (IInfo, IPlugin2, IHaveSettings, IHaveTabs) and can be dynamically loaded. The core handles plugin loading, entity-based inter-plugin communication, settings management via XML dialogs, and a hook system for customization. Plugins cover a wide range of functionality: instant messaging (Azoth with XMPP/IRC/Tox), web browsing (Poshuku), RSS/Atom feed aggregation (Aggregator), music player (LMP with GStreamer), document viewer (Monocle with PDF/ePub/DjVu), email client (Snails), BitTorrent client, system monitoring, power management, and more. The codebase uses modern C++20 coroutines for async operations, a custom compile-time ORM (oral) for SQLite persistence, and functional utilities (Either, Visitor, ScopeGuard). Despite its ambitious scope and well-structured plugin system, the project shows signs of age: many plugins have incomplete translations, deprecated Qt patterns (old-style SIGNAL/SLOT macros), and external dependencies that may be difficult to build with current toolchains. The last meaningful development appears to have stalled, making the repository more valuable as a reference for plugin architecture and Qt patterns than as an actively maintained application.
The LLM identified 4 files worth highlighting for reuse:
Provides a generic Either<L, R> type for functional error handling without exceptions. Supports mapping, binding, and visitation. Isolated utility that can be extracted into any C++17 project for railway-oriented error handling.
Implements a ScopeGuard and ScopeGuardOnExit pattern for RAII-style deferred execution. Supports dismissal and conditional execution. A clean, header-only utility that can be reused in any C++ project for guaranteed cleanup.
A lightweight, compile-time ORM for SQLite that maps C++ structs to database tables using template metaprogramming. Provides type-safe queries, automatic schema generation, and transaction support. Demonstrates advanced C++ template skills and can be extracted for any SQLite-based project.
Defines a Task<T> type for C++20 coroutines, with support for co_await on QNetworkReply, timers, and other awaitables. Includes utilities like Channel, Throttle, and InParallel. A well-crafted coroutine framework that can be reused in Qt or standalone projects needing async operations.