It was forked from xMule project back in september 2003 to drive it to a brand new direction and quality. Uses wxWidgets for multiplatform support.
Features
- aMule works on Linux, Mac, FreeBSD, OpenBSD, NetBSD, Solaris, Windows, and probably other OSs that noone tested yet.
- aMule works on x86, amd64, ppc, ppc64, sparc, alpha, and AFAIK arm (probably others also) CPU architectures.
- aMule has core/GUI separation, a mature daemon, and a not-so-mature-but-still-working remote GUI, along with the webserver and the text-mode user interface (amulecmd).
- aMule has the latest improvements on ed2k protocol, both on eserver compatibility (thanks lugdunum) and client<->client communication (thanks eMule dev. team). This includes eMule extensions over original ed2k protocol.
- aMule supports all wxWidgets flavours from 2.4.2 to the brand new 2.6.0. The recomended version is, however, wxWidgets 2.6.0.
- aMule supports Unicode on GUI, internals, and network, and its totally or partially translated to 28 languages
- And last but not least, aMule has the best users and supporters community I've ever seen. I said it and I'll say it again: without you guys, this project would have never reached its current state.
What's New
First point release after the 3.0.0 rebirth, and the first cut entirely on the new amule-org/amule repository. 147 merged PRs of post-launch work: a new IP2Country preferences panel, remote-GUI (amulegui) improvements over EC, smarter search, AICH request rate-limiting, a top-to-bottom WebUI / WebServer modernization and security pass, a Weblate-driven translation pipeline, and a one-click release process. No on-disk format or config changes – a drop-in upgrade from 3.0.0.
Highlights
- IP2Country preferences panel. A new Preferences page to choose the GeoIP source – DB-IP, MaxMind, or a custom URL – instead of editing config by hand (#113). IP2Country is now enabled by default and hard-fails at configure if the dependency is missing (#119).
- Remote GUI over EC. amulegui now populates the Server Info tab from amuled (#120), keeps statistics and Kad graphs alive across tab switches (#135), and stops offering preferences it can't actually push to the daemon (#122).
- Smarter search. Modern file formats and corrected extension categories in the type filter (#189), new Length / Bitrate / Codec columns in results (#139), a working Related Files lookup (#154), and global search that works even with Kad disabled (#38).
- AICH anti-abuse + speed. OP_AICHREQUEST is now rate-limited via CheckForAggressive(), and LoadHashSet gained an O(1) root-hash -> offset cache with a self-healing linear-scan fallback, so AICH recovery on large known2 files no longer rescans the whole file per request (#186, [#191], [#193]).
- WebUI / WebServer reborn. The default web template was dragged out of its 2005 Dreamweaver origins: HTML5 doctype, presentational markup migrated to style.css, the maquette.dwt template and dead MM_* rollover JavaScript removed, favicon refreshed, and the whole thing re-encoded as UTF-8. On top of the cleanup came real features – select-all checkboxes, a working priority selector on the Shared page, download/delete confirmation with file counts, auto-refresh that pauses while rows are selected, button tooltips, and unified styling and size/speed units.
- WebUI security hardening. XSS defences (htmlspecialchars + addslashes, sort-param whitelisting), CWebSocket request-parser hardening and memory-leak fixes, and a sweep of the embedded PHP interpreter (php_core_lib, php_amule_lib, php_syntree, php_native_split) fixing memory frees, base16/base64 handling, and long-standing parser bugs.
- Translations via Weblate. Translation now flows through a hosted Weblate instance feeding the repo, with a --no-wrap catalog policy and build-time po4a manpage rendering; sixteen catalog-update rounds landed this cycle.
- One-click releases. Maintainers can cut a release from the GitHub Actions UI – pick a version, and the workflow tags, builds every platform, verifies the artifact set, and assembles a draft Release (#234).
IP2Country
- New Preferences panel to select the GeoIP source: DB-IP, MaxMind, or a custom URL (#113).
- Enabled by default; configure hard-fails when the dependency is missing rather than silently disabling (#119).
Remote GUI & Platform
- amulegui populates the Server Info tab from amuled over EC (#120) and stops offering preferences it can't push to the daemon (#122).
- Statistics + Kad graphs stay populated across tab switches (#135); the Kad status bar refreshes after StopKad() (#133).
- Theme-aware colours: list-control text (#179) and statistics labels (#128) no longer hardcode *wxBLACK/BLUE/RED, fixing legibility on dark themes.
- Window-state persistence: Messages columns + minimized-window geometry saved (#138); macOS persists list-control settings on Dock -> Quit (#141).
- macOS Preferences left-rail tab icons padded (#130).
- wxWebSession-cleanup _Exit workaround applied on all platforms to avoid a shutdown crash (#159).
Search & Networking
- Global search works with Kad disabled (#38); Windows EC search fixed by using wxUIntPtr for m_currentSearch (#39).
- File-type filter: miscategorised extensions corrected and modern formats added (#189).
- Result columns: Length, Bitrate, Codec added (#139); Directories column moved to the end (#142).
- Related Files lookup fixed; TCP/UDP server flags shown in Release builds too (#154).
- EC search lifecycle: the prior Kad search is stopped when the EC client starts a new one (#36); late ed2k server replies dropped after the client switches to Kad (#37).
- SO_REUSEADDR on the UDP socket so it rebinds cleanly after suspend/resume (#121).
- Server Info log cleared at the transition source on ed2k disconnect / server switch (#163, [#164]).
- UPnP ASCII tolower() scoped under LC_CTYPE=C so non-C locales don't corrupt device matching (#208).
- Full path logged when an ed2k link collides with an existing file (#172).
AICH & Hashing
- OP_AICHREQUEST rate-limited via CheckForAggressive() and LoadHashSet made O(1) through a root-hash -> offset cache (#186).
- True linear-scan fallback when the cached offset is stale (#191); the cache self-heals on a successful rewind (#193).
- UDP file-info handler short-circuits when the requesting client is banned (#192).
WebUI & WebServer
- The biggest theme of the release by volume - driven mainly by ngosang, with the embedded-PHP work by RealGreenDragon.
Template modernization:
(#84); structural HTML errors corrected (#87); stray style.css brace removed and formatting normalized (#78); shared-files page re-encoded as UTF-8 with English alt-text (#80); higher-resolution transparent favicon (#112).
- HTML5 doctype adopted; layout glitches from the switch corrected (#110, [#204]).
- Presentational HTML attributes migrated to semantic CSS – text/element attrs (#95), table/iframe attrs (#102)
- blocks consolidated into style.css (#89), JS nav rollovers replaced with CSS :hover (#92).
- Dead Dreamweaver scaffolding removed: the maquette.dwt template (#88), MM_* JavaScript extracted then deleted once shown to be no-ops (#90, [#93]), stale onLoad tree calls in stats_tree.php (#111), and small deprecated CSS/HTML leftovers (#105).
- blocks moved into
New WebUI features:
- Priority selector wired up on the Shared page (#210).
- Select-all checkbox on file tables (#212); auto-refresh pauses while checkboxes are selected (#213) and avoids the form-resubmission prompt (#230).
- Download/delete actions confirm with a file count (#214).
- Search-page controls improved (#215); button tooltips and clickable images (#216).
- Unified button styles (#217), form controls (#206), and file size + speed units (#218); footer-bar background (#219); logo links home to Transfers (#209); clearer dropdown option labels (#207); footer "Download link" refreshes the main page (#81).
WebUI bug fixes:
- Sorting downloads by sources never worked – fixed (#75).
- Wrong MByte/GByte multipliers in the search size filters corrected (#76).
- Division-by-zero guard on the downloads-page percentages (#83).
- Login error message now actually shown, and made readable (#82, [#96]).
- Static .css/.js served to unauthenticated clients so the login page styles correctly (#97).
- amuleweb honours the per-user template dir when spawned by the GUI (#72); copy-pasted preferences code removed from the log page (#74).
- ed2k links can be added via the footer links form (#145); search results cleared across cycles and on new search (#33).
Embedded PHP interpreter:
- Memory freed correctly when casting array values (#108) and for for() header expression lists (#109).
- OtherFunctions base16 decode, base64 footer append, duplicate .asf entry, and mp3 comment handling corrected (#30).
- Interpreter sweep: php_native_split (#146), php_core_lib (#150), php_amule_lib_standalone (#151), php_amule_lib (#152), php_syntree (#153), with follow-ups (#155, [#156]).
WebUI Security
- XSS hardening: htmlspecialchars + addslashes builtins added and remote-controlled strings escaped (#106); the search sort param whitelisted before being stored in the session (#107); broad WebUI/WebServer backend hardening (#91).
- CWebSocket request parsing hardened for header casing, body bounds, cookie conversion, and MinGW portability (#27, [#28]); CWebSocket memory leaks fixed and review findings addressed (#29).
Translations
- Translation moved to a hosted Weblate workflow feeding the repo; the README points contributors there (#71). Catalog rounds: [#57], [#66], [#100], [#123], [#147], [#160], [#165], [#170], [#184], [#187], [#199], [#200], [#202], [#211], [#229], [#235]; Brazilian Portuguese also refreshed by hand (#7), and the IP2Country strings translated into Italian (#129).
- --no-wrap policy adopted for the app catalogs (#61) and extended to the manpage .po files (#67).
- Non-ASCII output fixes: the logger writes stdout/stderr via utf8_str (#42); locale is initialised so non-ASCII strings stop mangling under the default C locale (#205, fixes [#203]); a real newline is used in a comment-dialog tooltip (#70).
- Windows SPANISHINTERNATIONAL routed to po/es.po (#64).
Build System & CI
- One-click release workflow from the Actions UI: tag → full matrix → artifact-manifest gate → draft Release (#234). Repo bootstrap: issue/PR templates (#12). The manpages-sync CI check disabled where Weblate PRs broke it (#68).
- cryptopp-modern accepted by the build, with packager-friendly flags (#169); versioned libatomic.so.1 accepted in find_library (#176).
- BUILD_TESTING off by default (#49); options.cmake typo/casing cleanup (#50); a pofiles dependency added to every NLS-aware executable (#98).
- LLP64 portability: unsafe uses of long cleaned up (#65).
- Toolbar ID collision with manually-added IDs resolved (#52); SearchDlg FALSE macro replaced with false (#48); IDC_SPINSEARCHAVAILABILITY spelling corrected (#51).
Shared Files & Preferences
- SharedDirWatcher: the inotify race window on newly-created subdirectories closed (#227), with a follow-up so file CREATEs reliably reach NotifyPathAdded (#228).
- First-run no longer wipes shareddir-*.dat during userhash init (#79) or promotes stale shareddir.dat entries to explicit shares (#86).
- "Show Clients for" defaults to "All files" (#126).
- English language-picker IDs corrected, with an explicit U.S. entry (#60).
Manpages & Docs
- Translated manpages now rendered at build time with po4a (#94), with --no-update so the build doesn't dirty the source tree (#101).
README: a Translations section (#71), an amule-org column in the Development Statistics table (#62), and NetBSD added (#32).
Packaging & Flathub
- Icons refreshed from a new 256×256 master (#15), then reverted to the established design upscaled to meet Flathub's 256px minimum (#21).
- Flathub-strict manifest staged under packaging/flathub/ (#16), with metainfo + desktop polish for listing readiness (#17) and commit-pin bumps as the manifest tracked master (#23, [#24], [#26]).
- Flatpak fixes: libbfd disabled in the sandboxed build (#19); the install-prefix locale dir registered for wxLocale lookup (#22); .mo catalogs shipped inside the main app rather than a separate .Locale extension (#25); all bundled languages surfaced in the Preferences Language picker on Flatpak (#175).
- macOS: webserver templates bundled into aMule.app so the in-app WebUI resolves them (#195).
Known Limitations
Carried over from 3.0.0:
- macOS .dmg is not yet code-signed or notarized – Gatekeeper warnings on first launch.
- Flathub submission still pending – install the .flatpak directly with flatpak install
for now. - AppImage isn't yet in AppImageLauncher's catalogue.
Contributors
This release is 147 merged PRs cut entirely on the new amule-org/amule repository. Particular thanks to:
- got3nks – 59 PRs across search, amulegui / EC, AICH, IP2Country, packaging, locale, and the release tooling.
- ngosang – 46 PRs; the WebUI / WebServer modernization, hardening, and UX features are almost entirely his.
- Marcelo Jimenez (mrjimenez) – 9 PRs across the webserver, build system, and translations.
- RealGreenDragon – 8 PRs fixing the embedded PHP interpreter.
- danim7 – 2 PRs (global-search-without-Kad, Related Files + server flags).
- peyoker – WebUI / WebServer security hardening (#91).
- cardpuncher – NetBSD in the README (#32).
