Releases: fuldcpp/plugins
Release list
Protocol Analyzer 1.03
Protocol Analyzer 1.03 for the FulDC++ plugin catalogue.
This package is our build, and it is no longer just upstream's code. iceman50 has not released
1.02, let alone 1.03. Our 1.02 was his source at 621df978 with only toolchain patches; an audit of
that source found twelve defects, and seven are fixed here and are not in his tree. The complete
corresponding source ships beside this package, one commit per fix, as GPL-2.0 requires.
If iceman50 later publishes his own 1.02 or 1.03, its bytes will not be these.
Upstream: https://github.com/iceman50/DC-Protocol-Analyzer
Provenance: https://github.com/fuldcpp/plugins/blob/main/protocolanalyzer/PROVENANCE.md
Fixed in this build
- The NMDC
|pipe escape was never decoded unless it happened to be the last six bytes of
a value: the decoder measured a seven-byte window against the six-byte literal. An ordinary chat
message containing|displayed|instead of the character. - The inspector omitted its truncation marker when bounded output stopped short of the byte cap
to avoid splitting a UTF-8 sequence, so whether a truncation was announced depended on the length
of everything rendered before it. - The timestamp format reached the CRT unscreened. An unsupported conversion specifier is an
invalid parameter, which terminates the host process under the UCRT and MSVC. Measured: a MinGW
build linkingmsvcrt.dllreturns 0 and carries on, so no published MinGW package was exposed --
upstream'sprojects/vs2022build is. - The definition catalog followed the Windows user locale, not the language the host displays.
It now prefersDCConfig::get_language, gated on the host executable because stock DC++ and
FearDC do not implement it and the interface version cannot distinguish them. - The custom title bar installed
this-capturing window handlers before the calls that can
throw. The class has no destructor, so a failed construction left the owner window holding
handlers pointing into freed memory. asciiEqualNoCasefolded through the C locale despite its name.- A redraw condition tested a queue the preceding loop had already drained.
Five further findings are deliberately not patched: two need a design decision that is
upstream's to make, and three cannot occur on the hosts this package targets.
Verification
Built with MSYS2 MinGW-w64 GCC 16.1 through upstream's own build_dist.ps1: zero warnings, the
bounded protocol-analyzer suite green, the strict ABI/UI smoke suite green, and upstream's
audit_release.ps1 passing on the package -- PE32+ x86-64, exports exactly pluginInit, imports
only system libraries.
The pipe-escape and inspector-truncation fixes were proved failing-first: the tests were written
before the fixes and failed against the unfixed parser. The title-bar change is covered by the smoke
suite's eight custom-caption checks, all still passing. The language fix was confirmed in a real
FulDC++ profile, where the same machine went from loading da-dk (its Windows locale) to en-us
(the language the client is actually running in).
Hashes
| file | size | SHA-256 |
|---|---|---|
ProtocolAnalyzer.dcext |
13,588,170 | f43aba2d0173c3e9147e16eaf75d9a1684342d353c69646400b377822c0dcf73 |
ProtocolAnalyzer-source.zip |
735,412 | 23947f8e25a5a192889ff9abe9f7ec9cb2af8d6944c56f809ea0ed1a63a7e578 |
Protocol Analyzer 1.02
Protocol Analyzer 1.02 for the FulDC++ plugin catalogue.
This package is our build, not upstream's. iceman50 has not released 1.02 — his tree declares
version 1.02 and his changelog marks it Unreleased, while his newest release is still
Version-1.01. There is no upstream package to republish at this version, so this one was built
here from his source at 621df978, and the complete corresponding source ships beside it as
ProtocolAnalyzer-source.zip, as GPL-2.0 requires.
If iceman50 later publishes his own 1.02, its bytes will not be these. This entry should then be
replaced with his package — but clients already on this build will not be offered the swap, because
the version number will not have moved.
Upstream: https://github.com/iceman50/DC-Protocol-Analyzer
Provenance: https://github.com/fuldcpp/plugins/blob/main/protocolanalyzer/PROVENANCE.md
What is in it
Two commits past upstream's Version-1.01 tag:
10d9ff26— full ADCBBS0bulletin-board analysis: feature negotiation, board descriptors and
permission masks, subscriptions and direct entry requests, index entries and tombstones, post
submission and withdrawal, canonicalIBB0post-document headers and bodies, and BBS0 refusal
status codes.621df978— a boundedprotocol-definitions.xmlruntime catalog for the current ADC and NMDC
commands and features, with descriptions, XML-only command discovery and translation fallback.
An invalid catalog falls back to the compiled definitions. Also fixes compound ADC feature
selectors such as+TCP4-NAT0being reported as malformed search parameters.
protocol-definitions.xml is a new packaged file, extracted beside the DLL and loaded at startup.
Changes from upstream
Two, both toolchain-only, both in the published source:
projects/make/Makefile—-staticinLDFLAGS, so a posix-threads MinGW does not leave
libwinpthread-1.dlldynamic.scripts/audit_release.ps1— export-table regex widened for newer binutils'+base[...]column.
Verification
Built with MSYS2 MinGW-w64 GCC 16.1 through upstream's own build_dist.ps1: zero warnings,
upstream's bounded protocol-analyzer suite green, upstream's strict ABI/UI smoke suite green, and
upstream's scripts/audit_release.ps1 passed on the package — inner SHA256SUMS complete, DLL is
PE32+ x86-64 exporting exactly pluginInit and importing only system libraries. Installed into a
FulDC++ profile and confirmed to load, run and unload cleanly.
Hashes
| file | size | SHA-256 |
|---|---|---|
ProtocolAnalyzer.dcext |
13,733,653 | 32fa6e210104077ec315fa194fbe15ad2a2ddd78eea6542d5f1d6db05889b044 |
ProtocolAnalyzer-source.zip |
732,249 | 8c65dda4e828ce39fe1b72c29d2118a4912bcdafeee45d87da45757f559a974a |
protocolanalyzer 1.01
Protocol Analyzer 1.01 by iceman50, republished for the FulDC++ plugin catalogue.
The package is upstream's own build from the Version-1.01 release, byte-for-byte, renamed only to match this catalogue's naming. SHA-256 1cd44c3d9fe4a0ee55f316fbd37e266a0eb09cd25fe0e3be7d595d27e8a6261b.
Corresponding source is upstream's tree at d133d0a29f8953c1cb7f8f28dbded12d0aee70b5, unmodified.
Upstream changelog: https://github.com/iceman50/DC-Protocol-Analyzer/blob/main/CHANGELOG.md
squiggle 2.7
Squiggle 2.7 Digit-in-place-of-a-letter detection (ab0nemang, hjä1p), save-failure warnings, word lists moved to %LOCALAPPDATA%\Squiggle so an update cannot take them, and exception guards on every callback. Merged onto the 2.4 line (GUI-thread language re-check, redo-aware undo, 64K caret anchor, the no-languages sentinel).
babelfish 1.0
Babelfish 1.0 Chat translation for FulDC++ (kaje's Babelfish 0.9, hardened for the catalogue): API keys in Credential Manager only, outgoing translations sanitised against command/protocol injection, find_hub/find_user copies released, borrowed hook pointers no longer dereferenced across the async boundary, pData read as the plain char* the contract guarantees.
Scripting plugin 1.10
Scripting plugin 1.10 by DC++, for FulDC++.
Republished byte-for-byte from DC++. Not modified.
Source: ScriptPlugin-source.zip in this release. Licence: GPL-3.0. Upstream: https://github.com/RoLex/dc-plugins
Install from the client: Settings -> Plugins -> Get plugins...
Punctuator 1
Punctuator 1 by poy, for FulDC++.
Republished byte-for-byte from DC++. Not modified.
Source: Punctuator-source.zip in this release. Licence: GPL-2.0-or-later. Upstream: https://git.launchpad.net/~dcplusplus-team/+git/poy_dcpp-plugin-sdk-cpp_Punctuator
Install from the client: Settings -> Plugins -> Get plugins...
Protocol Analyzer 1.00
Protocol Analyzer by iceman50 — captures and decodes live ADC, NMDC, client-to-client and UDP traffic, with filtering, a decoded field inspector and redaction of sensitive values.
Not a FulDC++ plugin. Republished here so it can be installed from the client's plugin catalogue.
Upstream publishes no binaries, so this package was built by us from 22d460bb167f01d006f1b1e5a0842878de2a493b (main, 2026-08-03) using the project's own build_dist.ps1, which runs its protocol test suite and ABI/UI smoke test and audits the resulting DLL.
Two toolchain-compatibility patches were needed and are included in the source archive:
Makefile: added-static, so a posix-threads compiler does not leave the DLL importinglibwinpthread-1.dll(which the project's own release audit rejects)audit_release.ps1: widened the export-table regex, which misread newer binutils'+base[ 1]output and rejected a correct DLL
Neither changes plugin behaviour. ProtocolAnalyzer-source.zip is the complete corresponding source, including both patches. GPL-2.0-or-later.
MediaPlayer plugin 0.3
MediaPlayer plugin 0.3 by iceman50, for FulDC++.
Republished byte-for-byte from DC++. Not modified.
Source: MediaPlayer-source.zip in this release. Licence: GPL-2.0-or-later. Upstream: https://code.launchpad.net/~bdcdevel/dcpp-plugin-sdk-cpp/MediaPlayer
Install from the client: Settings -> Plugins -> Get plugins...
LoL plugin 1.1
LoL plugin 1.1 by DC++, for FulDC++.
Republished byte-for-byte from DC++. Not modified.
Source: LoLPlugin-source.zip in this release. Licence: GPL-2.0-or-later. Upstream: https://code.launchpad.net/~dcplusplus-team/dcpp-plugin-sdk-cpp/LoLPlugin
Install from the client: Settings -> Plugins -> Get plugins...