# Changelog - FD2

All notable changes for FD2.

## [Unreleased]

## [25.11.01] - 2025-11-04
### Added
- [FD2/PCC] Included cross compatibility for hose specified or not specified
- [FD2/Kraus] Included Lock states for sale end

### Changed
- [FD2/PCC] hoses for when we send all hose prices in one message are defined
- [FD2/Connexus] separated logic, conections are managed in connexxus, core logic and parsing in Processor, 
message building stays in command class
- [FD2/Conexxus] refactored readers for full async and separated functionality

### Fixed
- [FD2/Wayne] non bcd pulse counts assume 3 decimals always and then truncate to selected precision
- [FD2/PCC] fixed issue with parsing new !F commands
- [FD2/PCC] fixed issues when dispensers or hoses were missing



## [25.10.03] - 2025-10-27
### Added
- [FD2/Dispenser] included way to validate any hose that is pending price change
- [FD2/PCC] inlcuded flag to allow ppu recieved from pos to include all hoses in one message
- [FD2/PCC] included commands to pull the config and a separate command for logs as zip
- [FD2/Tatsuno] ported over from legacy code
- [FD2/Tokico] Included base implementation based on Spec
- [FD2/Kraus] More robust validation for sale completion
- [FD2/Pcc] Included an extended status command that segregates by channel and only inlcudes available 
dispensers
- [FD2/Kraus] added forced arm removal on collect detection from pump
- [FD2/ATG] added incon support through tsa protocol
- [FD2/SMC] initial pumpside based on documentation
- [FD2/Tokico] skeleton for pumpside

### Changed
- [FD2/Tatsuno] ported over from legacy main parts for communication

### Fixed
- [FD2/Kraus] avoid double sale ready after exploit
- [FD2/Kraus] corrected how we use parsed deltas when exploint has occured
- [FD2/Kraus] end of sale logic corrections and edge case handling
- [FD2/Kraus] identify when pumping no sale to pause the pump and re send the preset.

### Removed
- [FD2/Licensing] we no longer provide a temporary license on initial load



## [25.10.02] - 2025-10-15
### Added
- [FD2/Configuration] included Fueldirect Socket to configuration options in tool
- [FD2/Wayne] Command to test if it has an iGem2
- [FD2/Wayne] variable-blend support; system now queries and records blend ratios per dispenser.
- [FD2/Dart] began porting the pie-libs DART implementation into FD2 core (initial scaffolding/transport in 
place)

### Changed
- [FD2/Wayne] changed dynamic hose mapping to be more robust with a fall back that tries to query every 
possible position 0-6 to identify valid positions if the get available positions fails
- [FD2/Wayne] hose mapping now derives solely from AvailablePositions; removed blend-index offsets to avoid 
3+1+1 misalignment with internal hose IDs.

### Removed
- [FD2/Wayne] removed unusesd functions



## [25.10.01] - 2025-10-07
### Added
- [FD2/Kraus] included overrun detection
- [FD2/Kraus] created a check for when the user joggles the handle which causes issues with overruns, we now 
de arm the pump if we see this then send the preset and re-arm again once its stable

### Fixed
- [FD2/Kraus] corrected how we handle totals
- [FD2/Krause] corrected ctrl
- [FD2/Kraus] trying to get comms working with kraus



## [25.09.05] - 2025-10-03
### Added
- [FD2/Licensing] added more error codes and their mapping to better identify issues with licensing
- [FD2/Wayne] Validate if config is necesary based on if a hose was created after initial config or not to 
ensure dynamic mapping is working
- [FD2/Wayne] We now log the entire start up configuration process so that we know when we broke out of it and 
failed and why
- [FD2/Wayne] Implemented dynamic hose/grade translation (SetupHoseTranslation, WayneHoseMap, HoseToGrade, 
GradeToHose)
- [FD2/Wayne] InitializeBlendValues and GetBlendValues1To3/4To6 for blend slot discovery
- [FD2/Wayne] GetValidHoses (0x07/0x1A) to parse hose bitmask and populate AvailablePositions
- [FD2/Wayne] Extended ConfigurePump to include hose/blend discovery during startup

