Skip to main content

LeechCraft 0.5.90 is released

Posted in

LeechCraft 0.5.90 "Architect of The Apocalypse" is released!

This is one more "long" milestone — more than two months have passed since LeechCraft 0.5.85, but we've done quite enormous amount of work and we are proud to present this release.

LMP

LeechCraft Music Player got some new tasty features and improvements, particularly coupled with our new plugins MusicZombie and TouchStreams, providing access to MusicBrainz database and VK.com audio collection respectively.

For example, if MusicZombie plugin is present, LMP can show the discography and tracklist in biography view and in recent releases view:

Paired with TouchStreams plugin it can also automatically start streaming tracks from VK.com (but that requires an active VK.com account, at least for now) from a variety of places, like similar artists, recommendations, recent releases and hypes. Generally a loudspeaker icon appears near an item if it can be streamed:

By the way, fetching hyped artists and tracks — both most popular and most growing ones — is another new feature of LMP in this release, so you can stay tuned to all new trends with LMP!

Thanks to the modular architecture of LeechCraft, adding another music database (instead of MusicBrainz) or another stream source (instead of VK.com) is just a matter of writing corresponding MusicZombie- or TouchStreams-like plugins without ever touching LMP.

LMP was also optimized a lot:

  • library loading became about two orders of magnitude faster;
  • file modification time is considered now when rescanning, so collection rescans on file changes are much, much faster now, as well as collection rescans on startup.

SB2

Here we come to the greatest part of this release: the new SB2 plugin, which is our next-generation sidebar. Its UI is implemented entirely in QML, which allows one to write nice, informative and fancy widgets (or, as we call the, quarks) with animation and runtime graphics generation, which was nearly impossible with the old QAction-based sidebar. Quarks can be written either entirely in QML or in hybrid approach, where the logic is implemented in C++ and QML is for presentation only.

SB2 offers plugin launcher (with neat indication of what tabs are already opened, and a quick switcher between those), tray and quick launch areas and almost everything that the old sidebar was capable of, and more:

There are already some quarks exclusive to SB2, like the TPI plugin, standing for Task Progress Indicator:

or Lemon, which monitors traffic usage on network interfaces:

Of course, no such thing goes without analog clock, which will be available through LackMan package manager. Here it is near Lemon indicators:

TPI and Lemon have parts written in C++, but the analog clock quark is in pure QML, which allows us to deliver it via LackMan.

SB2's intrinsic vector nature also allows it to be scaled without any problems:

SB2 also lays foundation for things we'd like to implement in next versions. For example, we have plans for a Dashboard tab which will also contain quarks ranging from yet one more analog clock to, say, RSS quark, weather quark or calendar with social networks integration. This somewhat resembles KDE's Plasma (and, in fact, is partially inspired by Plasma, hence the name).

Color themes

Due to increasing usage of QML in LeechCraft, support for color themes has been added. These themes are based off KDE's ones, but also offer more colors to customize all those QML things, for example, in LMP and SB2:

Blogique

Another new plugin in this release is Blogique, a modular blogging client. For now it only works with LiveJournal via the Metida subplugin, which already supports all post fields available ranging from the post body itself to mood, location and avatar. It also supports fetching all the entries from a blog as well as local drafts and backups:

LHTR module is used for editing (potentially any other editor can be used, if written), providing WYSIWYG functionality.

Adding other blog engines is fairly easy — it's just a matter of adding another backend subplugin (much like protocols are added to Azoth or formats are added to Monocle). No post options are hardcoded into Blogique core, so the UI displays only what's supported by exact blogging engine.

BitTorrent

Only five years have passed since the introduction of the BitTorrent plugin, and as many users asked we've finally moved it to a separate tab:

Only basic info is left in Summary:

Also, the code has been migrated to the new libtorrent 0.16 API where possible, but it's still compatible with libtorrent 0.15.

Data filters architecture

A new concept of data filters have been added.

Basically, a data filter plugin is everything that can eat some text, an image, or anything, and produce a meaningful result. For example, Pogooglue plugin, which takes a string and opens a web browser window for Googling that string, is conceptually a data filter. SeekThru module, which provides OpenSearch support, is a data filter as well. In this milestone this concept has been unified, and SeekThru and Pogooglue implement all the respective interfaces.

What that means for a user — there is a context menu in Azoth or Poshuku that offers to handle selected text with text-supporting data filters:

In future more data filters will be added, for example, an image filter that uploads its input to an imagebin, or another image filter that applies blur and posts the image to Instagram.

Other plugins

Monocle document reader now supports PostScript documents, and format backend selection is now content-based, not extension-based. Monocle now also supports smooth scrolling, and a few issues have been fixed.

Poshuku browser now properly formats and highlights XML instead of showing it as-is:

