Skip to main content

0.6.x

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.

LeechCraft 0.5.80 is released

Posted in

In this release we've mostly focused on the LMP and NetStoreManager modules, but other modules also got some interesting improvements. Also, it's time to announce the Monocle reader!

LMP

LMP, our music player, now has all proper logic for uploading songs to cloud services, playing back uploaded songs, as well as, for example, fetching playlists from such services. Support for exact clouds is added via modules, in accordance with LeechCraft way, and for now only MP3tunes.com service is supported. Since the foundation is already laid, adding other clouds like Google Music would be much easier.

Much like with device synchronization, one can also transcode the songs before uploading:
Cloud uploadingCloud uploading

As one may see from this screenshot there is now a nice stats label below the playlist, so that one can know exactly how much songs he added and their total play time.

Regarding playlist improvements, there are now different sort modes, so that one can now sort, for example, by file path or disable sorting at all. If the sorting is disabled, then it's possible to move and reorder tracks around with Drag'n'Drop, and the order of tracks addition is preserved as tracks are added.

Among cosmetic changes are fixed background colors in QML elements and optional ignoring of "The " when sorting artists in collection. This way The Autumn Offering will be between August Burns Red and Behold... The Arctopus. And shortcuts for different actions are configurable now, too.

The newer LMP also supports recently released liblastfm-1.0 which broke API compatibility with liblastfm-0.3.

NetStoreManager

NetStoreManager got initial support for the Google Drive cloud storage service:
Google DriveGoogle Drive

Its core has been reworked so now it can easily support other similar cloud storage services like Yandex.Disk. For now only uploading and fetching the list of already uploaded files works, but in the next milestone it'd have the rest of features, as well as automatic folder synchronization.

Since the original Yandex.Narod doesn't fit the new idea of NetStoreManager, its support will be removed after this milestone and replaced with Yandex.Disk.

Monocle

Though being available for some months already, this module only matured now enough to be announced. So, meet Monocle: our document reader. It already has quite enough features to use it on a daily basis for most tasks. It supports displaying one page or double-page spread, copying selection to image or text, scaling, width and height fitting, tables of contents, links, paginated navigation and printing. Monocle also integrates with the rest of LeechCraft so that it automatically opens a PDF document after a link to it is clicked, for example, in a browser or Azoth, and the document is downloaded.

PDF documentPDF document
FB2 documentFB2 document

Different formats are supported via different backend moudles, and for now only PDF and fb2 file formats are supported. There are two backends for PDF and one hand-written fb2 implementation.

PDF is supported either via Poppler library or through mupdf library. The later is discouraged, since the mupdf backend supports not all features that are supported by Poppler backend, but that may be fixed some time in the future. And it is built as a static library, so some magic is required to make it work in LeechCraft. For example, see this bugreport.

The main reasoning behind adding mupdf backend is that some claim it renders text much better than Poppler, but that's questionable.

Azoth

Azoth IM client also got its fair share of improvements.

A new plugin has been added, Azoth BirthdayNotifier, which notifies about birthdays of contacts in user's contact list. The dates are taken from contacts' vCards, so this feature obviously relies on them being properly filled out.

Azoth Xtazy now supports /np and /sharesong commands. /np pastes the name of the currently played song into current chat, while /sharesong uploads the song via plugins like NetStoreManager and pastes a link to it. The former works with both LMP and MPRIS players, the latter requires LMP only. This can be seen as yet one example of profits of LeechCraft architecture and integration.

Azoth now finally displays user's avatar in tooltips:

Moreover, tabs of conferences with unread highlight messages are now marked with a star sign ("*").

QXmpp, the XMPP implementation library forked by us, has been synced with the upstream. And seems like we're a bit closer to integrating our custom patches to QXmpp with the upstream version. Integrating means less mess, more chances to get into Debian repos, and is good and healthy for the Open Source community — why fork when we can cooperate? :)

Other modules

Aggregator now supports exporting feeds to PDF in addition to previously supported fb2. One can adjust the parameters of PDF export, like margins, fonts and font sizes, and paper size. The resulting PDFs are perfect for reading on eBooks like Amazon Kindle.

The issue reporter Dolozhee now supports fetching issue categories from our tracker during issue reporting. This way one can assign a category to the issue being reporterd right from Dolozhee interface.

Of course, there was a bunch of other improvements, so don't forget to check out our development digests if you're interested: #28 and #29.

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.

Syndicate content