# FuelDirect 057.007.073 Release Notes **Release date:** August 27, 2026 **Release type:** Standard four-channel FuelDirect/Classic **Branch tip:** commit `d98910715c75bb95a41b93024c567ef9b53e11ae` ## Comparison Baseline 057.007.072, GitHub release commit `6d66ba3ecf0ed2cf682631c9705b19e5a989ff58`, dated August 11, 2026. This is the direct source baseline for these notes. ## Highlights - Replaced the in-memory message-ring logging backend with direct, buffered, rotating log files, removing the separate `pie_message_ring.exe` helper process entirely. - Standardized offline/back-online detection across all 13 pump drivers on a single 20-second, time-based rule in place of per-driver fixed retry counts. - Cut Ethernet device-connect timeout from roughly 21 seconds to 5 seconds, and throttled repetitive DBox retry logging. - Extended per-user COM registration (added in 072) to cover both the 32-bit and 64-bit registry views under both `HKEY_CURRENT_USER` and `HKEY_LOCAL_MACHINE`. - Retired `pie_message.exe` / `pie_message_ring.exe` completely from the build, installer, and release packaging, including active cleanup of any copies left by a prior install. - Reverted the default Bootleg revision counter to 1 following the version bump. ## Operator-Visible Fixes - Added explicit "PUMP OFFLINE" / "PUMP BACK ONLINE" log transitions, printed once per state change instead of on every failed poll. - Stopped logging customers off prematurely when a comm medium has a couple of slow polls; offline detection now waits up to 20 seconds of continuous failure first. - Silenced repeated "still hasn't responded" logging for positions that have never answered a poll; still polled every cycle, but the note now appears once, then at most every 5 minutes. - Removed the periodic "mark: running" heartbeat log line; only the "mark: stopping" marker remains. - Collapsed several per-byte/per-field parsing traces (Gilbarco totals, socket-open diagnostics) into single summary lines. - Made the startup splash screen close consistently before setup/registration dialogs across all registration command-line modes (`reg`, `unreg`, `uninstall`). ## Dispenser and Communication Diagnostics - Corrected `pos=` in status-change log lines to report the true global dispenser position instead of a per-channel index that previously reset at each board boundary. - Added raw wire-status logging alongside derived status for drivers that expose it (hex bytes, Bennett's packed 3-byte status, Mechanical's ASCII flag). - Added millisecond precision to every log timestamp (`MM/DD/YY HH:MM:SS.mmm`). - Blanked repeated PID/TID fields on consecutive log lines from the same process/thread to reduce log volume. - Fixed a card-reader timing bug that logged the card number in place of the measured elapsed milliseconds. - Moved the "no candidates" round-robin throttle from one timer shared across all reader channels to a per-channel timer, and added the channel number to the message. - Suppressed verbose Wayne/DW periodic-reconfiguration logging (calibration factor, BCD mode, blend values) so it only fires on real, non-periodic configuration events. - Corrected the Gilbarco sale-complete milestone to log the actual result status instead of always reporting success. - Fixed the DBox/Ethernet configured-port diagnostic lines, which were logging a stale loop-index value instead of the port number just assigned. ## Reliability and Protocol Safety - Added write-rate throttling to the logger: if writes fall behind under sustained backpressure, non-critical log lines are rate-limited for 5 seconds (default 2 KB/s, 1 MB burst) while error, forced, and sale-milestone messages continue unthrottled; suppressed-message counts are periodically summarized in the log. - Buffered log writes and added a dedicated 1-second flush thread, with synchronous flush on every error write and at shutdown, bounding worst-case log loss on a crash to about one second. - `AppOpenLogs()` now reports failure to its caller when the rotating log files can't be opened, instead of always reporting success. - Closed a race in device-change detection by switching the changed-device flag to an atomic exchange. - De-duplicated dispenser config-change log lines by comparing the configuration byte-for-byte instead of relying on an internal "modified" flag. - Fixed a code path in the pump-block interface that could release its lock twice. ## Registration and Runtime Packaging - Extended `RegisterFuelDirectApplication` and `RegisterPCCwinApplication` (and their unregister counterparts) to register and clean up class, CLSID, TypeLib, and Interface entries under both `HKEY_CURRENT_USER` and `HKEY_LOCAL_MACHINE`. - Removed `pie_message.exe` / `pie_message_ring.exe` from the compile list, the post-build copy step, `FuelDirect.sources`, and release packaging; the post-build step now actively deletes any stale copies from a prior build. - Added an installer `[InstallDelete]` step that removes any `pie_message.exe` / `pie_message_ring.exe` left behind by a prior install during an upgrade. - Stopped bundling `pie_message.exe` / `pie_message_ring.exe` in the Inno Setup installer inputs and stopped invoking `pie_message.exe stop_silently` on install/uninstall. ## Build and Release Changes - Bumped the build version to 057.007.073 in `app/build-metadata/repo.sed`, the single source read by generated headers and the build/test scripts. - Reverted the default Bootleg revision from 4 to 1 across `FuelDirect.vcxproj`, `New-FuelDirectRelease.ps1`, `Prepare-FuelDirectBuild.ps1`, and `Test-FuelDirectCompile.ps1`. - Expanded native regression coverage for the new logger: 5-file rotation, the flush thread and its shutdown ordering, the throttle constants and that throttling only engages under real backpressure, and that `app_logger.c` no longer references `pie_message` or spawns a subprocess. - Expanded native regression coverage for the pump/reader diagnostics changes above: gated deadlock-diagnostic logging, human-readable status-bit names, consolidated sale-complete milestones, and a single uniform `pos=%02d` format. - Added new `fd.conf` settings `eventlog_segment_mb`, `errorlog_segment_mb`, `log_rate_limit_kb_per_second`, and `log_burst_mb`, all validated and clamped on load; deprecated `ringsize` and `eventlog_count`, retained only for compatibility with older configuration files. ## Deployment Notes - This is the standard four-channel build; it is not a special 20-channel or customer-specific `957.*` build. - Existing 057.007.* base-environment compatibility is retained. - Back up the site's configuration and runtime data before replacing an installed executable. - Deploy the runtime files from the generated release bundle together; do not copy only `FuelDirect.exe` from an intermediate build directory. - Sites relying on `ringsize` or `eventlog_count` in `fd.conf` should review the new `eventlog_segment_mb` / `errorlog_segment_mb` rotation settings — the old settings are accepted but no longer active.