Version 2.0.0

Version 2.0.0 provides major improvements to AirDC++ Web API and extensibility.

Extensions and documented Web API

AirDC++ Web Client 2.0.0 introduces Web API v1, which is fully documented at

The most convinient way to access the API is to write an extension that can be installed and managed from within the application itself. The primary extension language is JavaScript (Node.js) and they are written and published as (almost) regular npm packages.

Of course you may also access the API with external scripts or web browsers, and even developing a native remote GUI would be possible.

A few example features that would be possible to implement with extensions:

  • Auto search for new content to download
  • Ignore chat messages by pattern
  • Auto removal of slow download sources
  • New validations for shared/downloaded files/directories
  • Be notified if users downloading from you don’t add the downloaded files in share

Extension catalog

Portable binaries

It’s no longer needed to compile the application by yourself on Linux (32-bit/64-bit/ARM architectures).

Installation instructions

If you are migrating to a portable build from an older application version, see the additional migration notes as well. Nightly builds from develop branch are available as well, if you want to keep up with the latest features.

Dev/support hub

The hub is public and can be accessed with address adcs://

Migration notes

Make sure that you reload all existing browser sessions after upgrading

If you have set up advanced proxy/tunneling/firewall configs, note that the WebSocket connect URL has been changed from host_url to host_url/api/v1/.

Using the application with an external proxy + basic auth combination would also cause conflicts with the newly added basic authentication support in AirDC++ if the authorization headers get passed to the application. See additional configuration notes from the updated nginx example.



  • AirDC++ Web API v1
  • Extension support
  • Portable binaries (#184)
  • Show the number of files and directories for filelist directories
  • List recent hub, private chat and filelist sessions
  • Various reliability improvements

Web Client 2.0.0

  • Don’t queue new background searches if the search queue is too long
  • Fix message caching issues after hub redirections
  • Fix possible crashes when closing or reconnecting hub sessions
  • Improved share management stability
  • Add compatibility for zlib 1.2.11
  • Improve validation of incoming NMDC protocol messages
  • Fix paused file priorities not always working correctly
  • Removed: option to hash finished bundle files
  • Removed: option to add finished finished bundles in share instantly (always shared instantly from now on when inside a shared directory)
  • Notify about a high number of finished bundles in queue
  • Fix incorrect UTF-8 validation errors
  • Add compatibility for OpenSSL 1.1.0 (note: websocketpp 0.7.0 doesn’t support OpenSSL 1.1.0 but the required changes are quite trivial)
  • API: add support for actions hooks (validation for finished files, filtering of incoming chat messages, chat command handling…)
  • API: add support for basic HTTP authentication
  • Make the application more resilient against loss of settings in case of system crashes
  • Allow hiding share in NMDC hubs
  • Back up successfully loaded XML setting files and recover corrupted ones
  • Updated validation and reporting for ignored shared items

Web UI 2.0.0

  • Fix cached event messages not always being fetched
  • Add help messages for using share profiles
  • Fix emoticons being inserted in non-wanted text locations (#3)
  • Fix insertion of special characters with Alt+num in chat tabs
  • Add an option to set a custom background image URL (#183)
  • Show the number of shared files in userlist
  • Detect chat magnet links and perform search when clicking on them (#187)
  • Detect hub links (dchub://, adc://, adcs://)
  • RSS widget: improve feed support
  • Default widgets: replace GitHub release feed with the new blog feed
  • Allow ignoring messages from operators (#221)
  • Add help message for connectivity troubleshooting