Bump to 0.5.2 (mb.kludge FTS-conformance fixes)

Rolls up two consumer-surfaced interop fixes that landed earlier
today (cd2cc90 FLAGS space-separator, ee0f1ca AREA: envelope
recognition) into a tagged release so NR can stabilise its pin.

Both caught by NetReader's hpt-vs-nr byte-diff harness.  See
CHANGELOG.md for the full writeup.

No API change.  Pure behaviour fix.
This commit is contained in:
2026-04-19 19:05:14 -07:00
parent ee0f1caa4e
commit 02a665d69b
3 changed files with 36 additions and 4 deletions

View File

@@ -14,6 +14,38 @@ Tags below the 0.5 line were placed retroactively on 2026-04-19.
The corresponding commit messages carry the canonical release
notes; this file is a quick index.
## 0.5.2 -- 2026-04-19 (FTS-conformance fixes from NR hpt-compare suite)
Two consumer-surfaced interop bugs in `mb.kludge`, both caught by
NetReader's hpt-vs-nr byte-diff harness. Real-world impact:
previous `BuildKludgePrefix` output failed to round-trip through
HPT / fmail / NR for FLAGS kludges, and previous `SplitKludgeBlob`
leaked the FTS-0004 AREA: envelope into on-disk bodies.
- **`BuildKludgePrefix` FLAGS emission** used a colon separator
(`^AFLAGS: DIR`), but FTS-4001 §4 specifies a space (`^AFLAGS DIR`)
and every downstream parser (NR's ParseKludges, HPT's getFlags,
fmail's getKludge) expects no colon. Symptom: FLAGS DIR / IMM
routing silently fell through to normal routing because consumers
didn't recognise the kludge at all. Fix: one-line drop of the
colon from the emit template. `MSGID:` / `REPLY:` / `PID:` /
`CHRS:` / `TZUTC:` keep their colons per their respective specs.
Commit: `cd2cc90`.
- **`ParseKludgeLine` AREA: recognition.** FTS-0004 puts
`AREA:<tag>` at the head of a packet-message body with no SOH
prefix, same shape as the `SEEN-BY:` / `PATH:` trailing control
lines the parser already handled. Without AREA: in the trail-
control list, `SplitKludgeBlob` left the envelope in PlainBody,
so msgbase writers stored `AREA:BINECHO` as the first ~12 bytes
of the on-disk message body. Symptom (NR): UUE decode output
inflated by the envelope length per section. Fix: add `AREA:`
to the isTrailControl list and dispatch `'area':` into
`A.SetValue('area', ...)` -- same attribute slot 0.5.0 already
populates from `MessageBaseOpen`'s area-tag argument on reads.
Commit: `ee0f1ca`.
Thanks to NR for catching both via the hpt-compare harness.
## 0.5.1 -- 2026-04-19 (security-hardening round)
Retroactive tagging discipline established. Before this release,

View File

@@ -114,9 +114,9 @@ Unit-name convention follows the Fimail style: `ma.<category>.<name>.pas`
Early development. APIs may move until 1.0.
**Current: 0.5.1** — see [`CHANGELOG.md`](CHANGELOG.md) for the full
**Current: 0.5.2** — see [`CHANGELOG.md`](CHANGELOG.md) for the full
release history. Downstream consumers should pin by tag
(`v0.5.1`), not commit hash.
(`v0.5.2`), not commit hash.
**0.2 is a breaking change vs 0.1.** `TUniMessage` lost its 13 named
fields (WhoFrom/WhoTo/Subject/MsgNum/Attr/etc.) in favour of a strict

View File

@@ -17,8 +17,8 @@ interface
const
MB_VERSION_MAJOR = 0;
MB_VERSION_MINOR = 5;
MB_VERSION_PATCH = 1;
MB_VERSION = '0.5.1';
MB_VERSION_PATCH = 2;
MB_VERSION = '0.5.2';
implementation