Bug 246328 - [RESTORE] net-p2p/nicotine-plus: Graphical client for the Soulseek file sharing network
Summary: [RESTORE] net-p2p/nicotine-plus: Graphical client for the Soulseek file shari...
Status: Open
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-ports-bugs (Nobody)
URL: https://github.com/Nicotine-Plus/nico...
Keywords: feature
Depends on:
Reported: 2020-05-09 11:51 UTC by Daniel Menelkir
Modified: 2021-08-08 14:12 UTC (History)
3 users (show)

See Also:
koobs: maintainer-feedback+

nicotine.diff (31.21 KB, patch)
2020-05-09 11:51 UTC, Daniel Menelkir
no flags Details | Diff
nicotine-v2.diff (23.82 KB, patch)
2020-05-18 21:29 UTC, Daniel Menelkir
no flags Details | Diff
nicotine-v3.diff (23.82 KB, patch)
2020-05-27 02:46 UTC, Daniel Menelkir
no flags Details | Diff
nicotine-v4.diff (23.82 KB, patch)
2020-06-07 01:35 UTC, Daniel Menelkir
menelkir: maintainer-approval+
Details | Diff
nicotine-v5.diff (23.84 KB, patch)
2020-06-07 14:15 UTC, Daniel Menelkir
no flags Details | Diff
nicotine-v6.diff (25.04 KB, patch)
2020-06-13 20:44 UTC, Daniel Menelkir
menelkir: maintainer-approval+
Details | Diff
Updated to 2.0.1 (3.25 KB, patch)
2020-07-31 19:24 UTC, Daniel Menelkir
no flags Details | Diff
nicotine-v8.diff (3.35 KB, patch)
2020-07-31 20:37 UTC, Daniel Menelkir
no flags Details | Diff
nicotine-v9.diff (4.25 KB, patch)
2020-08-01 23:36 UTC, Daniel Menelkir
no flags Details | Diff
nicotine-v10.diff (3.42 KB, patch)
2020-10-16 12:29 UTC, Daniel Menelkir
no flags Details | Diff
nicotine-v11.diff (36.38 KB, patch)
2021-01-22 13:39 UTC, Daniel Menelkir
no flags Details | Diff
v12 (37.27 KB, patch)
2021-03-13 22:59 UTC, Daniel Menelkir
no flags Details | Diff
v13 (37.28 KB, patch)
2021-03-17 13:27 UTC, Daniel Menelkir
no flags Details | Diff
v14 (37.29 KB, patch)
2021-03-18 00:22 UTC, Daniel Menelkir
no flags Details | Diff
v15 (39.30 KB, patch)
2021-06-26 23:11 UTC, Daniel Menelkir
no flags Details | Diff
v16 (1.71 KB, patch)
2021-06-27 20:01 UTC, Daniel Menelkir
no flags Details | Diff
v17 (1.78 KB, patch)
2021-06-28 23:38 UTC, Daniel Menelkir
no flags Details | Diff
v18 (1.81 KB, patch)
2021-06-29 08:55 UTC, Daniel Menelkir
no flags Details | Diff
v19 (40.87 KB, patch)
2021-07-24 20:15 UTC, Daniel Menelkir
no flags Details | Diff
v20 (1.83 KB, patch)
2021-08-08 14:12 UTC, Daniel Menelkir
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel Menelkir 2020-05-09 11:51:05 UTC
Created attachment 214308 [details]

Nicotine+ is a graphical client for the SoulSeek peer-to-peer system.
Comment 1 Daniel Menelkir 2020-05-18 21:29:04 UTC
Created attachment 214614 [details]

Bumped to 7af728a.

Lot's of things happened, they cleaned the code upstream.
Comment 2 Daniel Menelkir 2020-05-27 02:46:54 UTC
Created attachment 214894 [details]

Since there's no commiter review yet, I'll keep testing new commits from time to time. The work is going pretty well and the developers are improving the software, so I think' it's a good idea.

There's no final release yet, but the software is fine to use it. I'm testing myself from time to time.
Comment 3 Daniel Menelkir 2020-06-07 01:35:49 UTC
Created attachment 215303 [details]

