-
v2.0.0
StableAll checks were successfulci-orchestrator / provision running on cx23 in fsn1Publish (NPM) / publish (release) Successful in 14sPublish (JSR) / publish (release) Successful in 21sPublish (crates.io) / publish (release) Successful in 38sPublish (Maven) / publish (release) Successful in 1m41sreleased this
2026-08-27 19:34:09 +02:00 | 10 commits to main since this releasev2.0.0
JavaScript, TypeScript lib
isFreeTransferis removed and replaced by three predicates:isFree(transaction)— the journey cost nothingisTransfer(transaction)— is it the free transferisCheckOut(transaction)— a check-out at a gated station
Transaction.runCounteris renamed todutyTrip. Byte [09] is the trip index within the vehicle's daily duty, not a free-running counter. This affects bothdecodeTransactionoutput andencodeTransactioninput.isFreeTransfer(t)→isFree(t)orisTransfer(t)t.runCounter→t.dutyTrip
Rust lib
Transaction::is_free_transferis removed and replaced by threeconst fnpredicates:is_free()— the journey cost nothingis_transfer()— is it the free transferis_check_out()— a check-out at a gated station
Transaction::run_counteris renamed toduty_trip. Byte [09] is the trip index within the vehicle's daily duty, not a free-running counter. This affects struct literals, decoding and encoding.Upgrading:
t.is_free_transfer()→t.is_free()ort.is_transfer()t.run_counter→t.duty_trip
Java, Kotlin lib
Transaction.isFreeTransfer()is removed and replaced by three methods:isFree()— the journey cost nothingisTransfer()— the one free transfer a balance card earns after a paid rideisCheckOut()— a check-out at a gated station
The
Transactionrecord componentrunCounteris renamed todutyTrip, so the accessor is nowdutyTrip()and the builder methodTransactionBuilder.dutyTrip(int). Byte [09] is the trip index within the vehicle's daily duty, not a free-running counter.Upgrading:
t.isFreeTransfer()→t.isFree()ort.isTransfer()t.runCounter()→t.dutyTrip().runCounter(n)→.dutyTrip(n)on the builder