Skip to main content


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
  • 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 desktop files. For now it only supports visual fullscreen launcher, some say it resembles Unity a bit:

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 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

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.

Development digest #29

Posted in

Since the last development digest we've did a bunch of improvements here or there, and added a couple of new plugins.

The most exciting improvement is that NetStoreManager now supports Google Drive service, and its core was reworked so that 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. Since the original Yandex.Narod doesn't fit the new idea of NetStoreManager, its support will be removed after this milestone.

The other important module adds support for the service in LMP. Only playlists, transcoding and uploading works, but this module (and corresponding changes in LMP core) lay foundation for other services like Google Music.

The third added plugin is not that exciting, but has been requested quite a lot: it's a birthday notifier module for our Azoth IM client. It takes information about birthdays from contacts' vCards, and one can also configure the desired days on which to notify.

Среди прочих изменений:

  • Core: fallback to using external apps is now optional.
  • Core: fixed showing main window in some WMs.
  • Azoth: autoselect other resources only when a chat message is recieved.
  • Azoth: tooltip is updated on avatar changes.
  • Azoth: added default queries in Service Discovery.
  • Azoth: MUC icon is preserved on MUC tabs on account state change.
  • Azoth: MUCs with unread highlight messages are marked with "*" now.
  • Azoth: more compatibility with full Unicode JIDs.
  • Azoth: fixed a couple of bookmarks-related memory leaks.
  • Azoth ChatHistory: dates with logs for that day are displayed in bold.
  • Azoth ChatHistory: configurable amount of logs to show on one page.
  • Azoth Xoox: synced QXmpp with upstream.
  • Azoth Xoox: added icon for odnoklassniki.
  • Azoth Xoox: birthday field is now editable for self vcards.
  • Azoth Xtazy: added /np and /sharesong commands.
  • BitTorrent: optional flags for peers' countries.
  • Glance: nice Close button right on thumbnails.
  • LMP: support different sorting styles in the playlist.
  • LMP: support Drag'n'Drop and actions for reordering items in the playlist.
  • LMP: all found lyrics can be displayed, not the last found one.
  • LMP: faster prescaler for huge album arts in notifications.
  • LMP: fixed compatibility with taglib built without ASF or MP4.
  • NetStoreManager: other plugins can request uploads now.

Development digest #28

Posted in

Once again, last couple of weeks we mostly worked on LMP, or nice media player. What's also important, we've added some compatibility fixes, so BitTorrent can be built with Boost 1.50 now, and LastFMScrobble can be built with fresh liblastfm-1.0.

Adding support for liblastfm-1.0 revealed that a bunch of changes in it were like renaming a function here or a function there, and it's not clear why upstream did this in the first place: these changes bring no fixes, no new features, no improvements.

Also, small, but nice news is that Azoth now supports displaying avatars in tooltips, like this:

And here's the list of other important changes:

  • Aggregator: support exporting feeds to PDF.
  • Azoth: fixed a segfault when Ctrl+Clicking.
  • Dolozhee: fetch the list of issue categories and assign issues to them.
  • LastFMScrobble: expose some predefined radio stations like neighbour radio or loved tracks.
  • LMP: support adding artists to wishlists to plugins like Otlozhu.
  • LMP: support predefined radio stations from radio plugins.
  • LMP: playlist stats below the playlist.
  • LMP: configurable shortcuts.
  • LMP: close the Album Art display on Esc or mouse click.
  • LMP: added an option to ignore "The " when sorting artists (this way The Autumn Offering will be between August Burns Red and Behold... The Arctopus).
  • LMP: URLs are displayed in playlist instead of just the string "URL".
  • LMP: fixed background in QMLs.
  • LMP: more file types are now supported.
  • Otlozhu: support adding tasks from other plugins.
  • Vrooby: fixed a segfault on startup on some systems.
Syndicate content