### Changed
- [FD2/Wayne] Made it so that single hose lock maps the same way as multihoselock to avoid issues we saw with 
the sc82
- [FD2/Logging] changed the way we created and managed the thread for writing logs this now uses a semaphore 
slim per file.
- [FD2/dispenser] ConfigurePump refactored (no goto, clearer logic, blend queries tolerant)
- [FD2/Wayne] HoseInAdjust to resolve Wayne hose â†’ internal hose â†’ blend index with 
fallbacks and logging
- [FD2/Wayne] HoseOutAdjust to normalize indices and handle FixedBlend vs VariableBlend consistently

### Fixed
- [FD2/Wayne] fix order of opperations
- [FD2/Logs] Include the version in some logs that did not have it
- [FD2/dispenser] Hose lift mapping corrected (blendIndex +1 ensures lifted hose matches physical)
- [FD2/Wayne] Off-by-one handling of internal vs Wayne hose numbering
- [FD2/Wayne] Guarded against invalid indices and missing blend data with safe defaults and diagnostics
- [FD2/Wayne] Deduped AvailablePositions and added logging for invalid Wayne hose indexes



## [25.09.04] - 2025-09-25
### Added
- [FD2/Generic] added management for hose lock and multi-hose lock so that the pump sim can also manage this
- [FD2/Docs] Added wayne documentation
- [FD2/Generic] Added Multihose lock and hose lock
- [FD2/PumpSim] Manage multi-hose lock
- [FD2/Conexxus] Added log trace for transactions per reader

### Changed
- [FD2/DispenserCh] Normalized lines to be compatible with VB6
- [FD2/Tokheim] Status/arm/flow checks aligned with Wayne & legacy FuelDirect.
- [FD2/Kraus] Status/arm/flow checks aligned with Wayne & legacy FuelDirect.
- [FD2/Folders] Moved .cs to related folders for ease of use
- [FD2/logs] split Conexxus logs into per-remote-IP files for easier debugging
- [FD2/startup] decoupled reader startup from heartbeats so program boot doesnâ€™t depend on reader 
beats

### Fixed
- [FD2/Conexxus] better handle disconects and reconnects to avoid cpu overuse
- [FD2/FDSocket] addressed issues with handling messages that include hose lock and multihose lock
- [FD2/Wayne] corrected how we handle the arming and re arming of dispensers specifically when we have non bcd 
pumps
- [FD2/POS] reverted connection changes
- [FD2/FDSocket] Manage Multihose lock
- [FD2/Wayne] Paused-pump handling; allow handle change while armed (non-BCD).
- [FD2/Dispenser] Hose-lock validation for BCD & non-BCD.
- [FD2/FDSocketHandler] Multihose lock handling; show prices on FuelingPositionInfo; correct 
DispenserInformation mapping.
- [FD2/Wayne] Changed the way we handle changes in hose for nonbcd to ensure we repause and re arm based on 
new hose
- [FD2/GDM] ensure we dont allow deauths when we are flowing
- [FD2/FDSocket] some adjustments to ensure we match the original dev guide
- [FD2/Conexxus] make the falback false
- [FD2/grm] remove sync-over-async to avoid startup deadlock risk during channel initialization
- [FD2/queues] corrected dequeue/clear logic to operate on the intended queues



## [25.09.01] - 2025-09-04
### Fixed
- [FD2/Startup] Added guards and more precise logging when starting up to know why we fail to load if we do
- [FD2/Protocol] Added POS socket command builders



## [25.08.02] - 2025-08-29
### Added
- [FD2/DOCS] Per-project changelog plumbing (hooks, workflow, skeleton)


# Changelog - FD2

All notable changes for FD2.

## [Unreleased]

### Added
### Changed
### Fixed
### Removed
### Deprecated
### Security
