April 28, 2012 Leave a comment
A new DC++ release is out and it has a rather uncommon leap in the versioning. There’s no any special reason of choosing 0.797 – maybe we’re approaching 0.800 faster this way :) The current offering mainly focuses on style improvements and reliability fixes but there’s no shortage of the usual smaller developments, either.
Let’s see the important areas affected by this release:
Partial file lists
Capability of getting only parts of a user’s file list instead of the whole one is included in DC++ for quite a while (jeez it’s been more than 6 years – time surely flies). The function is available using the ‘Browse file list’ item in the context menu of user lists. Even if browsing file list capability is there for a while, still not too many users are actually faced it, at least not in DC++. The reason is that partial lists are defined in the ADC protocol only, thus DC++ has supported this feature on ADC hubs only.
Partial file lists are displayed in a similar window as the old, well known complete ones. However, functions like startup restoration and ADL Search haven’t been available for the partial list windows until now. As an improvement, file list windows now introduce a new button called “Download full list” which is primarily made for an easy upgrade from a partial list to a full one in case of you decide that you need the full list of the user. The button is even useful for fully downloaded lists as well: you can easily refresh the file list when eg. you suspect that the user may modified it since the last download.
The code responsible for partial file requests between peers (what makes browsing of others’ file lists possible) has also received a nice improvement. Until now the browse function was able to receive the content of only one folder in one go. If you clicked a folder in the list you got its contents – but only the files and in one level deep only in the folder structure. No more no less, not even the content of the subdirectories. That needed another click (and another partial list request).
This has changed with 0.797 as we introduced heuristics for sending additional levels of information with partial file lists requests. What does this mean? If you give it a try you’ll understand right away: you should get much more contents of the surrounding folder structure in one request. All of this was done the way that only an acceptable amount of additional data are transferred in a particular request – which means that it does not slow down the browsing experience at all.
Pretty useful improvement, the only drawback is that it’s obiviously not backward compatible (needs at least DC++ 0.797 or based client on the other side). This means that browsing lists of older clients will behave the same as like before.
Above all of the good news about partial lists, I saved probably the best for last: from now Browse file list is a available for NMDC hubs as well. This might come as a suprise given the fact that the DC++ author has annouced a feature freeze for NMDC related things a while ago. But actually this isn’t a protocol change, even not a feature update, it is the same hack as the one that other DC clients have successfully used for a long time: the NMDC “protocol” is so weak that it allows anything to send and receive in the state of an estabilished client-client connection. This means that the browse function simply uses the appropriate ADC command for partial list requests on NMDC and it’ll be accepted and served. Sounds dumb but it works…
As you learned above, partial list support in DC++ has been around since about 6 years ago, this means that older clients may appear on NMDC hubs won’t let you browse their lists (to be exact it’s core version 0.670 and above needed on the other side). Browsing lists of these ancient dinosaurs will result an error message in the transfer view.
User status indication is an important part of instant messaging and we know that DC++ incorporates such feature. A typical IM system includes many status modes, like Busy, N/A, etc.., DC++ has only two: Online and Away. Until now away mode could have been set only in manual ways, either by directly switching it on or by minimizing the application (when the appropriate setting was enabled). Furthermore, in away mode a message was always sent as a reply to incoming private messages; either the default away message or a custom set one.
DC++ 0.797 now brings the bare minimum configurable options users expect these days in this regard:
First of all the away message sent as a reply to pm’s in away mode is made optional so you can avoid it completly if you want. Secondly you are able to switch the away mode on automatically after some time of user inactivity and of course back when a mouse or keyboard event happens. As a third and last improvement you can enable a similar automatic away mode on-off switch for when the Windows user account is become locked and unlocked.
GUI & Styles
The most obivious styles improvement is clear from the above screenshot; configurable link styles is a function that many people missed over the years. Also note the format of the magnet link in the last line of the chat shot above. Magnets are shown in a new standout style as well as in a new human readable format.
Another freely configurable option is the color and style of the displayed chat history in the pm windows.
Both new options are available in the Styles pane in the Settings window and both have a resonable default value, generated automatically by taking the current application color style in account.
Additionally, existing user matching definition styles that made for nicks in the userlist are now also applied to the nicknames appear in the chat windows. To stand out every nick in the chat you can even easily apply the same style for all nicks if you wish to. For easy configuration, DC++ is shipped with two predefined user matching definitions for favorite users (bold, more red) and operators (more blue).
Along with the configurable link styles the way of following the hub redirect requests has also changed. The ambigous Follow Redirects toolbar button is gone and now users can follow the redirect manually by clicking a link-like announcement in the main chat of the corresponding hub window. This is less confusing than having a global button in the toolbar which actually had no function most of the time.
Beside the bigger GUI improvements the newest version of DC++ comes with a few other less significant changes. They’re as follows:
- Finally reduced the ugly flickering that happens in the chat window when it’s scrolling. You’ve been able to observe this problem since DC++ chat windows have switched to Richedits in order to be able to display styled text. The proper solution of the problem was borrowed from StrongDC++ and if you think this is something trivial and should have been easily fixed a long time ago then you’re wrong. Several (I mean, several) attempts has been made to fix this before. Welcome to the nightmare of Richedit.
- Now you can see the last chat line in taskbar previews so you can easily manage to switch to the right chat window if you use Windows 7 and you chat in multiple hubs or with multiple people at the same time.
- If you open up the Settings dialog and hover the mouse over the controls you’ll see the new context-sensitive help tooltips appear. Useful feature for the lazy ones as well as it provides fast way to discover unknown customization possibilities.
- Multiple monitor support is also improved. From now when you start DC++ the main window will re-appear in exactly the same position as it was left before, regardless of number of monitors used.
Stability & reliability
As usual we introduce a few stability fixes as well, most notably the one which causes crash on startup/shutdown or when some content added or modified in the download queue. A possible memory leak was also fixed during the file list matching operations.
DC++ is also improved for Windows XP users as two bugs specific to this OS is fixed in 0.797: one of them is messing up the favorite hubs window if you try to modify or move any entry in it. The other bug fixed keeps Win XP users from providing useful crash logs with the built- in crash logger function (probably this bug was the reason of those many less useful crash logs reported as the Windows XP userbase is still quite large).
File reading operations also improved in general. Until now the most optimal method for file readings has been possible to use for hashing only and it was optional – you had to manually disable it if problems encountered. From now the most optimal method is used by default for every file reads with automatic fallback to the old method in case of problems.
I believe the new features and fixes are discussed here in great detail but if you curious about every tiny bit of improvements then refer to the changelog as usual.
Have fun using the new version but also prepare for DC++ 0.800 which – if everything goes well – will be the version number of the next DC++ release. You might be suprised as it has to come with at least one brand new and interesting featrue :)