Among other significant changes:

  • Azoth, our modular IM client, got a bunch of small fixes and improvements, particularly, its load time has been optimized a lot.
  • Kinotify window styles have been fixed on Mac OS X.
  • Liznoo power manager now supports Mac OS X.
  • Pierre plugin now supports displaying a badge on Mac OS X labels.
  • A bunch of .desktop-files have been added, so now you can open torrents, PDFs, and XMPP links in LeechCraft from any other application that's FreeDesktop-compliant.
  • libotr-4 compatibility in Azoth OTRoid.

Packages and builds for supported distros and OSes will be available soon. Watch your package manager or our download page! The source archive is already available.

LeechCraft 0.5.85 is released

Posted in

Today LeechCraft 0.5.85 "Risen Through The Ashes" is released!

We've released LeechCraft 0.5.80 almost two months ago, and we planned to release 0.5.85 somewhere in mid-September, but the changes are worth the delay.

First of all, it's worth saying in the very beginning that we've merged our QXmpp "feature fork" with upstream QXmpp, so upstream version should be used from now on. In fact, our repo on Github is already deleted to avoid confusion. QXmpp 0.7.4 (and hopefully upper) will do for LeechCraft 0.5.85.

Mac OS X

Moreover, LeechCraft can finally be built and run on Mac OS X:

