Public Build 5: Unicode filenames, improvements to peer messaging and uploading, user context menus

Many thanks to user audiophilepj for his help hunting down some of the most stubborn bugs in the area of peer messaging and uploading, mostly to do with TCP connections more unresponsive than usual due to possible combinations of operating systems and/or routers. Many of the problems that have been fixed as a result of his diligent testing and posting of crash reports echo of issues that have long eluded me in the original Soulseek client.

Also thanks to user Elfy for pointing me in the direction of UTF-8 as an elegant solution to the problem of supporting Unicode filenames without breaking ASCII compatibility with the original client. SoulseekQT can now share Unicode folders and filenames, which will appear to other SoulseekQT clients when browsing, searching and downloading. Original clients will see the raw UTF-8 ASCII representation of these filenames and folder names instead of the actual Unicode characters, but should still be able browse and download them.

Finally I've implemented user context menus as a way to easily browse users' shares, message them or add them to your user list from anywhere they're listed. My original inclination was to rely on the action bar for all such functionality, but it's just not nimble enough to handle this sort of thing right now.

Windows and Mac versions are available on the download page!

Cheers, Nir

Comments

I got an error immediately upon launch in the Mac version...

Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Crashed Thread: 0

Dyld Error Message:
Library not loaded: QtGui.framework/Versions/4/QtGui
Referenced from: /Applications/SoulseekQT.app/Contents/MacOS/SoulseekQT
Reason: image not found

Is this because I do not have the Qt framework installed? If so, can it be included? I think at this point it should be bundled in by default.

Okay, I've updated the link for the Mac version of Public Build 5 on the download page with a DMG that includes Qt, as before.

Awesome, thanks Nir. So far so good. The only thing i see in the Mac version is that the port miniupnp is configuring is 2235 and it is not closing/removing it on quit. I am using a router with dd-wrt and i don't have any issues with other programs that use miniupnp, i.e. Transmission, etc.

hi nir thanks for the new version, definitely an improvement over older build :)

anyway i found one weird bug on this version (maybe it was there also on older ones).
when i browse someone's files, when the share is ready one icon appears on the "second row" from the top with the name of the user whom i browsed the share. if i get to his share clicking on that icon everything is all right, if i access his share from the shares tab directly without clicking the icon, when i close the user's share, if i click again on the icon (that never disappeared) the client crashes, always.

maybe that can help..

i'm still looking forward to be able to add friends directly from user list tab, or a way to import my old user list.

thanks again for your hard work !!

Thanks for the kind word! I'm aware of this crash bug involving the event bar, and it will be fixed soon. I'll try to get to manual friend addition as soon as I can.

Working perfect on 10.7! The only issue bugging me is the icon missing when not running. Other then that, I'm a very happy soulseeker :) Thanks Nir!

Thanks Phil! I'm still getting the occasional crash, working hard to root out every last one I find. I'll do my best to fix the icon thing for the next public build, I couldn't get it to package it right the last time.

I apologize. I jumped the gun. Qt works fine in OSX 10.7 Lion, however, I noticed the cpu runs at 100% in Activity Monitor. Qt uses 0.1% in Snow Leopard. I'll be reinstalling Snow Leopard on my MacBookPro :) Looks like we will be waiting for an update from Qt.

More crappy news. I caught slskQt running at 100% on Snow Leopard. I thought this was a Lion problem.

files.me.com/audiophilephil/2huawt

I'll try and pin what is causes the cpu jump. It doesn't always happen, but when it does, it gets those dusty fans running :)

I wonder if this only happens when you're limiting upload speed?

That's it!

As soon as I turn on upload speed limiting, cpu climbs to 100%. A second after I uncheck the limit, it drops back to 0.5%

So slskQt does work fine in Lion :)

It's apparent the timers are screwing up something bad on Mac. I'll see what I can figure out on my end. Good to know it's not a Lion-specific issue!

I may have something for you! I've been spending the last couple of days reworking the upload transfer code from scratch to operate in a separate thread instead of using events on the main thread, and I'm already seeing higher upload speeds on both Windows and Mac (much higher in the Mac virtual machine). Not only does upload speed limiting seems to work now, but I haven't seen too much of the CPU being utilized in Activity Monitor. As this is a lot of new code you might run into new problems, but here's what I have for now:

SoulseekQt-UploadThreadTest.dmg

Phenomenal!

Working perfectly on both of my Macs. Upload speed limiting works flawlessly and the CPU is running at 1.8 percent on my MBP and 0.9 on my MP.

No problems yet. Thanks!

Excellent :) now on to do the same for downloads. It's not anywhere as vital, but maybe it'll affect overall download speeds as well.

Hi Nir - Just started using SoulseekQt today (24th. March 2012), Many thanks! - works a treat so far.
Is it possible to import 'old' User List & Ban list that I've taken years to build up?
Can you provide an option to auto reject Users that do not share anything at all?
Keep up the great work.

Stickle1

Hi Stickle,

I'm glad to hear it's working well so far. An import tool would be very useful, but I have not had time to build one yet as I'm still trying to add a lot of new features to the client and fixing bugs as they come. The automatic banning argument is almost as old as Soulseek, and there are people who are very staunchly on both sides of it. I'm probably never going to implement outright banning, but I'm considering some kind of automatic warning mechanism.

Thanks, Nir