Skip to main content

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.

LeechCraft 0.5.75 is released

Posted in

Today LeechCraft 0.5.75 "This Glorious Nightmare" is released!

Just like in the previous release, we mostly focused on LMP module, which is our collection-oriented music player.

For example, it now supports music collection uploading to portable media players. Files can also be set to converted from lossless formats like FLACs to lossy but much smaller ones (in terms of file size) like Ogg Vorbis. One can also select the desired directory layout and file naming when uploading files. The transcoder is highly parallel: in fact, it can encode as much media files as you have CPU cores, so it makes sense to upload music in big batches. It's also run with minimum possible priority, so one can just continue to do your work while the media files are being converted. All this stuff looks like this:

Uploading progressUploading progress
Transcoding optionsTranscoding options

For now only those media players are supported that don't require any special MTP or i-device-related protocols, but support for the latter ones is planned. By the way we will be glad to get your help here — from writing protocols support and synchronization modules to testing!

Among other significant new features in LMP:

  • Support for social radio stations like Last.FM radio.
  • Obtaining personalized recommendations, recent releases by artists in user's library and biography retrieval.
  • Support for MPRIS.

Implementing collection synchronization support required us to make yet one more plugin: Vrooby. Vrooby is responsible for working with the underlying platform/backend to obtain information about removable storage devices. Other plugins then may query it to know what devices are available and where they are mounted, for example. It also allows the user to mount and unmount them via LeechCraft UI:

Devices popupDevices popup

Several things were optimized a lot, thanks to the Intel VTune profiler being for non-commercial use (it's available in Gentoo's science overlay, BTW). Particularly, startup times were reduced a lot (especially if all the required libraries are already in disk cache), and some places like contact list drawing in Azoth, our IM client, were optimized.

We've also worked hard on a couple of new plugins, one of which is Monocle, a modular document reader. It would be officially announced next time in milestone 0.5.80, though, so stay tuned!

There was a bunch of minor fixes and enhancements in other plugins, so check out our development digests, where all this is listed in more detail: #25, #26 and #27. One can especially highlight two small but highly requested features:

  • First, a nickname can be inserted into current chat tab message edit by Ctrl+clicking it in the roster.
  • Second, Azoth ChatHistory module finally got a small calendar widget to select dates to view history for, and links in chat logs are now clickable.

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

Development digest #27

Posted in

We have some good news: finally LMP is able to upload tracks from local music collection to portable media players! For now it supports only basic media players for which no MTP or iPod-related stuff is required. Support for MTP players and i-devices will be added later.

Of course, transcoding is supported, so that you can automatically convert big FLAC files in your local collection to a smaller lossy format like Ogg Vorbis. Anyway, it hardly makes sense to keep these large FLACs on players with such limited memory and typically crappy sound.

For this to work, a new plugin has been introduced: meet Vrooby! It is LeechCraft's removable storage device manager, allowing the user to mount and unmount devices as well as aiding other plugins in working with such devices.

Poshuku WYFV plugin has been removed as obsolete and unsupported.

Among other changes:

  • Core: tab bar can be moved to the bottom.
  • Core: allow to disable resource caching via the new --no-resource-caching flag.
  • Core: lots of optimizations.
  • Core: fixed a possible segfault when there are no handlers for entity.
  • AdvancedNotifications: fixed QML notifier on some multimonitor systems.
  • Azoth: support inserting corresponding nicknames via clicking in the roster.
  • Azoth Herbicide: block authorization requests as well.
  • Azoth p100q: fixed recommending comments.
  • Azoth Xoox: action for modifying self vCard in account menu.
  • Azoth Xoox: fix for client connection handling, and a possible segfault.
  • LastFMScrobble: added support for liblastfm-1.0.
  • LMP: show full-scale album art when requested.
  • LMP: support copying properties from the properties display widget.
  • LMP: properly handle collections with unscannable items.
  • LMP: fixed a segfault on certain loaded plugins combinations.

Development digest #26

Posted in

This week we got a license for Intel VTune CPU profiler for non-commercial use, so some stuff was heavily optimized. For example, LeechCraft now starts much faster, especially if Azoth has a bunch of items in its contact list.

So, here's the changelog:

  • Core: added --list-plugins and --safe-mode options. The former just lists the plugins that LeechCraft has found, and the latter starts LeechCraft without any of them, allowing to disable those failing.
  • Core: added Select All and Select None buttons to the plugin manager.
  • AdvancedNotifications: added Urgent hint handler.
  • Azoth: message text is stored in tab info, so it's recovered as well.
  • Azoth: MUCs are rejoined on tab recovery.
  • Azoth: added an option to alias KP_Enter to Enter.
  • Azoth: even non-chat nicknames can be dragged now from contact list.
  • Azoth: multiple performance improvements.
  • Azoth AdiumStyles: support for SenderColors.txt.
  • Azoth ChatHistory: added a calendar for choosing dates.
  • Azoth ChatHistory: clickable links in History.
  • Azoth StandardStyles: added a bunch of standard styles by Pendruk.
  • Azoth Xoox: severely optimized load time, especially with big roster.
  • LastFMScrobble: allow the user to choose the language of the info.
  • Liznoo: hide the dialog after second click on its action.
  • LMP: added support for MPRIS.
  • LMP: directory iteration now optionally supports symlinks.
  • LMP: track properties for Now Playing, FS, Collection and playlist.
  • LMP: EnableScrobbling setting is now respected.
  • LMP: some scanning fixes, a couple of segfaults has been fixed too.
  • LMP: fixed compatibility with TagLib < 1.7.
  • LMP: fixed some segfaults.
  • Poshuku: removed tooltips generation.
  • Sidebar: support embeddind dock visibility actions.
  • TabSessManager: fixed Select All and Select None buttons.
  • TabSessManager: fixed tab close handling.

Development digest #25

Posted in

Since the 0.5.70 release, we've added the Lads plugin, which provides some basic integration facilities with Unity, like displaying LeechCraft menu in Unity's Launcher.

Except that plugin, we mostly worked on LMP, and had some fixes in other plugins. So here are some changes:

  • Azoth: updated contact list delegate.
  • Azoth: highlighting groups is now optional.
  • Azoth Xoox: always show JID in the vCard.
  • GMailNotifier: if the username isn't set, the error is shown only once.
  • Kinotify: support for X11 systems fullscreen detection.
  • LastFMScrobble: support for requesting recommended artists.
  • LastFMScrobble: support for Last.FM radios.
  • LastFMScrobble: support for requesting recent releases in user's library.
  • LastFMScrobble: some scrobbling queue fixes.
  • LastFMScrobble: fetch artists biography.
  • LMP: support radio sources & allow one to play radio streams.
  • LMP: display personal recommendations for the user.
  • LMP: display recent releases for user's musical taste.
  • LMP: display biography of the currently playing artist.
  • LMP: configurable transition time between tracks.
  • LMP: current item is saved between playlist modifications.
  • LMP: album art can be viewed in full size in some places.
  • LMP: support undo/redo in playlist.
  • LMP: notify when local collection is updated.
  • LMP: on-start directory iteration is async now.
  • LMP: many library scanning fixes.
  • LMP: album time is properly reduced on items removal.
  • Poshuku CleanWeb: fixed a segfault on premature frame destruction.
  • Sidebar: LeechCraft menu is shown here now.
  • TabSessManager: don't add empty tabs to the unclose list.
  • TabSessManager: delayed session saving.
Syndicate content