The resulting app bundle is tested on a couple of Mac OS X 10.7 and 10.8 machines and seems to work, though the build is very-very experimental (but seems like it's already much more stable than Windows version). LeechCraft is built using standard toolchain coming with XCode, with the clang compiler.

A new plugin has also been added, Pierre, which deals with Mac OS X integration. For now it only adds a Mac-style menu bar and a button for maximizing LeechCraft into a separate workspace, but more stuff is to come.

And, regarding new plugins, there is Launchy, a new plugin for launching applications and opening LeechCraft tabs. It is UNIX-only and fetches the list of applications from the freedesktop.org desktop files. For now it only supports visual fullscreen launcher, some say it resembles Unity a bit:

CleanWeb

Our AdBlock+-compatible ad blocker, the Poshuku CleanWeb module, was optimized and improved a lot.

First, now CleanWeb supports a much wider subset of AdBlock+ rules, including separator-based rules and selector-based element hiding for those elements that can't be blocked during load time, like textual ads.

Second, CleanWeb performance was increased by an order of magnitude, and now it optionally supports using PCRE as regexp matching engine, since QRegExps are quite slow. In fact, separator-based rules are only enabled when PCRE is used.

Here are some numbers for rutracker.org main page and EasyList + RuAdList rules, where cummulative time spent matching all rules for all issued requests is measured:

  • Before all optimizations: ≈1500 ms.
  • After optimizations with QRegExp engine: ≈700 ms.
  • PCRE: ≈280 ms.
  • PCRE + JIT (available with PCRE ≥8.20): ≈200 ms.

The numbers are self-explanatory.

Moreover, element hiding performance was also measured on a complex Google+ page:

  • QRegExp engine: ≈5300 ms.
  • PCRE: ≈410 ms.
  • PCRE + JIT: ≈235 ms.

Here the difference is even more obvious.

LMP

The next (and possibly the biggest) part of this release is LMP, our audio player module (paired with LastFMScrobble module providing Last.FM integration), which has been improved a lot.

LMP now features revamped radio support and a new plugin, HotStreams, has been added to provide access to tons of radio streams from radio stations like Digitally Imported, SomaFM or from huge streams directory at dir.xiph.org:

Moreover, LMP now is even more social: paired with LastFMScrobble, it is now able to fetch personalized recommended concerts and festivals. Of course, this is location-aware, so only events near you will be shown. It's quite easy to add support for other such social events aggregators, if any.

Playlist loading is now asynchronous, so you may add all your collection to the playlist and the rest of LeechCraft will be usable while all your songs are added. To handle such huge playlists a playlist search has been added. Search is quite intellectual and also counts such fields like genre or album date. Also, playlist memory usage has been optimized: all album art pixmaps are scaled down to 48x48 in the playlist.

Regarding collection, LMP now can remove tracks from collection or erase them from disk. It also watches files and directories in collection for changes, and changed items are automatically rescanned in case, for example, tags have been changed.

Transcoding has been improved. More formats are supported now, like AAC or WMA, and user is free to choose the desired bitrate type (constant or variable). Moreover, the list of supported formats is dynamically fetched from FFmpeg at runtime, so only those formats that will actually work are displayed:

And, speaking of transcoding and device synchronization, LMP DumbSync subplugin, which is used to upload music to non-MTP and non-iThing devices, now also supports uploading album art with the music.

Collection statistics dialog is also available:

There are also lots of other fixes and improvements, like improved biography and similar artists templates, with nice effects like background blurring on photo view:

NetStoreManager

Moving on to other plugins, the NetStoreManager module now supports synchronization, watching the file system for changes to automatically upload new or changed files in watched directories. For now the file system watcher is inotify-only, so this won't work on platforms other than Linux. And, of course, this is quite an experimental feature for now — use at your own risk.

Drag'n'drop support was also enhanced. Now files can be moved between directories using drag'n'drop, for example.

The Yandex.Narod backend module has been removed: NetStoreManager isn't an "upload-and-forget" kind of thing anymore, and the features of the Yandex.Narod service don't match NetStoreManager's aim anymore. Yandex.Narod will be replaced with Yandex.Disk service some time in the future.

Azoth

Azoth's (our IM client) and Azoth Xoox's (XMPP implementation) file transfer capabilities were also improved. Azoth now supports sending files both by protocol means and via modules like NetStoreManager, all from a single handy dialog:

That's yet one more profit from LeechCraft-style modules integration, by the way.

Also, drag'n'drop support for file sending was improved significantly. Azoth Xoox now supports setting a SOCKS5 file transfer proxy, and by default it autodetects the one offered by the Jabber server.

Azoth Autopaste module now supports selecting syntax highlighter and choosing the paste service when pasting:

Azoth Metacontacts module now shows its pseudo account in the roster only if there are metacontacts.

Other plugins

Monocle, our modular document reader, got support for the DjVu format, though quite basic for now, via the Monocle Seen plugin. Seen doesn't support things like table of contents yet, but this will be implemented in next releases.

Among other significant changes:

  • The Liznoo power management module now supports FreeBSD platform, thanks to the contributions of a guy who chose to remain anonymous.
  • Settings tab has been cleaned up by moving subplugins' settings into their corresponding parent plugins pages. Moreover, it now supports searching, so only those pages that match the search query will remain enabled.
  • Core now supports setting startup password, though this security measure isn't recommended because it can be easily circumvented.
  • Poshuku now has menus for page history navigation under corresponding buttons, and it features a reworked bookmarks management UI.

Of course, there was a bunch of other improvements, and curious ones can see the corresponding development digests: #30, #31 and #32.

Packages and builds for supported distros and OSes will be available soon. Watch your package manager or our download page! The source archive is already available.

Development digest #32

Posted in

A month has passed since previous development digest, and LeechCraft got some huge improvements.

First of all, the NetStoreManager module now supports synchronization, watching the file system for changes to automatically upload new or changed files in watched directories. For now the file system watcher is inotify-only, so this won't work on platforms other than Linux. And, of course, this is quite an experimental feature for now — use at your own risk.

Then, Poshuku CleanWeb module was optimized and improved a lot. Particularly, its performance was increased by an order of magnitude, and it now supports using PCRE as regexp matching engine, since QRegExps are quite slow. CleanWeb now supports a much wider subset of AdBlock+ rules, including separator-based rules and selector-based element hiding.

Azoth and Azoth Xoox's file transfer capabilities were also improved. Azoth now supports sending files both by protocol means and via modules like NetStoreManager, all from a single handy dialog. Also, drag'n'drop support for file sending was improved significantly. Azoth Xoox now supports setting a SOCKS5 file transfer proxy, and by default it autodetects the one offered by the Jabber server.

LeechCraft now also supports searching the settings: the pages and sections containing the search terms are left enabled while the rest is disabled when searching.

Also, LeechCraft now builds and runs successfully on Mac with clang, and a new plugin has been added, Pierre, which provides some basic integration with Mac OS X.

Other changes:

  • Core: use system style by default instead of Plastique.
  • Core: workaround for QTBUG-13175.
  • AdvancedNotifications: proper notifications view height.
  • Azoth: user-visible strings are properly escaped in contact tooltips.
  • Azoth: fixed Ctrl+1 handling.
  • Azoth ChatHistory: fixed links not being clickable sometimes.
  • Azoth Metacontacts: show dummy account only if there are metacontacts.
  • HotStreams: fetch radio list from dir.xiph.org.
  • LastFMScrobble: fixed tags ordering in biography info.
  • LastFMScrobble: fixed build with Debian liblastfm snapshot.
  • LMP: playlist loading is now asynchronous.
  • LMP: autodetect and rescan changed files.
  • LMP: remember last used events/biography/etc providers.
  • LMP: clickable artist names in biography/similar/etc view.
  • LMP: choosing next track now respects play mode.
  • LMP: fixed Repeat Album play mode.
  • LMP: improved transcoding options selection: now more formats are supported and their list is dynamically obtained from FFmpeg.
  • LMP: added track move up/down buttons.
  • LMP: rescan fixes.
  • LMP DumbSync: upload album covers as well.
  • Monocle: fixed fitting ratio calculation.
  • Poshuku: menus for back/forward history navigation.
  • Poshuku: reworked bookmarks management UI.
  • TabsList: handle Enter, Return, Home and End buttons.
  • TabSessManager: tabs order is now saved as well.

Development digest #31

Posted in

This time we are here with a couple of new plugins as well as a usual bunch of fixes and improvements in already existing modules.

One of the two new plugins is Monocle Seen, DjVu backend plugin for our document reader. For now it's quite basic and only supports, well, rendering the documents. Support for TOCs and similar stuff will come later.

Then there is Launchy, a new plugin for launching applications and open LeechCraft tabs. It is UNIX-only and fetches the list of applications from the freedesktop.org desktop files. For now it only supports visual fullscreen launcher, some say it resembles Unity a bit:
LaunchyLaunchy

Another improvement worth noting separately is that Azoth Autopaste module has been upgraded a lot, so now it supports choosing syntax highlighting of the text that's pasted to pastebins, and the pastebin service itself can be chosen. Though, for now only codepad.org is available.

The LMP audioplayer paired with LastFMScrobble is now able to fetch personalized recommended events. Of course, this is location-aware, so only events near you will be shown. It's quite easy to add support for other such social events aggregators, if any.

And finally we synced our QXmpp fork with the upstream, pushing all the required patches! So now the following should be used to checkout sources:
git clone https://code.google.com/p/qxmpp

Among other changes:

  • Core: support restaring LeechCraft from LeechCraft.
  • Core: support setting startup password.
  • Azoth: fixed a rare segfault where nick hash was negative.
  • Azoth: leave chat view enabled when the other contact is deleted.
  • Azoth: added "clear line edit" to roster filter.
  • Azoth Vader: online/offline status handling fixes.
  • Azoth Xoox: properly reconnect after account changes.
  • Azoth Xoox: logging all data to file is now optional and is disabled by default.
  • DBusManager: expose plugins like NetStoreManager via D-Bus.
  • LMP: detect deleted files.
  • LMP: tracks can now be removed from collection or even from disk via UI.
  • LMP: properly re-add root paths on rescan.
  • LMP: directory iterator now asynchronous in FS watcher.
  • LMP: scale pixmaps to 48x48 in playlist, conserves memory a lot.
  • LMP: play on Enter/Space/Return.
  • LMP: support playlist searching.
  • LMP: handle links in biography and similar views.
  • LMP: fetch artist image for radio tracks.
  • LMP: support banning current track.
  • LMP: support deleting static playlists.
  • LMP: support Phonon in non-KDE installations.
  • LMP: "clear line edit" in collection and playlist filters.
  • LMP: background blurring in QML templates.
  • LMP: lots of small QML template fixes and improvements.

Development digest #30

Posted in

Only a week has passed since the 0.5.80 release, but we've already done quite a lot!

First of all, radio support in LMP has been reworked, and a new plugin has been added, HotStreams, which provides access to lots of different radio stations, like the ones on Digitally Imported, SkyFM, SomaFM and more.

Then NetStoreManager has been improved a lot and now better supports intuitive drag'n'drop operations. Also, the NetStoreManager's aim is a bit different today from what it was planned for almost a year ago, so the initial Yandex.Narod service subplugin has been removed as being obsolete. When we settle with the Google Drive support, Yandex.Narod will be replaced with a full-blown Yandex.Disk integration module.

Third, the Liznoo power management module now supports FreeBSD platform, thanks to the contributions of a guy who chose to remain anonymous.

And the settings tab has been also cleaned up a lot: subplugins' settings now reside in their parent plugins settings pages.

There is also a bunch of other smaller changes:

  • Core: use native file dialogs.
  • Azoth: adjust variant chooser to contents.
  • Azoth: fixed non-expanding smiles in smiles chooser.
  • Azoth: MUC-aware groups sorting (MUC groups are now at the bottom).
  • Azoth: optional separate MUC log.
  • Azoth: fixed handling of tabs losing focus.
  • Azoth: fixed several segfaults.
  • Azoth Acetamide: support 307, 310, 320, 378 answers for UnrealIRCD.
  • Azoth Acetamide: default IRC port is 6667 now.
  • Azoth p100q: support in-place insertions instead of replaces.
  • Azoth p100q: fixed last ID shortcut (it's Ctrl+Shift+P now).
  • Azoth Xoox: detect and eliminate duplicate bookmarks.
  • Azoth Xoox: fixed a bug in stanza generation in XEP-0016.
  • Azoth Xoox: proper Cancel/Auth error handling.
  • Azoth Xoox: don't reconnect on account nick change.
  • Dolozhee: fixed reporting Core issues.
  • Kinotify: configurable screen corner for the notifier balloon.
  • LackMan: remove caching.
  • LMP: added listview-based tabs switcher.
  • LMP: added buffer status indicator.
  • LMP: added collection statistics dialog.
  • LMP: new collection items are added immediately.
  • Poshuku: fixed error page template.