Files
fpc-msgbase/tests
Ken Johnson bbd9da8211 Bump to 0.6.1 -- kludge fixes from NR hpt-compare load
Four interlocking fixes that NR's 16-year archive load through
the library surfaced.  See CHANGELOG.md#0.6.1 for the full
per-bug writeup with JAM-001 / FTSC references.

1. ParseKludgeLine: first-wins on singleton kludges (msgid /
   reply / pid / tid / flags / chrs / tzutc / intl / fmpt / topt
   / area).  Quoted SOH-preserving body lines can no longer
   overwrite the prefix kludges -- stops tossers flagging
   legitimate messages as dupes of the quoted parent.

2. SplitKludgeBlob + BuildKludgePrefix added to Hudson, GoldBase,
   PCBoard, EzyCom, Wildcat uni adapters (all five were previously
   doing u.Body := native.Body verbatim, so msgid / pid / seen-by
   / path / chrs / tzutc / intl / vendor X-* kludges were all
   getting dropped on Read AND Write through those formats).

3. JAM-001 spec compliance:
   - TJamBase.CalcMsgIdCRC (new); JamFromUni auto-computes
     MsgIdCRC and ReplyCRC per message so external readers can
     walk reply chains (was writing 0 everywhere, collapsed
     threading on GoldED / MsgEd / hptlink).
   - PasswordCRC / ReplyCRC default to 0xFFFFFFFF sentinel, not
     0 (which is indistinguishable from a real CRC match).
   - InitHeader: DateCreated := Now, BaseMsgNum := 1,
     PasswordCRC := 0xFFFFFFFF (was all zeros).
   - JamFromUni appends trailing CR to body (FTS-0001 requires
     CR-terminated lines; PKT-sourced bodies have it, manually-
     built bodies may not -- library now ensures it).
   - CHRS and TID emitted as JAM_FTSKLUDGE subfields (were
     being dropped entirely; CHRS is load-bearing for non-ASCII
     display).
   - OADDRESS/DADDRESS no longer emitted (spec-valid but adds
     34 bytes/msg; HPT/fmail/GoldED don't; callers that need
     them can set jam.subfield.0 / .1 explicitly).
   - .jlr not created on base-init (HPT creates lazily on first
     lastread write; matching removes a file-tree diff).

4. Tests:
   - test_fuzz_kludge gains F-KL-4 (quoted ^AMSGID in body
     doesn't clobber prefix) and F-KL-5 (SOH mid-line is body
     text, enforcing the position-0 rule).
   - test_consumer_round1 gains TestJamCrcComputed,
     TestJamBodyTrailingCR, TestJamChrsTidRoundTrip,
     TestHudsonKludgeRoundTrip, TestGoldBaseKludgeRoundTrip.
   - test_roundtrip_attrs updated: Hudson now advertises
     msgid/seen-by via the new round-trip path.

All 21 consumer tests pass; 6-target build clean.
2026-04-20 10:07:50 -07:00
..