Releases: flwyd/adif-multitool
Release list
v0.1.22
Download instructions
Download the version below matching your computer's OS and processor
architecture. Rename the file to adifmt or adifmt.exe, make it executable
with chmod a+x adifmt, and put it somewhere in your PATH environment like
~/bin/. Verify it was installed by running adifmt version.
- macOS users: Download
adifmt-darwin-arm64for Macs with M1 chips or newer.
Downloadadifmt-darwin-amd64for older Macs. - Windows users: Download
adifmt-windows-amd64for most modern PCs,
adifmt-windows-arm64for tablets and other ARM devices, and
adifmt-windows-386for older 32-bit computers. - Linux users: Download
adifmt-linux-arm64oradifmt-linux-armfor
Raspberry Pi or other embedded/mobile devices. Otherwise, download
adifmt-linux-amd64(64-bit) oradifmt-linux-386(32-bit).
Alternatively, you can get the latest changes by installing from source:
go install github.com/flwyd/adif-multitool/adifmt@latest
Changes in this release
Updated to ADIF 3.1.7 specification.
Added
--cabrillo-round-freqflag rounds HF frequency down to a whole kilohertz
value. The ncjweb.com Cabrillo parser does not accept fractional kHz values
like14012.34.
Fixed
- Cabrillo: Include the field name when an expected field has an error.
Full Changelog: v0.1.21...v0.1.22
v0.1.22-rc0
Download instructions
Download the version below matching your computer's OS and processor
architecture. Rename the file to adifmt or adifmt.exe, make it executable
with chmod a+x adifmt, and put it somewhere in your PATH environment like
~/bin/. Verify it was installed by running adifmt version.
- macOS users: Download
adifmt-darwin-arm64for Macs with M1 chips or newer.
Downloadadifmt-darwin-amd64for older Macs. - Windows users: Download
adifmt-windows-amd64for most modern PCs,
adifmt-windows-arm64for tablets and other ARM devices, and
adifmt-windows-386for older 32-bit computers. - Linux users: Download
adifmt-linux-arm64oradifmt-linux-armfor
Raspberry Pi or other embedded/mobile devices. Otherwise, download
adifmt-linux-amd64(64-bit) oradifmt-linux-386(32-bit).
Alternatively, you can get the latest changes by installing from source:
go install github.com/flwyd/adif-multitool/adifmt@latest
Changes in this release
Updated to ADIF 3.1.7 specification.
Added
--cabrillo-round-freqflag rounds HF frequency down to a whole kilohertz
value. The ncjweb.com Cabrillo parser does not accept fractional kHz values
like14012.34.
Fixed
- Cabrillo: Include the field name when an expected field has an error.
v0.1.21
Download instructions
Download the version below matching your computer's OS and processor
architecture. Rename the file to adifmt or adifmt.exe, make it executable
with chmod a+x adifmt, and put it somewhere in your PATH environment like
~/bin/. Verify it was installed by running adifmt version.
- macOS users: Download
adifmt-darwin-arm64for Macs with M1 chips or newer.
Downloadadifmt-darwin-amd64for older Macs. - Windows users: Download
adifmt-windows-amd64for most modern PCs,
adifmt-windows-arm64for tablets and other ARM devices, and
adifmt-windows-386for older 32-bit computers. - Linux users: Download
adifmt-linux-arm64oradifmt-linux-armfor
Raspberry Pi or other embedded/mobile devices. Otherwise, download
adifmt-linux-amd64(64-bit) oradifmt-linux-386(32-bit).
Alternatively, you can get the latest changes by installing from source:
go install github.com/flwyd/adif-multitool/adifmt@latest
Changes
Upgrade to ADIF 3.1.6 specification. No other functional changes.
Full Changelog: v0.1.20...v0.1.21
v0.1.21-rc0
Download instructions
Download the version below matching your computer's OS and processor
architecture. Rename the file to adifmt or adifmt.exe, make it executable
with chmod a+x adifmt, and put it somewhere in your PATH environment like
~/bin/. Verify it was installed by running adifmt version.
- macOS users: Download
adifmt-darwin-arm64for Macs with M1 chips or newer.
Downloadadifmt-darwin-amd64for older Macs. - Windows users: Download
adifmt-windows-amd64for most modern PCs,
adifmt-windows-arm64for tablets and other ARM devices, and
adifmt-windows-386for older 32-bit computers. - Linux users: Download
adifmt-linux-arm64oradifmt-linux-armfor
Raspberry Pi or other embedded/mobile devices. Otherwise, download
adifmt-linux-amd64(64-bit) oradifmt-linux-386(32-bit).
Alternatively, you can get the latest changes by installing from source:
go install github.com/flwyd/adif-multitool/adifmt@latest
Changes in this release
v0.1.20
Download instructions
Download the version below matching your computer's OS and processor
architecture. Rename the file to adifmt or adifmt.exe, make it executable
with chmod a+x adifmt, and put it somewhere in your PATH environment like
~/bin/. Verify it was installed by running adifmt version.
- macOS users: Download
adifmt-darwin-arm64for Macs with M1 chips or newer.
Downloadadifmt-darwin-amd64for older Macs. - Windows users: Download
adifmt-windows-amd64for most modern PCs,
adifmt-windows-arm64for tablets and other ARM devices, and
adifmt-windows-386for older 32-bit computers. - Linux users: Download
adifmt-linux-arm64oradifmt-linux-armfor
Raspberry Pi or other embedded/mobile devices. Otherwise, download
adifmt-linux-amd64(64-bit) oradifmt-linux-386(32-bit).
Alternatively, you can get the latest changes by installing from source:
go install github.com/flwyd/adif-multitool/adifmt@latest
Changes in this release
0.1.20 - 2025-02-15
Added
countcommand prints the number of records of each combination of a set of
fields. For example,adifmt count --fields BAND,MODEprints the number of
contacts made for each band plus mode combination. If a field is blank or not
set on a particular record it contributes an empty string to the combination.
adifmt countwithout the--fieldsoption prints the total number of
records in the file. CSV or TSV output makescountoutput easy to pass to
another program like a spreadsheet for further analysis.CONT(continent) works withadifmt inferandadifmt validatebased on
theDXCCorCOUNTRYfield.validate --required-fieldssupports conditionals (--if,--if-not,
--or-if,--or-if-not) to determine which records must have certain fields
set. All records are checked for data type validity, e.g. number formatting.validatewill produce an error if latitude is given as east/west or if
longitude is given as north/south. It is also an error for latitude to be
greater than 90°, not just greater than 180°.validatewill warn ifLATorLONis set but the other one isn’t;
likewise forMY_LAT/MY_LON. It’s possible to know latitude without also
knowing longitude, but modern technology usually gives both together, so you
probably had a copy-paste error.validatehandles theCNTY_ALT/MY_CNTY_ALTfield, currently only used for
New Zealand regions. Currently doesn’t require that each enumeration name
only appears once.--adi-allow-unknown-tagsallows angle brackets in comments<Like-This>
if they don’t look like valid ADI tags or QSO data specifiers like<EOR>or
<NAME:42>. This is not intended to be valid in the ADIF specification but
Logbook of The World includes a<APP_LoTW_EOF>field
which this option will turn into a file comment like[APP_LoTW_EOF].
inferwill set the relevant zone field if theDXCCorCOUNTRYfield is
set and the entity is in a single zone. It will also infer the zone if the
STATEfield is set and the state is only in one zone and the ADIF primary
administrative division enumeration indicates the zone of the subdivision.
For example,COUNTRY=Indiawill setCQZ=22 ITUZ=41because India does not
overlap CQ or ITU zone boundaries.COUNTRY=Kazakhstanwill setCQZ=17but
not setITUZat all, since Kazakhstan straddles the ITU Zone 29/30 boundary
and ADIF does not define any subdivisions for the country.DXCC=291(USA)
would infer nothing because it’s in both multiple CQ Zones and multiple ITU
Zones.DXCC=291 STATE=CAwould inferCQZ=3 ITUZ=6since California is in
just one zone of each type, butDXCC=291 STATE=MTwould just inferCQZ=4
since Montana is in two ITU Zones.validatewill consider a record valid if the CQ and ITU Zones (if present)
are consistent with the DXCC and primary subdivision. No additional location
checks, e.g. comparing gridsquare to zone boundaries, is done.MY_CQ_ZONEandMY_ITU_ZONEwork as well.- CQ and ITU Zones also work for DXCC entities which have been removed from the
active list, e.g. Zanzibar. - Some multi-zone countries are missing zone data in the primary administrative
subdivision enumeration.
An ADIF proposal
to expand and correct this data has been proposed, but it may be some time
before the next ADIF version. ADIF Multitool may add its own subdivision
associations before then. - There is some variance between amateur radio organizations on exactly where
ITU boundaries lie. This program uses the
CQWW WAZ list for CQ-zone-to-entity
associations, the
AARL DXCC list
for ITU-to-entity associations, and zone-check.eu to
determine which ITU Zones a subdivision crosses. See also the mapability
links above for some explanation of data challenges. Maritime boundaries
between zones are not well defined and this program does not attempt to
map geographic points to zones (or to geopolitical entities).
Changed
fixnow trims leading and trailing spaces (and other whitespace) from
fields.- Started a changelog file so it’s easier to learn what’s new in
a release. helpdocumentation tweaks for clarity and consistency.
Fixed
- Consistently trim leading and trailing space from ADI and ADX comments. If a
comment is nothing but space, don’t preserve it in the output.
Note: record comments and file comments are preserved from input through
output, but header comments, such as the text at the top of an ADI file, are
ignored. This could change in the future, but I don’t want to preserve all
the “Generated” lines created as part of a pipeline.
See discussion. - Franz Josef Land DXCC entity is part of Russia, Arkhangelsk Oblast.
Removed
Deprecated flags have been removed and will now show a generic option parsing
error rather than a specific error: --cabrillo-my-exchange-field,
--cabrillo-their-exchange-field, and --cabrillo-their-exchange-field-alt.
v0.1.19-rc4
Download the version below matching your computer's OS and processor
architecture. Rename the file to adifmt or adifmt.exe, make it executable
with chmod a+x adifmt, and put it somewhere in your PATH environment like
~/bin/. Verify it was installed by running adifmt version.
- macOS users: Download
adifmt-darwin-arm64for Macs with M1 chips or newer.
Downloadadifmt-darwin-amd64for older Macs. - Windows users: Download
adifmt-windows-amd64for most modern PCs,
adifmt-windows-arm64for tablets and other ARM devices, and
adifmt-windows-386for older 32-bit computers. - Linux users: Download
adifmt-linux-arm64oradifmt-linux-armfor
Raspberry Pi or other embedded/mobile devices. Otherwise, download
adifmt-linux-amd64(64-bit) oradifmt-linux-386(32-bit).
0.1.19-rc4 - 2025-02-15
Added
countcommand prints the number of records of each combination of a set of
fields. For example,adifmt count --fields BAND,MODEprints the number of
contacts made for each band plus mode combination. If a field is blank or not
set on a particular record it contributes an empty string to the combination.
adifmt countwithout the--fieldsoption prints the total number of
records in the file. CSV or TSV output makescountoutput easy to pass to
another program like a spreadsheet for further analysis.CONT(continent) works withadifmt inferandadifmt validatebased on
theDXCCorCOUNTRYfield.validate --required-fieldssupports conditionals (--if,--if-not,
--or-if,--or-if-not) to determine which records must have certain fields
set. All records are checked for data type validity, e.g. number formatting.validatewill produce an error if latitude is given as east/west or if
longitude is given as north/south. It is also an error for latitude to be
greater than 90°, not just greater than 180°.validatewill warn ifLATorLONis set but the other one isn’t;
likewise forMY_LAT/MY_LON. It’s possible to know latitude without also
knowing longitude, but modern technology usually gives both together, so you
probably had a copy-paste error.validatehandles theCNTY_ALT/MY_CNTY_ALTfield, currently only used for
New Zealand regions. Currently doesn’t require that each enumeration name
only appears once.--adi-allow-unknown-tagsallows angle brackets in comments<Like-This>
if they don’t look like valid ADI tags or QSO data specifiers like<EOR>or
<NAME:42>. This is not intended to be valid in the ADIF specification but
Logbook of The World includes a<APP_LoTW_EOF>field
which this option will turn into a file comment like[APP_LoTW_EOF].
inferwill set the relevant zone field if theDXCCorCOUNTRYfield is
set and the entity is in a single zone. It will also infer the zone if the
STATEfield is set and the state is only in one zone and the ADIF primary
administrative division enumeration indicates the zone of the subdivision.
For example,COUNTRY=Indiawill setCQZ=22 ITUZ=41because India does not
overlap CQ or ITU zone boundaries.COUNTRY=Kazakhstanwill setCQZ=17but
not setITUZat all, since Kazakhstan straddles the ITU Zone 29/30 boundary
and ADIF does not define any subdivisions for the country.DXCC=291(USA)
would infer nothing because it’s in both multiple CQ Zones and multiple ITU
Zones.DXCC=291 STATE=CAwould inferCQZ=3 ITUZ=6since California is in
just one zone of each type, butDXCC=291 STATE=MTwould just inferCQZ=4
since Montana is in two ITU Zones.validatewill consider a record valid if the CQ and ITU Zones (if present)
are consistent with the DXCC and primary subdivision. No additional location
checks, e.g. comparing gridsquare to zone boundaries, is done.MY_CQ_ZONEandMY_ITU_ZONEwork as well.- CQ and ITU Zones also work for DXCC entities which have been removed from the
active list, e.g. Zanzibar. - Some multi-zone countries are missing zone data in the primary administrative
subdivision enumeration.
An ADIF proposal
to expand and correct this data has been proposed, but it may be some time
before the next ADIF version. ADIF Multitool may add its own subdivision
associations before then. - There is some variance between amateur radio organizations on exactly where
ITU boundaries lie. This program uses the
CQWW WAZ list for CQ-zone-to-entity
associations, the
AARL DXCC list
for ITU-to-entity associations, and zone-check.eu to
determine which ITU Zones a subdivision crosses. See also the mapability
links above for some explanation of data challenges. Maritime boundaries
between zones are not well defined and this program does not attempt to
map geographic points to zones (or to geopolitical entities).
Changed
fixnow trims leading and trailing spaces (and other whitespace) from
fields.- Started a changelog file so it’s easier to learn what’s new in
a release. helpdocumentation tweaks for clarity and consistency.
Fixed
- Consistently trim leading and trailing space from ADI and ADX comments. If a
comment is nothing but space, don’t preserve it in the output.
Note: record comments and file comments are preserved from input through
output, but header comments, such as the text at the top of an ADI file, are
ignored. This could change in the future, but I don’t want to preserve all
the “Generated” lines created as part of a pipeline.
See discussion. - Franz Josef Land DXCC entity is part of Russia, Arkhangelsk Oblast.
Removed
Deprecated flags have been removed and will now show a generic option parsing
error rather than a specific error: --cabrillo-my-exchange-field,
--cabrillo-their-exchange-field, and --cabrillo-their-exchange-field-alt.
v0.1.19-rc3
Download the version below matching your computer's OS and processor
architecture. Rename the file to adifmt or adifmt.exe, make it executable
with chmod a+x adifmt, and put it somewhere in your PATH environment like
~/bin/. Verify it was installed by running adifmt version.
- macOS users: Download
adifmt-darwin-arm64for Macs with M1 chips or newer.
Downloadadifmt-darwin-amd64for older Macs. - Windows users: Download
adifmt-windows-amd64for most modern PCs,
adifmt-windows-arm64for tablets and other ARM devices, and
adifmt-windows-386for older 32-bit computers. - Linux users: Download
adifmt-linux-arm64oradifmt-linux-armfor
Raspberry Pi or other embedded/mobile devices. Otherwise, download
adifmt-linux-amd64(64-bit) oradifmt-linux-386(32-bit).
v0.1.19-rc2
Download the version below matching your computer's OS and processor
architecture. Rename the file to adifmt or adifmt.exe, make it executable
with chmod a+x adifmt, and put it somewhere in your PATH environment like
~/bin/. Verify it was installed by running adifmt version.
- macOS users: Download
adifmt-darwin-arm64for Macs with M1 chips or newer.
Downloadadifmt-darwin-amd64for older Macs. - Windows users: Download
adifmt-windows-amd64for most modern PCs,
adifmt-windows-arm64for tablets and other ARM devices, and
adifmt-windows-386for older 32-bit computers. - Linux users: Download
adifmt-linux-arm64oradifmt-linux-armfor
Raspberry Pi or other embedded/mobile devices. Otherwise, download
adifmt-linux-amd64(64-bit) oradifmt-linux-386(32-bit).
v0.1.19-rc1
Download the version below matching your computer's OS and processor
architecture. Rename the file to adifmt or adifmt.exe, make it executable
with chmod a+x adifmt, and put it somewhere in your PATH environment like
~/bin/. Verify it was installed by running adifmt version.
- macOS users: Download
adifmt-darwin-arm64for Macs with M1 chips or newer.
Downloadadifmt-darwin-amd64for older Macs. - Windows users: Download
adifmt-windows-amd64for most modern PCs,
adifmt-windows-arm64for tablets and other ARM devices, and
adifmt-windows-386for older 32-bit computers. - Linux users: Download
adifmt-linux-arm64oradifmt-linux-armfor
Raspberry Pi or other embedded/mobile devices. Otherwise, download
adifmt-linux-amd64(64-bit) oradifmt-linux-386(32-bit).
v0.1.18
Upgrade specification to ADIF 3.1.5. See the annotated spec for differences since 3.1.4.
This release contains no other changes to functionality.
Download the version below matching your computer's OS and
processor architecture. Rename the file to adifmt or
adifmt.exe, make it executable with chmod a+x adifmt, and put
it somewhere in your PATH environment like ~/bin/. Verify it
was installed by running adifmt version.
- macOS users: Download
adifmt-darwin-arm64for Macs with M1
chips or newer. Downloadadifmt-darwin-amd64for older Macs. - Windows users: Download
adifmt-windows-amd64for most modern
PCs,adifmt-windows-arm64for tablets and other ARM devices,
andadifmt-windows-386for older 32-bit computers. - Linux users: Download
adifmt-linux-arm64oradifmt-linux-arm
for Raspberry Pi or other embedded/mobile devices. Otherwise,
downloadadifmt-linux-amd64(64-bit) or `adifmt-linux-386) (32).