Skip to content

Releases: fuldcpp/plugins

Protocol Analyzer 1.03

Choose a tag to compare

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 linking msvcrt.dll returns 0 and carries on, so no published MinGW package was exposed --
    upstream's projects/vs2022 build is.
  • The definition catalog followed the Windows user locale, not the language the host displays.
    It now prefers DCConfig::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.
  • asciiEqualNoCase folded 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

Choose a tag to compare

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 ADC BBS0 bulletin-board analysis: feature negotiation, board descriptors and
    permission masks, subscriptions and direct entry requests, index entries and tombstones, post
    submission and withdrawal, canonical IBB0 post-document headers and bodies, and BBS0 refusal
    status codes.
  • 621df978 — a bounded protocol-definitions.xml runtime 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-NAT0 being 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:

  1. projects/make/Makefile-static in LDFLAGS, so a posix-threads MinGW does not leave
    libwinpthread-1.dll dynamic.
  2. 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

Choose a tag to compare

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

Choose a tag to compare

@github-actions github-actions released this 11 Aug 18:34
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

Choose a tag to compare

@github-actions github-actions released this 11 Aug 20:21
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

Choose a tag to compare

@KhwanTosawat8 KhwanTosawat8 released this 04 Aug 12:48

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

Choose a tag to compare

@KhwanTosawat8 KhwanTosawat8 released this 04 Aug 12:48

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

Choose a tag to compare

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 importing libwinpthread-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

Choose a tag to compare

@KhwanTosawat8 KhwanTosawat8 released this 04 Aug 12:48

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

Choose a tag to compare

@KhwanTosawat8 KhwanTosawat8 released this 04 Aug 12:48

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...