Skip to main content

Version 2.1 released

ยท 4 min read
Ilian Sapundshiev
TagSpaces Core Team

Recently we released a new version of TagSpaces, containing many improvement, bug fixes and some major restructuring of the application. In this blog post we will highlight some of them.

Publishing the extensions under MIT licenseโ€‹

Probably the most important change in this release was the separation of all TagSpaces extensions from its core to separate modules/repositories. The majority of the extensions are now released under the permissive MIT license. The main driving force behind this decision was the hope that now it will be more easy for developers and advanced users to fork, extend and improve existing extension and of course create new one.

All TagSpaces extensions so far can be found listed and classified in the extensions area of this website.

ImageSwiper Perspective Extensionโ€‹

We developed a new perspective called ImageSwiper Perspective the application based on the popular PhotoSwipe library. This perspective is allowing you to browse and preview the photos and other kind of images from the current folder.

Handling file thumbnailsโ€‹

We have received many questions about the status of supporting thumbnails in TagSpaces. Previously, there was an option to load the whole image as thumbnails, which was causing performance issues on folders with many big images (e.g. your photo library). Starting with this version TagSpaces will try to find thumbnails in the .ts folder of every opened folder. In order a thumbnail to be correctly recognized as such, it have to be in PNG format and placed in a folder called .ts located in the current folder. The name of the thumbnail file should be exactly the same as the main file, but with the suffix .png. For example if the main files is called image1[tag1].jpg the thumbnails should be .ts/image1[tag1].jpg.png. Here is an example folder structure with generated thumbnails for some video files.

. โ”œโ”€โ”€ big_buck_bunny.mp4 โ”œโ”€โ”€ big_buck_bunny.ogv โ”œโ”€โ”€ big_buck_bunny.webm โ”œโ”€โ”€ device-2015-09-23-165620[android].mp4 โ”œโ”€โ”€ sample.3gp โ”œโ”€โ”€ sample_iPod.m4v โ”œโ”€โ”€ โ”œโ”€โ”€ โ””โ”€โ”€ .ts โ”œโ”€โ”€ big_buck_bunny.mp4.png โ”œโ”€โ”€ big_buck_bunny.ogv.png โ”œโ”€โ”€ big_buck_bunny.webm.png โ”œโ”€โ”€ device-2015-09-23-165620[android].mp4.png โ”œโ”€โ”€ sample.3gp.png โ”œโ”€โ”€ sample_iPod.m4v.png โ”œโ”€โ”€ โ””โ”€โ”€

As you can see this way you can have thumbnails for every kind of file type, which extends the general purpose suitability of TagSpaces.

We have created a simple bash script which creates recursively thumbnails from image files such as JPG, BMP, GIF or PNG in the appropriate place. The script is called and can be downloaded from the github repository. Prerequisite for this script is availability of the ImageMagick package on your Linux operating system.

The result after running the script on folder with many photos can be seen in the following screenshot.

Screenshot showing thumbnails of photos

Warning A common issue with sidecar files such as the generated thumbnails is their management on file operations such as rename, delete or move. We have solved this problem only partially by extending the delete file functionality with the ability to remove the thumbnail file in the .ts folder. This means that if you are using some other file manager for managing the folders in addition to TagSpaces (which will probably be the case), your .ts folder will be "polluted" in the mean time with thumbnails for files which were delete or moved.

Note The PRO version of TagSpaces will try to generate thumbnails automatically for many kind of files types on the first load of a given folder.

Migration of the IO API to Promisesโ€‹

The APIs for the access of the files and directories was completely rewritten for every platform supported by TagSpaces using the recently standardized Javascript Promises. This step allowed us to drop significant amount of old code, which greatly improved the stability and performance of TagSpaces.

JSDoc for TagSpacesโ€‹

During the migration to Promise we used the opportunity to extend the comments in the source code. So now there is a complete JSdoc based documentation of the IO APIs for all platforms, which is available here: