chess-publisher 1.03.83

This is a focused pairing-safety and emergency-backup point-fix carried forward from v1.03.70.

Pairing architecture:
- Gacrux 1.9.57 remains the only Swiss pairing generator.
- The Gacrux binary and the existing Dutch weighted generation path are unchanged.
- The existing strict Gacrux self-check remains in place.
- An optional second implementation, bbpPairings v6.0.0, can now independently verify the generated Dutch pairing from the same TRF history.

Independent checker preparation:
- Open Pairings and press Prepare Checker once while Internet access is available.
- chess-publisher downloads the official upstream bbpPairings v6.0.0 x86_64 Windows release from GitHub.
- The downloaded release ZIP must match the hard-coded upstream SHA256 before it is accepted.
- The executable is self-tested and a local verified-install marker records its executable SHA256.
- The checker is stored locally under ChessPublisher Settings; it is not required to download anything during a tournament once prepared.

Verification behavior:
- After Gacrux generates and self-checks Round N, chess-publisher gives bbpPairings only the completed history through Round N-1.
- bbpPairings runs in --dutch ... -p mode and independently regenerates Round N.
- chess-publisher compares BBP's white/black pair identities (including PAB) with the already-generated Gacrux pairing.
- A concrete BBP pairing discrepancy is fail-closed: the Gacrux round is rejected and not committed.
- A missing checker or a checker runtime/format error is shown separately as a warning; chess-publisher never silently switches the pairing generator.
- Round Control Log shows Gacrux self-check and Independent Dutch checker on separate lines.

TRF compatibility:
- The independent verifier receives the same fixed pairing numbers and completed score/history fields used by chess-publisher. Current-round exclusions are marked only in its temporary checker copy.
- Canonical FIDE TRF26 keeps record 162 symbol A for absence/zero-point-bye/forfeit loss. Because bbpPairings 6.0.0 still expects legacy Z in that scoring-system field, only the temporary bbp-checker.trf copy maps record-162 A to Z.
- Pairing-allocated bye values from record 162 P remain supported.

v1.03.66 UI/packaging hotfix retained:
- FIDE Database Results default font is 15px (existing intentional A-/A+ user preference remains respected).
- The Windows host continues to load ChessPublisher.ico for the main Form/titlebar/taskbar and shortcuts keep the same application icon.

Regression protection:
- Gacrux 1.9.57 pairingchecker.exe is byte-identical with v1.03.65.
- Swiss pairing generation logic and Gacrux/TRF pairing-generation arguments are unchanged.
- Chess-Results publication logic is unchanged.
- DGT logic is unchanged.
- v1.03.65 dialog, tournament storage, schedule, TRF import and security fixes are retained.

Installer: run chess-publisher-v1.03.83-2026-08-29.exe.
Source/portable package: extract chess-publisher-v1.03.83-2026-08-29.zip and run ChessPublisher.exe.


v1.03.78 notes:
- Result Desk bug-test point-fix only.
- Missing filter now returns safely to All when no missing results remain, preventing edits to an invisible completed board.
- 801-900 px responsive Result Desk uses the stacked layout without compressing the board table.
- Swiss/Round Robin workflow labels now match the v1.03.77 logic: Swiss Remove Absent is optional; Round Robin uses Finalize Roster.
- Pairing engine, Gacrux, BBP, TRF and Chess-Results logic are unchanged.
- LocalEngine/WebView handshake is V135 (Tie-Break Checker service endpoints).

Tie-Break Checker v1.03.81:
- Optional official Gacrux/FIDE tiebreakchecker 1.9.57 downloader with SHA256 verification.
- Validates completed-round rankings independently from chess-publisher local standings.
- Does not generate pairings or change tournament data.


v1.03.81 Tie-Break Checker/Standings point-fix:
- Corrects official AOB 0.01 half-up ranking precision and checker comparison tolerance.
- Hardens DE tie-group validation, stale-state invalidation and tournament-switch race handling.
- Keeps LocalEngine/WebView handshake V135 and all protected pairing components unchanged.


Branding v1.03.83:
- Product name: chess-publisher
- Official website: https://chess-publisher.org
- Legacy internal filenames and tournament-storage paths remain unchanged for compatibility.


v1.03.92 Recent Tournaments reliability point-fix:
- Recent Tournaments list/open now share one canonical LocalEngine filesystem inventory.
- Each visible row carries an opaque inventory id; Open uses POST JSON instead of round-tripping a Windows path in the URL.
- The selected row is re-resolved against a fresh inventory immediately before opening, after any pending save/transition.
- Folder-name fallback remains only as compatibility recovery; stale cached paths are never trusted directly.
- v1.03.91 TRF_Backup backfill/recovery fixes and WebView2 context-menu/DevTools hardening are retained.
- Gacrux generation status/error messages in the on-screen English UI are English-only.
- Starting List PDF player-name cells no longer include flag glyphs, avoiding two-letter flag fallbacks before names.
- LocalEngine/WebView handshake is V137. Gacrux/Swiss/BBP/Tie-Break/Chess-Results core logic is unchanged.