Lots of fixes upstream. Some issues are now fixed upstream so there's no need to patch setup.py anymore.
Comment 4 Mikael Urankar freebsd_committer 2020-06-07 10:04:31 UTC
No need to define GH_PROJECT
There is no version 1.4.2 upstream, use DISTVERSION=	g2020XXXX instead (Example 5.13. Using USE_GITHUB When Upstream Does Not Use Versions)

I'm not sure you're allowed to remove the "Created by" line.
Have you asked acm@ to take over maintainership?
Comment 5 Daniel Menelkir 2020-06-07 14:07:55 UTC
(In reply to Mikael Urankar from comment #4)

Ask for a package deprecated more than 10 years?
Comment 6 Daniel Menelkir 2020-06-07 14:08:53 UTC
(In reply to Daniel Menelkir from comment #5)

Oh, my bad. nicotine++ was deprecated in 2013, nicotine was in 2009. Anyways, both was deprecated a long time ago.
Comment 7 Daniel Menelkir 2020-06-07 14:15:14 UTC
Created attachment 215318 [details]

(In reply to Mikael Urankar from comment #4)

Comment 8 Daniel Menelkir 2020-06-13 20:44:09 UTC
Created attachment 215528 [details]

Bumped to commit d5bdfa1.
Comment 9 Daniel Menelkir 2020-07-31 19:24:38 UTC
Created attachment 216913 [details]
Updated to 2.0.1

Updated to last stable: 2.0.1
Comment 10 Daniel Engberg freebsd_committer 2020-07-31 19:54:04 UTC
Why is USES= tar:bz2 set if it's a tar.gz archive? This most likely also fixes why you need to set EXTRACT_SUFX in the first place.

Is you dependency list correct? Alpine, Arch and Void lists more deps....

Comment 11 Daniel Menelkir 2020-07-31 20:37:18 UTC
Created attachment 216917 [details]

(In reply to daniel.engberg.lists from comment #10)

Oops.. I was changing from using a commit to a release and forgot to remove some things, my bad. It's fixed now
Miniupnp wasn't working with my tests, maybe it's my setup. I've added the missing gobject too.
Comment 12 Daniel Engberg freebsd_committer 2020-07-31 21:43:59 UTC
Have a look at Example 5.39, I think that'll reduce quite a bit of code.

Give Poudriere a run as your port needs to build using it. It'll also catch dependency issues among other things.
Comment 13 Daniel Menelkir 2020-07-31 23:59:03 UTC
(In reply to daniel.engberg.lists from comment #12)

I can't see the new deps, am I missing something?
About the code size, afaik the old commiter code had way more code than mine that now is just quite tiny, you mean the python variables? I don't know how could be improved.
But fine, I'll just give up trying to bring nicotine back.
Comment 14 Daniel Engberg freebsd_committer 2020-08-01 00:27:57 UTC
Instead of doing .if statments you could use OPTION_RUN_DEPENDS= XXX instead.

GTK(+)3 is missing?

Is it intentional to have all options removed?

You're making good progress, it's easy to miss dependencies especially if you're only testing on a non clean system hence why I recommended using poudriere.
Comment 15 Daniel Menelkir 2020-08-01 18:02:29 UTC
(In reply to daniel.engberg.lists from comment #14)

My copy doesn't have any .if statements, only the original one from 2013 had.

GeoIP is pretty much useless for nicotine nowadays since that geoblock doesn't work as expected anymore. Without mutagen, most searches become unclean because nicotine isn't able to read id3.
Comment 16 Daniel Engberg freebsd_committer 2020-08-01 19:49:44 UTC
I see and I apologize for reading diffs sloppy :/
So just to be clear GTK3 is unnecessary?
Comment 17 Daniel Menelkir 2020-08-01 23:36:41 UTC
Created attachment 216948 [details]

Added the gtk30 missing USE.
Comment 18 Daniel Menelkir 2020-10-16 07:50:22 UTC
I'll try to update this today.
Comment 19 Daniel Menelkir 2020-10-16 12:29:51 UTC
Created attachment 218797 [details]

Bumped to 2.1.2.
Comment 20 Daniel Menelkir 2020-11-30 13:35:10 UTC
Should I gave up on this port?
Comment 21 Daniel Engberg freebsd_committer 2020-12-12 07:13:56 UTC
I don't think so, have you tried your patch using poudriere?
Having a quick look it seems you're missing plist?
Comment 22 Daniel Menelkir 2021-01-22 13:33:26 UTC
(In reply to daniel.engberg.lists from comment #21)
The name is also wrong, I'll close this one and open as a new name since it fits better. Also, at this point I've rewritten and there's nothing left from the original author of this port.
Comment 23 Daniel Menelkir 2021-01-22 13:39:23 UTC
Created attachment 221812 [details]

(In reply to Daniel Menelkir from comment #22)
Nevermind, they'll not change the name. Sigh.
Anyways, here's my last patch from zero (since the difference is way so far from the abandoned port from 7 years ago), It's being since may/2020 that I'm trying to adopt this port and I don't see this going anywhere.
Comment 24 Daniel Menelkir 2021-03-13 22:59:06 UTC
Created attachment 223242 [details]

Bumped to last release.
Comment 25 Daniel Menelkir 2021-03-13 22:59:52 UTC
I'll reopen this since there's more people interested on this port.
Comment 26 Dmitry Marakasov freebsd_committer 2021-03-17 10:57:31 UTC
Fails to install

===>  Staging for nicotine-plus-3.0.2
===>   nicotine-plus-3.0.2 depends on package: py37-mutagen>0 - found
===>   nicotine-plus-3.0.2 depends on package: py37-gobject3>0 - found
===>   nicotine-plus-3.0.2 depends on package: py37-gdbm>0 - found
===>   nicotine-plus-3.0.2 depends on package: py37-miniupnpc>0 - found
===>   nicotine-plus-3.0.2 depends on package: py37-setuptools>0 - found
===>   nicotine-plus-3.0.2 depends on file: /usr/local/bin/python3.7 - found
===>   Generating temporary packing list
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
sh: msgfmt: not found
running install
writing byte-compilation script '/tmp/tmpw_b3x7u6.py'
/usr/local/bin/python3.7 /tmp/tmpw_b3x7u6.py
removing /tmp/tmpw_b3x7u6.py
running install_data
error: can't copy 'mo/hu/LC_MESSAGES/nicotine.mo': doesn't exist or not a regular file
*** Error code 1

make: stopped in /usr/ports/net-p2p/nicotine-plus
Comment 27 Daniel Menelkir 2021-03-17 13:27:57 UTC
Created attachment 223361 [details]

I forgot gettext in USES.
Comment 28 Dmitry Marakasov freebsd_committer 2021-03-17 19:44:42 UTC
This probably only needs gettext-tools.

Now if fails on staging:

====> Running Q/A tests (stage-qa)
Error: Package names are not unique with flavors:
py37: nicotine-plus-3.0.2
py38: nicotine-plus-3.0.2
py39: nicotine-plus-3.0.2
Error: maybe use <flavor>_PKGNAMEPREFIX/SUFFIX.

Please ensure that the port builds successfully in poudriere before the next submission.
Comment 29 Daniel Menelkir 2021-03-18 00:22:51 UTC
Created attachment 223376 [details]

Here's my fix.
Comment 30 Daniel Menelkir 2021-06-26 23:11:52 UTC
Created attachment 226066 [details]

Update and cleanup.
Comment 31 Daniel Menelkir 2021-06-26 23:12:16 UTC
I've updated and check it up. Builds fine, I don't know what more it needs.
Comment 32 Kubilay Kocak freebsd_committer freebsd_triage 2021-06-27 02:04:37 UTC
Hi Daniel, thanks for updating the patch

A few review items:

COMMENT should match upstream setup.py:description modulo portlint requirements:

    setup.py: description="Graphical client for the Soulseek file sharing network",

Use MASTER_SITES=CHEESESHOP if a Python package is registered on PyPI, unless there is a compelling (temporary) case not to. [1]

Use PKGNAMEPREFIX, unless there is a compelling case not to. [2]

A dd python as a secondary category, unless there is a compelling reason not to. [3]  

Don't restrict USES=python:<version-spec> (currently only 3.8). <version-spec> is declarative ("supports" <version-spec> versions) not imperative ("use" <version-spec> versions). Upstream defines python_requires='>=3.5', (setup.py) [4]

All dependency <version-spec>'s should be defined as completely and accurately as possible to match upstreams declarations [5] . One example here is: 

  setup.py: install_requires=['PyGObject>=3.18'],

Related: Where are the dependencies for mutagen/miniupnpc declares?

GH_* defaults to PORTNAME and PORTVERSION already, and are unnecessary:


Python ports should use autoplist and (concurrent where necessary) [6] unless there is a compelling reason not to

Related, USE_PYTHON=concurrent must be used when a Python port installs files that are not Python-version specific in shared locations [7]. This one does:


The default concurrent files list may not pick up some of the above, so you may need to add entries to UNIQUE_FILES / UNIQUE_DIRS or related variables. See: /usr/ports/Mk/Uses/python.mk:concurrent and /usr/ports/Mk/Uses/uniquefile.mk

As far as what else would be good to progress this port, confirmation of QA (portlint and poudriere) [8] would be great. Test with both the default and a non-default Python version
If you need help with respect to this port, porting in general or other Python ports, just jump on our #freebsd-ports and/or #freebsd-python IRC [9] channels.

[1] https://wiki.freebsd.org/Python/PortsPolicy#MASTER_SITES
[2] https://wiki.freebsd.org/Python/PortsPolicy#PKGNAMEPREFIX
[3] https://wiki.freebsd.org/Python/PortsPolicy#CATEGORIES
[4] https://wiki.freebsd.org/Python/PortsPolicy#USES.3Dpython
[5] https://wiki.freebsd.org/Python/PortsPolicy#Dependencies
[6] https://wiki.freebsd.org/Python/PortsPolicy#USE_PYTHON_Features
[7] https://wiki.freebsd.org/Python/PortsPolicy#concurrent
[8] https://docs.freebsd.org/en/books/porters-handbook/testing/
[9] https://wiki.freebsd.org/IRC/Channels
Comment 33 Kubilay Kocak freebsd_committer freebsd_triage 2021-06-27 02:19:45 UTC
(In reply to Kubilay Kocak from comment #32)

Also, the upstream project provides tests, so adding TEST_DEPENDS,. defining a do-test target and confirming the test suite passes would be great.

See: https://github.com/Nicotine-Plus/nicotine-plus/blob/master/.github/workflows/tests.yml

It appears upstream have both integration and unit tests, the former require 'gir' [1], the latter don't [2]. Having both run and pass would be ideal.

[1]   xvfb-run python -m unittest
[2]   python3 -m unittest
Comment 34 Daniel Menelkir 2021-06-27 19:41:05 UTC
(In reply to Kubilay Kocak from comment #33)
I'm making the changes. One thing I don't get it is the test phase (I didn't find anything documented), how should I declare the test phase? Something like this?

Comment 35 Daniel Menelkir 2021-06-27 20:01:53 UTC
Created attachment 226081 [details]

I'll let here my work so far, I don't know how to deal with the test part (I'm pretty new with porting python stuff, so forgive me about it). I think I had cover everything you mentioned.
Comment 36 Kubilay Kocak freebsd_committer freebsd_triage 2021-06-28 03:35:04 UTC
(In reply to Daniel Menelkir from comment #34)

Ahh sorry.

TEST_DEPENDS are for dependencies on ports that the port depends on for the 'test' target' (like BUILD / RUN depends for other stages)

You can declare a test target as:

   @cd ${WRKSRC} && ${PYTHON_CMD} -m ....

There are also TEST_ENV and other TEST_* variables if you want to use them.
Comment 37 Daniel Menelkir 2021-06-28 23:38:08 UTC
Created attachment 226101 [details]

(In reply to Kubilay Kocak from comment #36)
Thanks. I've added the tests, everything seems to be pretty fine now.
Comment 38 Kubilay Kocak freebsd_committer freebsd_triage 2021-06-29 01:42:52 UTC
Please add any upstream declared <version-specs> to *_DEPENDS lines, and minor nits:

 - Add tab for MASTER_SITES line
 - Add -v (verbose) for unittest invocation (one liner per test in output)
Comment 39 Daniel Menelkir 2021-06-29 08:55:45 UTC
Created attachment 226103 [details]

(In reply to Kubilay Kocak from comment #38)
Comment 40 Kubilay Kocak freebsd_committer freebsd_triage 2021-06-29 12:20:54 UTC
(In reply to Daniel Menelkir from comment #39)

Looking good Daniel, well done!
Comment 41 Kubilay Kocak freebsd_committer freebsd_triage 2021-06-30 00:04:53 UTC
^Triage: Note: Severity's are only used for bugs, not features (new ports, even restorations). Wording needs to be improved.
Comment 42 Daniel Menelkir 2021-06-30 00:59:22 UTC
(In reply to Kubilay Kocak from comment #41)
My bad. I thought it could be related to restoration, lesson learned.
Comment 43 Daniel Menelkir 2021-07-15 16:33:14 UTC
Any progress on this? The port is good.
Comment 44 Daniel Menelkir 2021-07-24 20:15:09 UTC
Created attachment 226658 [details]

Update to 3.1.0


    Added alternative transfer speed limits for downloads and uploads, toggleable with a quick access button in the status bar
    Added an option to save downloads to subfolders based on the uploader's username
    Added a dropdown menu in file transfer views to clear various types of file transfers from the list
    Added an option to disable reverse file paths in search results and file transfer views
    Added an option to show private/locked search results and shared files from SoulseekQt clients
    Added an option to only allow trusted buddies to access buddy shares
    Added a context menu item in file transfer views to browse folders of file transfers, similar to search results
    Added checkboxes to 'Shares' preferences to easily specify whether a shared folder should be buddy-only or not
    Added a menu item to quickly toggle dark mode/theme, available under Menu -> View -> Prefer Dark Mode
    Added debug logging categories for downloads, uploads and chats
    Improved GUI accessibility for blind users using screen readers
    Finished downloads are no longer cleared on disconnect/exit
    Finished uploads are now restored on startup, unless previously cleared
    Spam filter plugin now filters phrases in chat rooms in addition to private chats
    Command aliases can now run chat commands, e.g. '/alias hello /away' will create a '/hello' command that runs '/away'
    Unified preferences related to the GUI, such as colors, icons and tabs, under a single 'User Interface' page
    A single preference now controls the maximum number of visible search results, instead of two separate preferences
    Added a basic 'headless' mode to run Nicotine+ without a GUI, available through the --headless command line flag
    Added the ability to start multiple instances of Nicotine+ when a custom config file is specified with the --config command line flag
    Added the option to specify a custom user data folder location (used for storing e.g. the list of shared files) with the --user-data command line flag
    Added plugin notifications for started/finished transfers
    Various deprecations related to plugins, listed in pluginsystem.py and logged on startup
    Various performance improvements
    macOS: minor UX improvements to better align with macOS conventions
    GNU/Linux and macOS: added an option to enforce a specific network interface, useful for virtual private networks (VPN)
    Removed 'direct private message' toggle, since the official Soulseek clients do not understand such messages
    Removed option to rotate tab labels, due to various issues with its implementation
    Removed support for Ubuntu 16.04 and Python 3.5


    Fixed an issue where file transfers did not reach maximum speeds on slow connections
    Fixed an issue where incorrect upload speeds were sent to the server
    Fixed an issue where failed downloads were marked as finished in cases where the download folder is not accessible
    Fixed an issue where double-clicking treeview column headers activated the first row
    Fixed an issue where the 'unread tabs' menu caused a crash if tabs were closed
    Fixed an issue where adding finished downloads to shared files could result in a crash
    Fixed an issue where searching a user's share could result in a crash after a refresh
    Fixed a crash when attempting to show file properties for a user/folder row
    Fixed various UPnP port forwarding issues with certain routers
    Added a workaround for cases where Soulseek NS clients send incorrect file sizes for large files
    Various GUI-related changes and improvements to reduce the number of inconsistencies
    macOS: keyboard shortcuts now use the Command key instead of Ctrl
    Windows: improvements to notifications to prevent duplicate tray icons
    Windows: fixed an issue where closed windows would appear in window peek
    Windows: fixed an issue where minimized windows were not displayed when restoring Nicotine+ from tray

Issues closed on GitHub

    Is there a way to exclude a file/directory from a share? + Some feedback (#924)
    Feature Request: Improve folder folding behavior + Add Collapse/Expand All (#981)
    Suggestion: Room wall improvements (#985)
    Practical: change share from public to buddy and vice versa. (#991)
    Version 3.0.1 and 3.0.2's Nicotine+.exe detected as a virus by Malwarebytes (#1012)
    Quicker access to speed throttling? (#1031)
    Copy/Paste keyboard shortcuts broken on Mac (#1342)
    Don't automatically clear downloads/uploads on quit (#1343)
    Notifications tray icons aren't removed automatically (#1354)
    Download to a *username* / subfolder (#1355)
    Drop official support for Ubuntu 16.04 (#1360)
    Headless support (#1362)
    Support for macOS High Sierra (#1366)
    Prevent Downloads from Displaying in the Debug Logging Window (#1371)
    Malware detection (#1373)
    Minimized window app won't show up when called from the system tray (#1374)
    Change close button position on macOS (#1376)
    Change menu action on macOS (#1377)
    Limit Buddy Shares to Trusted Buddies (#1382)
    Critical errors (#1383)
    Option to disable popup (#1386)
    Prevent notification balloon crashes on 32-bit Windows (#1393)
    ", line 127 (#1395)
    Auto-Size Columns Opens File in Player (#1396)
    Window Preview Shows Preferences Window (#1397)
    Crash report (#1398)
    Windows Defender / Trojan:Win32/Zpevdo.B ...False Positive? (#1401)
    Nicotine+ encountered a critical error and needs to exit (#1402)
    Middle-clicking user/share/room does not close it anymore (#1404)
    problem with access to some users. (#1405)
    Critical Error on master (#1406)
    Config error: can't decode 'searches' section 'group_searches' value (#1407)
    Transfer lists are cleared upon disconnection (#1409)
    Wishlists aren't being searched (#1410)
    Every downloaded file remains as "INCOMPLETE[number]Filename" (#1411)
    Exclamation point in the chat tab bar i have not seen before (#1413)
    Tried unpacking zip, scanner shows Gen:Variant.Bulz.495404 (#1414)
    Crash on getting File Properties at user or directory entry level in Download tab (#1415)
    in Download tab, the Queue Position column is empty (#1416)
    Windows Defender quarantined nicotine+ because of "Trojan:Win32/Zpevdo.B" (#1417)
    Tabs go out off the screen where there are many, they should use several lines instead. (#1420)
    Search main tab: wish tabs always extra. (#1422)
    Can't click anything when in fullscreen (#1423)
    'GeoIP' object has no attribute 'get_all' (#1426)
    Finished Downloads Autoclearing (#1427)
    'NetworkFrame' object has no attribute 'InterfaceRow' (#1430)
    Browse Folder via Downloads tab (#1432)
    Leech detector logs not showing up (#1433)
    Crash when adding to buddy list from User info tab (#1434)
    How to access option to close only window (keep sharing files)? (#1435)
    error (#1436)
    DownloadQueuedNotification on end of downloaded file (#1438)
    Shift + Mouse wheel a fall (#1440)
    Convert organization URL to lowercase (#1441)
    random crash? (#1442)
    Crash when closing private Chat tab (#1445)
    Critical error upon attempted chat (#1446)
    Incorrectly reported upload speed (#1449)
    UPnP does not work on this network (Windows) (#1453)
    select ValueError: too many file descriptors in select() (Windows) (#1456)
    UPnP not working (#1457)
Comment 45 Daniel Menelkir 2021-08-08 14:12:20 UTC
Created attachment 227017 [details]

Changed the name to py-nicotine-plus (as many other similar software in ports, not sure if it's right for nicotine) and removed the pkg-plist file (as it uses autoplist).

Updated to 3.1.1.
* Downloads denied with 'Too many files' or 'Too many megabytes' are now re-queued every 12 minutes
* Leech detector plugin opens private chat user tabs by default when sending complaints

* IMPORTANT: Fixed an issue where recently queued files were uploaded before older files (LIFO queue behavior)
* Fixed a crash when attempting to search files in joined rooms
* Queue positions are now properly updated for queued uploads
* Certain special characters needed to receive proper search results are no longer removed from search terms
* Fixed an issue where decimals were truncated before being saved (e.g. in the 'Anti SHOUT' plugin)
* Fixed an issue where an incorrect user tab was opened when issuing the /msg command

Issues closed on GitHub:
* non US locale float type variables in plugins cannot be filled
* Files uploaded in a random order