# Changelog of new T-Hist and related utilities

#### Terms used in this document

- The term `old version` means `T-Hist` `0.30.alpha7` from 2003, and earlier versions.

- The term `parameter` means parameter in the configuration file.

- The terms `group`, `group of addresses` means an address defined in `Addr` parameter with at least one `#` character (macro).
Addresses that use the wildcards `*` but do not contain `#` are not groups.

- The terms `binary log` and `history file` are equivalent.

## [1.1.0] - 2026-08-27

### Added

- On histograms, the load level that is greater than 0% but less than 3% is now displayed using the `_` character.
Previously, due to the lack of a suitable pseudo-graphic symbol, this load level was either displayed excessively large - as a level of 3-10%, or not displayed at all.

- Quick guide "How to use T-Hist to generate statistics for unsupported mailers" is created (`ADD-NEW-MAILER.md`).

### Fixed

- Completely fixed an issue when sessions with addresses not specified in the `Addr` parameters were mistakenly print in sessions table and always have "aborted" mark.
In version `1.0.3`, this issue was fixed partially: only for explicitly excluded addresses. Now the sessions table contains only those addresses that correspond to the `Addr` parameters.

- Fixed the ignoring of the `ProtectSummary Yes` parameter. This parameter is used to print summary information about password-protected and unprotected sessions
for the mailers that write the mark of a password session in the binary log.

- Fixed an issue during binary log truncation (if the `CutHistory` parameter is specified) when the 0-second duration sessions were recorded with a duration of 1 second.

- Restored support for the mailers The Brake!, BinkleyTerm-XE, InternetRex, FrontDoor, which was broken in versions `1.0.0` &ndash; `1.0.4`.

### Changed

- The order of adresses and groups of addresses in `Addr` parameters is no longer important. Regardless of the order, when generating statistics,
they will be sorted from less general to more general. And the excluded addresses and groups of addresses will be placed at the beginning of the adresses list,
simultaneously deleting all present addresses that match the excluded ones. Re-specifying the same addresses will be ignored.
For a more detailed description of the address sorting rules, see the `README.md` file.

- The algorithm of browsing of the list of addresses specified by the `Addr` parameters has been changed. Previously, browsing the address list ended after the first match
with the session address. Now, if the session address is not defined as excluded, the browsing will continue to the end of the list.
Such an algorithm takes into account sessions with a separately specified addresses also in the statistics for the groups to which the addresses belongs.
For a more detailed description of the address list browsing algorithm, see the `README.md` file.

- Summary information about traffic and the number and duration of sessions is now printed after the table with links statistics.
This is an exact copy of the information printed after the load graph and histograms, as well as printed by the `LnkStat` utility at the end of its statistics.

- The `DmpHist` utility now ignores the `TimeShift` parameter and prints the start time of sessions exactly as it is written in the binary log, without any adjustments.

## [1.0.4] - 2026-08-21

### Changed

- Minor resizing the columns width of the links table.

- The `DmpHist` utility now print a more detailed descryption of sessions status bits at the end of the table.

## [1.0.3] - 2026-08-18

### Fixed

- Fixed processing of addresses excluded from statistics (specified with the character `!`, for example `Addr !2: 5020/378.1`).
Previously, sessions with such addresses were mistakenly printed in sessions table, and always as aborted. Now such addresses are excluded from all types of statistics.

### Changed

- Changing the format of the sessions table. Now the session start time is printed with an accuracy of seconds (previously there was an accuracy of minutes).
The session end time is excluded due to redundancy &ndash; statistics show the duration of sessions.

- Aborted Binkd sessions now are marked in the sessions table with `A` character after address. Previously, they were not marked.

- Improved algorithm for calculating average CPS when specifying `AdvancedCPS Yes` in the configuration file.

## [1.0.2] - 2026-08-14

### Fixed

- Fixed incorrect handling of `ShowValue` parameter and `-s` command line option.

### Changed

- Minor changing of the diagnostic messages printed to `stderr`.

## [1.0.1] - 2026-08-13

### Fixed

- Fixed truncation of binary logs (if the `CutHistory` parameter is specified).

## [1.0.0] - 2026-08-12

First new version. Added Linux support. Switch to UTF-8 encoding.

**Attention!** This version truncate the binary logs incorrectly (if the `CutHistory` parameter is specified).

### Added

- Added Linux (x86_64 and i686) and Windows (x86_64 and i686) support.
Executable files for each of the Linux architectures are compiled in two variants: with dynamic and with static libraries.
Variants with static libraries are further compressed by [UPX 4.2.4](https://upx.github.io) executable packer to reduce their size.

- `LnkStat` and `DmpHist` utilities (but not `T-Hist`) now have the `-u` command line option to select the encoding of the printed information:

	`-u`, `-u+` &ndash; use UTF-8 encoding (default)

	`-u-` &ndash; use ASCII 7-bit encoding without pseudo-graphics

### Changed

- All utilities now print information and create output text files in UTF-8 encoding.
To post statistics in FTN echo conferences or netmail, text files must be converted to the appropriate encoding. For example, for Russian-language echo conferences with CP866 encoding:

	```shell
	iconv -f UTF-8 -t CP866 in.txt -o out.txt
	```

- For sessions recorded in a binary log with a duration of 0 seconds, a duration of 1 second is set. This allows more accurate build the load histograms.

	**Reason**: time intervals in binary logs are recorded with an accuracy of a second (binary log formats were developed during dial-up epoch,
when there were practically no sessions shorter than a second). But in Fido-over-IP epoch, sessions often have duration less than a second.
For such sessions, the duration of 0 seconds will be written to the binary log. The older versions of `T-Hist` did not take such short sessions into account when building load histograms.

	**Exception**: this change does not apply to `DmpHist` utility. This utility continues to work as before: it prints raw data from binary logs without any adjustment.
For sessions shorter than a second, the utility will print a duration of 0 seconds, as recorded in the binary log.

	**Side effect**: default underestimation of the average CPS (Characters per Second &ndash; the number of characters/bytes transferred per second).
By default, when calculating the average CPS, the duration of all sessions is summed up: both non-empty and empty. In the older versions of the utilities, most empty IP sessions
were 0 seconds long and did not increase the total time of all sessions. After this change, each empty session increases the estimated total time by at least 1 second,
although most likely the session was shorter. The more empty sessions are processed, the more the calculated sum of durations of all sessions will exceed the real total time.
And this leads to an underestimate of the CPS. For compatibility with the older versions of utilities, this behavior is retained by default.
For a more correct calculation of the average CPS when using IP mailers, specify in the configuration file:

	`AdvancedCPS Yes`

- The `NoDrawZero` parameter also affects the load histograms (previously this parameter only affected load graph).
Now the busy histogram always corresponds to the "summation" of all load graph lines.


### Removed

- DOS and OS/2 support removed. 

